@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.
Files changed (132) hide show
  1. package/README.md +0 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/QueryCache.js +1 -1
  4. package/dist/QueryCache.js.map +1 -1
  5. package/dist/SqliteDbWrapper.d.ts +5 -5
  6. package/dist/SqliteDbWrapper.d.ts.map +1 -1
  7. package/dist/SqliteDbWrapper.js +15 -13
  8. package/dist/SqliteDbWrapper.js.map +1 -1
  9. package/dist/SqliteDbWrapper.test.js +24 -6
  10. package/dist/SqliteDbWrapper.test.js.map +1 -1
  11. package/dist/effect/LiveStore.d.ts +134 -6
  12. package/dist/effect/LiveStore.d.ts.map +1 -1
  13. package/dist/effect/LiveStore.js +190 -11
  14. package/dist/effect/LiveStore.js.map +1 -1
  15. package/dist/effect/LiveStore.test.d.ts +2 -0
  16. package/dist/effect/LiveStore.test.d.ts.map +1 -0
  17. package/dist/effect/LiveStore.test.js +41 -0
  18. package/dist/effect/LiveStore.test.js.map +1 -0
  19. package/dist/effect/mod.d.ts +1 -1
  20. package/dist/effect/mod.d.ts.map +1 -1
  21. package/dist/effect/mod.js +3 -1
  22. package/dist/effect/mod.js.map +1 -1
  23. package/dist/live-queries/base-class.d.ts +129 -9
  24. package/dist/live-queries/base-class.d.ts.map +1 -1
  25. package/dist/live-queries/base-class.js +30 -4
  26. package/dist/live-queries/base-class.js.map +1 -1
  27. package/dist/live-queries/client-document-get-query.d.ts +1 -1
  28. package/dist/live-queries/client-document-get-query.d.ts.map +1 -1
  29. package/dist/live-queries/client-document-get-query.js +4 -3
  30. package/dist/live-queries/client-document-get-query.js.map +1 -1
  31. package/dist/live-queries/computed.d.ts +56 -0
  32. package/dist/live-queries/computed.d.ts.map +1 -1
  33. package/dist/live-queries/computed.js +62 -6
  34. package/dist/live-queries/computed.js.map +1 -1
  35. package/dist/live-queries/db-query.d.ts +2 -2
  36. package/dist/live-queries/db-query.d.ts.map +1 -1
  37. package/dist/live-queries/db-query.js +41 -30
  38. package/dist/live-queries/db-query.js.map +1 -1
  39. package/dist/live-queries/db-query.test.js +112 -29
  40. package/dist/live-queries/db-query.test.js.map +1 -1
  41. package/dist/live-queries/signal.d.ts +49 -0
  42. package/dist/live-queries/signal.d.ts.map +1 -1
  43. package/dist/live-queries/signal.js +51 -2
  44. package/dist/live-queries/signal.js.map +1 -1
  45. package/dist/live-queries/signal.test.js +4 -4
  46. package/dist/live-queries/signal.test.js.map +1 -1
  47. package/dist/mod.d.ts +3 -3
  48. package/dist/mod.d.ts.map +1 -1
  49. package/dist/mod.js +3 -2
  50. package/dist/mod.js.map +1 -1
  51. package/dist/reactive.d.ts +10 -10
  52. package/dist/reactive.d.ts.map +1 -1
  53. package/dist/reactive.js +29 -27
  54. package/dist/reactive.js.map +1 -1
  55. package/dist/reactive.test.js +2 -2
  56. package/dist/reactive.test.js.map +1 -1
  57. package/dist/store/StoreRegistry.d.ts +215 -0
  58. package/dist/store/StoreRegistry.d.ts.map +1 -0
  59. package/dist/store/StoreRegistry.js +267 -0
  60. package/dist/store/StoreRegistry.js.map +1 -0
  61. package/dist/store/StoreRegistry.test.d.ts +2 -0
  62. package/dist/store/StoreRegistry.test.d.ts.map +1 -0
  63. package/dist/store/StoreRegistry.test.js +384 -0
  64. package/dist/store/StoreRegistry.test.js.map +1 -0
  65. package/dist/store/create-store.d.ts +99 -22
  66. package/dist/store/create-store.d.ts.map +1 -1
  67. package/dist/store/create-store.js +85 -37
  68. package/dist/store/create-store.js.map +1 -1
  69. package/dist/store/devtools.d.ts +6 -18
  70. package/dist/store/devtools.d.ts.map +1 -1
  71. package/dist/store/devtools.js +61 -19
  72. package/dist/store/devtools.js.map +1 -1
  73. package/dist/store/store-eventstream.test.d.ts +2 -0
  74. package/dist/store/store-eventstream.test.d.ts.map +1 -0
  75. package/dist/store/store-eventstream.test.js +65 -0
  76. package/dist/store/store-eventstream.test.js.map +1 -0
  77. package/dist/store/store-types.d.ts +271 -31
  78. package/dist/store/store-types.d.ts.map +1 -1
  79. package/dist/store/store-types.js +41 -1
  80. package/dist/store/store-types.js.map +1 -1
  81. package/dist/store/store-types.test.d.ts +2 -0
  82. package/dist/store/store-types.test.d.ts.map +1 -0
  83. package/dist/store/store-types.test.js +39 -0
  84. package/dist/store/store-types.test.js.map +1 -0
  85. package/dist/store/store.d.ts +255 -68
  86. package/dist/store/store.d.ts.map +1 -1
  87. package/dist/store/store.js +533 -186
  88. package/dist/store/store.js.map +1 -1
  89. package/dist/utils/dev.d.ts.map +1 -1
  90. package/dist/utils/dev.js +1 -1
  91. package/dist/utils/dev.js.map +1 -1
  92. package/dist/utils/stack-info.d.ts.map +1 -1
  93. package/dist/utils/stack-info.js +3 -2
  94. package/dist/utils/stack-info.js.map +1 -1
  95. package/dist/utils/tests/fixture.d.ts +46 -39
  96. package/dist/utils/tests/fixture.d.ts.map +1 -1
  97. package/dist/utils/tests/fixture.js +7 -0
  98. package/dist/utils/tests/fixture.js.map +1 -1
  99. package/dist/utils/tests/otel.d.ts.map +1 -1
  100. package/dist/utils/tests/otel.js +5 -5
  101. package/dist/utils/tests/otel.js.map +1 -1
  102. package/package.json +50 -18
  103. package/src/QueryCache.ts +1 -1
  104. package/src/SqliteDbWrapper.test.ts +30 -6
  105. package/src/SqliteDbWrapper.ts +21 -17
  106. package/src/ambient.d.ts +0 -7
  107. package/src/effect/LiveStore.test.ts +61 -0
  108. package/src/effect/LiveStore.ts +426 -22
  109. package/src/effect/mod.ts +13 -1
  110. package/src/live-queries/__snapshots__/db-query.test.ts.snap +814 -178
  111. package/src/live-queries/base-class.ts +162 -32
  112. package/src/live-queries/client-document-get-query.ts +6 -4
  113. package/src/live-queries/computed.ts +65 -8
  114. package/src/live-queries/db-query.test.ts +168 -30
  115. package/src/live-queries/db-query.ts +58 -43
  116. package/src/live-queries/signal.test.ts +5 -4
  117. package/src/live-queries/signal.ts +52 -3
  118. package/src/mod.ts +19 -2
  119. package/src/reactive.test.ts +3 -2
  120. package/src/reactive.ts +58 -49
  121. package/src/store/StoreRegistry.test.ts +543 -0
  122. package/src/store/StoreRegistry.ts +429 -0
  123. package/src/store/create-store.ts +227 -74
  124. package/src/store/devtools.ts +305 -261
  125. package/src/store/store-eventstream.test.ts +123 -0
  126. package/src/store/store-types.test.ts +52 -0
  127. package/src/store/store-types.ts +318 -44
  128. package/src/store/store.ts +695 -283
  129. package/src/utils/dev.ts +3 -4
  130. package/src/utils/stack-info.ts +5 -2
  131. package/src/utils/tests/fixture.ts +9 -1
  132. 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":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAEhD,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE/C,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
+ {"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":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAKpD,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,IAAI,CAAC,kBAAkB,CAAA;IAEjE,MAAM,KAAK,GAAG,EAAE,KAAK,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAG,CAAA;IAC5D,MAAM,SAAS,GACb,KAAK,CAAC,eAAe,CAAC,YAAY,CAChC,kBAAkB,KAAK,CAAC,SAAS,CAAC,IAAI,gBAAgB,EACtD,CAAC,KAAK,CAA8B,EACpC,EAAE,WAAW,EAAE,CAChB,CAAC,MAAM,KAAK,CAAC,CAAA;IAEhB,IAAI,SAAS;QAAE,OAAM;IAErB,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"}
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,EAAgB,kBAAkB,EAAgC,MAAM,iBAAiB,CAAA;AAEhG,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,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;IA6BD,OAAO,aAQN;CACF"}
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 = getDurationMsFromSpan(span);
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":"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"}
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.Schema<TDecoded, TEncoded>;
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;AAY/D,OAAO,EAA0B,MAAM,EAAiB,MAAM,yBAAyB,CAAA;AACvF,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE3C,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,EAAgB,kBAAkB,EAAgC,MAAM,iBAAiB,CAAA;AAGhG,MAAM,MAAM,aAAa,CAAC,QAAQ,EAAE,QAAQ,IAAI;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACzC,UAAU,CAAC,EAAE,QAAQ,CAAA;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAA;CAC3D,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CACC,CAAA;AAEjF,MAAM,MAAM,UAAU,CAAC,QAAQ,EAAE,QAAQ,IAAI,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAEjH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,OAAO,EAAE;IACpB,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,EACrC,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,EACpG,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAA;QACtC;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,GACA,YAAY,CAAC,OAAO,CAAC,CAAA;IAIxB,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,EACrC,UAAU,EACN,CAAC,CAAC,GAAG,EAAE,aAAa,KAAK,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAC1E,CAAC,CAAC,GAAG,EAAE,aAAa,KAAK,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACnE,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAA;QACtC;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,GACA,YAAY,CAAC,OAAO,CAAC,CAAA;CAyCzB,CAAA;AAgCD,qBAAa,gBAAgB,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa,CAAE,SAAQ,kBAAkB,CAAC,OAAO,CAAC;IACvG,IAAI,EAAG,IAAI,CAAS;IAEpB,mDAAmD;IACnD,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,sBAAsB,EAAE,aAAa,CAAC,GAAG,SAAS,CAAA;IAE9F,sDAAsD;IACtD,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAA;IAE/D,KAAK,EAAE,MAAM,CAAA;IAEb,QAAQ,CAAC,eAAe,kBAAA;IAExB,OAAO,CAAC,SAAS,CAAkC;IACnD,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;gBAEd,EACV,UAAU,EACV,KAAK,EAAE,UAAU,EACjB,eAAe,EACf,GAAG,EACH,WAAW,EACX,GAAG,GACJ,EAAE;QACD,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,UAAU,EACN,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,GAC7C,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,sBAAsB,KAAK,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACxG,eAAe,EAAE,eAAe,CAAA;QAChC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAA;QACtC,gDAAgD;QAChD,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;QAC1B,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;KAC3B;IA4OD,OAAO,aAYN;CACF"}
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 = [queryString, options?.deps ? depsToString(options.deps) : undefined, depsToString(extraDeps)]
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(`Invalid query hash for query: ${queryInput}`);
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' ? undefined : isQueryBuilder(queryInput) ? undefined : queryInput.schema,
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 UnexpectedError({ cause, note: `Error building query for ${qb.toString()}`, payload: { qb } });
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.equivalence(resultSchema);
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] ?? shouldNeverHappen(`No table ref found for ${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, bindValues ? prepareBindValues(bindValues, sqlString) : undefined, {
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.decodeEither(schemaRef.current)(rawDbResults);
249
- if (parsedResult._tag === 'Left') {
250
- const parseErrorStr = TreeFormatter.formatErrorSync(parsedResult.left);
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.right);
276
+ const result = this.mapResult(parsedResult.success);
266
277
  span.end();
267
- const durationMs = getDurationMsFromSpan(span);
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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"}