@livestore/react 0.0.0-snapshot-2ef046b02334f52613d31dbe06af53487685edc0 → 0.0.0-snapshot-2c861249e50661661613204300b1fc0d902c2e46

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 (63) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/LiveStoreContext.d.ts +10 -6
  3. package/dist/LiveStoreContext.d.ts.map +1 -1
  4. package/dist/LiveStoreContext.js +0 -14
  5. package/dist/LiveStoreContext.js.map +1 -1
  6. package/dist/LiveStoreProvider.d.ts +2 -2
  7. package/dist/LiveStoreProvider.d.ts.map +1 -1
  8. package/dist/LiveStoreProvider.js +5 -1
  9. package/dist/LiveStoreProvider.js.map +1 -1
  10. package/dist/LiveStoreProvider.test.js +6 -5
  11. package/dist/LiveStoreProvider.test.js.map +1 -1
  12. package/dist/__tests__/fixture.d.ts +115 -546
  13. package/dist/__tests__/fixture.d.ts.map +1 -1
  14. package/dist/__tests__/fixture.js +64 -22
  15. package/dist/__tests__/fixture.js.map +1 -1
  16. package/dist/mod.d.ts +4 -4
  17. package/dist/mod.d.ts.map +1 -1
  18. package/dist/mod.js +4 -4
  19. package/dist/mod.js.map +1 -1
  20. package/dist/useClientDocument.d.ts +61 -0
  21. package/dist/useClientDocument.d.ts.map +1 -0
  22. package/dist/useClientDocument.js +73 -0
  23. package/dist/useClientDocument.js.map +1 -0
  24. package/dist/useClientDocument.test.d.ts +2 -0
  25. package/dist/useClientDocument.test.d.ts.map +1 -0
  26. package/dist/{useRow.test.js → useClientDocument.test.js} +38 -43
  27. package/dist/useClientDocument.test.js.map +1 -0
  28. package/dist/useQuery.d.ts +1 -3
  29. package/dist/useQuery.d.ts.map +1 -1
  30. package/dist/useQuery.js +6 -3
  31. package/dist/useQuery.js.map +1 -1
  32. package/dist/useQuery.test.js +16 -17
  33. package/dist/useQuery.test.js.map +1 -1
  34. package/dist/useStore.d.ts +9 -0
  35. package/dist/useStore.d.ts.map +1 -0
  36. package/dist/useStore.js +28 -0
  37. package/dist/useStore.js.map +1 -0
  38. package/package.json +5 -5
  39. package/src/LiveStoreContext.ts +10 -19
  40. package/src/LiveStoreProvider.test.tsx +6 -5
  41. package/src/LiveStoreProvider.tsx +7 -4
  42. package/src/__snapshots__/{useRow.test.tsx.snap → useClientDocument.test.tsx.snap} +50 -30
  43. package/src/__snapshots__/useQuery.test.tsx.snap +8 -8
  44. package/src/__tests__/fixture.tsx +69 -39
  45. package/src/mod.ts +5 -5
  46. package/src/{useRow.test.tsx → useClientDocument.test.tsx} +43 -49
  47. package/src/useClientDocument.ts +149 -0
  48. package/src/useQuery.test.tsx +18 -19
  49. package/src/useQuery.ts +9 -8
  50. package/src/useStore.ts +36 -0
  51. package/dist/useAtom.d.ts +0 -8
  52. package/dist/useAtom.d.ts.map +0 -1
  53. package/dist/useAtom.js +0 -42
  54. package/dist/useAtom.js.map +0 -1
  55. package/dist/useRow.d.ts +0 -64
  56. package/dist/useRow.d.ts.map +0 -1
  57. package/dist/useRow.js +0 -108
  58. package/dist/useRow.js.map +0 -1
  59. package/dist/useRow.test.d.ts +0 -2
  60. package/dist/useRow.test.d.ts.map +0 -1
  61. package/dist/useRow.test.js.map +0 -1
  62. package/src/useAtom.ts +0 -66
  63. package/src/useRow.ts +0 -210
@@ -11,8 +11,7 @@ import React from 'react'
11
11
  import * as ReactWindow from 'react-window'
12
12
  import { expect } from 'vitest'
13
13
 
14
- import { makeTodoMvcReact, tables, todos } from './__tests__/fixture.js'
15
- import * as LiveStoreReact from './mod.js'
14
+ import { events, makeTodoMvcReact, tables } from './__tests__/fixture.js'
16
15
  import { __resetUseRcResourceCache } from './useRcResource.js'
17
16
 
18
17
  Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
@@ -27,13 +26,13 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
27
26
  Effect.gen(function* () {
28
27
  const { wrapper, store, renderCount } = yield* makeTodoMvcReact({ strictMode })
29
28
 
30
- const allTodos$ = queryDb({ query: `select * from todos`, schema: Schema.Array(tables.todos.schema) })
29
+ const allTodos$ = queryDb({ query: `select * from todos`, schema: Schema.Array(tables.todos.rowSchema) })
31
30
 
32
31
  const { result } = ReactTesting.renderHook(
33
32
  () => {
34
33
  renderCount.inc()
35
34
 
36
- return LiveStoreReact.useQuery(allTodos$)
35
+ return store.useQuery(allTodos$)
37
36
  },
38
37
  { wrapper },
39
38
  )
@@ -42,7 +41,7 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
42
41
  expect(renderCount.val).toBe(1)
43
42
  expect(store.reactivityGraph.getSnapshot({ includeResults: true })).toMatchSnapshot()
44
43
 
45
- ReactTesting.act(() => store.commit(todos.insert({ id: 't1', text: 'buy milk', completed: false })))
44
+ ReactTesting.act(() => store.commit(events.todoCreated({ id: 't1', text: 'buy milk', completed: false })))
46
45
 
47
46
  expect(result.current.length).toBe(1)
48
47
  expect(result.current[0]!.text).toBe('buy milk')
@@ -56,17 +55,17 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
56
55
  const { wrapper, store, renderCount } = yield* makeTodoMvcReact({ strictMode })
57
56
 
58
57
  const todo1$ = queryDb(
59
- { query: `select * from todos where id = 't1'`, schema: Schema.Array(tables.todos.schema) },
58
+ { query: `select * from todos where id = 't1'`, schema: Schema.Array(tables.todos.rowSchema) },
60
59
  { label: 'libraryTracksView1' },
61
60
  )
62
61
  const todo2$ = queryDb(
63
- { query: `select * from todos where id = 't2'`, schema: Schema.Array(tables.todos.schema) },
62
+ { query: `select * from todos where id = 't2'`, schema: Schema.Array(tables.todos.rowSchema) },
64
63
  { label: 'libraryTracksView2' },
65
64
  )
66
65
 
67
66
  store.commit(
68
- todos.insert({ id: 't1', text: 'buy milk', completed: false }),
69
- todos.insert({ id: 't2', text: 'buy eggs', completed: false }),
67
+ events.todoCreated({ id: 't1', text: 'buy milk', completed: false }),
68
+ events.todoCreated({ id: 't2', text: 'buy eggs', completed: false }),
70
69
  )
71
70
 
72
71
  const { result, rerender } = ReactTesting.renderHook(
@@ -75,7 +74,7 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
75
74
 
76
75
  const query$ = React.useMemo(() => (todoId === 't1' ? todo1$ : todo2$), [todoId])
77
76
 
78
- return LiveStoreReact.useQuery(query$)[0]!.text
77
+ return store.useQuery(query$)[0]!.text
79
78
  },
80
79
  { wrapper, initialProps: 't1' },
81
80
  )
@@ -84,11 +83,11 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
84
83
  expect(renderCount.val).toBe(1)
85
84
  expect(store.reactivityGraph.getSnapshot({ includeResults: true })).toMatchSnapshot('1: after first render')
86
85
 
87
- ReactTesting.act(() => store.commit(todos.update({ where: { id: 't1' }, values: { text: 'buy soy milk' } })))
86
+ ReactTesting.act(() => store.commit(events.todoUpdated({ id: 't1', text: 'buy soy milk' })))
88
87
 
89
88
  expect(result.current).toBe('buy soy milk')
90
89
  expect(renderCount.val).toBe(2)
91
- expect(store.reactivityGraph.getSnapshot({ includeResults: true })).toMatchSnapshot('2: after first mutation')
90
+ expect(store.reactivityGraph.getSnapshot({ includeResults: true })).toMatchSnapshot('2: after first commit')
92
91
 
93
92
  rerender('t2')
94
93
 
@@ -104,18 +103,18 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
104
103
 
105
104
  const filter$ = makeRef('t1', { label: 'id-filter' })
106
105
 
107
- const todo$ = queryDb((get) => tables.todos.query.where('id', get(filter$)), { label: 'todo' })
106
+ const todo$ = queryDb((get) => tables.todos.where('id', get(filter$)), { label: 'todo' })
108
107
 
109
108
  store.commit(
110
- todos.insert({ id: 't1', text: 'buy milk', completed: false }),
111
- todos.insert({ id: 't2', text: 'buy eggs', completed: false }),
109
+ events.todoCreated({ id: 't1', text: 'buy milk', completed: false }),
110
+ events.todoCreated({ id: 't2', text: 'buy eggs', completed: false }),
112
111
  )
113
112
 
114
113
  const { result } = ReactTesting.renderHook(
115
114
  () => {
116
115
  renderCount.inc()
117
116
 
118
- return LiveStoreReact.useQuery(todo$)[0]!.text
117
+ return store.useQuery(todo$)[0]!.text
119
118
  },
120
119
  { wrapper },
121
120
  )
@@ -124,7 +123,7 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
124
123
  expect(renderCount.val).toBe(1)
125
124
  expect(store.reactivityGraph.getSnapshot({ includeResults: true })).toMatchSnapshot()
126
125
 
127
- ReactTesting.act(() => store.commit(todos.update({ where: { id: 't1' }, values: { text: 'buy soy milk' } })))
126
+ ReactTesting.act(() => store.commit(events.todoUpdated({ id: 't1', text: 'buy soy milk' })))
128
127
 
129
128
  expect(result.current).toBe('buy soy milk')
130
129
  expect(renderCount.val).toBe(2)
@@ -143,7 +142,7 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
143
142
  // To handle this properly we introduced the `_tag: 'destroyed'` state in the `spanAlreadyStartedCache`.
144
143
  Vitest.scopedLive('should work for a list with react-window', () =>
145
144
  Effect.gen(function* () {
146
- const { wrapper } = yield* makeTodoMvcReact({ strictMode })
145
+ const { wrapper, store } = yield* makeTodoMvcReact({ strictMode })
147
146
 
148
147
  const ListWrapper: React.FC<{ numItems: number }> = ({ numItems }) => {
149
148
  return (
@@ -161,7 +160,7 @@ Vitest.describe.each([{ strictMode: true }, { strictMode: false }] as const)(
161
160
 
162
161
  const ListItem: React.FC<{ data: ReadonlyArray<number>; index: number }> = ({ data: ids, index }) => {
163
162
  const id = ids[index]!
164
- const res = LiveStoreReact.useQuery(LiveStore.computed(() => id, { label: `ListItem.${id}`, deps: id }))
163
+ const res = store.useQuery(LiveStore.computed(() => id, { label: `ListItem.${id}`, deps: id }))
165
164
  return <div role="listitem">{res}</div>
166
165
  }
167
166
 
package/src/useQuery.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import type { LiveQuery, LiveQueryDef, Store } from '@livestore/livestore'
2
2
  import { extractStackInfoFromStackTrace, stackInfoToString } from '@livestore/livestore'
3
3
  import type { LiveQueries } from '@livestore/livestore/internal'
4
- import { deepEqual, indent } from '@livestore/utils'
4
+ import { deepEqual, indent, shouldNeverHappen } from '@livestore/utils'
5
5
  import * as otel from '@opentelemetry/api'
6
6
  import React from 'react'
7
7
 
8
- import { useStore } from './LiveStoreContext.js'
8
+ import { LiveStoreContext } from './LiveStoreContext.js'
9
9
  import { useRcResource } from './useRcResource.js'
10
10
  import { originalStackLimit } from './utils/stack-info.js'
11
11
  import { useStateRefWithReactiveInput } from './utils/useStateRefWithReactiveInput.js'
@@ -26,9 +26,6 @@ export const useQuery = <TQuery extends LiveQueryDef.Any>(
26
26
  options?: { store?: Store },
27
27
  ): LiveQueries.GetResult<TQuery> => useQueryRef(queryDef, options).valueRef.current
28
28
 
29
- type GetQueryInfo<TQuery extends LiveQueryDef.Any> =
30
- TQuery extends LiveQueryDef<infer _1, infer TQueryInfo> ? TQueryInfo : never
31
-
32
29
  /**
33
30
  */
34
31
  export const useQueryRef = <TQuery extends LiveQueryDef.Any>(
@@ -42,9 +39,13 @@ export const useQueryRef = <TQuery extends LiveQueryDef.Any>(
42
39
  },
43
40
  ): {
44
41
  valueRef: React.RefObject<LiveQueries.GetResult<TQuery>>
45
- queryRcRef: LiveQueries.RcRef<LiveQuery<LiveQueries.GetResult<TQuery>, GetQueryInfo<TQuery>>>
42
+ queryRcRef: LiveQueries.RcRef<LiveQuery<LiveQueries.GetResult<TQuery>>>
46
43
  } => {
47
- const { store } = useStore({ store: options?.store })
44
+ const store =
45
+ options?.store ??
46
+ // eslint-disable-next-line react-hooks/rules-of-hooks
47
+ React.useContext(LiveStoreContext)?.store ??
48
+ shouldNeverHappen(`No store provided to useQuery`)
48
49
 
49
50
  const rcRefKey = `${store.storeId}_${queryDef.hash}`
50
51
 
@@ -77,7 +78,7 @@ export const useQueryRef = <TQuery extends LiveQueryDef.Any>(
77
78
  // which takes care of disposing the queryRcRef
78
79
  () => {},
79
80
  )
80
- const query$ = queryRcRef.value as LiveQuery<LiveQueries.GetResult<TQuery>, GetQueryInfo<TQuery>>
81
+ const query$ = queryRcRef.value as LiveQuery<LiveQueries.GetResult<TQuery>>
81
82
 
82
83
  React.useDebugValue(`LiveStore:useQuery:${query$.id}:${query$.label}`)
83
84
  // console.debug(`LiveStore:useQuery:${query$.id}:${query$.label}`)
@@ -0,0 +1,36 @@
1
+ import type { Store } from '@livestore/livestore'
2
+ import React from 'react'
3
+
4
+ import type { ReactApi } from './LiveStoreContext.js'
5
+ import { LiveStoreContext } from './LiveStoreContext.js'
6
+ import { useClientDocument } from './useClientDocument.js'
7
+ import { useQuery } from './useQuery.js'
8
+
9
+ export const withReactApi = (store: Store): Store & ReactApi => {
10
+ // @ts-expect-error TODO properly implement this
11
+ // eslint-disable-next-line react-hooks/rules-of-hooks
12
+ store.useQuery = (queryDef) => useQuery(queryDef, { store })
13
+ // @ts-expect-error TODO properly implement this
14
+ // eslint-disable-next-line react-hooks/rules-of-hooks
15
+ store.useClientDocument = (table, idOrOptions, options) => useClientDocument(table, idOrOptions, options, { store })
16
+ return store as Store & ReactApi
17
+ }
18
+
19
+ export const useStore = (options?: { store?: Store }): { store: Store & ReactApi } => {
20
+ if (options?.store !== undefined) {
21
+ return { store: withReactApi(options.store) }
22
+ }
23
+
24
+ // eslint-disable-next-line react-hooks/rules-of-hooks
25
+ const storeContext = React.useContext(LiveStoreContext)
26
+
27
+ if (storeContext === undefined) {
28
+ throw new Error(`useStore can only be used inside StoreContext.Provider`)
29
+ }
30
+
31
+ if (storeContext.stage !== 'running') {
32
+ throw new Error(`useStore can only be used after the store is running`)
33
+ }
34
+
35
+ return { store: withReactApi(storeContext.store) }
36
+ }
package/dist/useAtom.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import type { QueryInfo } from '@livestore/common';
2
- import type { Store } from '@livestore/livestore';
3
- import type { LiveQueries } from '@livestore/livestore/internal';
4
- import type { Dispatch, SetStateAction } from './useRow.js';
5
- export declare const useAtom: <TQuery extends LiveQueries.LiveQueryDef<any, QueryInfo.Row | QueryInfo.Col>>(queryDef: TQuery, options?: {
6
- store?: Store;
7
- }) => [value: LiveQueries.GetResult<TQuery>, setValue: Dispatch<SetStateAction<Partial<LiveQueries.GetResult<TQuery>>>>];
8
- //# sourceMappingURL=useAtom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAtom.d.ts","sourceRoot":"","sources":["../src/useAtom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAMhE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE3D,eAAO,MAAM,OAAO,GAElB,MAAM,SAAS,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,EAE3E,UAAU,MAAM,EAChB,UAAU;IACR,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,KACA,CACD,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EACpC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CA4C3E,CAAA"}
package/dist/useAtom.js DELETED
@@ -1,42 +0,0 @@
1
- import { shouldNeverHappen } from '@livestore/utils';
2
- import React from 'react';
3
- import { useStore } from './LiveStoreContext.js';
4
- import { useQueryRef } from './useQuery.js';
5
- export const useAtom = (queryDef, options) => {
6
- const queryRef = useQueryRef(queryDef, { store: options?.store });
7
- const query$ = queryRef.queryRcRef.value;
8
- // @ts-expect-error runtime check
9
- if (query$.queryInfo._tag === 'None') {
10
- shouldNeverHappen(`Can't useAtom with a query that has no queryInfo`, queryDef);
11
- }
12
- const { store } = useStore();
13
- // TODO make API equivalent to useRow
14
- const setValue = React.useMemo(() => (newValueOrFn) => {
15
- const newValue = typeof newValueOrFn === 'function' ? newValueOrFn(queryRef.valueRef.current) : newValueOrFn;
16
- const table = query$.queryInfo.table;
17
- if (query$.queryInfo._tag === 'Row') {
18
- if (table.options.isSingleton && table.options.isSingleColumn) {
19
- store.commit(table.update(newValue));
20
- }
21
- else if (table.options.isSingleColumn) {
22
- store.commit(table.update({ where: { id: query$.queryInfo.id }, values: { value: newValue } }));
23
- }
24
- else {
25
- store.commit(table.update({ where: { id: query$.queryInfo.id }, values: newValue }));
26
- }
27
- }
28
- else {
29
- if (table.options.isSingleton && table.options.isSingleColumn) {
30
- store.commit(table.update({ [query$.queryInfo.column]: newValue }));
31
- }
32
- else {
33
- store.commit(table.update({
34
- where: { id: query$.queryInfo.id },
35
- values: { [query$.queryInfo.column]: newValue },
36
- }));
37
- }
38
- }
39
- }, [query$.queryInfo, queryRef.valueRef, store]);
40
- return [queryRef.valueRef.current, setValue];
41
- };
42
- //# sourceMappingURL=useAtom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAtom.js","sourceRoot":"","sources":["../src/useAtom.ts"],"names":[],"mappings":"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"}
package/dist/useRow.d.ts DELETED
@@ -1,64 +0,0 @@
1
- import type { QueryInfo, RowQuery } from '@livestore/common';
2
- import { SessionIdSymbol } from '@livestore/common';
3
- import { DbSchema } from '@livestore/common/schema';
4
- import type { LiveQuery, Store } from '@livestore/livestore';
5
- export type UseRowResult<TTableDef extends DbSchema.TableDefBase> = [
6
- row: RowQuery.Result<TTableDef>,
7
- setRow: StateSetters<TTableDef>,
8
- query$: LiveQuery<RowQuery.Result<TTableDef>, QueryInfo>
9
- ];
10
- /**
11
- * Similar to `React.useState` but returns a tuple of `[row, setRow, query$]` for a given table where ...
12
- *
13
- * - `row` is the current value of the row (fully decoded according to the table schema)
14
- * - `setRow` is a function that can be used to update the row (values will be encoded according to the table schema)
15
- * - `query$` is a `LiveQuery` that e.g. can be used to subscribe to changes to the row
16
- *
17
- * `useRow` only works with for tables with client-only derived mutations,
18
- * i.e. requires the following table options to be set:
19
- * ```ts
20
- * const myTable = DbSchema.table('myTable', {
21
- * // fields ...
22
- * }, { deriveMutations: { clientOnly: true } })
23
- * ```
24
- *
25
- * If the table is a singleton table, `useRow` can be called without an `id` argument. Otherwise, the `id` argument is required.
26
- */
27
- export declare const useRow: {
28
- <TTableDef extends DbSchema.TableDef<DbSchema.DefaultSqliteTableDef, DbSchema.TableOptions & {
29
- isSingleton: true;
30
- deriveMutations: {
31
- enabled: true;
32
- clientOnly: true;
33
- };
34
- }>>(table: TTableDef, options?: {
35
- store?: Store;
36
- }): UseRowResult<TTableDef>;
37
- <TTableDef extends DbSchema.TableDef<DbSchema.DefaultSqliteTableDef, DbSchema.TableOptions & {
38
- isSingleton: false;
39
- requiredInsertColumnNames: 'id';
40
- deriveMutations: {
41
- enabled: true;
42
- clientOnly: true;
43
- };
44
- }>>(table: TTableDef, id: string | SessionIdSymbol | number, options?: Partial<RowQuery.RequiredColumnsOptions<TTableDef>> & {
45
- store?: Store;
46
- }): UseRowResult<TTableDef>;
47
- <TTableDef extends DbSchema.TableDef<DbSchema.DefaultSqliteTableDef, DbSchema.TableOptions & {
48
- isSingleton: false;
49
- deriveMutations: {
50
- enabled: true;
51
- clientOnly: true;
52
- };
53
- }>>(table: TTableDef, id: string | SessionIdSymbol | number, options: RowQuery.RequiredColumnsOptions<TTableDef> & {
54
- store?: Store;
55
- }): UseRowResult<TTableDef>;
56
- };
57
- export type Dispatch<A> = (action: A) => void;
58
- export type SetStateAction<S> = S | ((previousValue: S) => S);
59
- export type StateSetters<TTableDef extends DbSchema.TableDefBase> = TTableDef['options']['isSingleColumn'] extends true ? Dispatch<SetStateAction<RowQuery.Result<TTableDef>>> : {
60
- [K in keyof RowQuery.Result<TTableDef>]: Dispatch<SetStateAction<RowQuery.Result<TTableDef>[K]>>;
61
- } & {
62
- setMany: Dispatch<SetStateAction<Partial<RowQuery.Result<TTableDef>>>>;
63
- };
64
- //# sourceMappingURL=useRow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRow.d.ts","sourceRoot":"","sources":["../src/useRow.ts"],"names":[],"mappings":"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"}
package/dist/useRow.js DELETED
@@ -1,108 +0,0 @@
1
- import { SessionIdSymbol } from '@livestore/common';
2
- import { DbSchema } from '@livestore/common/schema';
3
- import { queryDb } from '@livestore/livestore';
4
- import { shouldNeverHappen } from '@livestore/utils';
5
- import { ReadonlyRecord } from '@livestore/utils/effect';
6
- import React from 'react';
7
- import { useStore } from './LiveStoreContext.js';
8
- import { useQueryRef } from './useQuery.js';
9
- /**
10
- * Similar to `React.useState` but returns a tuple of `[row, setRow, query$]` for a given table where ...
11
- *
12
- * - `row` is the current value of the row (fully decoded according to the table schema)
13
- * - `setRow` is a function that can be used to update the row (values will be encoded according to the table schema)
14
- * - `query$` is a `LiveQuery` that e.g. can be used to subscribe to changes to the row
15
- *
16
- * `useRow` only works with for tables with client-only derived mutations,
17
- * i.e. requires the following table options to be set:
18
- * ```ts
19
- * const myTable = DbSchema.table('myTable', {
20
- * // fields ...
21
- * }, { deriveMutations: { clientOnly: true } })
22
- * ```
23
- *
24
- * If the table is a singleton table, `useRow` can be called without an `id` argument. Otherwise, the `id` argument is required.
25
- */
26
- export const useRow = (table, idOrOptions, options_) => {
27
- const sqliteTableDef = table.sqliteDef;
28
- const id = typeof idOrOptions === 'string' || idOrOptions === SessionIdSymbol || typeof idOrOptions === 'number'
29
- ? idOrOptions
30
- : undefined;
31
- const options = typeof idOrOptions === 'string' || idOrOptions === SessionIdSymbol || typeof idOrOptions === 'number'
32
- ? options_
33
- : idOrOptions;
34
- const { insertValues } = options ?? {};
35
- React.useMemo(() => validateTableOptions(table), [table]);
36
- const tableName = table.sqliteDef.name;
37
- const { store } = useStore({ store: options?.store });
38
- if (store.schema.tables.has(table.sqliteDef.name) === false &&
39
- table.sqliteDef.name.startsWith('__livestore') === false) {
40
- shouldNeverHappen(`Table "${table.sqliteDef.name}" not found in schema`);
41
- }
42
- // console.debug('useRow', tableName, id)
43
- const idVal = id === SessionIdSymbol ? 'session' : id;
44
- const rowQuery = table.query.row;
45
- const queryDef = React.useMemo(() => DbSchema.tableIsSingleton(table)
46
- ? queryDb(rowQuery(), {})
47
- : queryDb(rowQuery(id, { insertValues: insertValues }), { deps: idVal }), [id, insertValues, rowQuery, table, idVal]);
48
- const queryRef = useQueryRef(queryDef, {
49
- otelSpanName: `LiveStore:useRow:${tableName}${idVal === undefined ? '' : `:${idVal}`}`,
50
- store: options?.store,
51
- });
52
- const setState = React.useMemo(() => {
53
- if (table.options.isSingleColumn) {
54
- return (newValueOrFn) => {
55
- const newValue = typeof newValueOrFn === 'function' ? newValueOrFn(queryRef.valueRef.current) : newValueOrFn;
56
- if (queryRef.valueRef.current === newValue)
57
- return;
58
- // NOTE we need to account for the short-hand syntax for single-column+singleton tables
59
- if (table.options.isSingleton) {
60
- store.commit(table.update(newValue));
61
- }
62
- else {
63
- store.commit(table.update({ where: { id }, values: { value: newValue } }));
64
- }
65
- // store.commit(updateMutationForQueryInfo(query$.queryInfo!, { value: newValue }))
66
- };
67
- }
68
- else {
69
- const setState = // TODO: do we have a better type for the values that can go in SQLite?
70
- ReadonlyRecord.map(sqliteTableDef.columns, (column, columnName) => (newValueOrFn) => {
71
- const newValue =
72
- // @ts-expect-error TODO fix typing
73
- typeof newValueOrFn === 'function' ? newValueOrFn(queryRef.valueRef.current[columnName]) : newValueOrFn;
74
- // Don't update the state if it's the same as the value already seen in the component
75
- // @ts-expect-error TODO fix typing
76
- if (queryRef.valueRef.current[columnName] === newValue)
77
- return;
78
- store.commit(table.update({ where: { id: id ?? 'singleton' }, values: { [columnName]: newValue } }));
79
- // store.commit(updateMutationForQueryInfo(query$.queryInfo!, { [columnName]: newValue }))
80
- });
81
- setState.setMany = (columnValuesOrFn) => {
82
- const columnValues =
83
- // @ts-expect-error TODO fix typing
84
- typeof columnValuesOrFn === 'function' ? columnValuesOrFn(queryRef.valueRef.current) : columnValuesOrFn;
85
- // TODO use hashing instead
86
- // Don't update the state if it's the same as the value already seen in the component
87
- if (
88
- // @ts-expect-error TODO fix typing
89
- Object.entries(columnValues).every(([columnName, value]) => queryRef.valueRef.current[columnName] === value)) {
90
- return;
91
- }
92
- store.commit(table.update({ where: { id: id ?? 'singleton' }, values: columnValues }));
93
- // store.commit(updateMutationForQueryInfo(query$.queryInfo!, columnValues))
94
- };
95
- return setState;
96
- }
97
- }, [id, queryRef.valueRef, sqliteTableDef.columns, store, table]);
98
- return [queryRef.valueRef.current, setState, queryRef.queryRcRef.value];
99
- };
100
- const validateTableOptions = (table) => {
101
- if (table.options.deriveMutations.clientOnly === false) {
102
- return shouldNeverHappen(`useRow called on table "${table.sqliteDef.name}" which does not have 'deriveMutations: { clientOnly: true }' set`);
103
- }
104
- if (table.options.deriveMutations.enabled === false) {
105
- return shouldNeverHappen(`useRow called on table "${table.sqliteDef.name}" which does not have 'deriveMutations: { clientOnly: true }' set`);
106
- }
107
- };
108
- //# sourceMappingURL=useRow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRow.js","sourceRoot":"","sources":["../src/useRow.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=useRow.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRow.test.d.ts","sourceRoot":"","sources":["../src/useRow.test.tsx"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRow.test.js","sourceRoot":"","sources":["../src/useRow.test.tsx"],"names":[],"mappings":"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"}
package/src/useAtom.ts DELETED
@@ -1,66 +0,0 @@
1
- import type { DerivedMutationHelperFns, QueryInfo } from '@livestore/common'
2
- import type { DbSchema, SqliteDsl } from '@livestore/common/schema'
3
- import type { Store } from '@livestore/livestore'
4
- import type { LiveQueries } from '@livestore/livestore/internal'
5
- import { shouldNeverHappen } from '@livestore/utils'
6
- import React from 'react'
7
-
8
- import { useStore } from './LiveStoreContext.js'
9
- import { useQueryRef } from './useQuery.js'
10
- import type { Dispatch, SetStateAction } from './useRow.js'
11
-
12
- export const useAtom = <
13
- // TODO also support colJsonValue
14
- TQuery extends LiveQueries.LiveQueryDef<any, QueryInfo.Row | QueryInfo.Col>,
15
- >(
16
- queryDef: TQuery,
17
- options?: {
18
- store?: Store
19
- },
20
- ): [
21
- value: LiveQueries.GetResult<TQuery>,
22
- setValue: Dispatch<SetStateAction<Partial<LiveQueries.GetResult<TQuery>>>>,
23
- ] => {
24
- const queryRef = useQueryRef(queryDef, { store: options?.store })
25
- const query$ = queryRef.queryRcRef.value
26
-
27
- // @ts-expect-error runtime check
28
- if (query$.queryInfo._tag === 'None') {
29
- shouldNeverHappen(`Can't useAtom with a query that has no queryInfo`, queryDef)
30
- }
31
-
32
- const { store } = useStore()
33
-
34
- // TODO make API equivalent to useRow
35
- const setValue = React.useMemo<Dispatch<SetStateAction<Partial<LiveQueries.GetResult<TQuery>>>>>(
36
- () => (newValueOrFn: any) => {
37
- const newValue = typeof newValueOrFn === 'function' ? newValueOrFn(queryRef.valueRef.current) : newValueOrFn
38
- const table = query$.queryInfo.table as DbSchema.TableDef &
39
- DerivedMutationHelperFns<SqliteDsl.Columns, DbSchema.TableOptions>
40
-
41
- if (query$.queryInfo._tag === 'Row') {
42
- if (table.options.isSingleton && table.options.isSingleColumn) {
43
- store.commit(table.update(newValue))
44
- } else if (table.options.isSingleColumn) {
45
- store.commit(table.update({ where: { id: query$.queryInfo.id }, values: { value: newValue } }))
46
- } else {
47
- store.commit(table.update({ where: { id: query$.queryInfo.id }, values: newValue }))
48
- }
49
- } else {
50
- if (table.options.isSingleton && table.options.isSingleColumn) {
51
- store.commit(table.update({ [query$.queryInfo.column]: newValue }))
52
- } else {
53
- store.commit(
54
- table.update({
55
- where: { id: query$.queryInfo.id },
56
- values: { [query$.queryInfo.column]: newValue },
57
- }),
58
- )
59
- }
60
- }
61
- },
62
- [query$.queryInfo, queryRef.valueRef, store],
63
- )
64
-
65
- return [queryRef.valueRef.current, setValue]
66
- }