Skip to content

Commit 1fe6b77

Browse files
zhihengGetlachlancollins
authored andcommitted
WIP: Svelte 5 adapter (#6981)
1 parent 01e63a5 commit 1fe6b77

File tree

129 files changed

+3339
-1106
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+3339
-1106
lines changed

eslint.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export default [
3838
'@typescript-eslint/ban-types': 'off',
3939
'@typescript-eslint/no-empty-function': 'off',
4040
'no-case-declarations': 'off',
41+
'prefer-const': 'off',
4142
},
4243
},
4344
]

examples/svelte/auto-refetching/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
"devDependencies": {
1616
"@sveltejs/adapter-auto": "^3.2.2",
1717
"@sveltejs/kit": "^2.5.18",
18-
"@sveltejs/vite-plugin-svelte": "^3.1.1",
19-
"svelte": "^4.2.18",
18+
"@sveltejs/vite-plugin-svelte": "^4.0.0-next.4",
19+
"svelte": "5.0.0-next.192",
2020
"svelte-check": "^3.8.4",
2121
"typescript": "5.3.3",
2222
"vite": "^5.3.5"

examples/svelte/auto-refetching/src/routes/+layout.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import { QueryClientProvider, QueryClient } from '@tanstack/svelte-query'
55
import { SvelteQueryDevtools } from '@tanstack/svelte-query-devtools'
66
7+
const { children } = $props()
8+
79
const queryClient = new QueryClient({
810
defaultOptions: {
911
queries: {
@@ -15,7 +17,7 @@
1517

1618
<QueryClientProvider client={queryClient}>
1719
<main>
18-
<slot />
20+
{@render children()}
1921
</main>
2022
<SvelteQueryDevtools />
2123
</QueryClientProvider>

examples/svelte/auto-refetching/src/routes/+page.svelte

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
1313
const endpoint = 'http://localhost:5173/api/data'
1414
15-
$: todos = createQuery<{ items: string[] }>({
15+
const todos = createQuery<{ items: string[] }>({
1616
queryKey: ['refetch'],
1717
queryFn: async () => await fetch(endpoint).then((r) => r.json()),
1818
// Refetch the data every second
@@ -49,46 +49,44 @@
4949
margin-left:.5rem;
5050
width:.75rem;
5151
height:.75rem;
52-
background: {$todos.isFetching ? 'green' : 'transparent'};
53-
transition:: {!$todos.isFetching ? 'all .3s ease' : 'none'};
52+
background: {todos.isFetching ? 'green' : 'transparent'};
53+
transition:: {!todos.isFetching ? 'all .3s ease' : 'none'};
5454
border-radius: 100%;
5555
transform: 'scale(2)"
5656
></span>
5757
</div>
5858
</label>
5959
<h2>Todo List</h2>
6060
<form
61-
on:submit={(e) => {
61+
onsubmit={(e) => {
6262
e.preventDefault()
6363
e.stopPropagation()
64-
$addMutation.mutate(value, {
64+
addMutation.mutate(value, {
6565
onSuccess: () => (value = ''),
6666
})
6767
}}
6868
>
6969
<input placeholder="enter something" bind:value />
7070
</form>
7171

72-
{#if $todos.isPending}
72+
{#if todos.isPending}
7373
Loading...
7474
{/if}
75-
{#if $todos.error}
75+
{#if todos.error}
7676
An error has occurred:
77-
{$todos.error.message}
77+
{todos.error.message}
7878
{/if}
79-
{#if $todos.isSuccess}
79+
{#if todos.isSuccess}
8080
<ul>
81-
{#each $todos.data.items as item}
81+
{#each todos.data.items as item}
8282
<li>{item}</li>
8383
{/each}
8484
</ul>
8585
<div>
86-
<button on:click={() => $clearMutation.mutate(undefined)}>
87-
Clear All
88-
</button>
86+
<button onclick={() => clearMutation.mutate(undefined)}> Clear All </button>
8987
</div>
9088
{/if}
91-
{#if $todos.isFetching}
89+
{#if todos.isFetching}
9290
<div style="color:darkgreen; font-weight:700">
9391
'Background Updating...' : ' '
9492
</div>

examples/svelte/basic/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
"devDependencies": {
1818
"@sveltejs/adapter-auto": "^3.2.2",
1919
"@sveltejs/kit": "^2.5.18",
20-
"@sveltejs/vite-plugin-svelte": "^3.1.1",
21-
"svelte": "^4.2.18",
20+
"@sveltejs/vite-plugin-svelte": "^4.0.0-next.4",
21+
"svelte": "5.0.0-next.192",
2222
"svelte-check": "^3.8.4",
2323
"typescript": "5.3.3",
2424
"vite": "^5.3.5"

examples/svelte/basic/src/lib/Post.svelte

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { getPostById } from './data'
44
import type { Post } from './types'
55
6-
export let postId: number
6+
const { postId }: { postId: number } = $props()
77
88
const post = createQuery<Post>({
99
queryKey: ['post', postId],
@@ -15,17 +15,17 @@
1515
<div>
1616
<a class="button" href="/"> Back </a>
1717
</div>
18-
{#if !postId || $post.isPending}
18+
{#if !postId || post.isPending}
1919
<span>Loading...</span>
2020
{/if}
21-
{#if $post.error}
22-
<span>Error: {$post.error.message}</span>
21+
{#if post.error}
22+
<span>Error: {post.error.message}</span>
2323
{/if}
24-
{#if $post.isSuccess}
25-
<h1>{$post.data.title}</h1>
24+
{#if post.isSuccess}
25+
<h1>{post.data.title}</h1>
2626
<div>
27-
<p>{$post.data.body}</p>
27+
<p>{post.data.body}</p>
2828
</div>
29-
<div>{$post.isFetching ? 'Background Updating...' : ' '}</div>
29+
<div>{post.isFetching ? 'Background Updating...' : ' '}</div>
3030
{/if}
3131
</div>

examples/svelte/basic/src/lib/Posts.svelte

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717

1818
<div>
1919
<div>
20-
{#if $posts.status === 'pending'}
20+
{#if posts.status === 'pending'}
2121
<span>Loading...</span>
22-
{:else if $posts.status === 'error'}
23-
<span>Error: {$posts.error.message}</span>
22+
{:else if posts.status === 'error'}
23+
<span>Error: {posts.error.message}</span>
2424
{:else}
2525
<ul>
26-
{#each $posts.data as post}
26+
{#each posts.data as post}
2727
<article>
2828
<a
2929
href={`/${post.id}`}
@@ -38,7 +38,7 @@
3838
</article>
3939
{/each}
4040
</ul>
41-
{#if $posts.isFetching}
41+
{#if posts.isFetching}
4242
<div style="color:darkgreen; font-weight:700">
4343
Background Updating...
4444
</div>

examples/svelte/basic/src/routes/+layout.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import { PersistQueryClientProvider } from '@tanstack/svelte-query-persist-client'
77
import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'
88
9+
const { children } = $props()
10+
911
const queryClient = new QueryClient({
1012
defaultOptions: {
1113
queries: {
@@ -21,7 +23,7 @@
2123

2224
<PersistQueryClientProvider client={queryClient} persistOptions={{ persister }}>
2325
<main>
24-
<slot />
26+
{@render children()}
2527
</main>
2628
<SvelteQueryDevtools />
2729
</PersistQueryClientProvider>
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
<script lang="ts">
22
import Post from '$lib/Post.svelte'
3-
import type { PageData } from './$types'
43
5-
export let data: PageData
4+
const { data } = $props()
65
</script>
76

87
<Post postId={data.postId} />

examples/svelte/load-more-infinite-scroll/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
"devDependencies": {
1616
"@sveltejs/adapter-auto": "^3.2.2",
1717
"@sveltejs/kit": "^2.5.18",
18-
"@sveltejs/vite-plugin-svelte": "^3.1.1",
19-
"svelte": "^4.2.18",
18+
"@sveltejs/vite-plugin-svelte": "^4.0.0-next.4",
19+
"svelte": "5.0.0-next.192",
2020
"svelte-check": "^3.8.4",
2121
"typescript": "5.3.3",
2222
"vite": "^5.3.5"

0 commit comments

Comments
 (0)