@livestore/livestore 0.0.13 → 0.0.14

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 (205) hide show
  1. package/README.md +18 -21
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/QueryCache.d.ts +1 -1
  4. package/dist/QueryCache.d.ts.map +1 -1
  5. package/dist/QueryCache.js.map +1 -1
  6. package/dist/__tests__/react/fixture.d.ts +5 -4
  7. package/dist/__tests__/react/fixture.d.ts.map +1 -1
  8. package/dist/__tests__/react/fixture.js +13 -14
  9. package/dist/__tests__/react/fixture.js.map +1 -1
  10. package/dist/__tests__/react/useComponentState.test.d.ts +2 -0
  11. package/dist/__tests__/react/useComponentState.test.d.ts.map +1 -0
  12. package/dist/__tests__/react/useComponentState.test.js +68 -0
  13. package/dist/__tests__/react/useComponentState.test.js.map +1 -0
  14. package/dist/__tests__/react/useLQuery.test.d.ts +2 -0
  15. package/dist/__tests__/react/useLQuery.test.d.ts.map +1 -0
  16. package/dist/__tests__/react/useLQuery.test.js +38 -0
  17. package/dist/__tests__/react/useLQuery.test.js.map +1 -0
  18. package/dist/__tests__/react/useLiveStoreComponent.test.js +4 -9
  19. package/dist/__tests__/react/useLiveStoreComponent.test.js.map +1 -1
  20. package/dist/__tests__/react/useQuery.test.d.ts +2 -0
  21. package/dist/__tests__/react/useQuery.test.d.ts.map +1 -0
  22. package/dist/__tests__/react/useQuery.test.js +33 -0
  23. package/dist/__tests__/react/useQuery.test.js.map +1 -0
  24. package/dist/__tests__/react/utils/extractStackInfoFromStackTrace.test.d.ts +2 -0
  25. package/dist/__tests__/react/utils/extractStackInfoFromStackTrace.test.d.ts.map +1 -0
  26. package/dist/__tests__/react/utils/extractStackInfoFromStackTrace.test.js +38 -0
  27. package/dist/__tests__/react/utils/extractStackInfoFromStackTrace.test.js.map +1 -0
  28. package/dist/__tests__/reactive.test.js +168 -95
  29. package/dist/__tests__/reactive.test.js.map +1 -1
  30. package/dist/__tests__/reactiveQueries/sql.test.d.ts +2 -0
  31. package/dist/__tests__/reactiveQueries/sql.test.d.ts.map +1 -0
  32. package/dist/__tests__/reactiveQueries/sql.test.js +337 -0
  33. package/dist/__tests__/reactiveQueries/sql.test.js.map +1 -0
  34. package/dist/effect/LiveStore.d.ts +3 -9
  35. package/dist/effect/LiveStore.d.ts.map +1 -1
  36. package/dist/effect/LiveStore.js +11 -7
  37. package/dist/effect/LiveStore.js.map +1 -1
  38. package/dist/inMemoryDatabase.d.ts +17 -21
  39. package/dist/inMemoryDatabase.d.ts.map +1 -1
  40. package/dist/inMemoryDatabase.js +2 -9
  41. package/dist/inMemoryDatabase.js.map +1 -1
  42. package/dist/index.d.ts +9 -7
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +7 -3
  45. package/dist/index.js.map +1 -1
  46. package/dist/migrations.d.ts +7 -0
  47. package/dist/migrations.d.ts.map +1 -1
  48. package/dist/migrations.js +18 -13
  49. package/dist/migrations.js.map +1 -1
  50. package/dist/react/LiveStoreProvider.d.ts +1 -3
  51. package/dist/react/LiveStoreProvider.d.ts.map +1 -1
  52. package/dist/react/LiveStoreProvider.js +13 -10
  53. package/dist/react/LiveStoreProvider.js.map +1 -1
  54. package/dist/react/index.d.ts +4 -4
  55. package/dist/react/index.d.ts.map +1 -1
  56. package/dist/react/index.js +3 -3
  57. package/dist/react/index.js.map +1 -1
  58. package/dist/react/useComponentState.d.ts +50 -0
  59. package/dist/react/useComponentState.d.ts.map +1 -0
  60. package/dist/react/useComponentState.js +248 -0
  61. package/dist/react/useComponentState.js.map +1 -0
  62. package/dist/react/useGlobalQuery.d.ts +2 -2
  63. package/dist/react/useGlobalQuery.d.ts.map +1 -1
  64. package/dist/react/useGlobalQuery.js +5 -2
  65. package/dist/react/useGlobalQuery.js.map +1 -1
  66. package/dist/react/useGraphQL.d.ts +5 -3
  67. package/dist/react/useGraphQL.d.ts.map +1 -1
  68. package/dist/react/useGraphQL.js +27 -7
  69. package/dist/react/useGraphQL.js.map +1 -1
  70. package/dist/react/useLiveStoreComponent.d.ts +14 -14
  71. package/dist/react/useLiveStoreComponent.d.ts.map +1 -1
  72. package/dist/react/useLiveStoreComponent.js +151 -91
  73. package/dist/react/useLiveStoreComponent.js.map +1 -1
  74. package/dist/react/useQuery.d.ts +3 -0
  75. package/dist/react/useQuery.d.ts.map +1 -0
  76. package/dist/react/useQuery.js +42 -0
  77. package/dist/react/useQuery.js.map +1 -0
  78. package/dist/react/useTemporaryQuery.d.ts +8 -0
  79. package/dist/react/useTemporaryQuery.d.ts.map +1 -0
  80. package/dist/react/useTemporaryQuery.js +17 -0
  81. package/dist/react/useTemporaryQuery.js.map +1 -0
  82. package/dist/react/utils/extractNamesFromStackTrace.d.ts +3 -0
  83. package/dist/react/utils/extractNamesFromStackTrace.d.ts.map +1 -0
  84. package/dist/react/utils/extractNamesFromStackTrace.js +40 -0
  85. package/dist/react/utils/extractNamesFromStackTrace.js.map +1 -0
  86. package/dist/react/utils/extractStackInfoFromStackTrace.d.ts +7 -0
  87. package/dist/react/utils/extractStackInfoFromStackTrace.d.ts.map +1 -0
  88. package/dist/react/utils/extractStackInfoFromStackTrace.js +40 -0
  89. package/dist/react/utils/extractStackInfoFromStackTrace.js.map +1 -0
  90. package/dist/reactive.d.ts +42 -48
  91. package/dist/reactive.d.ts.map +1 -1
  92. package/dist/reactive.js +293 -186
  93. package/dist/reactive.js.map +1 -1
  94. package/dist/reactiveQueries/base-class.d.ts +28 -20
  95. package/dist/reactiveQueries/base-class.d.ts.map +1 -1
  96. package/dist/reactiveQueries/base-class.js +25 -17
  97. package/dist/reactiveQueries/base-class.js.map +1 -1
  98. package/dist/reactiveQueries/graph.d.ts +10 -0
  99. package/dist/reactiveQueries/graph.d.ts.map +1 -0
  100. package/dist/reactiveQueries/graph.js +6 -0
  101. package/dist/reactiveQueries/graph.js.map +1 -0
  102. package/dist/reactiveQueries/graphql.d.ts +35 -18
  103. package/dist/reactiveQueries/graphql.d.ts.map +1 -1
  104. package/dist/reactiveQueries/graphql.js +91 -10
  105. package/dist/reactiveQueries/graphql.js.map +1 -1
  106. package/dist/reactiveQueries/js.d.ts +17 -13
  107. package/dist/reactiveQueries/js.d.ts.map +1 -1
  108. package/dist/reactiveQueries/js.js +31 -8
  109. package/dist/reactiveQueries/js.js.map +1 -1
  110. package/dist/reactiveQueries/sql.d.ts +22 -18
  111. package/dist/reactiveQueries/sql.d.ts.map +1 -1
  112. package/dist/reactiveQueries/sql.js +81 -16
  113. package/dist/reactiveQueries/sql.js.map +1 -1
  114. package/dist/schema.d.ts +0 -2
  115. package/dist/schema.d.ts.map +1 -1
  116. package/dist/schema.js +3 -6
  117. package/dist/schema.js.map +1 -1
  118. package/dist/storage/in-memory/index.d.ts +2 -2
  119. package/dist/storage/in-memory/index.d.ts.map +1 -1
  120. package/dist/storage/in-memory/index.js.map +1 -1
  121. package/dist/storage/index.d.ts +2 -2
  122. package/dist/storage/index.d.ts.map +1 -1
  123. package/dist/storage/tauri/index.d.ts +2 -2
  124. package/dist/storage/tauri/index.d.ts.map +1 -1
  125. package/dist/storage/tauri/index.js.map +1 -1
  126. package/dist/storage/web-worker/index.d.ts +4 -4
  127. package/dist/storage/web-worker/index.d.ts.map +1 -1
  128. package/dist/storage/web-worker/index.js +3 -5
  129. package/dist/storage/web-worker/index.js.map +1 -1
  130. package/dist/storage/web-worker/worker.js +2 -2
  131. package/dist/storage/web-worker/worker.js.map +1 -1
  132. package/dist/store.d.ts +19 -52
  133. package/dist/store.d.ts.map +1 -1
  134. package/dist/store.js +323 -266
  135. package/dist/store.js.map +1 -1
  136. package/dist/util.d.ts +3 -1
  137. package/dist/util.d.ts.map +1 -1
  138. package/dist/util.js +2 -0
  139. package/dist/util.js.map +1 -1
  140. package/package.json +2 -1
  141. package/src/QueryCache.ts +1 -1
  142. package/src/__tests__/react/fixture.tsx +21 -16
  143. package/src/__tests__/react/{useLiveStoreComponent.test.tsx → useComponentState.test.tsx} +9 -20
  144. package/src/__tests__/react/useQuery.test.tsx +48 -0
  145. package/src/__tests__/react/utils/extractStackInfoFromStackTrace.test.ts +40 -0
  146. package/src/__tests__/reactive.test.ts +194 -142
  147. package/src/__tests__/reactiveQueries/sql.test.ts +372 -0
  148. package/src/effect/LiveStore.ts +14 -18
  149. package/src/inMemoryDatabase.ts +22 -30
  150. package/src/index.ts +8 -6
  151. package/src/migrations.ts +39 -21
  152. package/src/react/LiveStoreProvider.tsx +13 -16
  153. package/src/react/index.ts +4 -8
  154. package/src/react/{useLiveStoreComponent.ts → useComponentState.ts} +98 -230
  155. package/src/react/useQuery.ts +58 -0
  156. package/src/react/useTemporaryQuery.ts +21 -0
  157. package/src/react/utils/extractStackInfoFromStackTrace.ts +47 -0
  158. package/src/reactive.ts +386 -267
  159. package/src/reactiveQueries/base-class.ts +61 -39
  160. package/src/reactiveQueries/graph.ts +15 -0
  161. package/src/reactiveQueries/graphql.ts +147 -31
  162. package/src/reactiveQueries/js.ts +54 -21
  163. package/src/reactiveQueries/sql.ts +128 -37
  164. package/src/schema.ts +2 -5
  165. package/src/storage/in-memory/index.ts +2 -2
  166. package/src/storage/index.ts +2 -2
  167. package/src/storage/tauri/index.ts +2 -2
  168. package/src/storage/web-worker/index.ts +6 -8
  169. package/src/storage/web-worker/worker.ts +2 -2
  170. package/src/store.ts +394 -418
  171. package/src/util.ts +8 -2
  172. package/dist/backends/base.d.ts +0 -13
  173. package/dist/backends/base.d.ts.map +0 -1
  174. package/dist/backends/base.js +0 -53
  175. package/dist/backends/base.js.map +0 -1
  176. package/dist/backends/in-memory/index.d.ts +0 -22
  177. package/dist/backends/in-memory/index.d.ts.map +0 -1
  178. package/dist/backends/in-memory/index.js +0 -45
  179. package/dist/backends/in-memory/index.js.map +0 -1
  180. package/dist/backends/index.d.ts +0 -41
  181. package/dist/backends/index.d.ts.map +0 -1
  182. package/dist/backends/index.js +0 -16
  183. package/dist/backends/index.js.map +0 -1
  184. package/dist/backends/tauri/index.d.ts +0 -21
  185. package/dist/backends/tauri/index.d.ts.map +0 -1
  186. package/dist/backends/tauri/index.js +0 -48
  187. package/dist/backends/tauri/index.js.map +0 -1
  188. package/dist/backends/utils/idb.d.ts +0 -10
  189. package/dist/backends/utils/idb.d.ts.map +0 -1
  190. package/dist/backends/utils/idb.js +0 -58
  191. package/dist/backends/utils/idb.js.map +0 -1
  192. package/dist/backends/web-worker/index.d.ts +0 -26
  193. package/dist/backends/web-worker/index.d.ts.map +0 -1
  194. package/dist/backends/web-worker/index.js +0 -63
  195. package/dist/backends/web-worker/index.js.map +0 -1
  196. package/dist/backends/web-worker/worker.d.ts +0 -17
  197. package/dist/backends/web-worker/worker.d.ts.map +0 -1
  198. package/dist/backends/web-worker/worker.js +0 -139
  199. package/dist/backends/web-worker/worker.js.map +0 -1
  200. package/dist/storage/base.d.ts +0 -10
  201. package/dist/storage/base.d.ts.map +0 -1
  202. package/dist/storage/base.js +0 -14
  203. package/dist/storage/base.js.map +0 -1
  204. package/src/react/useGlobalQuery.ts +0 -37
  205. package/src/react/useGraphQL.ts +0 -112
@@ -1,6 +1,9 @@
1
- import { useEffect, useState } from 'react';
1
+ import React, { useEffect, useState } from 'react';
2
2
  import { labelForKey } from '../componentKey.js';
3
- export const useGlobalQuery = (query) => {
3
+ import { useStore } from './LiveStoreContext.js';
4
+ export const useGlobalQuery = (queryDef) => {
5
+ const { store } = useStore();
6
+ const query = React.useMemo(() => queryDef(store), [store, queryDef]);
4
7
  // We know the query has a result by the time we use it; so we can synchronously populate a default state
5
8
  const [value, setValue] = useState(query.results$.result);
6
9
  // Subscribe to future updates for this query
@@ -1 +1 @@
1
- {"version":3,"file":"useGlobalQuery.js","sourceRoot":"","sources":["../../src/react/useGlobalQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAA2B,KAAQ,EAAkB,EAAE;IACnF,yGAAyG;IACzG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAiB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAEzE,6CAA6C;IAC7C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAC5C,4BAA4B,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,EAC5E,EAAE,EACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EACnC,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAClC,KAAK,EACL,CAAC,CAAC,EAAE,EAAE;gBACJ,qEAAqE;gBACrE,kEAAkE;gBAClE,sCAAsC;gBACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;YACpB,CAAC,EACD,SAAS,EACT,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CACvB,CAAA;YACD,OAAO,GAAG,EAAE;gBACV,MAAM,EAAE,CAAA;gBACR,IAAI,CAAC,GAAG,EAAE,CAAA;YACZ,CAAC,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
1
+ {"version":3,"file":"useGlobalQuery.js","sourceRoot":"","sources":["../../src/react/useGlobalQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAA2B,QAAkC,EAAkB,EAAE;IAC7G,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IACrE,yGAAyG;IACzG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAiB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAEzE,6CAA6C;IAC7C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAC5C,4BAA4B,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,EAC5E,EAAE,EACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EACnC,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAClC,KAAK,EACL,CAAC,CAAC,EAAE,EAAE;gBACJ,qEAAqE;gBACrE,kEAAkE;gBAClE,sCAAsC;gBACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;YACpB,CAAC,EACD,SAAS,EACT,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CACvB,CAAA;YACD,OAAO,GAAG,EAAE;gBACV,MAAM,EAAE,CAAA;gBACR,IAAI,CAAC,GAAG,EAAE,CAAA;YACZ,CAAC,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -1,11 +1,13 @@
1
1
  import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
2
2
  import React from 'react';
3
- import { type ComponentKeyConfig } from './useLiveStoreComponent.js';
4
- export type UseLiveStoreComponentProps<TResult extends Record<string, any>, TVariables extends Record<string, any>> = {
3
+ import { type ComponentKeyConfig } from './useComponentState.js';
4
+ export type UseComponentStateProps<TResult extends Record<string, any>, TVariables extends Record<string, any>> = {
5
5
  query: DocumentNode<TResult, TVariables>;
6
6
  variables: TVariables;
7
7
  componentKey: ComponentKeyConfig;
8
8
  reactDeps?: React.DependencyList;
9
9
  };
10
- export declare const useGraphQL: <TResult extends Record<string, any>, TVariables extends Record<string, any> = {}>({ query, variables, componentKey: componentKeyConfig, reactDeps, }: UseLiveStoreComponentProps<TResult, TVariables>) => Readonly<TResult>;
10
+ type Variables = Record<string, any>;
11
+ export declare const useGraphQL: <TResult extends Record<string, any>, TVariables extends Variables = {}>({ query: document, variables, componentKey: componentKeyConfig, reactDeps, }: UseComponentStateProps<TResult, TVariables>) => Readonly<TResult>;
12
+ export {};
11
13
  //# sourceMappingURL=useGraphQL.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGraphQL.d.ts","sourceRoot":"","sources":["../../src/react/useGraphQL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAG1F,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,4BAA4B,CAAA;AAGrF,MAAM,MAAM,0BAA0B,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IACpH,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACxC,SAAS,EAAE,UAAU,CAAA;IACrB,YAAY,EAAE,kBAAkB,CAAA;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC,cAAc,CAAA;CACjC,CAAA;AAWD,eAAO,MAAM,UAAU,8NAqFtB,CAAA"}
1
+ {"version":3,"file":"useGraphQL.d.ts","sourceRoot":"","sources":["../../src/react/useGraphQL.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAG1F,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,wBAAwB,CAAA;AAGjF,MAAM,MAAM,sBAAsB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IAChH,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACxC,SAAS,EAAE,UAAU,CAAA;IACrB,YAAY,EAAE,kBAAkB,CAAA;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC,cAAc,CAAA;CACjC,CAAA;AAED,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAepC,eAAO,MAAM,UAAU,0NAuGtB,CAAA"}
@@ -2,9 +2,13 @@ import * as otel from '@opentelemetry/api';
2
2
  import { isEqual } from 'lodash-es';
3
3
  import React from 'react';
4
4
  import { labelForKey } from '../componentKey.js';
5
+ import { queryGraphQL } from '../reactiveQueries/graphql.js';
5
6
  import { useStore } from './LiveStoreContext.js';
6
- import { useComponentKey } from './useLiveStoreComponent.js';
7
+ import { useComponentKey } from './useComponentState.js';
7
8
  import { useStateRefWithReactiveInput } from './utils/useStateRefWithReactiveInput.js';
9
+ // TODO get rid of the query cache in favour of the new side-effect-free query definition approach https://www.notion.so/schickling/New-query-definition-approach-1097a78ef0e9495bac25f90417374756?pvs=4
10
+ // NOTE we're using a nested map here since we need to resolve 2 levels of object identities (query + variables)
11
+ // const queryCache = new Map<DocumentNode<any, any>, Map<Variables, LiveStoreGraphQLQuery<any, any, any>>>()
8
12
  /**
9
13
  * This is needed because the `React.useMemo` call below, can sometimes be called multiple times 🤷,
10
14
  * so we need to "cache" the fact that we've already started a span for this component.
@@ -13,7 +17,7 @@ import { useStateRefWithReactiveInput } from './utils/useStateRefWithReactiveInp
13
17
  const spanAlreadyStartedCache = new Map();
14
18
  // TODO 1) figure out a way to make `variables` optional if the query doesn't have any variables (probably requires positional args)
15
19
  // TODO 2) allow `.pipe` on the resulting query (possibly as a separate optional prop)
16
- export const useGraphQL = ({ query, variables, componentKey: componentKeyConfig, reactDeps = [], }) => {
20
+ export const useGraphQL = ({ query: document, variables, componentKey: componentKeyConfig, reactDeps = [], }) => {
17
21
  const componentKey = useComponentKey(componentKeyConfig, reactDeps);
18
22
  const { store } = useStore();
19
23
  const componentKeyLabel = React.useMemo(() => labelForKey(componentKey), [componentKey]);
@@ -31,7 +35,24 @@ export const useGraphQL = ({ query, variables, componentKey: componentKeyConfig,
31
35
  spanAlreadyStartedCache.delete(componentKeyLabel);
32
36
  span.end();
33
37
  }, [componentKeyLabel, span]);
34
- const makeLiveStoreQuery = React.useCallback(() => store.queryGraphQL(query, () => variables ?? {}, { componentKey, otelContext }),
38
+ const liveStoreQuery = React.useMemo(() => {
39
+ return queryGraphQL(document, () => variables ?? {}, {
40
+ /* componentKey, */
41
+ });
42
+ // NOTE I had to disable the caching below as still led to many problems
43
+ // We should just implement the new query definition approach instead
44
+ // const queryCacheForQuery = queryCache.get(query)
45
+ // if (queryCacheForQuery && queryCacheForQuery.has(variables)) {
46
+ // return queryCacheForQuery.get(variables)!
47
+ // }
48
+ // const newQuery = store.queryGraphQL(query, () => variables ?? ({} as TVariables), { componentKey, otelContext })
49
+ // if (queryCacheForQuery) {
50
+ // queryCacheForQuery.set(variables, newQuery)
51
+ // } else {
52
+ // queryCache.set(query, new Map([[variables, newQuery]]))
53
+ // }
54
+ // return newQuery
55
+ },
35
56
  // NOTE: we don't include the queries function passed in by the user here;
36
57
  // the reason is that we don't want to force them to memoize that function.
37
58
  // Instead, we just assume that the function always has the same contents.
@@ -40,10 +61,9 @@ export const useGraphQL = ({ query, variables, componentKey: componentKeyConfig,
40
61
  // eslint-disable-next-line react-hooks/exhaustive-deps
41
62
  [componentKey, store]);
42
63
  // TODO get rid of the temporary query workaround
43
- const initialQueryResults = React.useMemo(() => store.inTempQueryContext(() => makeLiveStoreQuery().results$.result), [makeLiveStoreQuery, store]);
64
+ const initialQueryResults = React.useMemo(() => liveStoreQuery.run(), [liveStoreQuery]);
44
65
  const [queryResultsRef, setQueryResults_] = useStateRefWithReactiveInput(initialQueryResults);
45
66
  React.useEffect(() => {
46
- const liveStoreQuery = makeLiveStoreQuery();
47
67
  const unsubscribe = store.subscribe(liveStoreQuery, (results) => {
48
68
  if (isEqual(results, queryResultsRef.current) === false) {
49
69
  setQueryResults_(results);
@@ -56,12 +76,12 @@ export const useGraphQL = ({ query, variables, componentKey: componentKeyConfig,
56
76
  // This should probably be improved
57
77
  // eslint-disable-next-line react-hooks/exhaustive-deps
58
78
  }, [
59
- makeLiveStoreQuery,
79
+ liveStoreQuery,
60
80
  // setQueryResults_,
61
81
  store,
62
82
  ]);
63
83
  // Very important: remove any queries / other resources associated w/ this component
64
- React.useEffect(() => () => store.unmountComponent(componentKey), [store, componentKey]);
84
+ React.useEffect(() => () => liveStoreQuery.destroy(), [liveStoreQuery]);
65
85
  return queryResultsRef.current;
66
86
  };
67
87
  //# sourceMappingURL=useGraphQL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGraphQL.js","sourceRoot":"","sources":["../../src/react/useGraphQL.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useGraphQL.js","sourceRoot":"","sources":["../../src/react/useGraphQL.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,10 @@ import { SqliteDsl } from 'effect-db-schema';
4
4
  import type { DependencyList } from 'react';
5
5
  import React from 'react';
6
6
  import type { ComponentKey } from '../componentKey.js';
7
- import type { GetAtom } from '../reactive.js';
8
- import type { LiveStoreGraphQLQuery } from '../reactiveQueries/graphql.js';
9
- import type { LiveStoreJSQuery } from '../reactiveQueries/js.js';
10
- import type { LiveStoreSQLQuery } from '../reactiveQueries/sql.js';
7
+ import type { GetAtomResult } from '../reactiveQueries/base-class.js';
8
+ import { type LiveStoreGraphQLQuery } from '../reactiveQueries/graphql.js';
9
+ import { LiveStoreJSQuery } from '../reactiveQueries/js.js';
10
+ import { LiveStoreSQLQuery } from '../reactiveQueries/sql.js';
11
11
  import type { BaseGraphQLContext, LiveStoreQuery, QueryResult } from '../store.js';
12
12
  import type { Bindable } from '../util.js';
13
13
  export interface QueryDefinitions {
@@ -16,13 +16,13 @@ export interface QueryDefinitions {
16
16
  export type QueryResults<TQuery> = {
17
17
  [queryName in keyof TQuery]: PrettifyFlat<QueryResult<TQuery[queryName]>>;
18
18
  };
19
- export type ReactiveSQL = <TResult>(genQuery: (get: GetAtom) => string, queriedTables: string[], bindValues?: Bindable | undefined) => LiveStoreSQLQuery<TResult>;
20
- export type ReactiveGraphQL = <TResult extends Record<string, any>, TVariables extends Record<string, any>, TContext extends BaseGraphQLContext>(query: DocumentNode<TResult, TVariables>, genVariableValues: (get: GetAtom) => TVariables, label?: string) => LiveStoreGraphQLQuery<TResult, TVariables, TContext>;
19
+ export type ReactiveSQL = <TResult>(query: string | ((get: GetAtomResult) => string), queriedTables: string[], bindValues?: Bindable | undefined) => LiveStoreSQLQuery<TResult>;
20
+ export type ReactiveJS = <TResult>(query: (get: GetAtomResult) => TResult) => LiveStoreJSQuery<TResult>;
21
+ export type ReactiveGraphQL = <TResult extends Record<string, any>, TVariables extends Record<string, any>, TContext extends BaseGraphQLContext>(query: DocumentNode<TResult, TVariables>, variableValues: TVariables | ((get: GetAtomResult) => TVariables), label?: string) => LiveStoreGraphQLQuery<TResult, TVariables, TContext>;
21
22
  type RegisterSubscription = <TQuery extends LiveStoreQuery>(query: TQuery, onNewValue: (value: QueryResult<TQuery>) => void, onUnsubscribe?: () => void) => void;
22
23
  type GenQueries<TQueries, TStateResult> = (args: {
23
24
  rxSQL: ReactiveSQL;
24
25
  rxGraphQL: ReactiveGraphQL;
25
- globalQueries: QueryDefinitions;
26
26
  state$: LiveStoreJSQuery<TStateResult>;
27
27
  /**
28
28
  * Registers a subscription.
@@ -32,9 +32,9 @@ type GenQueries<TQueries, TStateResult> = (args: {
32
32
  subscribe: RegisterSubscription;
33
33
  isTemporaryQuery: boolean;
34
34
  }) => TQueries;
35
- export type UseLiveStoreComponentProps<TQueries, TColumns extends ComponentColumns> = {
36
- stateSchema?: SqliteDsl.TableDefinition<string, TColumns>;
37
- queries?: GenQueries<TQueries, SqliteDsl.FromColumns.RowDecoded<TColumns>>;
35
+ export type UseLiveStoreComponentProps<TQueries, TStateColumns extends ComponentColumns> = {
36
+ stateSchema?: SqliteDsl.TableDefinition<string, TStateColumns>;
37
+ queries?: GenQueries<TQueries, SqliteDsl.FromColumns.RowDecoded<TStateColumns>>;
38
38
  reactDeps?: React.DependencyList;
39
39
  componentKey: ComponentKeyConfig;
40
40
  };
@@ -59,11 +59,11 @@ export type GetStateTypeEncoded<TTableDef extends SqliteDsl.TableDefinition<any,
59
59
  * @param config.componentKey A function that returns a unique key for this component.
60
60
  * @param config.reactDeps A list of React-level dependencies that will refresh the queries.
61
61
  */
62
- export declare const useLiveStoreComponent: <TColumns extends ComponentColumns, TQueries extends QueryDefinitions>({ stateSchema: stateSchema_, queries, componentKey: componentKeyConfig, reactDeps, }: UseLiveStoreComponentProps<TQueries, TColumns>) => {
62
+ export declare const useLiveStoreComponent: <TStateColumns extends ComponentColumns, TQueries extends QueryDefinitions>({ stateSchema: stateSchema_, queries: queriesDef, componentKey: componentKeyConfig, reactDeps, }: UseLiveStoreComponentProps<TQueries, TStateColumns>) => {
63
63
  queryResults: QueryResults<TQueries>;
64
- state: import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>;
65
- setState: Setters<import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>>;
66
- useLiveStoreJsonState: UseLiveStoreJsonState<import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TColumns>, keyof { [K in keyof TColumns as TColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>>;
64
+ state: import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TStateColumns>, keyof { [K in keyof TStateColumns as TStateColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TStateColumns>, keyof { [K in keyof TStateColumns as TStateColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>;
65
+ setState: Setters<import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TStateColumns>, keyof { [K in keyof TStateColumns as TStateColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TStateColumns>, keyof { [K in keyof TStateColumns as TStateColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>>;
66
+ useLiveStoreJsonState: UseLiveStoreJsonState<import("effect-db-schema").PrettifyFlat<import("effect-db-schema").Nullable<Pick<SqliteDsl.FromColumns.RowDecodedAll<TStateColumns>, keyof { [K in keyof TStateColumns as TStateColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>> & Omit<SqliteDsl.FromColumns.RowDecodedAll<TStateColumns>, keyof { [K in keyof TStateColumns as TStateColumns[K] extends SqliteDsl.ColumnDefinition<any, true> ? K : never]: {}; }>>>;
67
67
  };
68
68
  export type Setters<TComponentState> = {
69
69
  [k in keyof TComponentState]: (newValue: TComponentState[k]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useLiveStoreComponent.d.ts","sourceRoot":"","sources":["../../src/react/useLiveStoreComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLiveStoreComponent.d.ts","sourceRoot":"","sources":["../../src/react/useLiveStoreComponent.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,16 @@
1
1
  import { omit, shouldNeverHappen } from '@livestore/utils';
2
2
  import { Schema } from '@livestore/utils/effect';
3
3
  import * as otel from '@opentelemetry/api';
4
- import { SqliteDsl } from 'effect-db-schema';
4
+ import { SqliteAst, SqliteDsl } from 'effect-db-schema';
5
5
  import { isEqual, mapValues } from 'lodash-es';
6
6
  import React from 'react';
7
7
  import { v4 as uuid } from 'uuid';
8
8
  import { labelForKey, tableNameForComponentKey } from '../componentKey.js';
9
+ import { migrateTable } from '../migrations.js';
10
+ import { queryGraphQL } from '../reactiveQueries/graphql.js';
11
+ import { LiveStoreJSQuery } from '../reactiveQueries/js.js';
12
+ import { LiveStoreSQLQuery } from '../reactiveQueries/sql.js';
13
+ import { SCHEMA_META_TABLE } from '../schema.js';
9
14
  import { sql } from '../util.js';
10
15
  import { useStore } from './LiveStoreContext.js';
11
16
  import { useStateRefWithReactiveInput } from './utils/useStateRefWithReactiveInput.js';
@@ -26,13 +31,13 @@ const spanAlreadyStartedCache = new Map();
26
31
  * @param config.componentKey A function that returns a unique key for this component.
27
32
  * @param config.reactDeps A list of React-level dependencies that will refresh the queries.
28
33
  */
29
- export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = () => ({}), componentKey: componentKeyConfig, reactDeps = [], }) => {
34
+ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries: queriesDef = () => ({}), componentKey: componentKeyConfig, reactDeps = [], }) => {
30
35
  // TODO validate schema to make sure each column has a default value
31
36
  // TODO we should clean up the state schema handling to remove this special handling for the `id` column
32
37
  const stateSchema = React.useMemo(() => (stateSchema_ ? { ...stateSchema_, columns: omit(stateSchema_.columns, 'id') } : undefined), [stateSchema_]);
33
38
  // performance.mark('useLiveStoreComponent:start')
34
39
  const componentKey = useComponentKey(componentKeyConfig, reactDeps);
35
- const { store, globalQueries } = useStore();
40
+ const { store } = useStore();
36
41
  const componentKeyLabel = React.useMemo(() => labelForKey(componentKey), [componentKey]);
37
42
  // The following `React.useMemo` and `React.useEffect` calls are used to start and end a span for the lifetime of this component.
38
43
  const { span, otelContext } = React.useMemo(() => {
@@ -48,10 +53,15 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
48
53
  spanAlreadyStartedCache.delete(componentKeyLabel);
49
54
  span.end();
50
55
  }, [componentKeyLabel, span]);
51
- const generateQueries = React.useCallback(({ state$, otelContext, registerSubscription, isTemporaryQuery, }) => queries({
52
- rxSQL: (genQuery, queriedTables, bindValues) => store.querySQL(genQuery, { queriedTables, bindValues, otelContext, componentKey }),
53
- rxGraphQL: (query, genVariableValues, label) => store.queryGraphQL(query, genVariableValues, { componentKey, label, otelContext }),
54
- globalQueries,
56
+ const generateQueries = React.useCallback(({ state$, registerSubscription, isTemporaryQuery, }) => queriesDef({
57
+ rxSQL: (genQuery, queriedTables, bindValues) => new LiveStoreSQLQuery({
58
+ label: 'todo',
59
+ genQueryString: genQuery,
60
+ bindValues,
61
+ queriedTables,
62
+ }),
63
+ rxGraphQL: (query, genVariableValues, label) => queryGraphQL(query, genVariableValues, { label }),
64
+ // rxJS: <T>(genQuery: (get: GetAtomResult) => T) => store.queryJS(genQuery, { componentKey, otelContext }),
55
65
  state$,
56
66
  subscribe: registerSubscription,
57
67
  isTemporaryQuery,
@@ -62,7 +72,7 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
62
72
  // This makes sense for LiveStore because the component config should be static.
63
73
  // TODO: document this and consider whether it's the right API surface.
64
74
  // eslint-disable-next-line react-hooks/exhaustive-deps
65
- [store, componentKey, globalQueries]);
75
+ [store, componentKey]);
66
76
  const defaultComponentState = React.useMemo(() => {
67
77
  const defaultState = (stateSchema === undefined ? {} : mapValues(stateSchema.columns, (c) => c.default));
68
78
  // @ts-expect-error TODO fix typing
@@ -70,67 +80,94 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
70
80
  return defaultState;
71
81
  }, [componentKeyConfig.id, stateSchema]);
72
82
  const componentStateEffectSchema = React.useMemo(() => (stateSchema ? SqliteDsl.structSchemaForTable(stateSchema) : Schema.any), [stateSchema]);
73
- // Step 1:
74
- // Synchronously create state and queries for initial render pass.
75
- // We do this in a temporary query context which cleans up after itself, making it idempotent
76
- // TODO get rid of the temporary query workaround
77
- const { initialComponentState, initialQueryResults } = React.useMemo(() => {
78
- return store.otel.tracer.startActiveSpan('LiveStore:useLiveStoreComponent:initial', {}, otelContext, (span) => {
79
- const otelContext = otel.trace.setSpan(otel.context.active(), span);
80
- return store.inTempQueryContext(() => {
81
- try {
82
- // create state query
83
- let state$;
84
- if (stateSchema === undefined) {
85
- // TODO don't set up a query if there's no state schema (keeps the graph more clean)
86
- state$ = store.queryJS(() => ({}), {
87
- componentKey,
88
- otelContext,
89
- });
90
- }
91
- else {
92
- const componentTableName = tableNameForComponentKey(componentKey);
93
- const whereClause = componentKey._tag === 'singleton' ? '' : `where id = '${componentKey.id}'`;
94
- state$ = store
95
- .querySQL(() => sql `select * from ${componentTableName} ${whereClause} limit 1`, {
96
- queriedTables: [componentTableName],
97
- componentKey,
98
- label: `localState:query:${componentKeyLabel}`,
99
- otelContext,
100
- })
101
- // TODO consider to instead of just returning the default value, to write the default component state to the DB
102
- .pipe((results) => results.length === 1
103
- ? Schema.parseSync(componentStateEffectSchema)(results[0])
104
- : defaultComponentState);
105
- }
106
- const initialComponentState = state$.results$.result;
107
- const queries = generateQueries({
108
- state$: state$,
109
- otelContext,
110
- registerSubscription: () => { },
111
- isTemporaryQuery: true,
112
- });
113
- for (const [name, query] of Object.entries(queries)) {
114
- query.label = name;
115
- }
116
- const initialQueryResults = mapValues(queries, (query) => query.results$.result);
117
- return { initialComponentState, initialQueryResults };
118
- }
119
- finally {
120
- span.end();
121
- }
83
+ const state$ = React.useMemo(() => {
84
+ // create state query
85
+ if (stateSchema === undefined) {
86
+ // TODO don't set up a query if there's no state schema (keeps the graph more clean)
87
+ return new LiveStoreJSQuery({
88
+ fn: () => ({}),
89
+ label: 'empty-component-state',
90
+ // otelContext,
91
+ // otelTracer: store.otel.tracer,
122
92
  });
123
- });
93
+ }
94
+ else {
95
+ const componentTableName = tableNameForComponentKey(componentKey);
96
+ const whereClause = componentKey._tag === 'singleton' ? '' : `where id = '${componentKey.id}'`;
97
+ // TODO find a better solution for this
98
+ if (store.tableRefs[componentTableName] === undefined) {
99
+ const schemaHash = SqliteAst.hash(stateSchema.ast);
100
+ const res = store.inMemoryDB.select(sql `SELECT schemaHash FROM ${SCHEMA_META_TABLE} WHERE tableName = '${componentTableName}'`);
101
+ if (res.length === 0 || res[0].schemaHash !== schemaHash) {
102
+ migrateTable({ db: store._proxyDb, tableDef: stateSchema.ast, otelContext, schemaHash });
103
+ }
104
+ store.tableRefs[componentTableName] = store.graph.makeRef(null, {
105
+ equal: () => false,
106
+ label: componentTableName,
107
+ meta: { liveStoreRefType: 'table' },
108
+ });
109
+ }
110
+ // state$ = store
111
+ // .querySQL(() => sql`select * from ${componentTableName} ${whereClause} limit 1`, {
112
+ // queriedTables: [componentTableName],
113
+ // componentKey,
114
+ // label: `localState:query:${componentKeyLabel}`,
115
+ // otelContext,
116
+ // })
117
+ return (new LiveStoreSQLQuery({
118
+ label: `localState:query:${componentKeyLabel}`,
119
+ // otelContext,
120
+ // otelTracer: store.otel.tracer,
121
+ genQueryString: () => sql `select * from ${componentTableName} ${whereClause} limit 1`,
122
+ queriedTables: [componentTableName],
123
+ })
124
+ // TODO consider to instead of just returning the default value, to write the default component state to the DB
125
+ .pipe((results) => results.length === 1 ? Schema.parseSync(componentStateEffectSchema)(results[0]) : defaultComponentState));
126
+ }
124
127
  }, [
125
- store,
126
- otelContext,
127
- stateSchema,
128
- generateQueries,
129
128
  componentKey,
130
129
  componentKeyLabel,
131
130
  componentStateEffectSchema,
132
131
  defaultComponentState,
132
+ otelContext,
133
+ stateSchema,
134
+ store._proxyDb,
135
+ store.graph,
136
+ store.inMemoryDB,
137
+ store.tableRefs,
133
138
  ]);
139
+ const queries = React.useMemo(() => generateQueries({ state$, registerSubscription: () => { }, isTemporaryQuery: false }), [generateQueries, state$]);
140
+ // Step 1:
141
+ // Synchronously create state and queries for initial render pass.
142
+ // We do this in a temporary query context which cleans up after itself, making it idempotent
143
+ // TODO get rid of the temporary query workaround
144
+ const { initialComponentState, initialQueryResults } = React.useMemo(() => {
145
+ // return store.otel.tracer.startActiveSpan('LiveStore:useLiveStoreComponent:initial', {}, otelContext, (span) => {
146
+ // const otelContext = otel.trace.setSpan(otel.context.active(), span)
147
+ // NOTE `inTempQueryContext` automatically destroys the queries once the callback is done
148
+ // return store.inTempQueryContext(() => {
149
+ // try {
150
+ // store.graph.refresh({}, otelContext)
151
+ const initialComponentState = state$.run(otelContext);
152
+ // const queries = generateQueries({
153
+ // state$: state$,
154
+ // otelContext,
155
+ // registerSubscription: () => {},
156
+ // isTemporaryQuery: true,
157
+ // })
158
+ for (const [name, query] of Object.entries(queries)) {
159
+ query.label = name;
160
+ }
161
+ // store.graph.refresh({}, otelContext)
162
+ // TODO improve typing
163
+ const initialQueryResults = mapValues(queries, (query) => query.run(otelContext));
164
+ return { initialComponentState, initialQueryResults };
165
+ // } finally {
166
+ // span.end()
167
+ // }
168
+ // })
169
+ // })
170
+ }, [otelContext, queries, state$]);
134
171
  // Now that we've computed the initial state synchronously,
135
172
  // we can set up our useState calls w/ a default value populated...
136
173
  const [componentStateRef, setComponentState_] = useStateRefWithReactiveInput(initialComponentState);
@@ -169,41 +206,60 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
169
206
  return store.otel.tracer.startActiveSpan('LiveStore:useLiveStoreComponent:long-running', { attributes: {} }, otelContext, (span) => {
170
207
  const otelContext = otel.trace.setSpan(otel.context.active(), span);
171
208
  const unsubs = [];
172
- // create state query
173
- let state$;
174
- if (stateSchema === undefined) {
175
- // TODO remove this query
176
- state$ = store.queryJS(() => ({}), {
177
- componentKey,
178
- otelContext,
179
- label: 'empty-component-state',
180
- });
181
- }
182
- else {
183
- const componentTableName = tableNameForComponentKey(componentKey);
209
+ if (stateSchema !== undefined) {
184
210
  insertRowForComponentInstance({ store, componentKey, stateSchema });
185
- const whereClause = componentKey._tag === 'singleton' ? '' : `where id = '${componentKey.id}'`;
186
- state$ = store
187
- .querySQL(() => sql `select * from ${componentTableName} ${whereClause} limit 1`, {
188
- queriedTables: [componentTableName],
189
- componentKey,
190
- label: `localState:query:${componentKeyLabel}`,
191
- otelContext,
192
- })
193
- // TODO consider to instead of just returning the default value, to write the default component state to the DB
194
- .pipe((results) => results.length === 1 ? Schema.parseSync(componentStateEffectSchema)(results[0]) : defaultComponentState);
195
211
  }
212
+ // // create state query
213
+ // let state$: LiveStoreJSQuery<TComponentState>
214
+ // if (stateSchema === undefined) {
215
+ // // TODO remove this query
216
+ // // state$ = store.queryJS(() => ({}) as TComponentState, {
217
+ // // componentKey,
218
+ // // otelContext,
219
+ // // label: 'empty-component-state',
220
+ // // })
221
+ // state$ = new LiveStoreJSQuery({
222
+ // fn: () => ({}) as TComponentState,
223
+ // label: 'empty-component-state',
224
+ // otelContext,
225
+ // otelTracer: store.otel.tracer,
226
+ // })
227
+ // } else {
228
+ // const componentTableName = tableNameForComponentKey(componentKey)
229
+ // insertRowForComponentInstance({ store, componentKey, stateSchema })
230
+ // const whereClause = componentKey._tag === 'singleton' ? '' : `where id = '${componentKey.id}'`
231
+ // // state$ = store
232
+ // // .querySQL<TComponentState>(() => sql`select * from ${componentTableName} ${whereClause} limit 1`, {
233
+ // // queriedTables: [componentTableName],
234
+ // // componentKey,
235
+ // // label: `localState:query:${componentKeyLabel}`,
236
+ // // otelContext,
237
+ // // })
238
+ // state$ = new LiveStoreSQLQuery({
239
+ // label: `localState:query:${componentKeyLabel}`,
240
+ // otelContext,
241
+ // otelTracer: store.otel.tracer,
242
+ // payload: {
243
+ // genQueryString: () => sql`select * from ${componentTableName} ${whereClause} limit 1`,
244
+ // queriedTables: [componentTableName],
245
+ // },
246
+ // })
247
+ // // TODO consider to instead of just returning the default value, to write the default component state to the DB
248
+ // .pipe<TComponentState>((results) =>
249
+ // results.length === 1 ? Schema.parseSync(componentStateEffectSchema)(results[0]!) : defaultComponentState,
250
+ // )
251
+ // }
196
252
  unsubs.push(store.subscribe(state$, (results) => {
197
253
  if (isEqual(results, componentStateRef.current) === false) {
198
254
  setComponentState_(results);
199
255
  }
200
256
  }, undefined, { label: `useLiveStoreComponent:localState:subscribe:${state$.label}` }));
201
- const registerSubscription = (query, callback, onUnsubscribe) => {
202
- unsubs.push(store.subscribe(query, (results) => {
257
+ // TODO re-enable
258
+ const registerSubscription = (query$, callback, onUnsubscribe) => {
259
+ unsubs.push(store.subscribe(query$, (results) => {
203
260
  callback(results);
204
- }, onUnsubscribe, { label: `useLiveStoreComponent:query:manual-subscribe:${query.label}` }));
261
+ }, onUnsubscribe, { label: `useLiveStoreComponent:query:manual-subscribe:${query$.label}` }));
205
262
  };
206
- const queries = generateQueries({ state$, otelContext, registerSubscription, isTemporaryQuery: false });
207
263
  for (const [key, query] of Object.entries(queries)) {
208
264
  // Use the field name given to this query in the useQueries hook as its label
209
265
  query.label = key;
@@ -223,7 +279,8 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
223
279
  });
224
280
  // NOTE excluding `setComponentState_` and `setQueryResults_` from the deps array as it seems to cause an infinite loop
225
281
  // This should probably be improved
226
- // eslint-disable-next-line react-hooks/exhaustive-deps
282
+ // TODO is this still true?
283
+ // // eslint-disable-next-line react-hooks/exhaustive-deps
227
284
  }, [
228
285
  store,
229
286
  componentKey,
@@ -232,8 +289,11 @@ export const useLiveStoreComponent = ({ stateSchema: stateSchema_, queries = ()
232
289
  generateQueries,
233
290
  otelContext,
234
291
  componentStateRef,
235
- // setComponentState_,
236
- // setQueryResults_,
292
+ state$,
293
+ queries,
294
+ queryResultsRef,
295
+ setComponentState_,
296
+ setQueryResults_,
237
297
  ]);
238
298
  // Very important: remove any queries / other resources associated w/ this component
239
299
  React.useEffect(() => () => store.unmountComponent(componentKey), [store, componentKey]);
@@ -1 +1 @@
1
- {"version":3,"file":"useLiveStoreComponent.js","sourceRoot":"","sources":["../../src/react/useLiveStoreComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLiveStoreComponent.js","sourceRoot":"","sources":["../../src/react/useLiveStoreComponent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ILiveStoreQuery } from '../reactiveQueries/base-class.js';
2
+ export declare const useQuery: <TResult>(query: ILiveStoreQuery<TResult>) => TResult;
3
+ //# sourceMappingURL=useQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../src/react/useQuery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAKvE,eAAO,MAAM,QAAQ,uDAiDpB,CAAA"}