@livestore/livestore 0.4.0-dev.16 → 0.4.0-dev.18
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/SqliteDbWrapper.test.js +2 -1
- package/dist/SqliteDbWrapper.test.js.map +1 -1
- package/dist/live-queries/client-document-get-query.js +3 -2
- package/dist/live-queries/client-document-get-query.js.map +1 -1
- package/dist/live-queries/db-query.d.ts.map +1 -1
- package/dist/live-queries/db-query.js +6 -4
- package/dist/live-queries/db-query.js.map +1 -1
- package/dist/live-queries/db-query.test.js +64 -4
- package/dist/live-queries/db-query.test.js.map +1 -1
- package/dist/mod.d.ts +1 -2
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +1 -1
- package/dist/mod.js.map +1 -1
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/create-store.js +3 -2
- package/dist/store/create-store.js.map +1 -1
- package/dist/store/devtools.d.ts +2 -13
- package/dist/store/devtools.d.ts.map +1 -1
- package/dist/store/devtools.js +34 -13
- package/dist/store/devtools.js.map +1 -1
- package/dist/store/store-types.d.ts +89 -4
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store-types.js +1 -0
- package/dist/store/store-types.js.map +1 -1
- package/dist/store/store.d.ts +20 -26
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +129 -91
- package/dist/store/store.js.map +1 -1
- package/package.json +5 -5
- package/src/SqliteDbWrapper.test.ts +2 -2
- package/src/live-queries/__snapshots__/db-query.test.ts.snap +220 -0
- package/src/live-queries/client-document-get-query.ts +3 -3
- package/src/live-queries/db-query.test.ts +103 -6
- package/src/live-queries/db-query.ts +7 -4
- package/src/mod.ts +8 -8
- package/src/store/create-store.ts +3 -2
- package/src/store/devtools.ts +40 -26
- package/src/store/store-types.ts +107 -4
- package/src/store/store.ts +166 -123
package/dist/store/devtools.js
CHANGED
|
@@ -4,6 +4,7 @@ import { Effect, Stream } from '@livestore/utils/effect';
|
|
|
4
4
|
import { nanoid } from '@livestore/utils/nanoid';
|
|
5
5
|
import { NOT_REFRESHED_YET } from "../reactive.js";
|
|
6
6
|
import { emptyDebugInfo as makeEmptyDebugInfo } from "../SqliteDbWrapper.js";
|
|
7
|
+
import { StoreInternalsSymbol } from "./store-types.js";
|
|
7
8
|
// When running this code in Node.js, we need to use `setTimeout` instead of `requestAnimationFrame`
|
|
8
9
|
const requestNextTick = globalThis.requestAnimationFrame === undefined
|
|
9
10
|
? (cb) => setTimeout(cb, 1000)
|
|
@@ -14,7 +15,7 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
14
15
|
const liveQueriesSubscriptions = new Map();
|
|
15
16
|
const debugInfoHistorySubscriptions = new Map();
|
|
16
17
|
const syncHeadClientSessionSubscriptions = new Map();
|
|
17
|
-
const { clientId, sessionId } = store.clientSession;
|
|
18
|
+
const { clientId, sessionId } = store[StoreInternalsSymbol].clientSession;
|
|
18
19
|
yield* Effect.addFinalizer(() => Effect.sync(() => {
|
|
19
20
|
for (const unsub of reactivityGraphSubcriptions.values())
|
|
20
21
|
unsub();
|
|
@@ -34,7 +35,24 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
37
|
if (decodedMessage._tag === 'LSD.ClientSession.Disconnect') {
|
|
37
|
-
//
|
|
38
|
+
// Gracefully tear down all DevTools subscriptions and close the channel.
|
|
39
|
+
// This prevents background fibers from lingering after DevTools closes
|
|
40
|
+
// (e.g. when a window is closed without sending explicit unsubs).
|
|
41
|
+
for (const unsub of reactivityGraphSubcriptions.values())
|
|
42
|
+
unsub();
|
|
43
|
+
reactivityGraphSubcriptions.clear();
|
|
44
|
+
for (const unsub of liveQueriesSubscriptions.values())
|
|
45
|
+
unsub();
|
|
46
|
+
liveQueriesSubscriptions.clear();
|
|
47
|
+
for (const unsub of debugInfoHistorySubscriptions.values())
|
|
48
|
+
unsub();
|
|
49
|
+
debugInfoHistorySubscriptions.clear();
|
|
50
|
+
for (const unsub of syncHeadClientSessionSubscriptions.values())
|
|
51
|
+
unsub();
|
|
52
|
+
syncHeadClientSessionSubscriptions.clear();
|
|
53
|
+
// Signal the WebChannel to shut down; this causes the `listen` stream
|
|
54
|
+
// to complete and allows the surrounding scoped fiber to exit.
|
|
55
|
+
storeDevtoolsChannel.shutdown.pipe(Effect.runFork);
|
|
38
56
|
return;
|
|
39
57
|
}
|
|
40
58
|
const requestId = decodedMessage.requestId;
|
|
@@ -55,7 +73,7 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
55
73
|
// In order to not add more work to the current tick, we use requestIdleCallback
|
|
56
74
|
// to send the reactivity graph updates to the devtools
|
|
57
75
|
requestIdleCallback(() => sendToDevtools(Devtools.ClientSession.ReactivityGraphRes.make({
|
|
58
|
-
reactivityGraph: store.reactivityGraph.getSnapshot({ includeResults }),
|
|
76
|
+
reactivityGraph: store[StoreInternalsSymbol].reactivityGraph.getSnapshot({ includeResults }),
|
|
59
77
|
requestId: nanoid(10),
|
|
60
78
|
clientId,
|
|
61
79
|
sessionId,
|
|
@@ -67,12 +85,12 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
67
85
|
// so we throttle the updates to avoid sending too much data
|
|
68
86
|
// This might need to be tweaked further and possibly be exposed to the user in some way.
|
|
69
87
|
const throttledSend = throttle(send, 20);
|
|
70
|
-
reactivityGraphSubcriptions.set(subscriptionId, store.reactivityGraph.subscribeToRefresh(throttledSend));
|
|
88
|
+
reactivityGraphSubcriptions.set(subscriptionId, store[StoreInternalsSymbol].reactivityGraph.subscribeToRefresh(throttledSend));
|
|
71
89
|
break;
|
|
72
90
|
}
|
|
73
91
|
case 'LSD.ClientSession.DebugInfoReq': {
|
|
74
92
|
sendToDevtools(Devtools.ClientSession.DebugInfoRes.make({
|
|
75
|
-
debugInfo: store.sqliteDbWrapper.debugInfo,
|
|
93
|
+
debugInfo: store[StoreInternalsSymbol].sqliteDbWrapper.debugInfo,
|
|
76
94
|
requestId,
|
|
77
95
|
clientId,
|
|
78
96
|
sessionId,
|
|
@@ -86,12 +104,12 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
86
104
|
let hasStopped = false;
|
|
87
105
|
let tickHandle;
|
|
88
106
|
const tick = () => {
|
|
89
|
-
buffer.push(store.sqliteDbWrapper.debugInfo);
|
|
107
|
+
buffer.push(store[StoreInternalsSymbol].sqliteDbWrapper.debugInfo);
|
|
90
108
|
// NOTE this resets the debug info, so all other "readers" e.g. in other `requestAnimationFrame` loops,
|
|
91
109
|
// will get the empty debug info
|
|
92
110
|
// TODO We need to come up with a more graceful way to do store. Probably via a single global
|
|
93
111
|
// `requestAnimationFrame` loop that is passed in somehow.
|
|
94
|
-
store.sqliteDbWrapper.debugInfo = makeEmptyDebugInfo();
|
|
112
|
+
store[StoreInternalsSymbol].sqliteDbWrapper.debugInfo = makeEmptyDebugInfo();
|
|
95
113
|
if (buffer.length > 10) {
|
|
96
114
|
sendToDevtools(Devtools.ClientSession.DebugInfoHistoryRes.make({
|
|
97
115
|
debugInfoHistory: buffer,
|
|
@@ -127,13 +145,16 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
127
145
|
break;
|
|
128
146
|
}
|
|
129
147
|
case 'LSD.ClientSession.DebugInfoResetReq': {
|
|
130
|
-
store.sqliteDbWrapper.debugInfo.slowQueries.clear();
|
|
148
|
+
store[StoreInternalsSymbol].sqliteDbWrapper.debugInfo.slowQueries.clear();
|
|
131
149
|
sendToDevtools(Devtools.ClientSession.DebugInfoResetRes.make({ requestId, clientId, sessionId, liveStoreVersion }));
|
|
132
150
|
break;
|
|
133
151
|
}
|
|
134
152
|
case 'LSD.ClientSession.DebugInfoRerunQueryReq': {
|
|
135
153
|
const { queryStr, bindValues, queriedTables } = decodedMessage;
|
|
136
|
-
store.sqliteDbWrapper.cachedSelect(queryStr, bindValues, {
|
|
154
|
+
store[StoreInternalsSymbol].sqliteDbWrapper.cachedSelect(queryStr, bindValues, {
|
|
155
|
+
queriedTables,
|
|
156
|
+
skipCache: true,
|
|
157
|
+
});
|
|
137
158
|
sendToDevtools(Devtools.ClientSession.DebugInfoRerunQueryRes.make({ requestId, clientId, sessionId, liveStoreVersion }));
|
|
138
159
|
break;
|
|
139
160
|
}
|
|
@@ -148,7 +169,7 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
148
169
|
case 'LSD.ClientSession.LiveQueriesSubscribe': {
|
|
149
170
|
const { subscriptionId } = decodedMessage;
|
|
150
171
|
const send = () => requestIdleCallback(() => sendToDevtools(Devtools.ClientSession.LiveQueriesRes.make({
|
|
151
|
-
liveQueries: [...store.activeQueries].map((q) => ({
|
|
172
|
+
liveQueries: [...store[StoreInternalsSymbol].activeQueries].map((q) => ({
|
|
152
173
|
_tag: q._tag,
|
|
153
174
|
id: q.id,
|
|
154
175
|
label: q.label,
|
|
@@ -169,7 +190,7 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
169
190
|
send();
|
|
170
191
|
// Same as in the reactivity graph subscription case above, we need to throttle the updates
|
|
171
192
|
const throttledSend = throttle(send, 20);
|
|
172
|
-
liveQueriesSubscriptions.set(subscriptionId, store.reactivityGraph.subscribeToRefresh(throttledSend));
|
|
193
|
+
liveQueriesSubscriptions.set(subscriptionId, store[StoreInternalsSymbol].reactivityGraph.subscribeToRefresh(throttledSend));
|
|
173
194
|
break;
|
|
174
195
|
}
|
|
175
196
|
case 'LSD.ClientSession.LiveQueriesUnsubscribe': {
|
|
@@ -191,8 +212,8 @@ export const connectDevtoolsToStore = ({ storeDevtoolsChannel, store, }) => Effe
|
|
|
191
212
|
liveStoreVersion,
|
|
192
213
|
subscriptionId,
|
|
193
214
|
}));
|
|
194
|
-
send(store.syncProcessor.syncState.pipe(Effect.runSync));
|
|
195
|
-
syncHeadClientSessionSubscriptions.set(subscriptionId, store.syncProcessor.syncState.changes.pipe(Stream.tap((syncState) => send(syncState)), Stream.runDrain, Effect.interruptible, Effect.tapCauseLogPretty, Effect.runCallback));
|
|
215
|
+
send(store[StoreInternalsSymbol].syncProcessor.syncState.pipe(Effect.runSync));
|
|
216
|
+
syncHeadClientSessionSubscriptions.set(subscriptionId, store[StoreInternalsSymbol].syncProcessor.syncState.changes.pipe(Stream.tap((syncState) => send(syncState)), Stream.runDrain, Effect.interruptible, Effect.tapCauseLogPretty, Effect.runCallback));
|
|
196
217
|
break;
|
|
197
218
|
}
|
|
198
219
|
case 'LSD.ClientSession.SyncHeadUnsubscribe': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../src/store/devtools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../src/store/devtools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { type ClientSession, type ClientSessionSyncProcessorSimulationParams, type IntentionalShutdownCause, type InvalidPullError, type IsOfflineError, type MaterializeError, type QueryBuilder, type StoreInterrupted, type SyncError, type UnexpectedError } from '@livestore/common';
|
|
1
|
+
import { type ClientSession, type ClientSessionSyncProcessor, type ClientSessionSyncProcessorSimulationParams, type IntentionalShutdownCause, type InvalidPullError, type IsOfflineError, type MaterializeError, type QueryBuilder, type StoreInterrupted, type SyncError, type UnexpectedError } from '@livestore/common';
|
|
2
2
|
import type { EventSequenceNumber, LiveStoreEvent, LiveStoreSchema } from '@livestore/common/schema';
|
|
3
|
-
import type { Effect, Runtime, Scope } from '@livestore/utils/effect';
|
|
3
|
+
import type { Effect, Runtime, Schema, Scope } from '@livestore/utils/effect';
|
|
4
4
|
import { Deferred } from '@livestore/utils/effect';
|
|
5
5
|
import type * as otel from '@opentelemetry/api';
|
|
6
|
-
import type { LiveQuery, LiveQueryDef, SignalDef } from '../live-queries/base-class.ts';
|
|
7
|
-
import type { DebugRefreshReasonBase } from '../reactive.ts';
|
|
6
|
+
import type { LiveQuery, LiveQueryDef, ReactivityGraph, ReactivityGraphContext, SignalDef } from '../live-queries/base-class.ts';
|
|
7
|
+
import type { DebugRefreshReasonBase, Ref } from '../reactive.ts';
|
|
8
|
+
import type { SqliteDbWrapper } from '../SqliteDbWrapper.ts';
|
|
9
|
+
import type { ReferenceCountedSet } from '../utils/data-structures.ts';
|
|
8
10
|
import type { StackInfo } from '../utils/stack-info.ts';
|
|
9
11
|
import type { Store } from './store.ts';
|
|
10
12
|
export type LiveStoreContext = LiveStoreContextRunning | {
|
|
@@ -24,6 +26,89 @@ export type OtelOptions = {
|
|
|
24
26
|
tracer: otel.Tracer;
|
|
25
27
|
rootSpanContext: otel.Context;
|
|
26
28
|
};
|
|
29
|
+
export declare const StoreInternalsSymbol: unique symbol;
|
|
30
|
+
export type StoreInternalsSymbol = typeof StoreInternalsSymbol;
|
|
31
|
+
/**
|
|
32
|
+
* Opaque bag containing the Store's implementation details.
|
|
33
|
+
*
|
|
34
|
+
* Not part of the public API — shapes and semantics may change without notice.
|
|
35
|
+
* Access only from within the @livestore/livestore package (and Devtools) via
|
|
36
|
+
* `StoreInternalsSymbol` to avoid accidental coupling in application code.
|
|
37
|
+
*/
|
|
38
|
+
export type StoreInternals = {
|
|
39
|
+
/**
|
|
40
|
+
* Runtime event schema used for encoding/decoding events.
|
|
41
|
+
*
|
|
42
|
+
* Exposed primarily for Devtools (e.g. databrowser) to validate ad‑hoc
|
|
43
|
+
* event payloads. Application code should not depend on it directly.
|
|
44
|
+
*/
|
|
45
|
+
readonly eventSchema: Schema.Schema<LiveStoreEvent.AnyDecoded, LiveStoreEvent.AnyEncoded>;
|
|
46
|
+
/**
|
|
47
|
+
* The active client session backing this Store. Provides access to the
|
|
48
|
+
* leader thread, network status, and shutdown signaling.
|
|
49
|
+
*
|
|
50
|
+
* Do not close or mutate directly — use `store.shutdown(...)`.
|
|
51
|
+
*/
|
|
52
|
+
readonly clientSession: ClientSession;
|
|
53
|
+
/**
|
|
54
|
+
* Wrapper around the local SQLite state database. Centralizes query
|
|
55
|
+
* planning, caching, and change tracking used by reads and materializers.
|
|
56
|
+
*/
|
|
57
|
+
readonly sqliteDbWrapper: SqliteDbWrapper;
|
|
58
|
+
/**
|
|
59
|
+
* Effect runtime and scope used to fork background fibers for the Store.
|
|
60
|
+
*
|
|
61
|
+
* - `runtime` executes effects from imperative Store APIs.
|
|
62
|
+
* - `lifetimeScope` owns forked fibers; closed during Store shutdown.
|
|
63
|
+
*/
|
|
64
|
+
readonly effectContext: {
|
|
65
|
+
/** Effect runtime to run Store effects with proper environment. */
|
|
66
|
+
readonly runtime: Runtime.Runtime<Scope.Scope>;
|
|
67
|
+
/** Scope that owns all long‑lived fibers spawned by the Store. */
|
|
68
|
+
readonly lifetimeScope: Scope.Scope;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* OpenTelemetry primitives used for instrumentation of commits, queries,
|
|
72
|
+
* and Store boot lifecycle.
|
|
73
|
+
*/
|
|
74
|
+
readonly otel: StoreOtel;
|
|
75
|
+
/**
|
|
76
|
+
* The Store's reactive graph instance used to model dependencies and
|
|
77
|
+
* propagate updates. Provides APIs to create refs/thunks/effects and to
|
|
78
|
+
* subscribe to refresh cycles.
|
|
79
|
+
*/
|
|
80
|
+
readonly reactivityGraph: ReactivityGraph;
|
|
81
|
+
/**
|
|
82
|
+
* Per‑table reactive refs used to broadcast invalidations when materializers
|
|
83
|
+
* write to tables. Values are always `null`; equality is intentionally
|
|
84
|
+
* `false` to force recomputation.
|
|
85
|
+
*
|
|
86
|
+
* Keys are SQLite table names (user tables; some system tables may be
|
|
87
|
+
* intentionally excluded from refresh).
|
|
88
|
+
*/
|
|
89
|
+
readonly tableRefs: Readonly<Record<string, Ref<null, ReactivityGraphContext, RefreshReason>>>;
|
|
90
|
+
/**
|
|
91
|
+
* Set of currently subscribed LiveQuery instances (reference‑counted).
|
|
92
|
+
* Used for Devtools and diagnostics.
|
|
93
|
+
*/
|
|
94
|
+
readonly activeQueries: ReferenceCountedSet<LiveQuery<any>>;
|
|
95
|
+
/**
|
|
96
|
+
* Client‑session sync processor orchestrating push/pull and materialization
|
|
97
|
+
* of events into local state.
|
|
98
|
+
*/
|
|
99
|
+
readonly syncProcessor: ClientSessionSyncProcessor;
|
|
100
|
+
/**
|
|
101
|
+
* Starts background fibers for sync and observation. Must be run exactly
|
|
102
|
+
* once per Store instance. Scoped; installs finalizers to end spans and
|
|
103
|
+
* detach reactive refs.
|
|
104
|
+
*/
|
|
105
|
+
readonly boot: Effect.Effect<void, UnexpectedError, Scope.Scope>;
|
|
106
|
+
/**
|
|
107
|
+
* Tracks whether the Store has been shut down. When true, mutating APIs
|
|
108
|
+
* should reject via `checkShutdown`.
|
|
109
|
+
*/
|
|
110
|
+
isShutdown: boolean;
|
|
111
|
+
};
|
|
27
112
|
export type StoreOptions<TSchema extends LiveStoreSchema = LiveStoreSchema.Any, TContext = {}> = {
|
|
28
113
|
clientSession: ClientSession;
|
|
29
114
|
schema: TSchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-types.d.ts","sourceRoot":"","sources":["../../src/store/store-types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,0CAA0C,EAC/C,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACpG,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"store-types.d.ts","sourceRoot":"","sources":["../../src/store/store-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { isQueryBuilder, } from '@livestore/common';
|
|
|
2
2
|
import { Deferred, Predicate } from '@livestore/utils/effect';
|
|
3
3
|
import { TypeId } from "../live-queries/base-class.js";
|
|
4
4
|
export const makeShutdownDeferred = Deferred.make();
|
|
5
|
+
export const StoreInternalsSymbol = Symbol.for('livestore.StoreInternals');
|
|
5
6
|
const isLiveQueryDef = (value) => {
|
|
6
7
|
if (typeof value !== 'object' || value === null) {
|
|
7
8
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-types.js","sourceRoot":"","sources":["../../src/store/store-types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"store-types.js","sourceRoot":"","sources":["../../src/store/store-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,GAMf,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAS7D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAsBtD,MAAM,CAAC,MAAM,oBAAoB,GAAoC,QAAQ,CAAC,IAAI,EAG/E,CAAA;AAYH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;AAyN1E,MAAM,cAAc,GAAG,CAAC,KAAc,EAA+C,EAAE;IACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,GAAG,GAAI,KAA4C,CAAC,IAAI,CAAA;IAC9D,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,KAA0B,CAAA;IAC5C,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACzC,4EAA4E;QAC5E,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9E,6EAA6E;QAC7E,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAA2B,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAE7G,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAA+B,EAAE,CACzE,cAAc,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA"}
|
package/dist/store/store.d.ts
CHANGED
|
@@ -1,26 +1,18 @@
|
|
|
1
|
-
import { type Bindable, type ClientSession,
|
|
1
|
+
import { type Bindable, type ClientSession, MaterializeError, UnexpectedError } from '@livestore/common';
|
|
2
2
|
import type { LiveStoreSchema } from '@livestore/common/schema';
|
|
3
3
|
import { LiveStoreEvent } from '@livestore/common/schema';
|
|
4
|
-
import type { Scope } from '@livestore/utils/effect';
|
|
5
4
|
import { Cause, Effect, Inspectable, Schema, Stream } from '@livestore/utils/effect';
|
|
6
5
|
import * as otel from '@opentelemetry/api';
|
|
7
|
-
import type {
|
|
8
|
-
import type
|
|
9
|
-
|
|
10
|
-
import { ReferenceCountedSet } from '../utils/data-structures.ts';
|
|
11
|
-
import type { Queryable, RefreshReason, StoreCommitOptions, StoreEventsOptions, StoreOptions, StoreOtel, SubscribeOptions, Unsubscribe } from './store-types.ts';
|
|
12
|
-
type SubscribeFn = {
|
|
6
|
+
import type { SignalDef } from '../live-queries/base-class.ts';
|
|
7
|
+
import { type Queryable, type RefreshReason, type StoreCommitOptions, type StoreEventsOptions, type StoreInternals, StoreInternalsSymbol, type StoreOptions, type SubscribeOptions, type Unsubscribe } from './store-types.ts';
|
|
8
|
+
export type SubscribeFn = {
|
|
13
9
|
<TResult>(query: Queryable<TResult>, onUpdate: (value: TResult) => void, options?: SubscribeOptions<TResult>): Unsubscribe;
|
|
14
10
|
<TResult>(query: Queryable<TResult>, options?: SubscribeOptions<TResult>): AsyncIterable<TResult>;
|
|
15
11
|
};
|
|
16
12
|
export declare class Store<TSchema extends LiveStoreSchema = LiveStoreSchema.Any, TContext = {}> extends Inspectable.Class {
|
|
17
13
|
readonly storeId: string;
|
|
18
|
-
reactivityGraph: ReactivityGraph;
|
|
19
|
-
sqliteDbWrapper: SqliteDbWrapper;
|
|
20
|
-
clientSession: ClientSession;
|
|
21
14
|
schema: LiveStoreSchema;
|
|
22
15
|
context: TContext;
|
|
23
|
-
otel: StoreOtel;
|
|
24
16
|
/**
|
|
25
17
|
* Reactive connectivity updates emitted by the backing sync backend.
|
|
26
18
|
*
|
|
@@ -39,23 +31,26 @@ export declare class Store<TSchema extends LiveStoreSchema = LiveStoreSchema.Any
|
|
|
39
31
|
* ```
|
|
40
32
|
*/
|
|
41
33
|
readonly networkStatus: ClientSession['leaderThread']['networkStatus'];
|
|
34
|
+
/** Tracks whether the store has been shut down is kept in internals */
|
|
35
|
+
/** RC-based set to see which queries are currently subscribed to */
|
|
42
36
|
/**
|
|
43
|
-
*
|
|
44
|
-
* This only works in combination with `equal: () => false` which will always trigger a refresh.
|
|
37
|
+
* Store internals. Shouldn't be used directly in application code.
|
|
45
38
|
*/
|
|
46
|
-
|
|
47
|
-
[key: string]: Ref<null, ReactivityGraphContext, RefreshReason>;
|
|
48
|
-
};
|
|
49
|
-
/** Tracks whether the store has been shut down */
|
|
50
|
-
private isShutdown;
|
|
51
|
-
private effectContext;
|
|
52
|
-
/** RC-based set to see which queries are currently subscribed to */
|
|
53
|
-
activeQueries: ReferenceCountedSet<LiveQuery<any>>;
|
|
54
|
-
readonly __eventSchema: LiveStoreEvent.ForEventDefRecord<TSchema["_EventDefMapType"]>;
|
|
55
|
-
readonly syncProcessor: ClientSessionSyncProcessor;
|
|
56
|
-
readonly boot: Effect.Effect<void, UnexpectedError, Scope.Scope>;
|
|
39
|
+
[StoreInternalsSymbol]: StoreInternals;
|
|
57
40
|
constructor({ clientSession, schema, otelOptions, context, batchUpdates, storeId, effectContext, params, confirmUnsavedChanges, __runningInDevtools, }: StoreOptions<TSchema, TContext>);
|
|
41
|
+
/**
|
|
42
|
+
* Current session identifier for this Store instance.
|
|
43
|
+
*
|
|
44
|
+
* - Stable for the lifetime of the Store
|
|
45
|
+
* - Useful for correlating events or scoping per-session data
|
|
46
|
+
*/
|
|
58
47
|
get sessionId(): string;
|
|
48
|
+
/**
|
|
49
|
+
* Stable client identifier for the process/device using this Store.
|
|
50
|
+
*
|
|
51
|
+
* - Shared across Store instances created by the same client
|
|
52
|
+
* - Useful for diagnostics and multi-client correlation
|
|
53
|
+
*/
|
|
59
54
|
get clientId(): string;
|
|
60
55
|
private checkShutdown;
|
|
61
56
|
/**
|
|
@@ -222,5 +217,4 @@ export declare class Store<TSchema extends LiveStoreSchema = LiveStoreSchema.Any
|
|
|
222
217
|
private runEffectPromise;
|
|
223
218
|
private getCommitArgs;
|
|
224
219
|
}
|
|
225
|
-
export {};
|
|
226
220
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
|