@livestore/livestore 0.4.0-dev.9 → 0.5.0-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/README.md +0 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/QueryCache.js +1 -1
- package/dist/QueryCache.js.map +1 -1
- package/dist/SqliteDbWrapper.d.ts +5 -5
- package/dist/SqliteDbWrapper.d.ts.map +1 -1
- package/dist/SqliteDbWrapper.js +15 -13
- package/dist/SqliteDbWrapper.js.map +1 -1
- package/dist/SqliteDbWrapper.test.js +24 -6
- package/dist/SqliteDbWrapper.test.js.map +1 -1
- package/dist/effect/LiveStore.d.ts +134 -6
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +190 -11
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/effect/LiveStore.test.d.ts +2 -0
- package/dist/effect/LiveStore.test.d.ts.map +1 -0
- package/dist/effect/LiveStore.test.js +41 -0
- package/dist/effect/LiveStore.test.js.map +1 -0
- package/dist/effect/mod.d.ts +1 -1
- package/dist/effect/mod.d.ts.map +1 -1
- package/dist/effect/mod.js +3 -1
- package/dist/effect/mod.js.map +1 -1
- package/dist/live-queries/base-class.d.ts +129 -9
- package/dist/live-queries/base-class.d.ts.map +1 -1
- package/dist/live-queries/base-class.js +30 -4
- package/dist/live-queries/base-class.js.map +1 -1
- package/dist/live-queries/client-document-get-query.d.ts +1 -1
- package/dist/live-queries/client-document-get-query.d.ts.map +1 -1
- package/dist/live-queries/client-document-get-query.js +4 -3
- package/dist/live-queries/client-document-get-query.js.map +1 -1
- package/dist/live-queries/computed.d.ts +56 -0
- package/dist/live-queries/computed.d.ts.map +1 -1
- package/dist/live-queries/computed.js +62 -6
- package/dist/live-queries/computed.js.map +1 -1
- package/dist/live-queries/db-query.d.ts +2 -2
- package/dist/live-queries/db-query.d.ts.map +1 -1
- package/dist/live-queries/db-query.js +41 -30
- package/dist/live-queries/db-query.js.map +1 -1
- package/dist/live-queries/db-query.test.js +112 -29
- package/dist/live-queries/db-query.test.js.map +1 -1
- package/dist/live-queries/signal.d.ts +49 -0
- package/dist/live-queries/signal.d.ts.map +1 -1
- package/dist/live-queries/signal.js +51 -2
- package/dist/live-queries/signal.js.map +1 -1
- package/dist/live-queries/signal.test.js +4 -4
- package/dist/live-queries/signal.test.js.map +1 -1
- package/dist/mod.d.ts +3 -3
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +3 -2
- package/dist/mod.js.map +1 -1
- package/dist/reactive.d.ts +10 -10
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +29 -27
- package/dist/reactive.js.map +1 -1
- package/dist/reactive.test.js +2 -2
- package/dist/reactive.test.js.map +1 -1
- package/dist/store/StoreRegistry.d.ts +215 -0
- package/dist/store/StoreRegistry.d.ts.map +1 -0
- package/dist/store/StoreRegistry.js +267 -0
- package/dist/store/StoreRegistry.js.map +1 -0
- package/dist/store/StoreRegistry.test.d.ts +2 -0
- package/dist/store/StoreRegistry.test.d.ts.map +1 -0
- package/dist/store/StoreRegistry.test.js +384 -0
- package/dist/store/StoreRegistry.test.js.map +1 -0
- package/dist/store/create-store.d.ts +99 -22
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/create-store.js +85 -37
- package/dist/store/create-store.js.map +1 -1
- package/dist/store/devtools.d.ts +6 -18
- package/dist/store/devtools.d.ts.map +1 -1
- package/dist/store/devtools.js +61 -19
- package/dist/store/devtools.js.map +1 -1
- package/dist/store/store-eventstream.test.d.ts +2 -0
- package/dist/store/store-eventstream.test.d.ts.map +1 -0
- package/dist/store/store-eventstream.test.js +65 -0
- package/dist/store/store-eventstream.test.js.map +1 -0
- package/dist/store/store-types.d.ts +271 -31
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store-types.js +41 -1
- package/dist/store/store-types.js.map +1 -1
- package/dist/store/store-types.test.d.ts +2 -0
- package/dist/store/store-types.test.d.ts.map +1 -0
- package/dist/store/store-types.test.js +39 -0
- package/dist/store/store-types.test.js.map +1 -0
- package/dist/store/store.d.ts +255 -68
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +533 -186
- package/dist/store/store.js.map +1 -1
- package/dist/utils/dev.d.ts.map +1 -1
- package/dist/utils/dev.js +1 -1
- package/dist/utils/dev.js.map +1 -1
- package/dist/utils/stack-info.d.ts.map +1 -1
- package/dist/utils/stack-info.js +3 -2
- package/dist/utils/stack-info.js.map +1 -1
- package/dist/utils/tests/fixture.d.ts +46 -39
- package/dist/utils/tests/fixture.d.ts.map +1 -1
- package/dist/utils/tests/fixture.js +7 -0
- package/dist/utils/tests/fixture.js.map +1 -1
- package/dist/utils/tests/otel.d.ts.map +1 -1
- package/dist/utils/tests/otel.js +5 -5
- package/dist/utils/tests/otel.js.map +1 -1
- package/package.json +50 -18
- package/src/QueryCache.ts +1 -1
- package/src/SqliteDbWrapper.test.ts +30 -6
- package/src/SqliteDbWrapper.ts +21 -17
- package/src/ambient.d.ts +0 -7
- package/src/effect/LiveStore.test.ts +61 -0
- package/src/effect/LiveStore.ts +426 -22
- package/src/effect/mod.ts +13 -1
- package/src/live-queries/__snapshots__/db-query.test.ts.snap +814 -178
- package/src/live-queries/base-class.ts +162 -32
- package/src/live-queries/client-document-get-query.ts +6 -4
- package/src/live-queries/computed.ts +65 -8
- package/src/live-queries/db-query.test.ts +168 -30
- package/src/live-queries/db-query.ts +58 -43
- package/src/live-queries/signal.test.ts +5 -4
- package/src/live-queries/signal.ts +52 -3
- package/src/mod.ts +19 -2
- package/src/reactive.test.ts +3 -2
- package/src/reactive.ts +58 -49
- package/src/store/StoreRegistry.test.ts +543 -0
- package/src/store/StoreRegistry.ts +429 -0
- package/src/store/create-store.ts +227 -74
- package/src/store/devtools.ts +305 -261
- package/src/store/store-eventstream.test.ts +123 -0
- package/src/store/store-types.test.ts +52 -0
- package/src/store/store-types.ts +318 -44
- package/src/store/store.ts +695 -283
- package/src/utils/dev.ts +3 -4
- package/src/utils/stack-info.ts +5 -2
- package/src/utils/tests/fixture.ts +9 -1
- package/src/utils/tests/otel.ts +8 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-document-get-query.d.ts","sourceRoot":"","sources":["../../src/live-queries/client-document-get-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client-document-get-query.d.ts","sourceRoot":"","sources":["../../src/live-queries/client-document-get-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAIhD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAE7D,eAAO,MAAM,aAAa,GACxB,OAAO,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAC9C,IAAI,MAAM,GAAG,eAAe,GAAG,SAAS,WAC2E,CAAA;AAErH,eAAO,MAAM,sBAAsB,GAChC,kEAKE;IACD,EAAE,CAAC,EAAE,MAAM,GAAG,eAAe,CAAA;IAC7B,qBAAqB,CAAC,EAAE,GAAG,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAA;IAChC,WAAW,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;CACtC,MACA,WAAW,sBAAsB,cA0BjC,CAAA"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { SessionIdSymbol } from '@livestore/common';
|
|
2
2
|
import { State } from '@livestore/common/schema';
|
|
3
3
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
4
|
+
import { StoreInternalsSymbol } from "../store/store-types.js";
|
|
4
5
|
export const rowQueryLabel = (table, id) => `${table.sqliteDef.name}.get:${id === undefined ? table.default.id : id === SessionIdSymbol ? 'sessionId' : id}`;
|
|
5
6
|
export const makeExecBeforeFirstRun = ({ id, explicitDefaultValues, table, otelContext: otelContext_, }) => ({ store }) => {
|
|
6
7
|
if (State.SQLite.tableIsClientDocumentTable(table) === false) {
|
|
7
8
|
return shouldNeverHappen(`Cannot insert row for table "${table.sqliteDef.name}" which does not have 'deriveEvents: true' set`);
|
|
8
9
|
}
|
|
9
|
-
const otelContext = otelContext_ ?? store.otel.queriesSpanContext;
|
|
10
|
+
const otelContext = otelContext_ ?? store[StoreInternalsSymbol].otel.queriesSpanContext;
|
|
10
11
|
const idVal = id === SessionIdSymbol ? store.sessionId : id;
|
|
11
|
-
const rowExists = store.sqliteDbWrapper.cachedSelect(`SELECT 1 FROM '${table.sqliteDef.name}' WHERE id = ?`, [idVal], { otelContext }).length === 1;
|
|
12
|
-
if (rowExists)
|
|
12
|
+
const rowExists = store[StoreInternalsSymbol].sqliteDbWrapper.cachedSelect(`SELECT 1 FROM '${table.sqliteDef.name}' WHERE id = ?`, [idVal], { otelContext }).length === 1;
|
|
13
|
+
if (rowExists === true)
|
|
13
14
|
return;
|
|
14
15
|
// It's important that we only commit and don't refresh here, as this function might be called during a render
|
|
15
16
|
// and otherwise we might end up in a "reactive loop"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-document-get-query.js","sourceRoot":"","sources":["../../src/live-queries/client-document-get-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client-document-get-query.js","sourceRoot":"","sources":["../../src/live-queries/client-document-get-query.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAG9D,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAA8C,EAC9C,EAAwC,EACxC,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAErH,MAAM,CAAC,MAAM,sBAAsB,GACjC,CAAC,EACC,EAAE,EACF,qBAAqB,EACrB,KAAK,EACL,WAAW,EAAE,YAAY,GAM1B,EAAE,EAAE,CACL,CAAC,EAAE,KAAK,EAA0B,EAAE,EAAE;IACpC,IAAI,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QAC7D,OAAO,iBAAiB,CACtB,gCAAgC,KAAK,CAAC,SAAS,CAAC,IAAI,gDAAgD,CACrG,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAA;IAEvF,MAAM,KAAK,GAAG,EAAE,KAAK,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAG,CAAA;IAC5D,MAAM,SAAS,GACb,KAAK,CAAC,oBAAoB,CAAC,CAAC,eAAe,CAAC,YAAY,CACtD,kBAAkB,KAAK,CAAC,SAAS,CAAC,IAAI,gBAAgB,EACtD,CAAC,KAAK,CAA8B,EACpC,EAAE,WAAW,EAAE,CAChB,CAAC,MAAM,KAAK,CAAC,CAAA;IAEhB,IAAI,SAAS,KAAK,IAAI;QAAE,OAAM;IAE9B,8GAA8G;IAC9G,qDAAqD;IAErD,KAAK,CAAC,MAAM,CACV,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,QAAQ,KAAK,EAAE,EAAE,EACjF,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAa,CAAC,CAChD,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -2,10 +2,66 @@ import type { Thunk } from '../reactive.ts';
|
|
|
2
2
|
import type { RefreshReason } from '../store/store-types.ts';
|
|
3
3
|
import type { DepKey, GetAtomResult, LiveQueryDef, ReactivityGraph, ReactivityGraphContext } from './base-class.ts';
|
|
4
4
|
import { LiveStoreQueryBase } from './base-class.ts';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a derived query that computes a value from other queries or signals.
|
|
7
|
+
*
|
|
8
|
+
* Computed queries are memoized—they only re-evaluate when their dependencies change,
|
|
9
|
+
* and if the new result equals the previous result, downstream dependents won't re-run.
|
|
10
|
+
* Use them for expensive calculations, aggregations, or transformations.
|
|
11
|
+
*
|
|
12
|
+
* The `get` function inside `computed` establishes reactive dependencies automatically.
|
|
13
|
+
* When any dependency updates, the computed re-evaluates.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* // Derive a count from a database query
|
|
18
|
+
* const todos$ = queryDb(tables.todos.all())
|
|
19
|
+
* const todoCount$ = computed((get) => get(todos$).length, { label: 'todoCount' })
|
|
20
|
+
*
|
|
21
|
+
* // Use in a component
|
|
22
|
+
* const count = store.query(todoCount$) // 5
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* // Combine multiple queries into derived stats
|
|
28
|
+
* const stats$ = computed((get) => {
|
|
29
|
+
* const todos = get(todos$)
|
|
30
|
+
* const completed = todos.filter((t) => t.completed).length
|
|
31
|
+
* return {
|
|
32
|
+
* total: todos.length,
|
|
33
|
+
* completed,
|
|
34
|
+
* remaining: todos.length - completed,
|
|
35
|
+
* percentComplete: todos.length > 0 ? (completed / todos.length) * 100 : 0,
|
|
36
|
+
* }
|
|
37
|
+
* }, { label: 'todoStats' })
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* // Chain computed queries
|
|
43
|
+
* const hasCompletedTodos$ = computed(
|
|
44
|
+
* (get) => get(stats$).completed > 0,
|
|
45
|
+
* { label: 'hasCompletedTodos' }
|
|
46
|
+
* )
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param fn - Pure function that computes the result. Use `get()` to read dependencies.
|
|
50
|
+
* @param options.label - Human-readable label for debugging and devtools
|
|
51
|
+
* @param options.deps - Explicit dependency keys (required on Expo/React Native where `fn.toString()` returns `[native code]`)
|
|
52
|
+
* @returns A query definition usable with `store.query()`, `store.subscribe()`, and as a dependency in other queries
|
|
53
|
+
*/
|
|
5
54
|
export declare const computed: <TResult>(fn: (get: GetAtomResult) => TResult, options?: {
|
|
6
55
|
label?: string;
|
|
7
56
|
deps?: DepKey;
|
|
8
57
|
}) => LiveQueryDef<TResult>;
|
|
58
|
+
/**
|
|
59
|
+
* A live computed query instance bound to a specific Store.
|
|
60
|
+
*
|
|
61
|
+
* Computed query instances are created internally when you use a `LiveQueryDef` (from {@link computed})
|
|
62
|
+
* with the Store. You typically don't construct these directly—use `computed()` to create definitions
|
|
63
|
+
* and `store.query()` / `store.subscribe()` to interact with them.
|
|
64
|
+
*/
|
|
9
65
|
export declare class LiveStoreComputedQuery<TResult> extends LiveStoreQueryBase<TResult> {
|
|
10
66
|
_tag: "computed";
|
|
11
67
|
/** A reactive thunk representing the query results */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACnH,OAAO,
|
|
1
|
+
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACnH,OAAO,EAAgC,kBAAkB,EAAgC,MAAM,iBAAiB,CAAA;AAEhH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,EAC9B,IAAI,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,EACnC,UAAU;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,KACA,YAAY,CAAC,OAAO,CA+BtB,CAAA;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB,CAAC,OAAO,CAAE,SAAQ,kBAAkB,CAAC,OAAO,CAAC;IAC9E,IAAI,EAAG,UAAU,CAAS;IAE1B,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAA;IAE/D,KAAK,EAAE,MAAM,CAAA;IAEb,eAAe,EAAE,eAAe,CAAA;IAChC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;gBAEd,EACV,EAAE,EACF,KAAK,EACL,eAAe,EACf,GAAG,GACJ,EAAE;QACD,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAA;QACnC,eAAe,EAAE,eAAe,CAAA;QAChC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;KAC3B;IA8BD,OAAO,aAQN;CACF"}
|
|
@@ -1,10 +1,58 @@
|
|
|
1
|
-
import { getDurationMsFromSpan } from '@livestore/common';
|
|
2
|
-
import { Equal, Hash } from '@livestore/utils/effect';
|
|
3
1
|
import * as otel from '@opentelemetry/api';
|
|
2
|
+
import { Equal, Hash } from '@livestore/utils/effect';
|
|
4
3
|
import { isValidFunctionString } from "../utils/function-string.js";
|
|
5
|
-
import { depsToString, LiveStoreQueryBase, makeGetAtomResult, withRCMap } from "./base-class.js";
|
|
4
|
+
import { depsToString, isLiveQueryDef, LiveStoreQueryBase, makeGetAtomResult, withRCMap } from "./base-class.js";
|
|
5
|
+
/**
|
|
6
|
+
* Creates a derived query that computes a value from other queries or signals.
|
|
7
|
+
*
|
|
8
|
+
* Computed queries are memoized—they only re-evaluate when their dependencies change,
|
|
9
|
+
* and if the new result equals the previous result, downstream dependents won't re-run.
|
|
10
|
+
* Use them for expensive calculations, aggregations, or transformations.
|
|
11
|
+
*
|
|
12
|
+
* The `get` function inside `computed` establishes reactive dependencies automatically.
|
|
13
|
+
* When any dependency updates, the computed re-evaluates.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* // Derive a count from a database query
|
|
18
|
+
* const todos$ = queryDb(tables.todos.all())
|
|
19
|
+
* const todoCount$ = computed((get) => get(todos$).length, { label: 'todoCount' })
|
|
20
|
+
*
|
|
21
|
+
* // Use in a component
|
|
22
|
+
* const count = store.query(todoCount$) // 5
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* // Combine multiple queries into derived stats
|
|
28
|
+
* const stats$ = computed((get) => {
|
|
29
|
+
* const todos = get(todos$)
|
|
30
|
+
* const completed = todos.filter((t) => t.completed).length
|
|
31
|
+
* return {
|
|
32
|
+
* total: todos.length,
|
|
33
|
+
* completed,
|
|
34
|
+
* remaining: todos.length - completed,
|
|
35
|
+
* percentComplete: todos.length > 0 ? (completed / todos.length) * 100 : 0,
|
|
36
|
+
* }
|
|
37
|
+
* }, { label: 'todoStats' })
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* // Chain computed queries
|
|
43
|
+
* const hasCompletedTodos$ = computed(
|
|
44
|
+
* (get) => get(stats$).completed > 0,
|
|
45
|
+
* { label: 'hasCompletedTodos' }
|
|
46
|
+
* )
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param fn - Pure function that computes the result. Use `get()` to read dependencies.
|
|
50
|
+
* @param options.label - Human-readable label for debugging and devtools
|
|
51
|
+
* @param options.deps - Explicit dependency keys (required on Expo/React Native where `fn.toString()` returns `[native code]`)
|
|
52
|
+
* @returns A query definition usable with `store.query()`, `store.subscribe()`, and as a dependency in other queries
|
|
53
|
+
*/
|
|
6
54
|
export const computed = (fn, options) => {
|
|
7
|
-
const hash = options?.deps ? depsToString(options.deps) : fn.toString();
|
|
55
|
+
const hash = options?.deps !== undefined ? depsToString(options.deps) : fn.toString();
|
|
8
56
|
if (isValidFunctionString(hash)._tag === 'invalid') {
|
|
9
57
|
throw new Error(`On Expo/React Native, computed queries must provide a \`deps\` option`);
|
|
10
58
|
}
|
|
@@ -25,7 +73,7 @@ export const computed = (fn, options) => {
|
|
|
25
73
|
// NOTE `fn.toString()` doesn't work in Expo as it always produces `[native code]`
|
|
26
74
|
hash,
|
|
27
75
|
[Equal.symbol](that) {
|
|
28
|
-
return this.hash === that.hash;
|
|
76
|
+
return isLiveQueryDef(that) && that._tag === 'def' && this.hash === that.hash;
|
|
29
77
|
},
|
|
30
78
|
[Hash.symbol]() {
|
|
31
79
|
return Hash.string(this.hash);
|
|
@@ -33,6 +81,13 @@ export const computed = (fn, options) => {
|
|
|
33
81
|
};
|
|
34
82
|
return def;
|
|
35
83
|
};
|
|
84
|
+
/**
|
|
85
|
+
* A live computed query instance bound to a specific Store.
|
|
86
|
+
*
|
|
87
|
+
* Computed query instances are created internally when you use a `LiveQueryDef` (from {@link computed})
|
|
88
|
+
* with the Store. You typically don't construct these directly—use `computed()` to create definitions
|
|
89
|
+
* and `store.query()` / `store.subscribe()` to interact with them.
|
|
90
|
+
*/
|
|
36
91
|
export class LiveStoreComputedQuery extends LiveStoreQueryBase {
|
|
37
92
|
_tag = 'computed';
|
|
38
93
|
/** A reactive thunk representing the query results */
|
|
@@ -47,10 +102,11 @@ export class LiveStoreComputedQuery extends LiveStoreQueryBase {
|
|
|
47
102
|
this.def = def;
|
|
48
103
|
const queryLabel = `${label}:results`;
|
|
49
104
|
this.results$ = this.reactivityGraph.makeThunk((get, setDebugInfo, ctx, otelContext) => ctx.otelTracer.startActiveSpan(`js:${label}`, {}, otelContext ?? ctx.rootOtelContext, (span) => {
|
|
105
|
+
const startTimePerfNow = performance.now();
|
|
50
106
|
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
|
51
107
|
const res = fn(makeGetAtomResult(get, ctx, otelContext, this.dependencyQueriesRef));
|
|
52
108
|
span.end();
|
|
53
|
-
const durationMs =
|
|
109
|
+
const durationMs = performance.now() - startTimePerfNow;
|
|
54
110
|
this.executionTimes.push(durationMs);
|
|
55
111
|
setDebugInfo({ _tag: 'computed', label, query: fn.toString(), durationMs });
|
|
56
112
|
return res;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"computed.js","sourceRoot":"","sources":["../../src/live-queries/computed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import * as otel from '@opentelemetry/api';
|
|
1
2
|
import type { Bindable, QueryBuilder } from '@livestore/common';
|
|
2
3
|
import { Schema } from '@livestore/utils/effect';
|
|
3
|
-
import * as otel from '@opentelemetry/api';
|
|
4
4
|
import type { Thunk } from '../reactive.ts';
|
|
5
5
|
import type { RefreshReason } from '../store/store-types.ts';
|
|
6
6
|
import type { DepKey, GetAtomResult, LiveQueryDef, ReactivityGraph, ReactivityGraphContext } from './base-class.ts';
|
|
7
7
|
import { LiveStoreQueryBase } from './base-class.ts';
|
|
8
8
|
export type QueryInputRaw<TDecoded, TEncoded> = {
|
|
9
9
|
query: string;
|
|
10
|
-
schema: Schema.
|
|
10
|
+
schema: Schema.Codec<TDecoded, TEncoded>;
|
|
11
11
|
bindValues?: Bindable;
|
|
12
12
|
/**
|
|
13
13
|
* Can be provided explicitly to slightly speed up initial query performance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-query.d.ts","sourceRoot":"","sources":["../../src/live-queries/db-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"db-query.d.ts","sourceRoot":"","sources":["../../src/live-queries/db-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { getDurationMsFromSpan, getResultSchema, isQueryBuilder, prepareBindValues, QueryBuilderAstSymbol, replaceSessionIdSymbol, SessionIdSymbol, UnexpectedError, } from '@livestore/common';
|
|
2
|
-
import { deepEqual, omitUndefineds, shouldNeverHappen } from '@livestore/utils';
|
|
3
|
-
import { Equal, Hash, Predicate, Schema, TreeFormatter } from '@livestore/utils/effect';
|
|
4
1
|
import * as otel from '@opentelemetry/api';
|
|
2
|
+
import { getResultSchema, isQueryBuilder, prepareBindValues, QueryBuilderAstSymbol, resolveSessionIdSymbolInBindValues, SessionIdSymbol, UnknownError, } from '@livestore/common';
|
|
3
|
+
import { deepEqual, objectToString, omitUndefineds, shouldNeverHappen } from '@livestore/utils';
|
|
4
|
+
import { Equal, Hash, Predicate, Result, Schema, SchemaIssue } from '@livestore/utils/effect';
|
|
5
5
|
import { isThunk, NOT_REFRESHED_YET } from "../reactive.js";
|
|
6
|
+
import { StoreInternalsSymbol } from "../store/store-types.js";
|
|
6
7
|
import { isValidFunctionString } from "../utils/function-string.js";
|
|
7
|
-
import { depsToString, LiveStoreQueryBase, makeGetAtomResult, withRCMap } from "./base-class.js";
|
|
8
|
+
import { depsToString, isLiveQueryDef, LiveStoreQueryBase, makeGetAtomResult, withRCMap } from "./base-class.js";
|
|
8
9
|
import { makeExecBeforeFirstRun, rowQueryLabel } from "./client-document-get-query.js";
|
|
9
10
|
export const isQueryInputRaw = (value) => Predicate.hasProperty(value, 'query') && Predicate.hasProperty(value, 'schema');
|
|
10
11
|
/**
|
|
@@ -41,14 +42,18 @@ export const isQueryInputRaw = (value) => Predicate.hasProperty(value, 'query')
|
|
|
41
42
|
*/
|
|
42
43
|
export const queryDb = (queryInput, options) => {
|
|
43
44
|
const { queryString, extraDeps } = getQueryStringAndExtraDeps(queryInput);
|
|
44
|
-
const hash = [
|
|
45
|
+
const hash = [
|
|
46
|
+
queryString,
|
|
47
|
+
options?.deps !== undefined ? depsToString(options.deps) : undefined,
|
|
48
|
+
depsToString(extraDeps),
|
|
49
|
+
]
|
|
45
50
|
.filter(Boolean)
|
|
46
51
|
.join('-');
|
|
47
52
|
if (isValidFunctionString(hash)._tag === 'invalid') {
|
|
48
53
|
throw new Error(`On Expo/React Native, db queries must provide a \`deps\` option`);
|
|
49
54
|
}
|
|
50
55
|
if (hash.trim() === '') {
|
|
51
|
-
return shouldNeverHappen(
|
|
56
|
+
return shouldNeverHappen('Invalid query hash for query:', objectToString(queryInput));
|
|
52
57
|
}
|
|
53
58
|
const label = options?.label ?? queryString;
|
|
54
59
|
const def = {
|
|
@@ -66,7 +71,7 @@ export const queryDb = (queryInput, options) => {
|
|
|
66
71
|
label,
|
|
67
72
|
hash,
|
|
68
73
|
[Equal.symbol](that) {
|
|
69
|
-
return this.hash === that.hash;
|
|
74
|
+
return isLiveQueryDef(that) && that._tag === 'def' && this.hash === that.hash;
|
|
70
75
|
},
|
|
71
76
|
[Hash.symbol]() {
|
|
72
77
|
return Hash.string(this.hash);
|
|
@@ -83,17 +88,17 @@ const bindValuesToDepKey = (bindValues) => {
|
|
|
83
88
|
.join(',');
|
|
84
89
|
};
|
|
85
90
|
const getQueryStringAndExtraDeps = (queryInput) => {
|
|
86
|
-
if (isQueryBuilder(queryInput)) {
|
|
91
|
+
if (isQueryBuilder(queryInput) === true) {
|
|
87
92
|
const { query, bindValues } = queryInput.asSql();
|
|
88
93
|
return { queryString: query, extraDeps: bindValuesToDepKey(bindValues) };
|
|
89
94
|
}
|
|
90
|
-
if (isQueryInputRaw(queryInput)) {
|
|
95
|
+
if (isQueryInputRaw(queryInput) === true) {
|
|
91
96
|
return { queryString: queryInput.query, extraDeps: bindValuesToDepKey(queryInput.bindValues) };
|
|
92
97
|
}
|
|
93
98
|
if (typeof queryInput === 'function') {
|
|
94
99
|
return { queryString: queryInput.toString(), extraDeps: [] };
|
|
95
100
|
}
|
|
96
|
-
return shouldNeverHappen(`Invalid query input: ${queryInput}`);
|
|
101
|
+
return shouldNeverHappen(`Invalid query input: ${String(queryInput)}`);
|
|
97
102
|
};
|
|
98
103
|
/* An object encapsulating a reactive SQL query */
|
|
99
104
|
export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
@@ -113,7 +118,11 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
113
118
|
this.def = def;
|
|
114
119
|
this.mapResult = map === undefined ? (rows) => rows : map;
|
|
115
120
|
const schemaRef = {
|
|
116
|
-
current: typeof queryInput === 'function'
|
|
121
|
+
current: typeof queryInput === 'function'
|
|
122
|
+
? undefined
|
|
123
|
+
: isQueryBuilder(queryInput) === true
|
|
124
|
+
? undefined
|
|
125
|
+
: queryInput.schema,
|
|
117
126
|
};
|
|
118
127
|
const execBeforeFirstRunRef = {
|
|
119
128
|
current: undefined,
|
|
@@ -143,7 +152,7 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
143
152
|
};
|
|
144
153
|
}
|
|
145
154
|
catch (cause) {
|
|
146
|
-
throw new
|
|
155
|
+
throw new UnknownError({ cause, note: `Error building query for ${qb.toString()}`, payload: { qb } });
|
|
147
156
|
}
|
|
148
157
|
};
|
|
149
158
|
if (typeof queryInput === 'function') {
|
|
@@ -152,7 +161,7 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
152
161
|
const queryInputResult = queryInput(makeGetAtomResult(get, ctx, otelContext ?? ctx.rootOtelContext, this.dependencyQueriesRef), ctx);
|
|
153
162
|
const durationMs = performance.now() - startMs;
|
|
154
163
|
let queryInputRaw;
|
|
155
|
-
if (isQueryBuilder(queryInputResult)) {
|
|
164
|
+
if (isQueryBuilder(queryInputResult) === true) {
|
|
156
165
|
const res = fromQueryBuilder(queryInputResult, otelContext);
|
|
157
166
|
queryInputRaw = res.queryInputRaw;
|
|
158
167
|
// setting label dynamically here
|
|
@@ -175,7 +184,7 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
175
184
|
}
|
|
176
185
|
else {
|
|
177
186
|
let queryInputRaw;
|
|
178
|
-
if (isQueryBuilder(queryInput)) {
|
|
187
|
+
if (isQueryBuilder(queryInput) === true) {
|
|
179
188
|
const res = fromQueryBuilder(queryInput, otelContext);
|
|
180
189
|
queryInputRaw = res.queryInputRaw;
|
|
181
190
|
label = res.label;
|
|
@@ -187,7 +196,7 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
187
196
|
schemaRef.current = queryInputRaw.schema;
|
|
188
197
|
queryInputRaw$OrQueryInputRaw = queryInputRaw;
|
|
189
198
|
// this.label = inputLabel ? this.label : `db(${})`
|
|
190
|
-
if (inputLabel === undefined && isQueryBuilder(queryInput)) {
|
|
199
|
+
if (inputLabel === undefined && isQueryBuilder(queryInput) === true) {
|
|
191
200
|
const ast = queryInput[QueryBuilderAstSymbol];
|
|
192
201
|
if (ast._tag === 'RowQuery') {
|
|
193
202
|
label = `db(${rowQueryLabel(ast.tableDef, ast.id)})`;
|
|
@@ -197,7 +206,7 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
197
206
|
const queriedTablesRef = { current: undefined };
|
|
198
207
|
const makeResultsEqual = (resultSchema) => {
|
|
199
208
|
// Creating the equivalence function eagerly in outer scope as it might be expensive
|
|
200
|
-
const eq = Schema.
|
|
209
|
+
const eq = Schema.toEquivalence(resultSchema);
|
|
201
210
|
return (a, b) => (a === NOT_REFRESHED_YET || b === NOT_REFRESHED_YET ? false : eq(a, b));
|
|
202
211
|
};
|
|
203
212
|
// NOTE we try to create the equality function eagerly as it might be expensive
|
|
@@ -211,43 +220,45 @@ export class LiveStoreDbQuery extends LiveStoreQueryBase {
|
|
|
211
220
|
const results$ = this.reactivityGraph.makeThunk((get, setDebugInfo, queryContext, otelContext, debugRefreshReason) => queryContext.otelTracer.startActiveSpan('db:...', // NOTE span name will be overridden further down
|
|
212
221
|
{
|
|
213
222
|
attributes: {
|
|
214
|
-
'livestore.debugRefreshReason': Predicate.hasProperty(debugRefreshReason, 'label')
|
|
223
|
+
'livestore.debugRefreshReason': Predicate.hasProperty(debugRefreshReason, 'label') === true
|
|
215
224
|
? debugRefreshReason.label
|
|
216
225
|
: debugRefreshReason?._tag,
|
|
217
226
|
},
|
|
218
227
|
}, otelContext ?? queryContext.rootOtelContext, (span) => {
|
|
228
|
+
const startTimePerfNow = performance.now();
|
|
219
229
|
const otelContext = otel.trace.setSpan(otel.context.active(), span);
|
|
220
230
|
const { store } = queryContext;
|
|
221
231
|
if (execBeforeFirstRunRef.current !== undefined) {
|
|
222
232
|
execBeforeFirstRunRef.current(queryContext, otelContext);
|
|
223
233
|
execBeforeFirstRunRef.current = undefined;
|
|
224
234
|
}
|
|
225
|
-
const queryInputResult = isThunk(queryInputRaw$OrQueryInputRaw)
|
|
235
|
+
const queryInputResult = isThunk(queryInputRaw$OrQueryInputRaw) === true
|
|
226
236
|
? get(queryInputRaw$OrQueryInputRaw, otelContext, debugRefreshReason)
|
|
227
237
|
: queryInputRaw$OrQueryInputRaw;
|
|
228
238
|
const sqlString = queryInputResult.query;
|
|
229
239
|
const bindValues = queryInputResult.bindValues;
|
|
230
240
|
if (queriedTablesRef.current === undefined) {
|
|
231
|
-
queriedTablesRef.current = store.sqliteDbWrapper.getTablesUsed(sqlString);
|
|
232
|
-
}
|
|
233
|
-
if (bindValues !== undefined) {
|
|
234
|
-
replaceSessionIdSymbol(bindValues, store.clientSession.sessionId);
|
|
241
|
+
queriedTablesRef.current = store[StoreInternalsSymbol].sqliteDbWrapper.getTablesUsed(sqlString);
|
|
235
242
|
}
|
|
243
|
+
// Live query inputs may be cached and re-run as reactive dependencies change.
|
|
244
|
+
// Resolve SessionIdSymbol per execution so the cached input stays symbolic and session-agnostic.
|
|
245
|
+
const resolvedBindValues = bindValues === undefined ? undefined : resolveSessionIdSymbolInBindValues(bindValues, store.sessionId);
|
|
236
246
|
// Establish a reactive dependency on the tables used in the query
|
|
237
247
|
for (const tableName of queriedTablesRef.current) {
|
|
238
|
-
const tableRef = store.tableRefs[tableName] ??
|
|
248
|
+
const tableRef = store[StoreInternalsSymbol].tableRefs[tableName] ??
|
|
249
|
+
shouldNeverHappen(`No table ref found for ${tableName}`);
|
|
239
250
|
get(tableRef, otelContext, debugRefreshReason);
|
|
240
251
|
}
|
|
241
252
|
span.setAttribute('sql.query', sqlString);
|
|
242
253
|
span.updateName(`db:${sqlString.slice(0, 50)}`);
|
|
243
|
-
const rawDbResults = store.sqliteDbWrapper.cachedSelect(sqlString,
|
|
244
|
-
queriedTables: queriedTablesRef.current,
|
|
254
|
+
const rawDbResults = store[StoreInternalsSymbol].sqliteDbWrapper.cachedSelect(sqlString, resolvedBindValues !== undefined ? prepareBindValues(resolvedBindValues, sqlString) : undefined, {
|
|
245
255
|
otelContext,
|
|
256
|
+
...(queriedTablesRef.current !== undefined ? { queriedTables: queriedTablesRef.current } : {}),
|
|
246
257
|
});
|
|
247
258
|
span.setAttribute('sql.rowsCount', rawDbResults.length);
|
|
248
|
-
const parsedResult = Schema.
|
|
249
|
-
if (parsedResult
|
|
250
|
-
const parseErrorStr =
|
|
259
|
+
const parsedResult = Schema.decodeResult(schemaRef.current)(rawDbResults);
|
|
260
|
+
if (Result.isFailure(parsedResult) === true) {
|
|
261
|
+
const parseErrorStr = SchemaIssue.makeFormatterDefault()(parsedResult.failure.issue);
|
|
251
262
|
const expectedSchemaStr = String(schemaRef.current.ast);
|
|
252
263
|
const bindValuesStr = bindValues === undefined ? '' : `\nBind values: ${JSON.stringify(bindValues)}`;
|
|
253
264
|
return shouldNeverHappen(`\
|
|
@@ -262,9 +273,9 @@ Error: ${parseErrorStr}
|
|
|
262
273
|
|
|
263
274
|
Result:`, rawDbResults, '\n');
|
|
264
275
|
}
|
|
265
|
-
const result = this.mapResult(parsedResult.
|
|
276
|
+
const result = this.mapResult(parsedResult.success);
|
|
266
277
|
span.end();
|
|
267
|
-
const durationMs =
|
|
278
|
+
const durationMs = performance.now() - startTimePerfNow;
|
|
268
279
|
this.executionTimes.push(durationMs);
|
|
269
280
|
setDebugInfo({ _tag: 'db', label: `${label}:results`, query: sqlString, durationMs });
|
|
270
281
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-query.js","sourceRoot":"","sources":["../../src/live-queries/db-query.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db-query.js","sourceRoot":"","sources":["../../src/live-queries/db-query.ts"],"names":[],"mappings":"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"}
|