@livestore/livestore 0.0.46-dev.4 → 0.0.47-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/react/fixture.d.ts +28 -12
- package/dist/__tests__/react/fixture.d.ts.map +1 -1
- package/dist/__tests__/react/fixture.js +27 -3
- package/dist/__tests__/react/fixture.js.map +1 -1
- package/dist/__tests__/react/utils/otel.d.ts +10 -0
- package/dist/__tests__/react/utils/otel.d.ts.map +1 -0
- package/dist/__tests__/react/utils/otel.js +42 -0
- package/dist/__tests__/react/utils/otel.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/LiveStoreProvider.js +39 -6
- package/dist/react/LiveStoreProvider.js.map +1 -1
- package/dist/react/LiveStoreProvider.test.d.ts +2 -0
- package/dist/react/LiveStoreProvider.test.d.ts.map +1 -0
- package/dist/react/LiveStoreProvider.test.js +40 -0
- package/dist/react/LiveStoreProvider.test.js.map +1 -0
- package/dist/react/components/LiveList.d.ts +21 -0
- package/dist/react/components/LiveList.d.ts.map +1 -0
- package/dist/react/components/LiveList.js +31 -0
- package/dist/react/components/LiveList.js.map +1 -0
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/useAtom.d.ts +1 -1
- package/dist/react/useAtom.d.ts.map +1 -1
- package/dist/react/useAtom.js +6 -1
- package/dist/react/useAtom.js.map +1 -1
- package/dist/react/useQuery.d.ts +4 -1
- package/dist/react/useQuery.d.ts.map +1 -1
- package/dist/react/useQuery.js +24 -19
- package/dist/react/useQuery.js.map +1 -1
- package/dist/react/useQuery.test.js +11 -11
- package/dist/react/useQuery.test.js.map +1 -1
- package/dist/react/useRow.d.ts.map +1 -1
- package/dist/react/useRow.js +14 -69
- package/dist/react/useRow.js.map +1 -1
- package/dist/react/useRow.test.js +440 -28
- package/dist/react/useRow.test.js.map +1 -1
- package/dist/react/useTemporaryQuery.d.ts +15 -3
- package/dist/react/useTemporaryQuery.d.ts.map +1 -1
- package/dist/react/useTemporaryQuery.js +60 -27
- package/dist/react/useTemporaryQuery.js.map +1 -1
- package/dist/react/useTemporaryQuery.test.js +10 -9
- package/dist/react/useTemporaryQuery.test.js.map +1 -1
- package/dist/reactive.d.ts +23 -5
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +44 -11
- package/dist/reactive.js.map +1 -1
- package/dist/reactive.test.js +1 -1
- package/dist/reactive.test.js.map +1 -1
- package/dist/reactiveQueries/base-class.d.ts +1 -1
- package/dist/reactiveQueries/base-class.d.ts.map +1 -1
- package/dist/reactiveQueries/base-class.js.map +1 -1
- package/dist/reactiveQueries/graphql.d.ts +2 -2
- package/dist/reactiveQueries/graphql.d.ts.map +1 -1
- package/dist/reactiveQueries/graphql.js +21 -11
- package/dist/reactiveQueries/graphql.js.map +1 -1
- package/dist/reactiveQueries/sql.d.ts +1 -1
- package/dist/reactiveQueries/sql.d.ts.map +1 -1
- package/dist/reactiveQueries/sql.js +15 -11
- package/dist/reactiveQueries/sql.js.map +1 -1
- package/dist/reactiveQueries/sql.test.js +1 -40
- package/dist/reactiveQueries/sql.test.js.map +1 -1
- package/dist/row-query.d.ts.map +1 -1
- package/dist/row-query.js +3 -1
- package/dist/row-query.js.map +1 -1
- package/dist/store.d.ts +7 -5
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +50 -38
- package/dist/store.js.map +1 -1
- package/package.json +11 -13
- package/src/__tests__/react/fixture.tsx +35 -2
- package/src/__tests__/react/utils/otel.ts +61 -0
- package/src/index.ts +12 -1
- package/src/react/LiveStoreProvider.test.tsx +63 -0
- package/src/react/LiveStoreProvider.tsx +42 -7
- package/src/react/components/LiveList.tsx +84 -0
- package/src/react/index.ts +1 -1
- package/src/react/useAtom.ts +6 -2
- package/src/react/useQuery.test.tsx +11 -11
- package/src/react/useQuery.ts +29 -22
- package/src/react/useRow.test.tsx +502 -30
- package/src/react/useRow.ts +19 -107
- package/src/react/useTemporaryQuery.test.tsx +17 -16
- package/src/react/useTemporaryQuery.ts +96 -28
- package/src/reactive.test.ts +1 -1
- package/src/reactive.ts +76 -15
- package/src/reactiveQueries/base-class.ts +2 -1
- package/src/reactiveQueries/graphql.ts +26 -16
- package/src/reactiveQueries/sql.test.ts +1 -54
- package/src/reactiveQueries/sql.ts +20 -14
- package/src/row-query.ts +3 -1
- package/src/store.ts +71 -49
- package/tsconfig.json +0 -1
- package/dist/react/components/DiffableList.d.ts +0 -20
- package/dist/react/components/DiffableList.d.ts.map +0 -1
- package/dist/react/components/DiffableList.js +0 -113
- package/dist/react/components/DiffableList.js.map +0 -1
- package/dist/react/utils/useCleanup.d.ts +0 -7
- package/dist/react/utils/useCleanup.d.ts.map +0 -1
- package/dist/react/utils/useCleanup.js +0 -19
- package/dist/react/utils/useCleanup.js.map +0 -1
- package/src/react/components/DiffableList.tsx +0 -192
- package/src/react/utils/useCleanup.ts +0 -25
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/livestore",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.47-dev.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -37,27 +37,25 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@graphql-typed-document-node/core": "^3.2.0",
|
|
39
39
|
"@opentelemetry/api": "^1.8.0",
|
|
40
|
-
"its-fine": "^1.1.2",
|
|
41
40
|
"lodash-es": "^4.17.21",
|
|
42
|
-
"@livestore/
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"@livestore/fractional-index": "0.0.46-dev.4"
|
|
41
|
+
"@livestore/utils": "0.0.47-dev.0",
|
|
42
|
+
"@livestore/common": "0.0.47-dev.0",
|
|
43
|
+
"effect-db-schema": "0.0.47-dev.0"
|
|
46
44
|
},
|
|
47
45
|
"devDependencies": {
|
|
48
46
|
"@opentelemetry/sdk-trace-base": "1.22.0",
|
|
49
47
|
"@tauri-apps/api": "^1.5.3",
|
|
50
|
-
"@testing-library/react": "^14.2.
|
|
48
|
+
"@testing-library/react": "^14.2.2",
|
|
51
49
|
"@types/lodash-es": "^4.17.12",
|
|
52
|
-
"@types/react": "^18.2.
|
|
50
|
+
"@types/react": "^18.2.69",
|
|
53
51
|
"@types/react-dom": "^18.2.22",
|
|
54
52
|
"jsdom": "^24.0.0",
|
|
55
53
|
"react": "^18.2.0",
|
|
56
54
|
"react-dom": "^18.2.0",
|
|
57
|
-
"typescript": "5.4.
|
|
58
|
-
"vite": "5.
|
|
59
|
-
"vitest": "^1.
|
|
60
|
-
"@livestore/web": "0.0.
|
|
55
|
+
"typescript": "5.4.3",
|
|
56
|
+
"vite": "5.2.4",
|
|
57
|
+
"vitest": "^1.4.0",
|
|
58
|
+
"@livestore/web": "0.0.47-dev.0"
|
|
61
59
|
},
|
|
62
60
|
"peerDependencies": {
|
|
63
61
|
"@tauri-apps/api": "^1.4.0",
|
|
@@ -78,6 +76,6 @@
|
|
|
78
76
|
},
|
|
79
77
|
"scripts": {
|
|
80
78
|
"build": "tsc",
|
|
81
|
-
"test": "vitest"
|
|
79
|
+
"test": "vitest && REACT_STRICT_MODE=1 vitest"
|
|
82
80
|
}
|
|
83
81
|
}
|
|
@@ -42,17 +42,35 @@ export const makeTodoMvc = async ({
|
|
|
42
42
|
otelTracer,
|
|
43
43
|
otelContext,
|
|
44
44
|
useGlobalDbGraph = true,
|
|
45
|
+
strictMode = process.env.REACT_STRICT_MODE !== undefined,
|
|
45
46
|
}: {
|
|
46
47
|
otelTracer?: otel.Tracer
|
|
47
48
|
otelContext?: otel.Context
|
|
48
49
|
useGlobalDbGraph?: boolean
|
|
50
|
+
strictMode?: boolean
|
|
49
51
|
} = {}) => {
|
|
50
52
|
const AppComponentSchema = DbSchema.table('UserInfo', {
|
|
51
53
|
username: DbSchema.text({ default: '' }),
|
|
54
|
+
text: DbSchema.text({ default: '' }),
|
|
52
55
|
})
|
|
53
56
|
|
|
54
57
|
const dbGraph = useGlobalDbGraph ? globalDbGraph : makeDbGraph()
|
|
55
58
|
|
|
59
|
+
const makeRenderCount = () => {
|
|
60
|
+
let val = 0
|
|
61
|
+
|
|
62
|
+
const inc = () => {
|
|
63
|
+
val += strictMode ? 0.5 : 1
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
get val() {
|
|
68
|
+
return val
|
|
69
|
+
},
|
|
70
|
+
inc,
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
56
74
|
const store = await createStore({
|
|
57
75
|
schema,
|
|
58
76
|
boot: (db) => db.execute(sql`INSERT OR IGNORE INTO app (id, newTodoText, filter) VALUES ('static', '', 'all');`),
|
|
@@ -67,9 +85,24 @@ export const makeTodoMvc = async ({
|
|
|
67
85
|
// TODO improve typing of `LiveStoreContext`
|
|
68
86
|
const storeContext: LiveStoreContext = { store } as TODO
|
|
69
87
|
|
|
88
|
+
const MaybeStrictMode = strictMode ? React.StrictMode : React.Fragment
|
|
89
|
+
|
|
70
90
|
const wrapper = ({ children }: any) => (
|
|
71
|
-
<
|
|
91
|
+
<MaybeStrictMode>
|
|
92
|
+
<LiveStoreReact.LiveStoreContext.Provider value={storeContext}>
|
|
93
|
+
{children}
|
|
94
|
+
</LiveStoreReact.LiveStoreContext.Provider>
|
|
95
|
+
</MaybeStrictMode>
|
|
72
96
|
)
|
|
73
97
|
|
|
74
|
-
return {
|
|
98
|
+
return {
|
|
99
|
+
[Symbol.dispose]: () => store.destroy(),
|
|
100
|
+
wrapper,
|
|
101
|
+
AppComponentSchema,
|
|
102
|
+
store,
|
|
103
|
+
dbGraph,
|
|
104
|
+
cud,
|
|
105
|
+
makeRenderCount,
|
|
106
|
+
strictMode,
|
|
107
|
+
}
|
|
75
108
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { identity } from '@livestore/utils/effect'
|
|
2
|
+
import type { Attributes } from '@opentelemetry/api'
|
|
3
|
+
import type { InMemorySpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base'
|
|
4
|
+
|
|
5
|
+
type SimplifiedNestedSpan = { _name: string; attributes: any; children: SimplifiedNestedSpan[] }
|
|
6
|
+
|
|
7
|
+
export const getSimplifiedRootSpan = (
|
|
8
|
+
exporter: InMemorySpanExporter,
|
|
9
|
+
mapAttributes?: (attributes: Attributes) => Attributes,
|
|
10
|
+
) => {
|
|
11
|
+
const spans = exporter.getFinishedSpans()
|
|
12
|
+
const spansMap = new Map<string, NestedSpan>(spans.map((span) => [span.spanContext().spanId, { span, children: [] }]))
|
|
13
|
+
|
|
14
|
+
const mapAttributesfn = mapAttributes ?? identity
|
|
15
|
+
|
|
16
|
+
spansMap.forEach((nestedSpan) => {
|
|
17
|
+
const parentSpan = nestedSpan.span.parentSpanId ? spansMap.get(nestedSpan.span.parentSpanId) : undefined
|
|
18
|
+
if (parentSpan) {
|
|
19
|
+
parentSpan.children.push(nestedSpan)
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
type NestedSpan = { span: ReadableSpan; children: NestedSpan[] }
|
|
24
|
+
const rootSpan = spansMap.get(spans.find((_) => _.name === 'test')!.spanContext().spanId)!
|
|
25
|
+
|
|
26
|
+
const simplifySpan = (span: NestedSpan): SimplifiedNestedSpan =>
|
|
27
|
+
omitEmpty({
|
|
28
|
+
_name: span.span.name,
|
|
29
|
+
attributes: mapAttributesfn(span.span.attributes),
|
|
30
|
+
children: span.children
|
|
31
|
+
.filter((_) => _.span.name !== 'createStore')
|
|
32
|
+
// .sort((a, b) => compareHrTime(a.span.startTime, b.span.startTime))
|
|
33
|
+
.map(simplifySpan),
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// console.dir(
|
|
37
|
+
// spans.map((_) => [_.spanContext().spanId, _.name, _.attributes, _.parentSpanId]),
|
|
38
|
+
// { depth: 10 },
|
|
39
|
+
// )
|
|
40
|
+
|
|
41
|
+
return simplifySpan(rootSpan)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// const compareHrTime = (a: [number, number], b: [number, number]) => {
|
|
45
|
+
// if (a[0] !== b[0]) return a[0] - b[0]
|
|
46
|
+
// return a[1] - b[1]
|
|
47
|
+
// }
|
|
48
|
+
|
|
49
|
+
const omitEmpty = (obj: any) => {
|
|
50
|
+
const result: any = {}
|
|
51
|
+
for (const key in obj) {
|
|
52
|
+
if (
|
|
53
|
+
obj[key] !== undefined &&
|
|
54
|
+
!(Array.isArray(obj[key]) && obj[key].length === 0) &&
|
|
55
|
+
Object.keys(obj[key]).length > 0
|
|
56
|
+
) {
|
|
57
|
+
result[key] = obj[key]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return result
|
|
61
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -5,7 +5,18 @@ export type { QueryDefinition, LiveStoreCreateStoreOptions, LiveStoreContext } f
|
|
|
5
5
|
|
|
6
6
|
export { MainDatabaseWrapper, type DebugInfo, emptyDebugInfo } from './MainDatabaseWrapper.js'
|
|
7
7
|
|
|
8
|
-
export type {
|
|
8
|
+
export type {
|
|
9
|
+
GetAtom,
|
|
10
|
+
AtomDebugInfo,
|
|
11
|
+
RefreshDebugInfo,
|
|
12
|
+
ReactiveGraphSnapshot,
|
|
13
|
+
SerializedAtom,
|
|
14
|
+
SerializedEffect,
|
|
15
|
+
Atom,
|
|
16
|
+
Node,
|
|
17
|
+
Ref,
|
|
18
|
+
Effect,
|
|
19
|
+
} from './reactive.js'
|
|
9
20
|
export { LiveStoreJSQuery, computed } from './reactiveQueries/js.js'
|
|
10
21
|
export { LiveStoreSQLQuery, querySQL, type MapRows } from './reactiveQueries/sql.js'
|
|
11
22
|
export { LiveStoreGraphQLQuery, queryGraphQL } from './reactiveQueries/graphql.js'
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { sql } from '@livestore/common'
|
|
2
|
+
import { makeDb } from '@livestore/web'
|
|
3
|
+
import { InMemoryStorage } from '@livestore/web/storage/in-memory'
|
|
4
|
+
import { render, screen, waitFor, waitForElementToBeRemoved } from '@testing-library/react'
|
|
5
|
+
import React from 'react'
|
|
6
|
+
import { describe, expect, it } from 'vitest'
|
|
7
|
+
|
|
8
|
+
import { parseTodos, schema } from '../__tests__/react/fixture.js'
|
|
9
|
+
import { querySQL } from '../reactiveQueries/sql.js'
|
|
10
|
+
import type { BootDb, Store } from '../store.js'
|
|
11
|
+
import * as LiveStoreReact from './index.js'
|
|
12
|
+
import { LiveStoreProvider } from './LiveStoreProvider.js'
|
|
13
|
+
|
|
14
|
+
describe('LiveStoreProvider', () => {
|
|
15
|
+
it('simple', async () => {
|
|
16
|
+
let renderCount = 0
|
|
17
|
+
|
|
18
|
+
const allTodos$ = querySQL(`select * from todos`, { map: parseTodos })
|
|
19
|
+
let latestStoreCtx: { store: Store } | undefined = undefined
|
|
20
|
+
|
|
21
|
+
const App = () => {
|
|
22
|
+
renderCount++
|
|
23
|
+
|
|
24
|
+
latestStoreCtx = LiveStoreReact.useStore()
|
|
25
|
+
|
|
26
|
+
const todos = LiveStoreReact.useQuery(allTodos$)
|
|
27
|
+
|
|
28
|
+
return <div>{JSON.stringify(todos)}</div>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const Root = ({ forceUpdate }: { forceUpdate: number }) => {
|
|
32
|
+
const bootCb = React.useCallback(
|
|
33
|
+
(db: BootDb) =>
|
|
34
|
+
db.execute(sql`INSERT OR IGNORE INTO todos (id, text, completed) VALUES ('t1', 'buy milk', 0);`),
|
|
35
|
+
[],
|
|
36
|
+
)
|
|
37
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38
|
+
const makeDbMemo = React.useMemo(() => makeDb(() => InMemoryStorage.load()), [forceUpdate])
|
|
39
|
+
return (
|
|
40
|
+
<LiveStoreProvider schema={schema} fallback={<div>Loading LiveStore</div>} makeDb={makeDbMemo} boot={bootCb}>
|
|
41
|
+
<App />
|
|
42
|
+
</LiveStoreProvider>
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const { rerender } = render(<Root forceUpdate={1} />)
|
|
47
|
+
|
|
48
|
+
expect(renderCount).toBe(0)
|
|
49
|
+
|
|
50
|
+
await waitForElementToBeRemoved(() => screen.getByText('Loading LiveStore'))
|
|
51
|
+
|
|
52
|
+
expect(renderCount).toBe(1)
|
|
53
|
+
|
|
54
|
+
rerender(<Root forceUpdate={2} />)
|
|
55
|
+
|
|
56
|
+
await waitFor(() => screen.getByText('Loading LiveStore'))
|
|
57
|
+
await waitForElementToBeRemoved(() => screen.getByText('Loading LiveStore'))
|
|
58
|
+
|
|
59
|
+
expect(renderCount).toBe(2)
|
|
60
|
+
|
|
61
|
+
await latestStoreCtx!.store.destroy()
|
|
62
|
+
})
|
|
63
|
+
})
|
|
@@ -61,14 +61,45 @@ const useCreateStore = <GraphQLContext extends BaseGraphQLContext>({
|
|
|
61
61
|
makeDb,
|
|
62
62
|
batchUpdates,
|
|
63
63
|
}: LiveStoreCreateStoreOptions<GraphQLContext>) => {
|
|
64
|
-
const [
|
|
64
|
+
const [_, rerender] = React.useState(0)
|
|
65
|
+
const ctxValueRef = React.useRef<StoreContext_ | undefined>(undefined)
|
|
66
|
+
const inputPropsCacheRef = React.useRef({
|
|
67
|
+
schema,
|
|
68
|
+
graphQLOptions,
|
|
69
|
+
otelTracer,
|
|
70
|
+
otelRootSpanContext,
|
|
71
|
+
boot,
|
|
72
|
+
makeDb,
|
|
73
|
+
batchUpdates,
|
|
74
|
+
})
|
|
75
|
+
const oldStoreAlreadyDestroyedRef = React.useRef(false)
|
|
76
|
+
|
|
77
|
+
if (
|
|
78
|
+
inputPropsCacheRef.current.schema !== schema ||
|
|
79
|
+
inputPropsCacheRef.current.graphQLOptions !== graphQLOptions ||
|
|
80
|
+
inputPropsCacheRef.current.otelTracer !== otelTracer ||
|
|
81
|
+
inputPropsCacheRef.current.otelRootSpanContext !== otelRootSpanContext ||
|
|
82
|
+
inputPropsCacheRef.current.boot !== boot ||
|
|
83
|
+
inputPropsCacheRef.current.makeDb !== makeDb ||
|
|
84
|
+
inputPropsCacheRef.current.batchUpdates !== batchUpdates
|
|
85
|
+
) {
|
|
86
|
+
inputPropsCacheRef.current = {
|
|
87
|
+
schema,
|
|
88
|
+
graphQLOptions,
|
|
89
|
+
otelTracer,
|
|
90
|
+
otelRootSpanContext,
|
|
91
|
+
boot,
|
|
92
|
+
makeDb,
|
|
93
|
+
batchUpdates,
|
|
94
|
+
}
|
|
95
|
+
ctxValueRef.current?.store.destroy()
|
|
96
|
+
oldStoreAlreadyDestroyedRef.current = true
|
|
97
|
+
ctxValueRef.current = undefined
|
|
98
|
+
}
|
|
65
99
|
|
|
66
100
|
React.useEffect(() => {
|
|
67
101
|
let store: Store | undefined
|
|
68
102
|
|
|
69
|
-
// resetting the store context while we're creating a new store
|
|
70
|
-
setCtxValue(undefined)
|
|
71
|
-
|
|
72
103
|
void (async () => {
|
|
73
104
|
try {
|
|
74
105
|
store = await createStore({
|
|
@@ -80,16 +111,20 @@ const useCreateStore = <GraphQLContext extends BaseGraphQLContext>({
|
|
|
80
111
|
makeDb,
|
|
81
112
|
batchUpdates,
|
|
82
113
|
})
|
|
83
|
-
|
|
114
|
+
ctxValueRef.current = { store }
|
|
115
|
+
oldStoreAlreadyDestroyedRef.current = false
|
|
116
|
+
rerender((c) => c + 1)
|
|
84
117
|
} catch (e) {
|
|
85
118
|
shouldNeverHappen(`Error creating LiveStore store: ${e}`)
|
|
86
119
|
}
|
|
87
120
|
})()
|
|
88
121
|
|
|
89
122
|
return () => {
|
|
90
|
-
|
|
123
|
+
if (oldStoreAlreadyDestroyedRef.current === false) {
|
|
124
|
+
store?.destroy()
|
|
125
|
+
}
|
|
91
126
|
}
|
|
92
127
|
}, [schema, graphQLOptions, otelTracer, otelRootSpanContext, boot, makeDb, batchUpdates])
|
|
93
128
|
|
|
94
|
-
return
|
|
129
|
+
return ctxValueRef.current
|
|
95
130
|
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import type { LiveQuery } from '../../reactiveQueries/base-class.js'
|
|
4
|
+
import { computed } from '../../reactiveQueries/js.js'
|
|
5
|
+
import { useQuery } from '../useQuery.js'
|
|
6
|
+
import { useTemporaryQuery } from '../useTemporaryQuery.js'
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
TODO:
|
|
10
|
+
- [ ] Bring back incremental rendering (see https://github.com/livestorejs/livestore/pull/55)
|
|
11
|
+
- [ ] Enable exit animations
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export type LiveListProps<TItem> = {
|
|
15
|
+
items$: LiveQuery<ReadonlyArray<TItem>>
|
|
16
|
+
// TODO refactor render-flag to allow for transition animations on add/remove
|
|
17
|
+
renderItem: (item: TItem, opts: { index: number; isInitialListRender: boolean }) => React.ReactNode
|
|
18
|
+
/** Needs to be unique across all list items */
|
|
19
|
+
getKey: (item: TItem, index: number) => string | number
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* This component is a helper component for rendering a list of items for a LiveQuery of an array of items.
|
|
24
|
+
* The idea is that instead of letting React handle the rendering of the items array directly,
|
|
25
|
+
* we derive a item LiveQuery for each item which moves the reactivity to the item level when a single item changes.
|
|
26
|
+
*
|
|
27
|
+
* In the future we want to make this component even more efficient by using incremental rendering (https://github.com/livestorejs/livestore/pull/55)
|
|
28
|
+
* e.g. when an item is added/removed/moved to only re-render the affected DOM nodes.
|
|
29
|
+
*/
|
|
30
|
+
export const LiveList = <TItem,>({ items$, renderItem, getKey }: LiveListProps<TItem>): React.ReactNode => {
|
|
31
|
+
const [hasMounted, setHasMounted] = React.useState(false)
|
|
32
|
+
|
|
33
|
+
React.useEffect(() => setHasMounted(true), [])
|
|
34
|
+
|
|
35
|
+
const keysCb = React.useCallback(() => computed((get) => get(items$).map(getKey)), [getKey, items$])
|
|
36
|
+
const keys = useTemporaryQuery(keysCb, 'fixed')
|
|
37
|
+
const arr = React.useMemo(
|
|
38
|
+
() =>
|
|
39
|
+
keys.map(
|
|
40
|
+
(key) =>
|
|
41
|
+
// TODO figure out a way so that `item$` returns an ordered lookup map to more efficiently find the item by key
|
|
42
|
+
[key, computed((get) => get(items$).find((item) => getKey(item, 0) === key)!) as LiveQuery<TItem>] as const,
|
|
43
|
+
),
|
|
44
|
+
[getKey, items$, keys],
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<>
|
|
49
|
+
{arr.map(([key, item$], index) => (
|
|
50
|
+
<ItemWrapperMemo
|
|
51
|
+
key={key}
|
|
52
|
+
itemKey={key}
|
|
53
|
+
item$={item$}
|
|
54
|
+
opts={{ isInitialListRender: !hasMounted, index }}
|
|
55
|
+
renderItem={renderItem}
|
|
56
|
+
/>
|
|
57
|
+
))}
|
|
58
|
+
</>
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const ItemWrapper = <TItem,>({
|
|
63
|
+
item$,
|
|
64
|
+
opts,
|
|
65
|
+
renderItem,
|
|
66
|
+
}: {
|
|
67
|
+
itemKey: string | number
|
|
68
|
+
item$: LiveQuery<TItem>
|
|
69
|
+
opts: { index: number; isInitialListRender: boolean }
|
|
70
|
+
renderItem: (item: TItem, opts: { index: number; isInitialListRender: boolean }) => React.ReactNode
|
|
71
|
+
}) => {
|
|
72
|
+
const item = useQuery(item$)
|
|
73
|
+
|
|
74
|
+
return <>{renderItem(item, opts)}</>
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const ItemWrapperMemo = React.memo(
|
|
78
|
+
ItemWrapper,
|
|
79
|
+
(prev, next) =>
|
|
80
|
+
prev.itemKey === next.itemKey &&
|
|
81
|
+
prev.renderItem === prev.renderItem &&
|
|
82
|
+
prev.opts.index === next.opts.index &&
|
|
83
|
+
prev.opts.isInitialListRender === next.opts.isInitialListRender,
|
|
84
|
+
) as typeof ItemWrapper
|
package/src/react/index.ts
CHANGED
|
@@ -12,7 +12,7 @@ export {
|
|
|
12
12
|
} from './useRow.js'
|
|
13
13
|
export { useAtom } from './useAtom.js'
|
|
14
14
|
|
|
15
|
-
export {
|
|
15
|
+
export { LiveList, type LiveListProps } from './components/LiveList.js'
|
|
16
16
|
|
|
17
17
|
// Needed to make TS happy
|
|
18
18
|
export type { TypedDocumentNode } from '@graphql-typed-document-node/core'
|
package/src/react/useAtom.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { Dispatch, SetStateAction } from './useRow.js'
|
|
|
8
8
|
|
|
9
9
|
export const useAtom = <TQuery extends LiveQuery<any, QueryInfoRow<any> | QueryInfoCol<any, any>>>(
|
|
10
10
|
query$: TQuery,
|
|
11
|
-
): [value: TQuery['__result!'], setValue: Dispatch<SetStateAction<TQuery['__result!']
|
|
11
|
+
): [value: TQuery['__result!'], setValue: Dispatch<SetStateAction<Partial<TQuery['__result!']>>>] => {
|
|
12
12
|
const query$Ref = useQueryRef(query$)
|
|
13
13
|
|
|
14
14
|
const { store } = useStore()
|
|
@@ -17,7 +17,11 @@ export const useAtom = <TQuery extends LiveQuery<any, QueryInfoRow<any> | QueryI
|
|
|
17
17
|
return (newValueOrFn: any) => {
|
|
18
18
|
const newValue = typeof newValueOrFn === 'function' ? newValueOrFn(query$Ref.current) : newValueOrFn
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
if (query$.queryInfo._tag === 'Row' && query$.queryInfo.table.isSingleColumn) {
|
|
21
|
+
store.mutate(mutationForQueryInfo(query$.queryInfo!, { value: newValue }))
|
|
22
|
+
} else {
|
|
23
|
+
store.mutate(mutationForQueryInfo(query$.queryInfo!, newValue))
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
}, [query$.queryInfo, query$Ref, store])
|
|
23
27
|
|
|
@@ -8,15 +8,15 @@ import * as LiveStoreReact from './index.js'
|
|
|
8
8
|
|
|
9
9
|
describe('useQuery', () => {
|
|
10
10
|
it('simple', async () => {
|
|
11
|
-
|
|
11
|
+
const { wrapper, store, cud, makeRenderCount } = await makeTodoMvc()
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const renderCount = makeRenderCount()
|
|
14
14
|
|
|
15
15
|
const allTodos$ = querySQL(`select * from todos`, { map: parseTodos })
|
|
16
16
|
|
|
17
17
|
const { result } = renderHook(
|
|
18
18
|
() => {
|
|
19
|
-
renderCount
|
|
19
|
+
renderCount.inc()
|
|
20
20
|
|
|
21
21
|
return LiveStoreReact.useQuery(allTodos$)
|
|
22
22
|
},
|
|
@@ -24,19 +24,19 @@ describe('useQuery', () => {
|
|
|
24
24
|
)
|
|
25
25
|
|
|
26
26
|
expect(result.current.length).toBe(0)
|
|
27
|
-
expect(renderCount).toBe(1)
|
|
27
|
+
expect(renderCount.val).toBe(1)
|
|
28
28
|
|
|
29
29
|
act(() => store.mutate(cud.todos.insert({ id: 't1', text: 'buy milk', completed: false })))
|
|
30
30
|
|
|
31
31
|
expect(result.current.length).toBe(1)
|
|
32
32
|
expect(result.current[0]!.text).toBe('buy milk')
|
|
33
|
-
expect(renderCount).toBe(2)
|
|
33
|
+
expect(renderCount.val).toBe(2)
|
|
34
34
|
})
|
|
35
35
|
|
|
36
36
|
it('same `useQuery` hook invoked with different queries', async () => {
|
|
37
|
-
|
|
37
|
+
const { wrapper, store, cud, makeRenderCount } = await makeTodoMvc()
|
|
38
38
|
|
|
39
|
-
const
|
|
39
|
+
const renderCount = makeRenderCount()
|
|
40
40
|
|
|
41
41
|
const todo1$ = querySQL(`select * from todos where id = 't1'`, { label: 'libraryTracksView1', map: parseTodos })
|
|
42
42
|
const todo2$ = querySQL(`select * from todos where id = 't2'`, { label: 'libraryTracksView2', map: parseTodos })
|
|
@@ -48,7 +48,7 @@ describe('useQuery', () => {
|
|
|
48
48
|
|
|
49
49
|
const { result, rerender } = renderHook(
|
|
50
50
|
(todoId: string) => {
|
|
51
|
-
renderCount
|
|
51
|
+
renderCount.inc()
|
|
52
52
|
|
|
53
53
|
const query$ = React.useMemo(() => (todoId === 't1' ? todo1$ : todo2$), [todoId])
|
|
54
54
|
|
|
@@ -58,16 +58,16 @@ describe('useQuery', () => {
|
|
|
58
58
|
)
|
|
59
59
|
|
|
60
60
|
expect(result.current).toBe('buy milk')
|
|
61
|
-
expect(renderCount).toBe(1)
|
|
61
|
+
expect(renderCount.val).toBe(1)
|
|
62
62
|
|
|
63
63
|
act(() => store.mutate(cud.todos.update({ where: { id: 't1' }, values: { text: 'buy soy milk' } })))
|
|
64
64
|
|
|
65
65
|
expect(result.current).toBe('buy soy milk')
|
|
66
|
-
expect(renderCount).toBe(2)
|
|
66
|
+
expect(renderCount.val).toBe(2)
|
|
67
67
|
|
|
68
68
|
rerender('t2')
|
|
69
69
|
|
|
70
70
|
expect(result.current).toBe('buy eggs')
|
|
71
|
-
expect(renderCount).toBe(3)
|
|
71
|
+
expect(renderCount.val).toBe(3)
|
|
72
72
|
})
|
|
73
73
|
})
|