@livestore/livestore 0.0.39-dev.3 → 0.0.40
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 +15 -24
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/react/fixture.d.ts +210 -35
- package/dist/__tests__/react/fixture.d.ts.map +1 -1
- package/dist/__tests__/react/fixture.js +10 -29
- package/dist/__tests__/react/fixture.js.map +1 -1
- package/dist/cud.d.ts +28 -0
- package/dist/cud.d.ts.map +1 -0
- package/dist/cud.js +50 -0
- package/dist/cud.js.map +1 -0
- package/dist/cud.test.d.ts +2 -0
- package/dist/cud.test.d.ts.map +1 -0
- package/dist/cud.test.js +47 -0
- package/dist/cud.test.js.map +1 -0
- package/dist/inMemoryDatabase.d.ts +1 -1
- package/dist/inMemoryDatabase.d.ts.map +1 -1
- package/dist/inMemoryDatabase.js +1 -4
- package/dist/inMemoryDatabase.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +11 -7
- package/dist/migrations.js.map +1 -1
- package/dist/query-info.d.ts +49 -0
- package/dist/query-info.d.ts.map +1 -0
- package/dist/{update-path.js → query-info.js} +4 -3
- package/dist/query-info.js.map +1 -0
- package/dist/react/LiveStoreContext.d.ts +0 -6
- package/dist/react/LiveStoreContext.d.ts.map +1 -1
- package/dist/react/LiveStoreContext.js.map +1 -1
- package/dist/react/useAtom.d.ts +2 -2
- package/dist/react/useAtom.d.ts.map +1 -1
- package/dist/react/useAtom.js +3 -3
- package/dist/react/useAtom.js.map +1 -1
- package/dist/react/useQuery.d.ts.map +1 -1
- package/dist/react/useQuery.test.d.ts.map +1 -0
- package/dist/{__tests__/react → react}/useQuery.test.js +8 -11
- package/dist/react/useQuery.test.js.map +1 -0
- package/dist/react/useRow.d.ts +2 -2
- package/dist/react/useRow.d.ts.map +1 -1
- package/dist/react/useRow.js +5 -5
- package/dist/react/useRow.js.map +1 -1
- package/dist/react/useRow.test.d.ts.map +1 -0
- package/dist/{__tests__/react → react}/useRow.test.js +14 -38
- package/dist/react/useRow.test.js.map +1 -0
- package/dist/react/useTemporaryQuery.d.ts +2 -2
- package/dist/react/useTemporaryQuery.d.ts.map +1 -1
- package/dist/reactive.d.ts +2 -2
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +50 -15
- package/dist/reactive.js.map +1 -1
- package/dist/reactive.test.d.ts.map +1 -0
- package/dist/{__tests__/reactive.test.js → reactive.test.js} +1 -1
- package/dist/reactive.test.js.map +1 -0
- package/dist/reactiveQueries/base-class.d.ts +16 -8
- package/dist/reactiveQueries/base-class.d.ts.map +1 -1
- package/dist/reactiveQueries/base-class.js +2 -1
- package/dist/reactiveQueries/base-class.js.map +1 -1
- package/dist/reactiveQueries/graphql.d.ts +15 -9
- package/dist/reactiveQueries/graphql.d.ts.map +1 -1
- package/dist/reactiveQueries/graphql.js +29 -8
- package/dist/reactiveQueries/graphql.js.map +1 -1
- package/dist/reactiveQueries/js.d.ts +8 -8
- package/dist/reactiveQueries/js.d.ts.map +1 -1
- package/dist/reactiveQueries/js.js +5 -4
- package/dist/reactiveQueries/js.js.map +1 -1
- package/dist/reactiveQueries/sql.d.ts +11 -11
- package/dist/reactiveQueries/sql.d.ts.map +1 -1
- package/dist/reactiveQueries/sql.js +7 -6
- package/dist/reactiveQueries/sql.js.map +1 -1
- package/dist/reactiveQueries/sql.test.d.ts.map +1 -0
- package/dist/{__tests__/reactiveQueries → reactiveQueries}/sql.test.js +44 -34
- package/dist/reactiveQueries/sql.test.js.map +1 -0
- package/dist/row-query.d.ts +5 -5
- package/dist/row-query.d.ts.map +1 -1
- package/dist/row-query.js +11 -9
- package/dist/row-query.js.map +1 -1
- package/dist/schema/index.d.ts +20 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +18 -3
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/mutations.d.ts +81 -0
- package/dist/schema/mutations.d.ts.map +1 -0
- package/dist/schema/mutations.js +29 -0
- package/dist/schema/mutations.js.map +1 -0
- package/dist/schema/parse-utils.d.ts +3 -6
- package/dist/schema/parse-utils.d.ts.map +1 -1
- package/dist/schema/parse-utils.js +2 -27
- package/dist/schema/parse-utils.js.map +1 -1
- package/dist/schema/system-tables.d.ts +8 -8
- package/dist/schema/table-def.d.ts +6 -6
- package/dist/schema/table-def.d.ts.map +1 -1
- package/dist/schema/table-def.js +2 -2
- package/dist/schema/table-def.js.map +1 -1
- package/dist/storage/in-memory/index.d.ts +4 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/in-memory/index.js +3 -0
- package/dist/storage/in-memory/index.js.map +1 -1
- package/dist/storage/index.d.ts +4 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/tauri/index.d.ts +4 -0
- package/dist/storage/tauri/index.d.ts.map +1 -1
- package/dist/storage/tauri/index.js +6 -0
- package/dist/storage/tauri/index.js.map +1 -1
- package/dist/storage/utils/idb.d.ts +1 -0
- package/dist/storage/utils/idb.d.ts.map +1 -1
- package/dist/storage/utils/idb.js +11 -0
- package/dist/storage/utils/idb.js.map +1 -1
- package/dist/storage/web-worker/common.d.ts +11 -0
- package/dist/storage/web-worker/common.d.ts.map +1 -0
- package/dist/storage/web-worker/common.js +2 -0
- package/dist/storage/web-worker/common.js.map +1 -0
- package/dist/storage/web-worker/index.d.ts +14 -7
- package/dist/storage/web-worker/index.d.ts.map +1 -1
- package/dist/storage/web-worker/index.js +70 -14
- package/dist/storage/web-worker/index.js.map +1 -1
- package/dist/storage/web-worker/make-worker.d.ts +20 -0
- package/dist/storage/web-worker/make-worker.d.ts.map +1 -0
- package/dist/storage/web-worker/make-worker.js +155 -0
- package/dist/storage/web-worker/make-worker.js.map +1 -0
- package/dist/storage/web-worker/vite-dev-polyfill.d.ts +2 -0
- package/dist/storage/web-worker/vite-dev-polyfill.d.ts.map +1 -0
- package/dist/storage/web-worker/vite-dev-polyfill.js +35 -0
- package/dist/storage/web-worker/vite-dev-polyfill.js.map +1 -0
- package/dist/store.d.ts +32 -42
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +82 -131
- package/dist/store.js.map +1 -1
- package/dist/utils/dev.d.ts +3 -0
- package/dist/utils/dev.d.ts.map +1 -0
- package/dist/utils/dev.js +16 -0
- package/dist/utils/dev.js.map +1 -0
- package/dist/utils/util.d.ts +2 -0
- package/dist/utils/util.d.ts.map +1 -1
- package/dist/utils/util.js +2 -0
- package/dist/utils/util.js.map +1 -1
- package/package.json +26 -14
- package/src/__tests__/react/fixture.tsx +12 -30
- package/src/cud.test.ts +52 -0
- package/src/cud.ts +92 -0
- package/src/inMemoryDatabase.ts +2 -7
- package/src/index.ts +14 -8
- package/src/migrations.ts +10 -7
- package/src/{update-path.ts → query-info.ts} +18 -21
- package/src/react/LiveStoreContext.ts +0 -9
- package/src/react/useAtom.ts +6 -6
- package/src/{__tests__/react → react}/useQuery.test.tsx +11 -11
- package/src/react/useQuery.ts +1 -1
- package/src/{__tests__/react → react}/useRow.test.tsx +21 -39
- package/src/react/useRow.ts +10 -10
- package/src/{__tests__/reactive.test.ts → reactive.test.ts} +1 -1
- package/src/reactive.ts +60 -19
- package/src/reactiveQueries/base-class.ts +23 -9
- package/src/reactiveQueries/graphql.ts +49 -13
- package/src/reactiveQueries/js.ts +15 -13
- package/src/{__tests__/reactiveQueries → reactiveQueries}/sql.test.ts +44 -34
- package/src/reactiveQueries/sql.ts +24 -22
- package/src/row-query.ts +24 -22
- package/src/schema/index.ts +47 -11
- package/src/schema/mutations.ts +129 -0
- package/src/schema/parse-utils.ts +3 -45
- package/src/schema/table-def.ts +9 -2
- package/src/storage/in-memory/index.ts +7 -0
- package/src/storage/index.ts +8 -0
- package/src/storage/tauri/index.ts +10 -0
- package/src/storage/utils/idb.ts +14 -0
- package/src/storage/web-worker/common.ts +6 -0
- package/src/storage/web-worker/index.ts +86 -17
- package/src/storage/web-worker/make-worker.ts +214 -0
- package/src/storage/web-worker/vite-dev-polyfill.ts +33 -0
- package/src/store.ts +142 -212
- package/src/utils/dev.ts +23 -0
- package/src/utils/util.ts +4 -0
- package/dist/__tests__/mutations.test.d.ts +0 -2
- package/dist/__tests__/mutations.test.d.ts.map +0 -1
- package/dist/__tests__/mutations.test.js +0 -40
- package/dist/__tests__/mutations.test.js.map +0 -1
- package/dist/__tests__/react/useQuery.test.d.ts.map +0 -1
- package/dist/__tests__/react/useQuery.test.js.map +0 -1
- package/dist/__tests__/react/useRow.test.d.ts.map +0 -1
- package/dist/__tests__/react/useRow.test.js.map +0 -1
- package/dist/__tests__/reactive.test.d.ts.map +0 -1
- package/dist/__tests__/reactive.test.js.map +0 -1
- package/dist/__tests__/reactiveQueries/sql.test.d.ts.map +0 -1
- package/dist/__tests__/reactiveQueries/sql.test.js.map +0 -1
- package/dist/events.d.ts +0 -7
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -2
- package/dist/events.js.map +0 -1
- package/dist/mutations.d.ts +0 -33
- package/dist/mutations.d.ts.map +0 -1
- package/dist/mutations.js +0 -38
- package/dist/mutations.js.map +0 -1
- package/dist/schema/action.d.ts +0 -30
- package/dist/schema/action.d.ts.map +0 -1
- package/dist/schema/action.js +0 -3
- package/dist/schema/action.js.map +0 -1
- package/dist/storage/web-worker/worker.d.ts +0 -13
- package/dist/storage/web-worker/worker.d.ts.map +0 -1
- package/dist/storage/web-worker/worker.js +0 -110
- package/dist/storage/web-worker/worker.js.map +0 -1
- package/dist/update-path.d.ts +0 -52
- package/dist/update-path.d.ts.map +0 -1
- package/dist/update-path.js.map +0 -1
- package/src/__tests__/mutations.test.ts +0 -43
- package/src/events.ts +0 -8
- package/src/mutations.ts +0 -79
- package/src/schema/action.ts +0 -41
- package/src/storage/web-worker/worker.ts +0 -141
- /package/dist/{__tests__/react → react}/useQuery.test.d.ts +0 -0
- /package/dist/{__tests__/react → react}/useRow.test.d.ts +0 -0
- /package/dist/{__tests__/reactive.test.d.ts → reactive.test.d.ts} +0 -0
- /package/dist/{__tests__/reactiveQueries → reactiveQueries}/sql.test.d.ts +0 -0
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
// Web Worker file for running SQLite in a web worker.
|
|
2
|
-
|
|
3
|
-
// TODO: create types for these libraries? SQL.js already should have types;
|
|
4
|
-
// we just need the types to apply to the fork.
|
|
5
|
-
import { shouldNeverHappen } from '@livestore/utils'
|
|
6
|
-
import * as Comlink from 'comlink'
|
|
7
|
-
import type * as SqliteWasm from 'sqlite-esm'
|
|
8
|
-
import sqlite3InitModule from 'sqlite-esm'
|
|
9
|
-
|
|
10
|
-
// import { v4 as uuid } from 'uuid'
|
|
11
|
-
import type { Bindable } from '../../utils/util.js'
|
|
12
|
-
import { casesHandled, sql } from '../../utils/util.js'
|
|
13
|
-
import { IDB } from '../utils/idb.js'
|
|
14
|
-
import type { StorageOptionsWeb } from './index.js'
|
|
15
|
-
|
|
16
|
-
// A global variable to hold the database connection.
|
|
17
|
-
// let db: SqliteWasm.Database
|
|
18
|
-
let db: SqliteWasm.DatabaseApi
|
|
19
|
-
|
|
20
|
-
let sqlite3: SqliteWasm.Sqlite3Static
|
|
21
|
-
|
|
22
|
-
// TODO get rid of this in favour of a "proper" IDB SQLite storage
|
|
23
|
-
let idb: IDB | undefined
|
|
24
|
-
|
|
25
|
-
/** The location where this database storage persists its data */
|
|
26
|
-
let options_: StorageOptionsWeb
|
|
27
|
-
|
|
28
|
-
const configureConnection = () =>
|
|
29
|
-
db.exec(sql`
|
|
30
|
-
PRAGMA page_size=8192;
|
|
31
|
-
PRAGMA journal_mode=MEMORY;
|
|
32
|
-
PRAGMA foreign_keys='ON'; -- we want foreign key constraints to be enforced
|
|
33
|
-
`)
|
|
34
|
-
|
|
35
|
-
/** A full virtual filename in the IDB FS */
|
|
36
|
-
const fullyQualifiedFilename = (name: string) => `${name}.db`
|
|
37
|
-
|
|
38
|
-
const initialize = async (options: StorageOptionsWeb) => {
|
|
39
|
-
options_ = options
|
|
40
|
-
|
|
41
|
-
sqlite3 = await sqlite3InitModule({
|
|
42
|
-
print: (message) => console.log(`[sql-client] ${message}`),
|
|
43
|
-
printErr: (message) => console.error(`[sql-client] ${message}`),
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
switch (options.type) {
|
|
47
|
-
case 'opfs': {
|
|
48
|
-
try {
|
|
49
|
-
db = new sqlite3.oo1.OpfsDb(fullyQualifiedFilename(options.fileName)) // , 'c'
|
|
50
|
-
} catch (e) {
|
|
51
|
-
debugger
|
|
52
|
-
}
|
|
53
|
-
break
|
|
54
|
-
}
|
|
55
|
-
case 'indexeddb': {
|
|
56
|
-
try {
|
|
57
|
-
db = new sqlite3.oo1.DB({ filename: ':memory:', flags: 'c' })
|
|
58
|
-
idb = new IDB(options.fileName)
|
|
59
|
-
|
|
60
|
-
const bytes = await idb.get('db')
|
|
61
|
-
|
|
62
|
-
if (bytes !== undefined) {
|
|
63
|
-
// Based on https://sqlite.org/forum/forumpost/2119230da8ac5357a13b731f462dc76e08621a4a29724f7906d5f35bb8508465
|
|
64
|
-
// TODO find cleaner way to do this once possible in sqlite3-wasm
|
|
65
|
-
const p = sqlite3.wasm.allocFromTypedArray(bytes)
|
|
66
|
-
const _rc = sqlite3.capi.sqlite3_deserialize(db.pointer, 'main', p, bytes.length, bytes.length, 0)
|
|
67
|
-
}
|
|
68
|
-
} catch (e) {
|
|
69
|
-
debugger
|
|
70
|
-
}
|
|
71
|
-
break
|
|
72
|
-
}
|
|
73
|
-
default: {
|
|
74
|
-
casesHandled(options.type)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
configureConnection()
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// TODO get rid of this in favour of a "proper" IDB SQLite storage
|
|
82
|
-
let idbPersistTimeout: NodeJS.Timeout | undefined
|
|
83
|
-
|
|
84
|
-
type ExecutionQueueItem = { query: string; bindValues?: Bindable }
|
|
85
|
-
|
|
86
|
-
const executeBulk = (executionItems: ExecutionQueueItem[]): void => {
|
|
87
|
-
let batchItems: ExecutionQueueItem[] = []
|
|
88
|
-
|
|
89
|
-
while (executionItems.length > 0) {
|
|
90
|
-
try {
|
|
91
|
-
db.exec('BEGIN TRANSACTION') // Start the transaction
|
|
92
|
-
|
|
93
|
-
batchItems = executionItems.splice(0, 50)
|
|
94
|
-
|
|
95
|
-
for (const { query, bindValues } of batchItems) {
|
|
96
|
-
db.exec({
|
|
97
|
-
sql: query,
|
|
98
|
-
bind: bindValues as TODO,
|
|
99
|
-
returnValue: 'resultRows',
|
|
100
|
-
rowMode: 'object',
|
|
101
|
-
})
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
db.exec('COMMIT') // Commit the transaction
|
|
105
|
-
} catch (error) {
|
|
106
|
-
try {
|
|
107
|
-
db.exec('ROLLBACK') // Rollback in case of an error
|
|
108
|
-
} catch (e) {
|
|
109
|
-
console.error('Error rolling back transaction', e)
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
shouldNeverHappen(`Error executing query: ${error} \n ${JSON.stringify(batchItems)}`)
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// TODO get rid of this in favour of a "proper" IDB SQLite storage
|
|
117
|
-
if (options_.type === 'indexeddb') {
|
|
118
|
-
if (idbPersistTimeout !== undefined) {
|
|
119
|
-
clearTimeout(idbPersistTimeout)
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
idbPersistTimeout = setTimeout(() => {
|
|
123
|
-
const data = sqlite3.capi.sqlite3_js_db_export(db.pointer) as Uint8Array
|
|
124
|
-
|
|
125
|
-
void idb!.put('db', data)
|
|
126
|
-
}, 1000)
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const wrappedWorker = { initialize, executeBulk }
|
|
131
|
-
|
|
132
|
-
export type WrappedWorker = typeof wrappedWorker
|
|
133
|
-
|
|
134
|
-
Comlink.expose(wrappedWorker)
|
|
135
|
-
|
|
136
|
-
// NOTE keep this around for debugging
|
|
137
|
-
// db.exec({
|
|
138
|
-
// sql: `select * from sqlite_master where name = 'library_tracks'`,
|
|
139
|
-
// callback: (_: TODO) => console.log(_),
|
|
140
|
-
// rowMode: 'object',
|
|
141
|
-
// } as TODO)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|