@livestore/livestore 0.0.12 → 0.0.13
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 +7 -7
- package/dist/.tsbuildinfo +1 -0
- package/dist/QueryCache.d.ts +20 -0
- package/dist/QueryCache.d.ts.map +1 -0
- package/dist/QueryCache.js +71 -0
- package/dist/QueryCache.js.map +1 -0
- package/dist/__tests__/react/fixture.d.ts +25 -0
- package/dist/__tests__/react/fixture.d.ts.map +1 -0
- package/dist/__tests__/react/fixture.js +61 -0
- package/dist/__tests__/react/fixture.js.map +1 -0
- package/dist/__tests__/react/useLiveStoreComponent.test.d.ts +2 -0
- package/dist/__tests__/react/useLiveStoreComponent.test.d.ts.map +1 -0
- package/dist/__tests__/react/useLiveStoreComponent.test.js +78 -0
- package/dist/__tests__/react/useLiveStoreComponent.test.js.map +1 -0
- package/dist/__tests__/reactive.test.d.ts +2 -0
- package/dist/__tests__/reactive.test.d.ts.map +1 -0
- package/dist/__tests__/reactive.test.js +198 -0
- package/dist/__tests__/reactive.test.js.map +1 -0
- package/dist/backends/base.d.ts +13 -0
- package/dist/backends/base.d.ts.map +1 -0
- package/dist/backends/base.js +53 -0
- package/dist/backends/base.js.map +1 -0
- package/dist/backends/in-memory/index.d.ts +22 -0
- package/dist/backends/in-memory/index.d.ts.map +1 -0
- package/dist/backends/in-memory/index.js +45 -0
- package/dist/backends/in-memory/index.js.map +1 -0
- package/dist/backends/index.d.ts +41 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +16 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/tauri/index.d.ts +21 -0
- package/dist/backends/tauri/index.d.ts.map +1 -0
- package/dist/backends/tauri/index.js +48 -0
- package/dist/backends/tauri/index.js.map +1 -0
- package/dist/backends/utils/idb.d.ts +10 -0
- package/dist/backends/utils/idb.d.ts.map +1 -0
- package/dist/backends/utils/idb.js +58 -0
- package/dist/backends/utils/idb.js.map +1 -0
- package/dist/backends/web-worker/index.d.ts +26 -0
- package/dist/backends/web-worker/index.d.ts.map +1 -0
- package/dist/backends/web-worker/index.js +63 -0
- package/dist/backends/web-worker/index.js.map +1 -0
- package/dist/backends/web-worker/worker.d.ts +17 -0
- package/dist/backends/web-worker/worker.d.ts.map +1 -0
- package/dist/backends/web-worker/worker.js +139 -0
- package/dist/backends/web-worker/worker.js.map +1 -0
- package/dist/bounded-collections.d.ts +34 -0
- package/dist/bounded-collections.d.ts.map +1 -0
- package/dist/bounded-collections.js +103 -0
- package/dist/bounded-collections.js.map +1 -0
- package/dist/componentKey.d.ts +20 -0
- package/dist/componentKey.d.ts.map +1 -0
- package/dist/componentKey.js +3 -0
- package/dist/componentKey.js.map +1 -0
- package/dist/effect/LiveStore.d.ts +42 -0
- package/dist/effect/LiveStore.d.ts.map +1 -0
- package/dist/effect/LiveStore.js +37 -0
- package/dist/effect/LiveStore.js.map +1 -0
- package/dist/effect/index.d.ts +2 -0
- package/dist/effect/index.d.ts.map +1 -0
- package/dist/effect/index.js +2 -0
- package/dist/effect/index.js.map +1 -0
- package/dist/events.d.ts +7 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -0
- package/dist/inMemoryDatabase.d.ts +60 -0
- package/dist/inMemoryDatabase.d.ts.map +1 -0
- package/dist/inMemoryDatabase.js +230 -0
- package/dist/inMemoryDatabase.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations.d.ts +9 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +62 -0
- package/dist/migrations.js.map +1 -0
- package/dist/otel.d.ts +4 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/otel.js +6 -0
- package/dist/otel.js.map +1 -0
- package/dist/react/LiveStoreContext.d.ts +11 -0
- package/dist/react/LiveStoreContext.d.ts.map +1 -0
- package/dist/react/LiveStoreContext.js +10 -0
- package/dist/react/LiveStoreContext.js.map +1 -0
- package/dist/react/LiveStoreProvider.d.ts +22 -0
- package/dist/react/LiveStoreProvider.d.ts.map +1 -0
- package/dist/react/LiveStoreProvider.js +49 -0
- package/dist/react/LiveStoreProvider.js.map +1 -0
- package/dist/react/index.d.ts +8 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +6 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/useGlobalQuery.d.ts +3 -0
- package/dist/react/useGlobalQuery.d.ts.map +1 -0
- package/dist/react/useGlobalQuery.js +23 -0
- package/dist/react/useGlobalQuery.js.map +1 -0
- package/dist/react/useGraphQL.d.ts +11 -0
- package/dist/react/useGraphQL.d.ts.map +1 -0
- package/dist/react/useGraphQL.js +67 -0
- package/dist/react/useGraphQL.js.map +1 -0
- package/dist/react/useLiveStoreComponent.d.ts +75 -0
- package/dist/react/useLiveStoreComponent.d.ts.map +1 -0
- package/dist/react/useLiveStoreComponent.js +301 -0
- package/dist/react/useLiveStoreComponent.js.map +1 -0
- package/dist/react/utils/useStateRefWithReactiveInput.d.ts +13 -0
- package/dist/react/utils/useStateRefWithReactiveInput.d.ts.map +1 -0
- package/dist/react/utils/useStateRefWithReactiveInput.js +38 -0
- package/dist/react/utils/useStateRefWithReactiveInput.js.map +1 -0
- package/dist/reactive.d.ts +140 -0
- package/dist/reactive.d.ts.map +1 -0
- package/dist/reactive.js +302 -0
- package/dist/reactive.js.map +1 -0
- package/dist/reactiveQueries/base-class.d.ts +24 -0
- package/dist/reactiveQueries/base-class.d.ts.map +1 -0
- package/dist/reactiveQueries/base-class.js +22 -0
- package/dist/reactiveQueries/base-class.js.map +1 -0
- package/dist/reactiveQueries/graphql.d.ts +25 -0
- package/dist/reactiveQueries/graphql.d.ts.map +1 -0
- package/dist/reactiveQueries/graphql.js +18 -0
- package/dist/reactiveQueries/graphql.js.map +1 -0
- package/dist/reactiveQueries/js.d.ts +19 -0
- package/dist/reactiveQueries/js.d.ts.map +1 -0
- package/dist/reactiveQueries/js.js +13 -0
- package/dist/reactiveQueries/js.js.map +1 -0
- package/dist/reactiveQueries/sql.d.ts +31 -0
- package/dist/reactiveQueries/sql.d.ts.map +1 -0
- package/dist/reactiveQueries/sql.js +32 -0
- package/dist/reactiveQueries/sql.js.map +1 -0
- package/dist/schema.d.ts +83 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +49 -0
- package/dist/schema.js.map +1 -0
- package/dist/storage/base.d.ts +10 -0
- package/dist/storage/base.d.ts.map +1 -0
- package/dist/storage/base.js +14 -0
- package/dist/storage/base.js.map +1 -0
- package/dist/storage/in-memory/index.d.ts +15 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -0
- package/dist/storage/in-memory/index.js +14 -0
- package/dist/storage/in-memory/index.js.map +1 -0
- package/dist/storage/index.d.ts +14 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +9 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/tauri/index.d.ts +19 -0
- package/dist/storage/tauri/index.d.ts.map +1 -0
- package/dist/storage/tauri/index.js +38 -0
- package/dist/storage/tauri/index.js.map +1 -0
- package/dist/storage/utils/idb.d.ts +10 -0
- package/dist/storage/utils/idb.d.ts.map +1 -0
- package/dist/storage/utils/idb.js +58 -0
- package/dist/storage/utils/idb.js.map +1 -0
- package/dist/storage/web-worker/index.d.ts +27 -0
- package/dist/storage/web-worker/index.d.ts.map +1 -0
- package/dist/storage/web-worker/index.js +76 -0
- package/dist/storage/web-worker/index.js.map +1 -0
- package/dist/storage/web-worker/worker.d.ts +13 -0
- package/dist/storage/web-worker/worker.d.ts.map +1 -0
- package/dist/storage/web-worker/worker.js +110 -0
- package/dist/storage/web-worker/worker.js.map +1 -0
- package/dist/store.d.ts +192 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +569 -0
- package/dist/store.js.map +1 -0
- package/dist/util.d.ts +26 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +53 -0
- package/dist/util.js.map +1 -0
- package/package.json +46 -19
- package/src/__tests__/react/fixture.tsx +19 -28
- package/src/effect/LiveStore.ts +8 -13
- package/src/events.ts +1 -1
- package/src/inMemoryDatabase.ts +100 -117
- package/src/index.ts +10 -16
- package/src/migrations.ts +101 -0
- package/src/otel.ts +0 -11
- package/src/react/LiveStoreProvider.tsx +12 -8
- package/src/react/index.ts +9 -0
- package/src/react/useGlobalQuery.ts +0 -3
- package/src/react/useLiveStoreComponent.ts +95 -37
- package/src/schema.ts +72 -145
- package/src/storage/in-memory/index.ts +21 -0
- package/src/storage/index.ts +27 -0
- package/src/{backends/tauri.ts → storage/tauri/index.ts} +13 -27
- package/src/storage/web-worker/index.ts +118 -0
- package/src/{backends/web-worker.ts → storage/web-worker/worker.ts} +17 -52
- package/src/store.ts +112 -79
- package/src/util.ts +5 -1
- package/tsconfig.json +1 -3
- package/src/backends/base.ts +0 -67
- package/src/backends/index.ts +0 -98
- package/src/backends/noop.ts +0 -32
- package/src/backends/web-in-memory.ts +0 -65
- package/src/backends/web.ts +0 -97
- /package/src/{backends → storage}/utils/idb.ts +0 -0
package/src/backends/web.ts
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import type * as otel from '@opentelemetry/api'
|
|
2
|
-
import * as Comlink from 'comlink'
|
|
3
|
-
|
|
4
|
-
import type { ParamsObject } from '../util.js'
|
|
5
|
-
import { prepareBindValues } from '../util.js'
|
|
6
|
-
import { BaseBackend } from './base.js'
|
|
7
|
-
import type { BackendOtelProps, SelectResponse, WritableDatabaseLocation } from './index.js'
|
|
8
|
-
import type { WrappedWorker } from './web-worker.js'
|
|
9
|
-
|
|
10
|
-
export type BackendOptionsWeb = {
|
|
11
|
-
type: 'web'
|
|
12
|
-
/** Specifies where to persist data for this backend */
|
|
13
|
-
persistentDatabaseLocation: WritableDatabaseLocation
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export class WebWorkerBackend extends BaseBackend {
|
|
17
|
-
worker: Comlink.Remote<WrappedWorker>
|
|
18
|
-
persistentDatabaseLocation: WritableDatabaseLocation
|
|
19
|
-
otelTracer: otel.Tracer
|
|
20
|
-
|
|
21
|
-
executionBacklog: { query: string; bindValues?: ParamsObject }[] = []
|
|
22
|
-
executionPromise: Promise<void> | undefined = undefined
|
|
23
|
-
|
|
24
|
-
private constructor({
|
|
25
|
-
worker,
|
|
26
|
-
persistentDatabaseLocation,
|
|
27
|
-
otelTracer,
|
|
28
|
-
}: {
|
|
29
|
-
worker: Comlink.Remote<WrappedWorker>
|
|
30
|
-
persistentDatabaseLocation: WritableDatabaseLocation
|
|
31
|
-
otelTracer: otel.Tracer
|
|
32
|
-
}) {
|
|
33
|
-
super()
|
|
34
|
-
this.worker = worker
|
|
35
|
-
this.persistentDatabaseLocation = persistentDatabaseLocation
|
|
36
|
-
this.otelTracer = otelTracer
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
static load = async (
|
|
40
|
-
{ persistentDatabaseLocation }: BackendOptionsWeb,
|
|
41
|
-
{ otelTracer }: BackendOtelProps,
|
|
42
|
-
): Promise<WebWorkerBackend> => {
|
|
43
|
-
// TODO: Importing the worker like this only works with Vite;
|
|
44
|
-
// should this really be inside the LiveStore library?
|
|
45
|
-
// Doesn't work with Firefox right now during dev https://bugzilla.mozilla.org/show_bug.cgi?id=1247687
|
|
46
|
-
const worker = new Worker(new URL('./web-worker.js', import.meta.url), {
|
|
47
|
-
type: 'module',
|
|
48
|
-
})
|
|
49
|
-
const wrappedWorker = Comlink.wrap<WrappedWorker>(worker)
|
|
50
|
-
|
|
51
|
-
await wrappedWorker.initialize({ persistentDatabaseLocation })
|
|
52
|
-
|
|
53
|
-
return new WebWorkerBackend({
|
|
54
|
-
worker: wrappedWorker,
|
|
55
|
-
persistentDatabaseLocation,
|
|
56
|
-
otelTracer,
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
execute = (query: string, bindValues_?: ParamsObject) => {
|
|
61
|
-
const bindValues = prepareBindValues(bindValues_ ?? {}, query)
|
|
62
|
-
this.executionBacklog.push({ query, bindValues })
|
|
63
|
-
|
|
64
|
-
// Instead of sending the queries to the worker immediately, we wait a bit and batch them up (which reduces the number of messages sent to the worker)
|
|
65
|
-
if (this.executionPromise === undefined) {
|
|
66
|
-
this.executionPromise = new Promise((resolve) => {
|
|
67
|
-
setTimeout(() => {
|
|
68
|
-
void this.worker.executeBulk(this.executionBacklog)
|
|
69
|
-
this.executionBacklog = []
|
|
70
|
-
this.executionPromise = undefined
|
|
71
|
-
|
|
72
|
-
resolve()
|
|
73
|
-
}, 10)
|
|
74
|
-
})
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
select = async <T>(query: string, bindValues?: ParamsObject): Promise<SelectResponse<T>> => {
|
|
79
|
-
// NOTE we need to wait for the executionBacklog to be worked off, before we run the select query (as it might depend on the previous execution queries)
|
|
80
|
-
await this.executionPromise
|
|
81
|
-
|
|
82
|
-
try {
|
|
83
|
-
const response = (await this.worker.select(query, bindValues)) as SelectResponse<T>
|
|
84
|
-
return response
|
|
85
|
-
} catch (e) {
|
|
86
|
-
console.error(`Error while executing query via "select": ${query}`)
|
|
87
|
-
throw e
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
getPersistedData = async (_parentSpan?: otel.Span): Promise<Uint8Array> => {
|
|
92
|
-
// NOTE we need to wait for the executionBacklog to be worked off
|
|
93
|
-
await this.executionPromise
|
|
94
|
-
|
|
95
|
-
return this.worker.getPersistedData()
|
|
96
|
-
}
|
|
97
|
-
}
|
|
File without changes
|