@livestore/livestore 0.3.0-dev.4 → 0.3.0-dev.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/dist/.tsbuildinfo +1 -1
- package/dist/QueryCache.d.ts.map +1 -1
- package/dist/SqliteDbWrapper.d.ts +60 -0
- package/dist/SqliteDbWrapper.d.ts.map +1 -0
- package/dist/{SynchronousDatabaseWrapper.js → SqliteDbWrapper.js} +69 -34
- package/dist/SqliteDbWrapper.js.map +1 -0
- package/dist/effect/LiveStore.d.ts +6 -34
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +10 -12
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/effect/mod.d.ts +3 -0
- package/dist/effect/mod.d.ts.map +1 -0
- package/dist/effect/mod.js +3 -0
- package/dist/effect/mod.js.map +1 -0
- package/dist/internal/mod.d.ts +3 -0
- package/dist/internal/mod.d.ts.map +1 -0
- package/dist/internal/mod.js +3 -0
- package/dist/internal/mod.js.map +1 -0
- package/dist/live-queries/base-class.d.ts +65 -27
- package/dist/live-queries/base-class.d.ts.map +1 -1
- package/dist/live-queries/base-class.js +54 -13
- package/dist/live-queries/base-class.js.map +1 -1
- package/dist/live-queries/client-document-get-query.d.ts +12 -0
- package/dist/live-queries/client-document-get-query.d.ts.map +1 -0
- package/dist/live-queries/client-document-get-query.js +18 -0
- package/dist/live-queries/client-document-get-query.js.map +1 -0
- package/dist/live-queries/computed.d.ts +12 -14
- package/dist/live-queries/computed.d.ts.map +1 -1
- package/dist/live-queries/computed.js +37 -15
- package/dist/live-queries/computed.js.map +1 -1
- package/dist/live-queries/db-query.d.ts +64 -0
- package/dist/live-queries/db-query.d.ts.map +1 -0
- package/dist/live-queries/{db.js → db-query.js} +83 -41
- package/dist/live-queries/db-query.js.map +1 -0
- package/dist/live-queries/db-query.test.d.ts +2 -0
- package/dist/live-queries/db-query.test.d.ts.map +1 -0
- package/dist/live-queries/db-query.test.js +133 -0
- package/dist/live-queries/db-query.test.js.map +1 -0
- package/dist/live-queries/mod.d.ts +5 -0
- package/dist/live-queries/mod.d.ts.map +1 -0
- package/dist/live-queries/mod.js +5 -0
- package/dist/live-queries/mod.js.map +1 -0
- package/dist/live-queries/signal.d.ts +20 -0
- package/dist/live-queries/signal.d.ts.map +1 -0
- package/dist/live-queries/signal.js +33 -0
- package/dist/live-queries/signal.js.map +1 -0
- package/dist/live-queries/signal.test.d.ts +2 -0
- package/dist/live-queries/signal.test.d.ts.map +1 -0
- package/dist/live-queries/signal.test.js +17 -0
- package/dist/live-queries/signal.test.js.map +1 -0
- package/dist/mod.d.ts +14 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +13 -0
- package/dist/mod.js.map +1 -0
- package/dist/reactive.d.ts +23 -17
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +23 -19
- package/dist/reactive.js.map +1 -1
- package/dist/reactive.test.js +1 -1
- package/dist/reactive.test.js.map +1 -1
- package/dist/store/create-store.d.ts +70 -12
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/create-store.js +69 -19
- package/dist/store/create-store.js.map +1 -1
- package/dist/store/devtools.d.ts +5 -4
- package/dist/store/devtools.d.ts.map +1 -1
- package/dist/store/devtools.js +103 -47
- package/dist/store/devtools.js.map +1 -1
- package/dist/store/store-types.d.ts +32 -42
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store-types.js +2 -5
- package/dist/store/store-types.js.map +1 -1
- package/dist/store/store.d.ts +104 -39
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +261 -214
- package/dist/store/store.js.map +1 -1
- package/dist/utils/data-structures.d.ts.map +1 -1
- package/dist/utils/dev.d.ts.map +1 -1
- package/dist/utils/dev.js +6 -1
- package/dist/utils/dev.js.map +1 -1
- package/dist/utils/function-string.d.ts +7 -0
- package/dist/utils/function-string.d.ts.map +1 -0
- package/dist/utils/function-string.js +9 -0
- package/dist/utils/function-string.js.map +1 -0
- package/dist/utils/stack-info.d.ts.map +1 -1
- package/dist/utils/stack-info.js +6 -1
- package/dist/utils/stack-info.js.map +1 -1
- package/dist/utils/stack-info.test.js +54 -1
- package/dist/utils/stack-info.test.js.map +1 -1
- package/dist/utils/tests/fixture.d.ts +59 -216
- package/dist/utils/tests/fixture.d.ts.map +1 -1
- package/dist/utils/tests/fixture.js +23 -18
- package/dist/utils/tests/fixture.js.map +1 -1
- package/dist/utils/tests/mod.d.ts +1 -0
- package/dist/utils/tests/mod.d.ts.map +1 -1
- package/dist/utils/tests/mod.js +1 -0
- package/dist/utils/tests/mod.js.map +1 -1
- package/dist/utils/tests/otel.d.ts.map +1 -1
- package/dist/utils/tests/otel.js +8 -3
- package/dist/utils/tests/otel.js.map +1 -1
- package/package.json +29 -26
- package/src/{SynchronousDatabaseWrapper.ts → SqliteDbWrapper.ts} +92 -42
- package/src/effect/LiveStore.ts +27 -64
- package/src/effect/{index.ts → mod.ts} +2 -3
- package/src/internal/mod.ts +2 -0
- package/src/live-queries/__snapshots__/{db.test.ts.snap → db-query.test.ts.snap} +220 -45
- package/src/live-queries/base-class.ts +152 -50
- package/src/live-queries/client-document-get-query.ts +52 -0
- package/src/live-queries/computed.ts +51 -33
- package/src/live-queries/db-query.test.ts +192 -0
- package/src/live-queries/{db.ts → db-query.ts} +140 -82
- package/src/live-queries/mod.ts +4 -0
- package/src/live-queries/signal.test.ts +25 -0
- package/src/live-queries/signal.ts +47 -0
- package/src/mod.ts +42 -0
- package/src/reactive.test.ts +1 -1
- package/src/reactive.ts +66 -43
- package/src/store/create-store.ts +187 -59
- package/src/store/devtools.ts +136 -54
- package/src/store/store-types.ts +31 -43
- package/src/store/store.ts +385 -309
- package/src/utils/dev.ts +6 -1
- package/src/utils/function-string.ts +12 -0
- package/src/utils/stack-info.test.ts +58 -1
- package/src/utils/stack-info.ts +6 -1
- package/src/utils/tests/fixture.ts +22 -31
- package/src/utils/tests/mod.ts +1 -0
- package/src/utils/tests/otel.ts +10 -3
- package/dist/SynchronousDatabaseWrapper.d.ts +0 -41
- package/dist/SynchronousDatabaseWrapper.d.ts.map +0 -1
- package/dist/SynchronousDatabaseWrapper.js.map +0 -1
- package/dist/effect/index.d.ts +0 -2
- package/dist/effect/index.d.ts.map +0 -1
- package/dist/effect/index.js +0 -2
- package/dist/effect/index.js.map +0 -1
- package/dist/global-state.d.ts +0 -14
- package/dist/global-state.d.ts.map +0 -1
- package/dist/global-state.js +0 -16
- package/dist/global-state.js.map +0 -1
- package/dist/index.d.ts +0 -20
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -16
- package/dist/index.js.map +0 -1
- package/dist/live-queries/db.d.ts +0 -66
- package/dist/live-queries/db.d.ts.map +0 -1
- package/dist/live-queries/db.js.map +0 -1
- package/dist/live-queries/db.test.d.ts +0 -2
- package/dist/live-queries/db.test.d.ts.map +0 -1
- package/dist/live-queries/db.test.js +0 -118
- package/dist/live-queries/db.test.js.map +0 -1
- package/dist/live-queries/graphql.d.ts +0 -49
- package/dist/live-queries/graphql.d.ts.map +0 -1
- package/dist/live-queries/graphql.js +0 -122
- package/dist/live-queries/graphql.js.map +0 -1
- package/dist/row-query-utils.d.ts +0 -17
- package/dist/row-query-utils.d.ts.map +0 -1
- package/dist/row-query-utils.js +0 -31
- package/dist/row-query-utils.js.map +0 -1
- package/dist/utils/otel.d.ts +0 -4
- package/dist/utils/otel.d.ts.map +0 -1
- package/dist/utils/otel.js +0 -6
- package/dist/utils/otel.js.map +0 -1
- package/src/global-state.ts +0 -20
- package/src/index.ts +0 -66
- package/src/live-queries/db.test.ts +0 -154
- package/src/live-queries/graphql.ts +0 -219
- package/src/row-query-utils.ts +0 -66
- package/src/utils/otel.ts +0 -9
- package/tsconfig.json +0 -18
- package/vitest.config.js +0 -9
package/dist/store/store.d.ts
CHANGED
@@ -1,50 +1,68 @@
|
|
1
|
-
import type { ClientSession, ParamsObject, QueryBuilder, UnexpectedError } from '@livestore/common';
|
1
|
+
import type { ClientSession, ClientSessionSyncProcessor, ParamsObject, QueryBuilder, UnexpectedError } from '@livestore/common';
|
2
2
|
import type { LiveStoreSchema } from '@livestore/common/schema';
|
3
|
-
import {
|
3
|
+
import { LiveStoreEvent } from '@livestore/common/schema';
|
4
4
|
import type { Scope } from '@livestore/utils/effect';
|
5
|
-
import { Cause, Inspectable } from '@livestore/utils/effect';
|
5
|
+
import { Cause, Effect, Inspectable, Stream } from '@livestore/utils/effect';
|
6
6
|
import * as otel from '@opentelemetry/api';
|
7
|
-
import {
|
8
|
-
import type { LiveQuery, QueryContext, ReactivityGraph } from '../live-queries/base-class.js';
|
7
|
+
import type { LiveQuery, LiveQueryDef, ReactivityGraph, ReactivityGraphContext, SignalDef } from '../live-queries/base-class.js';
|
9
8
|
import type { Ref } from '../reactive.js';
|
10
|
-
import {
|
9
|
+
import { SqliteDbWrapper } from '../SqliteDbWrapper.js';
|
11
10
|
import { ReferenceCountedSet } from '../utils/data-structures.js';
|
12
|
-
import type {
|
13
|
-
|
11
|
+
import type { StackInfo } from '../utils/stack-info.js';
|
12
|
+
import type { RefreshReason, StoreCommitOptions, StoreOptions, StoreOtel, Unsubscribe } from './store-types.js';
|
13
|
+
export declare class Store<TSchema extends LiveStoreSchema = LiveStoreSchema, TContext = {}> extends Inspectable.Class {
|
14
14
|
readonly storeId: string;
|
15
15
|
reactivityGraph: ReactivityGraph;
|
16
|
-
|
16
|
+
sqliteDbWrapper: SqliteDbWrapper;
|
17
17
|
clientSession: ClientSession;
|
18
18
|
schema: LiveStoreSchema;
|
19
|
-
|
20
|
-
graphQLContext?: TGraphQLContext;
|
19
|
+
context: TContext;
|
21
20
|
otel: StoreOtel;
|
22
21
|
/**
|
23
22
|
* Note we're using `Ref<null>` here as we don't care about the value but only about *that* something has changed.
|
24
23
|
* This only works in combination with `equal: () => false` which will always trigger a refresh.
|
25
24
|
*/
|
26
25
|
tableRefs: {
|
27
|
-
[key: string]: Ref<null,
|
26
|
+
[key: string]: Ref<null, ReactivityGraphContext, RefreshReason>;
|
28
27
|
};
|
29
|
-
private
|
28
|
+
private effectContext;
|
30
29
|
/** RC-based set to see which queries are currently subscribed to */
|
31
30
|
activeQueries: ReferenceCountedSet<LiveQuery<any>>;
|
32
|
-
readonly
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
private constructor();
|
37
|
-
static createStore: <TGraphQLContext_1 extends BaseGraphQLContext, TSchema_1 extends LiveStoreSchema = LiveStoreSchema>(storeOptions: StoreOptions<TGraphQLContext_1, TSchema_1>, parentSpan: otel.Span) => Store<TGraphQLContext_1, TSchema_1>;
|
31
|
+
readonly __eventSchema: LiveStoreEvent.ForEventDefRecord<TSchema["_EventDefMapType"]>;
|
32
|
+
readonly syncProcessor: ClientSessionSyncProcessor;
|
33
|
+
readonly boot: Effect.Effect<void, UnexpectedError, Scope.Scope>;
|
34
|
+
constructor({ clientSession, schema, otelOptions, context, batchUpdates, storeId, effectContext, params, confirmUnsavedChanges, __runningInDevtools, }: StoreOptions<TSchema, TContext>);
|
38
35
|
get sessionId(): string;
|
36
|
+
get clientId(): string;
|
39
37
|
/**
|
40
38
|
* Subscribe to the results of a query
|
41
39
|
* Returns a function to cancel the subscription.
|
40
|
+
*
|
41
|
+
* @example
|
42
|
+
* ```ts
|
43
|
+
* const unsubscribe = store.subscribe(query$, { onUpdate: (result) => console.log(result) })
|
44
|
+
* ```
|
42
45
|
*/
|
43
|
-
subscribe: <TResult>(query
|
46
|
+
subscribe: <TResult>(query: LiveQueryDef<TResult> | LiveQuery<TResult>, options: {
|
47
|
+
/** Called when the query result has changed */
|
48
|
+
onUpdate: (value: TResult) => void;
|
49
|
+
onSubscribe?: (query$: LiveQuery<TResult>) => void;
|
50
|
+
/** Gets called after the query subscription has been removed */
|
51
|
+
onUnsubsubscribe?: () => void;
|
44
52
|
label?: string;
|
53
|
+
/**
|
54
|
+
* Skips the initial `onUpdate` callback
|
55
|
+
* @default false
|
56
|
+
*/
|
57
|
+
skipInitialRun?: boolean;
|
45
58
|
otelContext?: otel.Context;
|
59
|
+
/** If provided, the stack info will be added to the `activeSubscriptions` set of the query */
|
60
|
+
stackInfo?: StackInfo;
|
61
|
+
}) => Unsubscribe;
|
62
|
+
subscribeStream: <TResult>(query$: LiveQueryDef<TResult>, options?: {
|
63
|
+
label?: string;
|
46
64
|
skipInitialRun?: boolean;
|
47
|
-
} | undefined) =>
|
65
|
+
} | undefined) => Stream.Stream<TResult>;
|
48
66
|
/**
|
49
67
|
* Synchronously queries the database without creating a LiveQuery.
|
50
68
|
* This is useful for queries that don't need to be reactive.
|
@@ -59,42 +77,89 @@ export declare class Store<TGraphQLContext extends BaseGraphQLContext = BaseGrap
|
|
59
77
|
* const completedTodos = store.query({ query: 'SELECT * FROM todo WHERE complete = 1', bindValues: {} })
|
60
78
|
* ```
|
61
79
|
*/
|
62
|
-
query: <TResult>(query: QueryBuilder<TResult, any, any> | LiveQuery<TResult
|
80
|
+
query: <TResult>(query: QueryBuilder<TResult, any, any> | LiveQuery<TResult> | LiveQueryDef<TResult> | {
|
63
81
|
query: string;
|
64
82
|
bindValues: ParamsObject;
|
65
83
|
}, options?: {
|
66
84
|
otelContext?: otel.Context;
|
85
|
+
debugRefreshReason?: RefreshReason;
|
67
86
|
}) => TResult;
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
87
|
+
setSignal: <T>(signalDef: SignalDef<T>, value: T) => void;
|
88
|
+
/**
|
89
|
+
* Commit a list of events to the store which will immediately update the local database
|
90
|
+
* and sync the events across other clients (similar to a `git commit`).
|
91
|
+
*
|
92
|
+
* @example
|
93
|
+
* ```ts
|
94
|
+
* store.commit(events.todoCreated({ id: nanoid(), text: 'Make coffee' }))
|
95
|
+
* ```
|
96
|
+
*
|
97
|
+
* You can call `commit` with multiple events to apply them in a single database transaction.
|
98
|
+
*
|
99
|
+
* @example
|
100
|
+
* ```ts
|
101
|
+
* const todoId = nanoid()
|
102
|
+
* store.commit(
|
103
|
+
* events.todoCreated({ id: todoId, text: 'Make coffee' }),
|
104
|
+
* events.todoCompleted({ id: todoId }))
|
105
|
+
* ```
|
106
|
+
*
|
107
|
+
* For more advanced transaction scenarios, you can pass a synchronous function to `commit` which will receive a callback
|
108
|
+
* to which you can pass multiple events to be committed in the same database transaction.
|
109
|
+
* Under the hood this will simply collect all events and apply them in a single database transaction.
|
110
|
+
*
|
111
|
+
* @example
|
112
|
+
* ```ts
|
113
|
+
* store.commit((commit) => {
|
114
|
+
* const todoId = nanoid()
|
115
|
+
* if (Math.random() > 0.5) {
|
116
|
+
* commit(events.todoCreated({ id: todoId, text: 'Make coffee' }))
|
117
|
+
* } else {
|
118
|
+
* commit(events.todoCompleted({ id: todoId }))
|
119
|
+
* }
|
120
|
+
* })
|
121
|
+
* ```
|
122
|
+
*
|
123
|
+
* When committing a large batch of events, you can also skip the database refresh to improve performance
|
124
|
+
* and call `store.manualRefresh()` after all events have been committed.
|
125
|
+
*
|
126
|
+
* @example
|
127
|
+
* ```ts
|
128
|
+
* const todos = [
|
129
|
+
* { id: nanoid(), text: 'Make coffee' },
|
130
|
+
* { id: nanoid(), text: 'Buy groceries' },
|
131
|
+
* // ... 1000 more todos
|
132
|
+
* ]
|
133
|
+
* for (const todo of todos) {
|
134
|
+
* store.commit({ skipRefresh: true }, events.todoCreated({ id: todo.id, text: todo.text }))
|
135
|
+
* }
|
136
|
+
* store.manualRefresh()
|
137
|
+
* ```
|
138
|
+
*/
|
139
|
+
commit: {
|
140
|
+
<const TCommitArg extends ReadonlyArray<LiveStoreEvent.PartialForSchema<TSchema>>>(...list: TCommitArg): void;
|
141
|
+
(txn: <const TCommitArg extends ReadonlyArray<LiveStoreEvent.PartialForSchema<TSchema>>>(...list: TCommitArg) => void): void;
|
142
|
+
<const TCommitArg extends ReadonlyArray<LiveStoreEvent.PartialForSchema<TSchema>>>(options: StoreCommitOptions, ...list: TCommitArg): void;
|
143
|
+
(options: StoreCommitOptions, txn: <const TCommitArg extends ReadonlyArray<LiveStoreEvent.PartialForSchema<TSchema>>>(...list: TCommitArg) => void): void;
|
73
144
|
};
|
74
145
|
/**
|
75
|
-
* This can be used in combination with `skipRefresh` when
|
146
|
+
* This can be used in combination with `skipRefresh` when committing events.
|
76
147
|
* We might need a better solution for this. Let's see.
|
77
148
|
*/
|
78
149
|
manualRefresh: (options?: {
|
79
150
|
label?: string;
|
80
151
|
}) => void;
|
81
152
|
/**
|
82
|
-
*
|
83
|
-
*
|
84
|
-
* This is
|
85
|
-
* the caller must refresh queries after calling this method.
|
153
|
+
* Shuts down the store and closes the client session.
|
154
|
+
*
|
155
|
+
* This is called automatically when the store was created using the React or Effect API.
|
86
156
|
*/
|
87
|
-
|
88
|
-
__devDownloadDb: (source?: "local" | "leader") => void;
|
89
|
-
__devDownloadMutationLogDb: () => void;
|
90
|
-
__devHardReset: () => void;
|
91
|
-
__devSyncStates: () => void;
|
92
|
-
__devShutdown: (cause?: Cause.Cause<UnexpectedError>) => void;
|
157
|
+
shutdown: (cause?: Cause.Cause<UnexpectedError>) => void;
|
93
158
|
toJSON: () => {
|
94
159
|
_tag: string;
|
95
160
|
reactivityGraph: import("../reactive.js").ReactiveGraphSnapshot;
|
96
161
|
};
|
97
162
|
private runEffectFork;
|
98
|
-
private
|
163
|
+
private getCommitArgs;
|
99
164
|
}
|
100
165
|
//# sourceMappingURL=store.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
|