@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/src/node/mod.ts
CHANGED
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
type MakeSynchronousDatabase,
|
|
5
|
-
type PersistenceInfo,
|
|
6
|
-
type SynchronousDatabase,
|
|
7
|
-
UnexpectedError,
|
|
8
|
-
} from '@livestore/common'
|
|
3
|
+
import { type MakeSqliteDb, type PersistenceInfo, type SqliteDb, UnexpectedError } from '@livestore/common'
|
|
9
4
|
import { Effect, FileSystem } from '@livestore/utils/effect'
|
|
10
5
|
import type * as WaSqlite from '@livestore/wa-sqlite'
|
|
11
6
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js'
|
|
12
7
|
|
|
13
8
|
import { makeInMemoryDb } from '../in-memory-vfs.js'
|
|
14
|
-
import {
|
|
9
|
+
import { makeSqliteDb } from '../make-sqlite-db.js'
|
|
15
10
|
import { NodeFS } from './NodeFS.js'
|
|
16
11
|
|
|
17
12
|
export type NodeDatabaseMetadataInMemory = {
|
|
@@ -20,7 +15,7 @@ export type NodeDatabaseMetadataInMemory = {
|
|
|
20
15
|
dbPointer: number
|
|
21
16
|
persistenceInfo: PersistenceInfo
|
|
22
17
|
deleteDb: () => void
|
|
23
|
-
configureDb: (db:
|
|
18
|
+
configureDb: (db: SqliteDb) => void
|
|
24
19
|
}
|
|
25
20
|
|
|
26
21
|
export type NodeDatabaseMetadataFs = {
|
|
@@ -29,45 +24,43 @@ export type NodeDatabaseMetadataFs = {
|
|
|
29
24
|
dbPointer: number
|
|
30
25
|
persistenceInfo: PersistenceInfo<{ directory: string }>
|
|
31
26
|
deleteDb: () => void
|
|
32
|
-
configureDb: (db:
|
|
27
|
+
configureDb: (db: SqliteDb) => void
|
|
33
28
|
}
|
|
34
29
|
|
|
35
30
|
export type NodeDatabaseMetadata = NodeDatabaseMetadataInMemory | NodeDatabaseMetadataFs
|
|
36
31
|
|
|
37
32
|
export type NodeDatabaseInputInMemory = {
|
|
38
33
|
_tag: 'in-memory'
|
|
39
|
-
configureDb?: (db:
|
|
34
|
+
configureDb?: (db: SqliteDb) => void
|
|
40
35
|
}
|
|
41
36
|
|
|
42
37
|
export type NodeDatabaseInputFs = {
|
|
43
38
|
_tag: 'fs'
|
|
44
39
|
directory: string
|
|
45
40
|
fileName: string
|
|
46
|
-
configureDb?: (db:
|
|
41
|
+
configureDb?: (db: SqliteDb) => void
|
|
47
42
|
}
|
|
48
43
|
|
|
49
44
|
export type NodeDatabaseInput = NodeDatabaseInputInMemory | NodeDatabaseInputFs
|
|
50
45
|
|
|
51
|
-
export
|
|
46
|
+
export type MakeNodeSqliteDb = MakeSqliteDb<
|
|
47
|
+
{ dbPointer: number; persistenceInfo: PersistenceInfo },
|
|
48
|
+
NodeDatabaseInput,
|
|
49
|
+
NodeDatabaseMetadata
|
|
50
|
+
>
|
|
51
|
+
|
|
52
|
+
export const sqliteDbFactory = ({
|
|
52
53
|
sqlite3,
|
|
53
54
|
}: {
|
|
54
55
|
sqlite3: SQLiteAPI
|
|
55
|
-
}): Effect.Effect<
|
|
56
|
-
MakeSynchronousDatabase<
|
|
57
|
-
{ dbPointer: number; persistenceInfo: PersistenceInfo },
|
|
58
|
-
NodeDatabaseInput,
|
|
59
|
-
NodeDatabaseMetadata
|
|
60
|
-
>,
|
|
61
|
-
never,
|
|
62
|
-
FileSystem.FileSystem
|
|
63
|
-
> =>
|
|
56
|
+
}): Effect.Effect<MakeNodeSqliteDb, never, FileSystem.FileSystem> =>
|
|
64
57
|
Effect.andThen(
|
|
65
58
|
FileSystem.FileSystem,
|
|
66
59
|
(fs) => (input) =>
|
|
67
60
|
Effect.gen(function* () {
|
|
68
61
|
if (input._tag === 'in-memory') {
|
|
69
62
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3)
|
|
70
|
-
return
|
|
63
|
+
return makeSqliteDb<NodeDatabaseMetadataInMemory>({
|
|
71
64
|
sqlite3,
|
|
72
65
|
metadata: {
|
|
73
66
|
_tag: 'in-memory',
|
|
@@ -89,7 +82,7 @@ export const syncDbFactory = ({
|
|
|
89
82
|
|
|
90
83
|
const filePath = path.join(input.directory, input.fileName)
|
|
91
84
|
|
|
92
|
-
return
|
|
85
|
+
return makeSqliteDb<NodeDatabaseMetadataFs>({
|
|
93
86
|
sqlite3,
|
|
94
87
|
metadata: {
|
|
95
88
|
_tag: 'fs',
|
|
@@ -103,7 +96,7 @@ export const syncDbFactory = ({
|
|
|
103
96
|
}),
|
|
104
97
|
)
|
|
105
98
|
|
|
106
|
-
|
|
99
|
+
const nodeFsVfsMap = new Map<string, NodeFS>()
|
|
107
100
|
|
|
108
101
|
const makeNodeFsDb = ({
|
|
109
102
|
sqlite3,
|
|
@@ -120,11 +113,12 @@ const makeNodeFsDb = ({
|
|
|
120
113
|
// NOTE to keep the filePath short, we use the directory name in the vfs name
|
|
121
114
|
// If this is becoming a problem, we can use a hashed version of the directory name
|
|
122
115
|
const vfsName = `node-fs-${directory}`
|
|
123
|
-
if (
|
|
116
|
+
if (nodeFsVfsMap.has(vfsName) === false) {
|
|
124
117
|
// TODO refactor with Effect FileSystem instead of using `node:fs` directly inside of NodeFS
|
|
125
|
-
nodeFsVfs = new NodeFS(vfsName, (sqlite3 as any).module, directory)
|
|
118
|
+
const nodeFsVfs = new NodeFS(vfsName, (sqlite3 as any).module, directory)
|
|
126
119
|
// @ts-expect-error TODO fix types
|
|
127
120
|
sqlite3.vfs_register(nodeFsVfs, false)
|
|
121
|
+
nodeFsVfsMap.set(vfsName, nodeFsVfs)
|
|
128
122
|
}
|
|
129
123
|
|
|
130
124
|
yield* fs.makeDirectory(directory, { recursive: true })
|
|
@@ -137,5 +131,7 @@ const makeNodeFsDb = ({
|
|
|
137
131
|
// NOTE SQLite will return a "disk I/O error" if the file path is too long.
|
|
138
132
|
const dbPointer = sqlite3.open_v2Sync(fileName, undefined, vfsName)
|
|
139
133
|
|
|
140
|
-
|
|
134
|
+
const vfs = nodeFsVfsMap.get(vfsName)!
|
|
135
|
+
|
|
136
|
+
return { dbPointer, vfs }
|
|
141
137
|
}).pipe(UnexpectedError.mapToUnexpectedError)
|
package/.netlify/state.json
DELETED
package/dist/make-sync-db.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { PersistenceInfo, SynchronousDatabase } from '@livestore/common';
|
|
2
|
-
export declare const makeSynchronousDatabase: <TMetadata extends {
|
|
3
|
-
dbPointer: number;
|
|
4
|
-
persistenceInfo: PersistenceInfo;
|
|
5
|
-
deleteDb: () => void;
|
|
6
|
-
configureDb: (db: SynchronousDatabase<TMetadata>) => void;
|
|
7
|
-
}>({ sqlite3, metadata, }: {
|
|
8
|
-
sqlite3: SQLiteAPI;
|
|
9
|
-
metadata: TMetadata;
|
|
10
|
-
}) => SynchronousDatabase<TMetadata>;
|
|
11
|
-
//# sourceMappingURL=make-sync-db.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-sync-db.d.ts","sourceRoot":"","sources":["../src/make-sync-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,mBAAmB,EAEpB,MAAM,mBAAmB,CAAA;AAM1B,eAAO,MAAM,uBAAuB,GAClC,SAAS,SAAS;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,mBAAmB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC1D,0BAIA;IACD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,mBAAmB,CAAC,SAAS,CAkMhC,CAAA"}
|
package/tsconfig.json
DELETED