Skip to content

Commit cc54952

Browse files
feat: More tests, back to thunks, fixed svelte-query-persist-client
1 parent b7dda3d commit cc54952

29 files changed

+500
-590
lines changed

packages/svelte-query-persist-client/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
"compile": "tsc --build",
2020
"test:types": "svelte-check --tsconfig ./tsconfig.json",
2121
"test:eslint": "eslint ./src",
22-
"test:lib": "vitest",
23-
"test:lib:dev": "pnpm run test:lib --watch",
22+
"test:lib": "vitest run",
23+
"test:lib:dev": "vitest",
2424
"test:build": "publint --strict && attw --pack",
2525
"build": "svelte-package --input ./src --output ./dist"
2626
},

packages/svelte-query-persist-client/src/PersistQueryClientProvider.svelte

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
OmitKeyof,
1313
QueryClientProviderProps,
1414
} from '@tanstack/svelte-query'
15+
import { box } from './utils.svelte'
1516
1617
type PersistQueryClientProviderProps = QueryClientProviderProps & {
1718
persistOptions: OmitKeyof<PersistQueryClientOptions, 'queryClient'>
@@ -25,9 +26,9 @@
2526
...props
2627
}: PersistQueryClientProviderProps = $props()
2728
28-
let isRestoring = $state(true)
29+
let isRestoring = box(true)
2930
30-
setIsRestoringContext(() => isRestoring)
31+
setIsRestoringContext(isRestoring)
3132
3233
const options = $derived({
3334
...persistOptions,
@@ -39,12 +40,12 @@
3940
})
4041
4142
$effect(() => {
42-
isRestoring = true
43+
isRestoring.current = true
4344
persistQueryClientRestore(options).then(async () => {
4445
try {
4546
await props.onSuccess?.()
4647
} finally {
47-
isRestoring = false
48+
isRestoring.current = false
4849
}
4950
})
5051
})
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export type Box<T> = { current: T }
2+
3+
export function box<T>(initial: T): Box<T> {
4+
let current = $state(initial)
5+
6+
return {
7+
get current() {
8+
return current
9+
},
10+
set current(newValue) {
11+
current = newValue
12+
},
13+
}
14+
}

packages/svelte-query-persist-client/tests/AwaitOnSuccess/AwaitOnSuccess.svelte

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
<script lang="ts">
22
import { createQuery } from '@tanstack/svelte-query'
3-
import { sleep } from '../utils.svelte.js'
3+
import { sleep, StatelessRef } from '../utils.svelte.js'
44
5-
let { states }: { states: Array<string> } = $props()
5+
let { states }: { states: StatelessRef<Array<string>> } = $props()
66
77
const query = createQuery(() => ({
88
queryKey: ['test'],
99
queryFn: async () => {
10-
states.push('fetching')
10+
states.current.push('fetching')
1111
await sleep(5)
12-
states.push('fetched')
12+
states.current.push('fetched')
1313
return 'fetched'
1414
},
1515
}))

packages/svelte-query-persist-client/tests/AwaitOnSuccess/Provider.svelte

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
import AwaitOnSuccess from './AwaitOnSuccess.svelte'
44
import type { OmitKeyof, QueryClient } from '@tanstack/svelte-query'
55
import type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'
6+
import { StatelessRef } from '../utils.svelte'
67
78
interface Props {
89
queryClient: QueryClient
910
persistOptions: OmitKeyof<PersistQueryClientOptions, 'queryClient'>
1011
onSuccess: () => Promise<void>
11-
states: Array<string>
12+
states: StatelessRef<Array<string>>
1213
}
1314
1415
let { queryClient, persistOptions, onSuccess, states }: Props = $props()
Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,26 @@
11
<script lang="ts">
2-
import { untrack } from 'svelte'
32
import { createQuery } from '@tanstack/svelte-query'
4-
import { sleep } from '../utils.svelte.js'
5-
import type { StatusResult } from '../utils.svelte.js'
3+
import type { StatelessRef, StatusResult } from '../utils.svelte.js'
64
75
let {
86
states,
9-
fetched,
107
}: {
11-
states: { value: Array<StatusResult<string>> }
12-
fetched: boolean
8+
states: StatelessRef<Array<StatusResult<string>>>
139
} = $props()
1410
1511
const query = createQuery(() => ({
1612
queryKey: ['test'],
17-
queryFn: async () => {
18-
fetched = true
19-
await sleep(5)
20-
return 'fetched'
21-
},
13+
queryFn: () => Promise.resolve('fetched'),
2214
2315
staleTime: Infinity,
2416
}))
2517
2618
$effect(() => {
2719
// svelte-ignore state_snapshot_uncloneable
28-
states.value = [...untrack(() => states.value), $state.snapshot(query)]
20+
const snapshot = $state.snapshot(query)
21+
states.current.push(snapshot)
2922
})
3023
</script>
3124

3225
<div>data: {query.data ?? 'undefined'}</div>
3326
<div>fetchStatus: {query.fetchStatus}</div>
34-
<div>fetched: {fetched}</div>

packages/svelte-query-persist-client/tests/FreshData/Provider.svelte

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,17 @@
33
import FreshData from './FreshData.svelte'
44
import type { OmitKeyof, QueryClient } from '@tanstack/svelte-query'
55
import type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'
6-
import type { StatusResult } from '../utils.svelte.js'
6+
import type { StatelessRef, StatusResult } from '../utils.svelte.js'
77
88
interface Props {
99
queryClient: QueryClient
1010
persistOptions: OmitKeyof<PersistQueryClientOptions, 'queryClient'>
11-
states: { value: Array<StatusResult<string>> }
12-
fetched: boolean
11+
states: StatelessRef<Array<StatusResult<string>>>
1312
}
1413
15-
let { queryClient, persistOptions, states, fetched }: Props = $props()
14+
let { queryClient, persistOptions, states }: Props = $props()
1615
</script>
1716

1817
<PersistQueryClientProvider client={queryClient} {persistOptions}>
19-
<FreshData {states} {fetched} />
18+
<FreshData {states} />
2019
</PersistQueryClientProvider>

packages/svelte-query-persist-client/tests/InitialData/InitialData.svelte

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<script lang="ts">
2-
import { untrack } from 'svelte'
32
import { createQuery } from '@tanstack/svelte-query'
43
import { sleep } from '../utils.svelte.js'
5-
import type { StatusResult } from '../utils.svelte.js'
4+
import type { StatelessRef, StatusResult } from '../utils.svelte.js'
65
7-
let { states }: { states: { value: Array<StatusResult<string>> } } = $props()
6+
let { states }: { states: StatelessRef<Array<StatusResult<string>>> } =
7+
$props()
88
99
const query = createQuery(() => ({
1010
queryKey: ['test'],
@@ -21,7 +21,8 @@
2121
2222
$effect(() => {
2323
// svelte-ignore state_snapshot_uncloneable
24-
states.value = [...untrack(() => states.value), $state.snapshot(query)]
24+
const snapshot = $state.snapshot(query)
25+
states.current.push(snapshot)
2526
})
2627
</script>
2728

packages/svelte-query-persist-client/tests/InitialData/Provider.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import InitialData from './InitialData.svelte'
44
import type { OmitKeyof, QueryClient } from '@tanstack/svelte-query'
55
import type { PersistQueryClientOptions } from '@tanstack/query-persist-client-core'
6-
import type { StatusResult } from '../utils.svelte.js'
6+
import type { StatelessRef, StatusResult } from '../utils.svelte.js'
77
88
interface Props {
99
queryClient: QueryClient
1010
persistOptions: OmitKeyof<PersistQueryClientOptions, 'queryClient'>
11-
states: { value: Array<StatusResult<string>> }
11+
states: StatelessRef<Array<StatusResult<string>>>
1212
}
1313
1414
let { queryClient, persistOptions, states }: Props = $props()

packages/svelte-query-persist-client/tests/OnSuccess/OnSuccess.svelte

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
<script lang="ts">
22
import { createQuery } from '@tanstack/svelte-query'
3-
import { sleep } from '../utils.svelte.js'
43
54
const query = createQuery(() => ({
65
queryKey: ['test'],
7-
queryFn: async () => {
8-
await sleep(5)
9-
return 'fetched'
10-
},
6+
queryFn: () => Promise.resolve('fetched'),
117
}))
128
</script>
139

0 commit comments

Comments
 (0)