@livestore/sqlite-wasm 0.3.0-dev.9 → 0.3.1-dev.0
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/LICENSE +201 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/browser/mod.d.ts +9 -8
- package/dist/browser/mod.d.ts.map +1 -1
- package/dist/browser/mod.js +4 -4
- package/dist/browser/mod.js.map +1 -1
- package/dist/browser/opfs/index.d.ts.map +1 -1
- package/dist/browser/opfs/opfs-sah-pool.d.ts.map +1 -1
- package/dist/in-memory-vfs.d.ts.map +1 -1
- package/dist/index_.d.ts +1 -1
- package/dist/index_.d.ts.map +1 -1
- package/dist/index_.js +1 -1
- package/dist/index_.js.map +1 -1
- package/dist/make-sqlite-db.d.ts +11 -0
- package/dist/make-sqlite-db.d.ts.map +1 -0
- package/dist/{make-sync-db.js → make-sqlite-db.js} +23 -12
- package/dist/{make-sync-db.js.map → make-sqlite-db.js.map} +1 -1
- package/dist/node/mod.d.ts +10 -9
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +11 -9
- package/dist/node/mod.js.map +1 -1
- package/package.json +12 -6
- package/src/browser/mod.ts +16 -18
- package/src/index_.ts +1 -1
- package/src/{make-sync-db.ts → make-sqlite-db.ts} +27 -17
- package/src/node/mod.ts +23 -27
- package/.netlify/state.json +0 -3
- package/dist/make-sync-db.d.ts +0 -11
- package/dist/make-sync-db.d.ts.map +0 -1
- package/tsconfig.json +0 -10
package/dist/browser/mod.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MakeSqliteDb, PersistenceInfo, SqliteDb } from '@livestore/common';
|
|
2
2
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js';
|
|
3
3
|
import type { AccessHandlePoolVFS } from './opfs/AccessHandlePoolVFS.js';
|
|
4
4
|
export * from './opfs/opfs-sah-pool.js';
|
|
@@ -8,7 +8,7 @@ export type WebDatabaseMetadataInMemory = {
|
|
|
8
8
|
dbPointer: number;
|
|
9
9
|
persistenceInfo: PersistenceInfo;
|
|
10
10
|
deleteDb: () => void;
|
|
11
|
-
configureDb: (db:
|
|
11
|
+
configureDb: (db: SqliteDb) => void;
|
|
12
12
|
};
|
|
13
13
|
export type WebDatabaseMetadataOpfs = {
|
|
14
14
|
_tag: 'opfs';
|
|
@@ -20,25 +20,26 @@ export type WebDatabaseMetadataOpfs = {
|
|
|
20
20
|
opfsFileName: string;
|
|
21
21
|
}>;
|
|
22
22
|
deleteDb: () => void;
|
|
23
|
-
configureDb: (db:
|
|
23
|
+
configureDb: (db: SqliteDb) => void;
|
|
24
24
|
};
|
|
25
25
|
export type WebDatabaseMetadata = WebDatabaseMetadataInMemory | WebDatabaseMetadataOpfs;
|
|
26
26
|
export type WebDatabaseInputInMemory = {
|
|
27
27
|
_tag: 'in-memory';
|
|
28
|
-
configureDb?: (db:
|
|
28
|
+
configureDb?: (db: SqliteDb) => void;
|
|
29
29
|
};
|
|
30
30
|
export type WebDatabaseInputOpfs = {
|
|
31
31
|
_tag: 'opfs';
|
|
32
32
|
/** Filename of the database file (only used when exporting/downloading the database) */
|
|
33
33
|
fileName: string;
|
|
34
34
|
opfsDirectory: string;
|
|
35
|
-
configureDb?: (db:
|
|
35
|
+
configureDb?: (db: SqliteDb) => void;
|
|
36
36
|
};
|
|
37
37
|
export type WebDatabaseInput = WebDatabaseInputInMemory | WebDatabaseInputOpfs;
|
|
38
|
-
export
|
|
39
|
-
sqlite3: SQLiteAPI;
|
|
40
|
-
}) => MakeSynchronousDatabase<{
|
|
38
|
+
export type MakeWebSqliteDb = MakeSqliteDb<{
|
|
41
39
|
dbPointer: number;
|
|
42
40
|
persistenceInfo: PersistenceInfo;
|
|
43
41
|
}, WebDatabaseInput, WebDatabaseMetadata>;
|
|
42
|
+
export declare const sqliteDbFactory: ({ sqlite3 }: {
|
|
43
|
+
sqlite3: SQLiteAPI;
|
|
44
|
+
}) => MakeWebSqliteDb;
|
|
44
45
|
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAI/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAGxE,cAAc,yBAAyB,CAAA;AAEvC,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,EAAE,SAAS,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,mBAAmB,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAA;QACrB,mCAAmC;QACnC,YAAY,EAAE,MAAM,CAAA;KACrB,CAAC,CAAA;IACF,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,2BAA2B,GAAG,uBAAuB,CAAA;AAEvF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,GAAG,oBAAoB,CAAA;AAE9E,MAAM,MAAM,eAAe,GAAG,YAAY,CACxC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,EACvD,gBAAgB,EAChB,mBAAmB,CACpB,CAAA;AAED,eAAO,MAAM,eAAe,GACzB,aAAa;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,KAAG,eAqDnC,CAAA"}
|
package/dist/browser/mod.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Effect, Hash } from '@livestore/utils/effect';
|
|
2
2
|
import { makeInMemoryDb } from '../in-memory-vfs.js';
|
|
3
|
-
import {
|
|
3
|
+
import { makeSqliteDb } from '../make-sqlite-db.js';
|
|
4
4
|
import { makeOpfsDb } from './opfs/index.js';
|
|
5
5
|
export * from './opfs/opfs-sah-pool.js';
|
|
6
|
-
export const
|
|
6
|
+
export const sqliteDbFactory = ({ sqlite3 }) => (input) => Effect.gen(function* () {
|
|
7
7
|
if (input._tag === 'in-memory') {
|
|
8
8
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3);
|
|
9
|
-
return
|
|
9
|
+
return makeSqliteDb({
|
|
10
10
|
sqlite3,
|
|
11
11
|
metadata: {
|
|
12
12
|
_tag: 'in-memory',
|
|
@@ -32,7 +32,7 @@ export const syncDbFactory = ({ sqlite3, }) => (input) => Effect.gen(function* (
|
|
|
32
32
|
directory: input.opfsDirectory,
|
|
33
33
|
fileName: dbFilename,
|
|
34
34
|
});
|
|
35
|
-
return
|
|
35
|
+
return makeSqliteDb({
|
|
36
36
|
sqlite3,
|
|
37
37
|
metadata: {
|
|
38
38
|
_tag: 'opfs',
|
package/dist/browser/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,cAAc,yBAAyB,CAAA;AA+CvC,MAAM,CAAC,MAAM,eAAe,GAC1B,CAAC,EAAE,OAAO,EAA0B,EAAmB,EAAE,CACzD,CAAC,KAAuB,EAAE,EAAE,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QAClD,OAAO,YAAY,CAA8B;YAC/C,OAAO;YACP,QAAQ,EAAE;gBACR,IAAI,EAAE,WAAW;gBACjB,GAAG;gBACH,SAAS;gBACT,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC5C,eAAe,EAAE;oBACf,QAAQ,EAAE,UAAU;iBACrB;aACF;SACF,CAAQ,CAAA;IACX,CAAC;IAED,wCAAwC;IACxC,MAAM,sBAAsB,GAAG,EAAE,CAAA;IAEjC,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE/B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACnD,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CACtB,yBAAyB,KAAK,CAAC,QAAQ,UAAU,sBAAsB,eAAe,KAAK,CAAC,QAAQ,CAAC,MAAM,cAAc,CAC1H,CAAA;QACD,UAAU,GAAG,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAA;IACvD,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;QAC3C,OAAO;QACP,SAAS,EAAE,KAAK,CAAC,aAAa;QAC9B,QAAQ,EAAE,UAAU;KACrB,CAAC,CAAA;IAEF,OAAO,YAAY,CAA0B;QAC3C,OAAO;QACP,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,SAAS;YACT,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YAC5C,eAAe,EAAE;gBACf,QAAQ,EAAE,UAAU;gBACpB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC;aAC9C;SACF;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/opfs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAK9D,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/opfs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAK9D,eAAO,MAAM,UAAU,GAAI,mCAIxB;IACD,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;;;gBAkBkC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opfs-sah-pool.d.ts","sourceRoot":"","sources":["../../../src/browser/opfs/opfs-sah-pool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB,OAAc,CAAA;AAO7C,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"opfs-sah-pool.d.ts","sourceRoot":"","sources":["../../../src/browser/opfs/opfs-sah-pool.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,kBAAkB,OAAc,CAAA;AAO7C,eAAO,MAAM,qBAAqB,GAAU,MAAM,IAAI,KAAG,OAAO,CAAC,MAAM,CA+BtE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-vfs.d.ts","sourceRoot":"","sources":["../src/in-memory-vfs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAI1E,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"in-memory-vfs.d.ts","sourceRoot":"","sources":["../src/in-memory-vfs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAI1E,eAAO,MAAM,cAAc,GAAI,SAAS,QAAQ,CAAC,SAAS;;;CAczD,CAAA"}
|
package/dist/index_.d.ts
CHANGED
package/dist/index_.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index_.d.ts","sourceRoot":"","sources":["../src/index_.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"index_.d.ts","sourceRoot":"","sources":["../src/index_.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA"}
|
package/dist/index_.js
CHANGED
package/dist/index_.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index_.js","sourceRoot":"","sources":["../src/index_.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"index_.js","sourceRoot":"","sources":["../src/index_.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PersistenceInfo, SqliteDb } from '@livestore/common';
|
|
2
|
+
export declare const makeSqliteDb: <TMetadata extends {
|
|
3
|
+
dbPointer: number;
|
|
4
|
+
persistenceInfo: PersistenceInfo;
|
|
5
|
+
deleteDb: () => void;
|
|
6
|
+
configureDb: (db: SqliteDb<TMetadata>) => void;
|
|
7
|
+
}>({ sqlite3, metadata, }: {
|
|
8
|
+
sqlite3: SQLiteAPI;
|
|
9
|
+
metadata: TMetadata;
|
|
10
|
+
}) => SqliteDb<TMetadata>;
|
|
11
|
+
//# sourceMappingURL=make-sqlite-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,QAAQ,EAET,MAAM,mBAAmB,CAAA;AAM1B,eAAO,MAAM,YAAY,GACvB,SAAS,SAAS;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC/C,EACD,wBAGC;IACD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,QAAQ,CAAC,SAAS,CA4MrB,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { SqliteError } from '@livestore/common';
|
|
2
2
|
import * as SqliteConstants from '@livestore/wa-sqlite/src/sqlite-constants.js';
|
|
3
3
|
import { makeInMemoryDb } from './in-memory-vfs.js';
|
|
4
|
-
export const
|
|
4
|
+
export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
5
5
|
const preparedStmts = [];
|
|
6
6
|
const { dbPointer } = metadata;
|
|
7
7
|
let isClosed = false;
|
|
8
|
-
const
|
|
9
|
-
_tag: '
|
|
8
|
+
const sqliteDb = {
|
|
9
|
+
_tag: 'SqliteDb',
|
|
10
10
|
metadata,
|
|
11
11
|
prepare: (queryStr) => {
|
|
12
12
|
try {
|
|
@@ -98,18 +98,18 @@ export const makeSynchronousDatabase = ({ sqlite3, metadata, }) => {
|
|
|
98
98
|
},
|
|
99
99
|
export: () => sqlite3.serialize(dbPointer, 'main'),
|
|
100
100
|
execute: (queryStr, bindValues, options) => {
|
|
101
|
-
const stmt =
|
|
101
|
+
const stmt = sqliteDb.prepare(queryStr);
|
|
102
102
|
stmt.execute(bindValues, options);
|
|
103
103
|
stmt.finalize();
|
|
104
104
|
},
|
|
105
105
|
select: (queryStr, bindValues) => {
|
|
106
|
-
const stmt =
|
|
106
|
+
const stmt = sqliteDb.prepare(queryStr);
|
|
107
107
|
const results = stmt.select(bindValues);
|
|
108
108
|
stmt.finalize();
|
|
109
109
|
return results;
|
|
110
110
|
},
|
|
111
111
|
destroy: () => {
|
|
112
|
-
|
|
112
|
+
sqliteDb.close();
|
|
113
113
|
metadata.deleteDb();
|
|
114
114
|
// if (metadata._tag === 'opfs') {
|
|
115
115
|
// metadata.vfs.resetAccessHandle(metadata.fileName)
|
|
@@ -147,7 +147,7 @@ export const makeSynchronousDatabase = ({ sqlite3, metadata, }) => {
|
|
|
147
147
|
else {
|
|
148
148
|
sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main');
|
|
149
149
|
}
|
|
150
|
-
metadata.configureDb(
|
|
150
|
+
metadata.configureDb(sqliteDb);
|
|
151
151
|
},
|
|
152
152
|
session: () => {
|
|
153
153
|
const sessionPointer = sqlite3.session_create(dbPointer, 'main');
|
|
@@ -166,16 +166,27 @@ export const makeSynchronousDatabase = ({ sqlite3, metadata, }) => {
|
|
|
166
166
|
const changeset = {
|
|
167
167
|
invert: () => {
|
|
168
168
|
const inverted = sqlite3.changeset_invert(data);
|
|
169
|
-
return
|
|
169
|
+
return sqliteDb.makeChangeset(inverted);
|
|
170
170
|
},
|
|
171
171
|
apply: () => {
|
|
172
|
-
|
|
172
|
+
try {
|
|
173
|
+
sqlite3.changeset_apply(dbPointer, data);
|
|
174
|
+
// @ts-expect-error data should be garbage collected after use
|
|
175
|
+
data = undefined;
|
|
176
|
+
}
|
|
177
|
+
catch (cause) {
|
|
178
|
+
throw new SqliteError({
|
|
179
|
+
code: cause.code ?? -1,
|
|
180
|
+
cause,
|
|
181
|
+
note: `Failed calling makeChangeset.apply`,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
173
184
|
},
|
|
174
185
|
};
|
|
175
186
|
return changeset;
|
|
176
187
|
},
|
|
177
188
|
};
|
|
178
|
-
metadata.configureDb(
|
|
179
|
-
return
|
|
189
|
+
metadata.configureDb(sqliteDb);
|
|
190
|
+
return sqliteDb;
|
|
180
191
|
};
|
|
181
|
-
//# sourceMappingURL=make-
|
|
192
|
+
//# sourceMappingURL=make-sqlite-db.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-
|
|
1
|
+
{"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"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"}
|
package/dist/node/mod.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type MakeSqliteDb, type PersistenceInfo, type SqliteDb } from '@livestore/common';
|
|
2
2
|
import { Effect, FileSystem } from '@livestore/utils/effect';
|
|
3
3
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js';
|
|
4
4
|
import { NodeFS } from './NodeFS.js';
|
|
@@ -8,7 +8,7 @@ export type NodeDatabaseMetadataInMemory = {
|
|
|
8
8
|
dbPointer: number;
|
|
9
9
|
persistenceInfo: PersistenceInfo;
|
|
10
10
|
deleteDb: () => void;
|
|
11
|
-
configureDb: (db:
|
|
11
|
+
configureDb: (db: SqliteDb) => void;
|
|
12
12
|
};
|
|
13
13
|
export type NodeDatabaseMetadataFs = {
|
|
14
14
|
_tag: 'fs';
|
|
@@ -18,24 +18,25 @@ export type NodeDatabaseMetadataFs = {
|
|
|
18
18
|
directory: string;
|
|
19
19
|
}>;
|
|
20
20
|
deleteDb: () => void;
|
|
21
|
-
configureDb: (db:
|
|
21
|
+
configureDb: (db: SqliteDb) => void;
|
|
22
22
|
};
|
|
23
23
|
export type NodeDatabaseMetadata = NodeDatabaseMetadataInMemory | NodeDatabaseMetadataFs;
|
|
24
24
|
export type NodeDatabaseInputInMemory = {
|
|
25
25
|
_tag: 'in-memory';
|
|
26
|
-
configureDb?: (db:
|
|
26
|
+
configureDb?: (db: SqliteDb) => void;
|
|
27
27
|
};
|
|
28
28
|
export type NodeDatabaseInputFs = {
|
|
29
29
|
_tag: 'fs';
|
|
30
30
|
directory: string;
|
|
31
31
|
fileName: string;
|
|
32
|
-
configureDb?: (db:
|
|
32
|
+
configureDb?: (db: SqliteDb) => void;
|
|
33
33
|
};
|
|
34
34
|
export type NodeDatabaseInput = NodeDatabaseInputInMemory | NodeDatabaseInputFs;
|
|
35
|
-
export
|
|
36
|
-
sqlite3: SQLiteAPI;
|
|
37
|
-
}) => Effect.Effect<MakeSynchronousDatabase<{
|
|
35
|
+
export type MakeNodeSqliteDb = MakeSqliteDb<{
|
|
38
36
|
dbPointer: number;
|
|
39
37
|
persistenceInfo: PersistenceInfo;
|
|
40
|
-
}, NodeDatabaseInput, NodeDatabaseMetadata
|
|
38
|
+
}, NodeDatabaseInput, NodeDatabaseMetadata>;
|
|
39
|
+
export declare const sqliteDbFactory: ({ sqlite3, }: {
|
|
40
|
+
sqlite3: SQLiteAPI;
|
|
41
|
+
}) => Effect.Effect<MakeNodeSqliteDb, never, FileSystem.FileSystem>;
|
|
41
42
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/node/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAmB,MAAM,mBAAmB,CAAA;AAC3G,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAI/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,EAAE,SAAS,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,GAAG,sBAAsB,CAAA;AAExF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,GAAG,mBAAmB,CAAA;AAE/E,MAAM,MAAM,gBAAgB,GAAG,YAAY,CACzC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,EACvD,iBAAiB,EACjB,oBAAoB,CACrB,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,cAE7B;IACD,OAAO,EAAE,SAAS,CAAA;CACnB,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAyC7D,CAAA"}
|
package/dist/node/mod.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { UnexpectedError
|
|
2
|
+
import { UnexpectedError } from '@livestore/common';
|
|
3
3
|
import { Effect, FileSystem } from '@livestore/utils/effect';
|
|
4
4
|
import { makeInMemoryDb } from '../in-memory-vfs.js';
|
|
5
|
-
import {
|
|
5
|
+
import { makeSqliteDb } from '../make-sqlite-db.js';
|
|
6
6
|
import { NodeFS } from './NodeFS.js';
|
|
7
|
-
export const
|
|
7
|
+
export const sqliteDbFactory = ({ sqlite3, }) => Effect.andThen(FileSystem.FileSystem, (fs) => (input) => Effect.gen(function* () {
|
|
8
8
|
if (input._tag === 'in-memory') {
|
|
9
9
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3);
|
|
10
|
-
return
|
|
10
|
+
return makeSqliteDb({
|
|
11
11
|
sqlite3,
|
|
12
12
|
metadata: {
|
|
13
13
|
_tag: 'in-memory',
|
|
@@ -26,7 +26,7 @@ export const syncDbFactory = ({ sqlite3, }) => Effect.andThen(FileSystem.FileSys
|
|
|
26
26
|
fs,
|
|
27
27
|
});
|
|
28
28
|
const filePath = path.join(input.directory, input.fileName);
|
|
29
|
-
return
|
|
29
|
+
return makeSqliteDb({
|
|
30
30
|
sqlite3,
|
|
31
31
|
metadata: {
|
|
32
32
|
_tag: 'fs',
|
|
@@ -38,16 +38,17 @@ export const syncDbFactory = ({ sqlite3, }) => Effect.andThen(FileSystem.FileSys
|
|
|
38
38
|
},
|
|
39
39
|
});
|
|
40
40
|
}));
|
|
41
|
-
|
|
41
|
+
const nodeFsVfsMap = new Map();
|
|
42
42
|
const makeNodeFsDb = ({ sqlite3, fileName, directory, fs, }) => Effect.gen(function* () {
|
|
43
43
|
// NOTE to keep the filePath short, we use the directory name in the vfs name
|
|
44
44
|
// If this is becoming a problem, we can use a hashed version of the directory name
|
|
45
45
|
const vfsName = `node-fs-${directory}`;
|
|
46
|
-
if (
|
|
46
|
+
if (nodeFsVfsMap.has(vfsName) === false) {
|
|
47
47
|
// TODO refactor with Effect FileSystem instead of using `node:fs` directly inside of NodeFS
|
|
48
|
-
nodeFsVfs = new NodeFS(vfsName, sqlite3.module, directory);
|
|
48
|
+
const nodeFsVfs = new NodeFS(vfsName, sqlite3.module, directory);
|
|
49
49
|
// @ts-expect-error TODO fix types
|
|
50
50
|
sqlite3.vfs_register(nodeFsVfs, false);
|
|
51
|
+
nodeFsVfsMap.set(vfsName, nodeFsVfs);
|
|
51
52
|
}
|
|
52
53
|
yield* fs.makeDirectory(directory, { recursive: true });
|
|
53
54
|
const FILE_NAME_MAX_LENGTH = 56;
|
|
@@ -56,6 +57,7 @@ const makeNodeFsDb = ({ sqlite3, fileName, directory, fs, }) => Effect.gen(funct
|
|
|
56
57
|
}
|
|
57
58
|
// NOTE SQLite will return a "disk I/O error" if the file path is too long.
|
|
58
59
|
const dbPointer = sqlite3.open_v2Sync(fileName, undefined, vfsName);
|
|
59
|
-
|
|
60
|
+
const vfs = nodeFsVfsMap.get(vfsName);
|
|
61
|
+
return { dbPointer, vfs };
|
|
60
62
|
}).pipe(UnexpectedError.mapToUnexpectedError);
|
|
61
63
|
//# sourceMappingURL=mod.js.map
|
package/dist/node/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/sqlite-wasm",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1-dev.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -22,15 +22,21 @@
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@livestore/wa-sqlite": "1.0.
|
|
26
|
-
"@livestore/common": "0.3.
|
|
27
|
-
"@livestore/utils": "0.3.
|
|
25
|
+
"@livestore/wa-sqlite": "1.0.5-dev.2",
|
|
26
|
+
"@livestore/common": "0.3.1-dev.0",
|
|
27
|
+
"@livestore/utils": "0.3.1-dev.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@types/chrome": "^0.0.
|
|
31
|
-
"@types/node": "^22.
|
|
30
|
+
"@types/chrome": "^0.0.304",
|
|
31
|
+
"@types/node": "^22.15.17",
|
|
32
32
|
"@types/wicg-file-system-access": "^2023.10.5"
|
|
33
33
|
},
|
|
34
|
+
"files": [
|
|
35
|
+
"package.json",
|
|
36
|
+
"src",
|
|
37
|
+
"dist"
|
|
38
|
+
],
|
|
39
|
+
"license": "Apache-2.0",
|
|
34
40
|
"publishConfig": {
|
|
35
41
|
"access": "public"
|
|
36
42
|
},
|
package/src/browser/mod.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MakeSqliteDb, PersistenceInfo, SqliteDb } from '@livestore/common'
|
|
2
2
|
import { Effect, Hash } from '@livestore/utils/effect'
|
|
3
3
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js'
|
|
4
4
|
|
|
5
5
|
import { makeInMemoryDb } from '../in-memory-vfs.js'
|
|
6
|
-
import {
|
|
6
|
+
import { makeSqliteDb } from '../make-sqlite-db.js'
|
|
7
7
|
import type { AccessHandlePoolVFS } from './opfs/AccessHandlePoolVFS.js'
|
|
8
8
|
import { makeOpfsDb } from './opfs/index.js'
|
|
9
9
|
|
|
@@ -15,7 +15,7 @@ export type WebDatabaseMetadataInMemory = {
|
|
|
15
15
|
dbPointer: number
|
|
16
16
|
persistenceInfo: PersistenceInfo
|
|
17
17
|
deleteDb: () => void
|
|
18
|
-
configureDb: (db:
|
|
18
|
+
configureDb: (db: SqliteDb) => void
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export type WebDatabaseMetadataOpfs = {
|
|
@@ -28,14 +28,14 @@ export type WebDatabaseMetadataOpfs = {
|
|
|
28
28
|
opfsFileName: string
|
|
29
29
|
}>
|
|
30
30
|
deleteDb: () => void
|
|
31
|
-
configureDb: (db:
|
|
31
|
+
configureDb: (db: SqliteDb) => void
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
export type WebDatabaseMetadata = WebDatabaseMetadataInMemory | WebDatabaseMetadataOpfs
|
|
35
35
|
|
|
36
36
|
export type WebDatabaseInputInMemory = {
|
|
37
37
|
_tag: 'in-memory'
|
|
38
|
-
configureDb?: (db:
|
|
38
|
+
configureDb?: (db: SqliteDb) => void
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export type WebDatabaseInputOpfs = {
|
|
@@ -43,26 +43,24 @@ export type WebDatabaseInputOpfs = {
|
|
|
43
43
|
/** Filename of the database file (only used when exporting/downloading the database) */
|
|
44
44
|
fileName: string
|
|
45
45
|
opfsDirectory: string
|
|
46
|
-
configureDb?: (db:
|
|
46
|
+
configureDb?: (db: SqliteDb) => void
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export type WebDatabaseInput = WebDatabaseInputInMemory | WebDatabaseInputOpfs
|
|
50
50
|
|
|
51
|
-
export
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
WebDatabaseMetadata
|
|
60
|
-
> =>
|
|
51
|
+
export type MakeWebSqliteDb = MakeSqliteDb<
|
|
52
|
+
{ dbPointer: number; persistenceInfo: PersistenceInfo },
|
|
53
|
+
WebDatabaseInput,
|
|
54
|
+
WebDatabaseMetadata
|
|
55
|
+
>
|
|
56
|
+
|
|
57
|
+
export const sqliteDbFactory =
|
|
58
|
+
({ sqlite3 }: { sqlite3: SQLiteAPI }): MakeWebSqliteDb =>
|
|
61
59
|
(input: WebDatabaseInput) =>
|
|
62
60
|
Effect.gen(function* () {
|
|
63
61
|
if (input._tag === 'in-memory') {
|
|
64
62
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3)
|
|
65
|
-
return
|
|
63
|
+
return makeSqliteDb<WebDatabaseMetadataInMemory>({
|
|
66
64
|
sqlite3,
|
|
67
65
|
metadata: {
|
|
68
66
|
_tag: 'in-memory',
|
|
@@ -95,7 +93,7 @@ export const syncDbFactory =
|
|
|
95
93
|
fileName: dbFilename,
|
|
96
94
|
})
|
|
97
95
|
|
|
98
|
-
return
|
|
96
|
+
return makeSqliteDb<WebDatabaseMetadataOpfs>({
|
|
99
97
|
sqlite3,
|
|
100
98
|
metadata: {
|
|
101
99
|
_tag: 'opfs',
|
package/src/index_.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from '@livestore/wa-sqlite'
|
|
2
|
-
export * from './make-
|
|
2
|
+
export * from './make-sqlite-db.js'
|
|
@@ -2,20 +2,20 @@ import type {
|
|
|
2
2
|
PersistenceInfo,
|
|
3
3
|
PreparedBindValues,
|
|
4
4
|
PreparedStatement,
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
SqliteDb,
|
|
6
|
+
SqliteDbChangeset,
|
|
7
7
|
} from '@livestore/common'
|
|
8
8
|
import { SqliteError } from '@livestore/common'
|
|
9
9
|
import * as SqliteConstants from '@livestore/wa-sqlite/src/sqlite-constants.js'
|
|
10
10
|
|
|
11
11
|
import { makeInMemoryDb } from './in-memory-vfs.js'
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const makeSqliteDb = <
|
|
14
14
|
TMetadata extends {
|
|
15
15
|
dbPointer: number
|
|
16
16
|
persistenceInfo: PersistenceInfo
|
|
17
17
|
deleteDb: () => void
|
|
18
|
-
configureDb: (db:
|
|
18
|
+
configureDb: (db: SqliteDb<TMetadata>) => void
|
|
19
19
|
},
|
|
20
20
|
>({
|
|
21
21
|
sqlite3,
|
|
@@ -23,14 +23,14 @@ export const makeSynchronousDatabase = <
|
|
|
23
23
|
}: {
|
|
24
24
|
sqlite3: SQLiteAPI
|
|
25
25
|
metadata: TMetadata
|
|
26
|
-
}):
|
|
26
|
+
}): SqliteDb<TMetadata> => {
|
|
27
27
|
const preparedStmts: PreparedStatement[] = []
|
|
28
28
|
const { dbPointer } = metadata
|
|
29
29
|
|
|
30
30
|
let isClosed = false
|
|
31
31
|
|
|
32
|
-
const
|
|
33
|
-
_tag: '
|
|
32
|
+
const sqliteDb: SqliteDb<TMetadata> = {
|
|
33
|
+
_tag: 'SqliteDb',
|
|
34
34
|
metadata,
|
|
35
35
|
prepare: (queryStr) => {
|
|
36
36
|
try {
|
|
@@ -131,18 +131,18 @@ export const makeSynchronousDatabase = <
|
|
|
131
131
|
},
|
|
132
132
|
export: () => sqlite3.serialize(dbPointer, 'main'),
|
|
133
133
|
execute: (queryStr, bindValues, options) => {
|
|
134
|
-
const stmt =
|
|
134
|
+
const stmt = sqliteDb.prepare(queryStr)
|
|
135
135
|
stmt.execute(bindValues, options)
|
|
136
136
|
stmt.finalize()
|
|
137
137
|
},
|
|
138
138
|
select: (queryStr, bindValues) => {
|
|
139
|
-
const stmt =
|
|
139
|
+
const stmt = sqliteDb.prepare(queryStr)
|
|
140
140
|
const results = stmt.select(bindValues)
|
|
141
141
|
stmt.finalize()
|
|
142
142
|
return results as ReadonlyArray<any>
|
|
143
143
|
},
|
|
144
144
|
destroy: () => {
|
|
145
|
-
|
|
145
|
+
sqliteDb.close()
|
|
146
146
|
|
|
147
147
|
metadata.deleteDb()
|
|
148
148
|
// if (metadata._tag === 'opfs') {
|
|
@@ -183,7 +183,7 @@ export const makeSynchronousDatabase = <
|
|
|
183
183
|
sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main')
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
metadata.configureDb(
|
|
186
|
+
metadata.configureDb(sqliteDb)
|
|
187
187
|
},
|
|
188
188
|
session: () => {
|
|
189
189
|
const sessionPointer = sqlite3.session_create(dbPointer, 'main')
|
|
@@ -203,18 +203,28 @@ export const makeSynchronousDatabase = <
|
|
|
203
203
|
const changeset = {
|
|
204
204
|
invert: () => {
|
|
205
205
|
const inverted = sqlite3.changeset_invert(data)
|
|
206
|
-
return
|
|
206
|
+
return sqliteDb.makeChangeset(inverted)
|
|
207
207
|
},
|
|
208
208
|
apply: () => {
|
|
209
|
-
|
|
209
|
+
try {
|
|
210
|
+
sqlite3.changeset_apply(dbPointer, data)
|
|
211
|
+
// @ts-expect-error data should be garbage collected after use
|
|
212
|
+
data = undefined
|
|
213
|
+
} catch (cause: any) {
|
|
214
|
+
throw new SqliteError({
|
|
215
|
+
code: cause.code ?? -1,
|
|
216
|
+
cause,
|
|
217
|
+
note: `Failed calling makeChangeset.apply`,
|
|
218
|
+
})
|
|
219
|
+
}
|
|
210
220
|
},
|
|
211
|
-
} satisfies
|
|
221
|
+
} satisfies SqliteDbChangeset
|
|
212
222
|
|
|
213
223
|
return changeset
|
|
214
224
|
},
|
|
215
|
-
} satisfies
|
|
225
|
+
} satisfies SqliteDb<TMetadata>
|
|
216
226
|
|
|
217
|
-
metadata.configureDb(
|
|
227
|
+
metadata.configureDb(sqliteDb)
|
|
218
228
|
|
|
219
|
-
return
|
|
229
|
+
return sqliteDb
|
|
220
230
|
}
|