@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/LiveStoreContext.d.ts +10 -6
- package/dist/LiveStoreContext.d.ts.map +1 -1
- package/dist/LiveStoreContext.js +0 -14
- package/dist/LiveStoreContext.js.map +1 -1
- package/dist/LiveStoreProvider.d.ts +2 -2
- package/dist/LiveStoreProvider.d.ts.map +1 -1
- package/dist/LiveStoreProvider.js +5 -1
- package/dist/LiveStoreProvider.js.map +1 -1
- package/dist/LiveStoreProvider.test.js +6 -5
- package/dist/LiveStoreProvider.test.js.map +1 -1
- package/dist/__tests__/fixture.d.ts +115 -546
- package/dist/__tests__/fixture.d.ts.map +1 -1
- package/dist/__tests__/fixture.js +64 -22
- package/dist/__tests__/fixture.js.map +1 -1
- package/dist/mod.d.ts +4 -4
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +4 -4
- package/dist/mod.js.map +1 -1
- package/dist/useClientDocument.d.ts +61 -0
- package/dist/useClientDocument.d.ts.map +1 -0
- package/dist/useClientDocument.js +73 -0
- package/dist/useClientDocument.js.map +1 -0
- package/dist/useClientDocument.test.d.ts +2 -0
- package/dist/useClientDocument.test.d.ts.map +1 -0
- package/dist/{useRow.test.js → useClientDocument.test.js} +38 -43
- package/dist/useClientDocument.test.js.map +1 -0
- package/dist/useQuery.d.ts +1 -3
- package/dist/useQuery.d.ts.map +1 -1
- package/dist/useQuery.js +6 -3
- package/dist/useQuery.js.map +1 -1
- package/dist/useQuery.test.js +16 -17
- package/dist/useQuery.test.js.map +1 -1
- package/dist/useStore.d.ts +9 -0
- package/dist/useStore.d.ts.map +1 -0
- package/dist/useStore.js +28 -0
- package/dist/useStore.js.map +1 -0
- package/package.json +5 -5
- package/src/LiveStoreContext.ts +10 -19
- package/src/LiveStoreProvider.test.tsx +6 -5
- package/src/LiveStoreProvider.tsx +7 -4
- package/src/__snapshots__/{useRow.test.tsx.snap → useClientDocument.test.tsx.snap} +50 -30
- package/src/__snapshots__/useQuery.test.tsx.snap +8 -8
- package/src/__tests__/fixture.tsx +69 -39
- package/src/mod.ts +5 -5
- package/src/{useRow.test.tsx → useClientDocument.test.tsx} +43 -49
- package/src/useClientDocument.ts +149 -0
- package/src/useQuery.test.tsx +18 -19
- package/src/useQuery.ts +9 -8
- package/src/useStore.ts +36 -0
- package/dist/useAtom.d.ts +0 -8
- package/dist/useAtom.d.ts.map +0 -1
- package/dist/useAtom.js +0 -42
- package/dist/useAtom.js.map +0 -1
- package/dist/useRow.d.ts +0 -64
- package/dist/useRow.d.ts.map +0 -1
- package/dist/useRow.js +0 -108
- package/dist/useRow.js.map +0 -1
- package/dist/useRow.test.d.ts +0 -2
- package/dist/useRow.test.d.ts.map +0 -1
- package/dist/useRow.test.js.map +0 -1
- package/src/useAtom.ts +0 -66
- package/src/useRow.ts +0 -210
package/src/useQuery.test.tsx
CHANGED
|
@@ -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
|
|
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.
|
|
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
|
|
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(
|
|
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.
|
|
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.
|
|
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
|
-
|
|
69
|
-
|
|
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
|
|
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(
|
|
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
|
|
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.
|
|
106
|
+
const todo$ = queryDb((get) => tables.todos.where('id', get(filter$)), { label: 'todo' })
|
|
108
107
|
|
|
109
108
|
store.commit(
|
|
110
|
-
|
|
111
|
-
|
|
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
|
|
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(
|
|
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 =
|
|
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 {
|
|
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
|
|
42
|
+
queryRcRef: LiveQueries.RcRef<LiveQuery<LiveQueries.GetResult<TQuery>>>
|
|
46
43
|
} => {
|
|
47
|
-
const
|
|
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
|
|
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}`)
|
package/src/useStore.ts
ADDED
|
@@ -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
|
package/dist/useAtom.d.ts.map
DELETED
|
@@ -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
|
package/dist/useAtom.js.map
DELETED
|
@@ -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
|
package/dist/useRow.d.ts.map
DELETED
|
@@ -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
|
package/dist/useRow.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRow.js","sourceRoot":"","sources":["../src/useRow.ts"],"names":[],"mappings":"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"}
|
package/dist/useRow.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRow.test.d.ts","sourceRoot":"","sources":["../src/useRow.test.tsx"],"names":[],"mappings":""}
|
package/dist/useRow.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRow.test.js","sourceRoot":"","sources":["../src/useRow.test.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAC9G,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACzF,OAAO,KAAK,cAAc,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,iEAAiE;AAEjE,gFAAgF;AAChF,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,yBAAyB,EAAE,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,GAAG,EAAE,CACtE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAEnE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,UAAU,CAClD,CAAC,MAAc,EAAE,EAAE;YACjB,WAAW,CAAC,GAAG,EAAE,CAAA;YAEjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACxE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;QAC5B,CAAC,EACD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAChC,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAA;QACrF,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;QAE3E,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEd,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAA;QACrF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACzD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CACH,CAAA;IAED,sGAAsG;IAEtG,MAAM,CAAC,UAAU,CAAC,kDAAkD,EAAE,GAAG,EAAE,CACzE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAE5D,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CACxC,CAAC,MAAc,EAAE,EAAE;YACjB,WAAW,CAAC,GAAG,EAAE,CAAA;YAEjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACxE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;QAC5B,CAAC,EACD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAChC,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE/B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAE7E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAC/D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CACH,CAAA;IAED,MAAM,CAAC,UAAU,CAAC,4DAA4D,EAAE,GAAG,EAAE,CACnF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAEnE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CACxC,CAAC,MAAc,EAAE,EAAE;YACjB,WAAW,CAAC,GAAG,EAAE,CAAA;YAEjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACxE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;QAC5B,CAAC,EACD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAChC,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE/B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CACpB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CACzG,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAC/D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CACH,CAAA;IAED,MAAM,CAAC,UAAU,CAAC,8BAA8B,EAAE,GAAG,EAAE,CACrD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAEnE,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CACjC,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAC3E,EAAE,KAAK,EAAE,UAAU,EAAE,CACtB,CAAA;QAED,IAAI,cAA+E,CAAA;QACnF,MAAM,SAAS,GAAa,GAAG,EAAE;YAC/B,WAAW,CAAC,GAAG,EAAE,CAAA;YAEjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;YAEhE,cAAc,GAAG,QAAQ,CAAA;YAEzB,OAAO,CACL;gBACE,oBAAC,SAAS,IAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,GAAI;gBAChD,6BAAK,IAAI,EAAC,YAAY;;oBAAmB,KAAK,CAAC,aAAa,IAAI,GAAG,CAAO;gBACzE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAC,WAAW,IAAC,EAAE,EAAE,KAAK,CAAC,aAAa,GAAI,CAAC,CAAC,CAAC,kEAAyC,CACvG,CACP,CAAA;QACH,CAAC,CAAA;QAED,MAAM,SAAS,GAAiD,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YAChF,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YAEnD,OAAO,CACL,iCACG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACnB,6BAAK,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAC3C,CAAC,CAAC,EAAE,CACD,CACP,CAAC,CACE,CACP,CAAA;QACH,CAAC,CAAA;QAED,MAAM,WAAW,GAA6B,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;YACvD,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAC/C,OAAO,6BAAK,IAAI,EAAC,SAAS,IAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAO,CAAA;QACzD,CAAC,CAAA;QAED,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,oBAAC,SAAS,OAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAEpE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE/B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CACpB,KAAK,CAAC,MAAM,CACV,SAAS,CAAC,cAAc,CAAC;YACvB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAA,sEAAsE;SACzF,CAAC,CACH,CACF,CAAA;QAED,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAA;QAEpG,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;QAE3D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,qBAAqB,CACvE,mDAAmD,CACpD,CAAA;QAED,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAA;QAErG,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CACpB,KAAK,CAAC,MAAM,CACV,SAAS,CAAC,cAAc,CAAC;YACvB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAA,sEAAsE;SACzF,CAAC,EACF,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,EACvF,SAAS,CAAC,cAAc,CAAC;YACvB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAA,uEAAuE;SAC1F,CAAC,CACH,CACF,CAAA;QAED,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAA;IACvG,CAAC,CAAC,CACH,CAAA;IAED,MAAM,CAAC,UAAU,CAAC,kEAAkE,EAAE,GAAG,EAAE,CACzF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAEnE,KAAK,CAAC,MAAM,CACV,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAC9D,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAChE,CAAA;QAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,UAAU,CAC3D,CAAC,MAAc,EAAE,EAAE;YACjB,WAAW,CAAC,GAAG,EAAE,CAAA;YAEjB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CACnC,SAAS,CAAC,OAAO,CACf,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC;YAC7E,6DAA6D;YAC7D,0EAA0E;YAC1E,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CACzC,CAEF,CAAA;YAED,OAAO,EAAE,KAAK,EAAE,CAAA;QAClB,CAAC,EACD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAChC,CAAA;QAED,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;QAEjH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE/B,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEd,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE/B,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CACH,CAAA;IAED,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QAC3B,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAA;QAC5C,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAEnB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CACpD,6DAA6D,EAC7D,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACvB,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAA;YAE3C,sHAAsH;YACtH,QAAQ,CAAC,gBAAgB,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAA;YAE5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAA;YAE1F,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;YAEnE,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACxB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;oBAC9D,WAAW;oBACX,UAAU;oBACV,UAAU;iBACX,CAAC,CAAA;gBAEF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,UAAU,CAC3D,CAAC,MAAc,EAAE,EAAE;oBACjB,WAAW,CAAC,GAAG,EAAE,CAAA;oBAEjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;oBACxE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAC5B,CAAC,EACD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAChC,CAAA;gBAED,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC9C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE/B,sDAAsD;gBACtD,uCAAuC;gBACvC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;gBAEnG,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAEd,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACzD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE/B,OAAO,EAAE,CAAA;gBACT,IAAI,CAAC,GAAG,EAAE,CAAA;YACZ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YAEnE,MAAM,aAAa,GAAG,CAAC,UAA2B,EAAE,EAAE;gBACpD,OAAO,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACjD,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;wBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAa,CAAwB,CAAA;wBAClE,0EAA0E;wBAC1E,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;4BAC7B,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gCAC1C,CAAC,CAAC,IAAI,GAAG,oBAAoB,CAAA;4BAC/B,CAAC;4BACD,CAAC,CAAC,QAAQ,GAAG,2BAA2B,CAAA;wBAC1C,CAAC,CAAC,CAAA;wBACF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;oBAClC,CAAC;oBACD,OAAO,GAAG,CAAA;gBACZ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA;YAED,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,eAAe,EAAE,CAAA;QAC1E,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
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
|
-
}
|