Skip to content

Commit 4974ba8

Browse files
committed
wip examples
1 parent a7c62ca commit 4974ba8

File tree

11 files changed

+2352
-1408
lines changed

11 files changed

+2352
-1408
lines changed

examples/svelte/svelte-melt/package.json

+9-9
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@
1313
},
1414
"devDependencies": {
1515
"@sveltejs/adapter-auto": "^3.1.1",
16-
"@sveltejs/kit": "^2.5.0",
16+
"@sveltejs/kit": "^2.5.2",
1717
"@sveltejs/vite-plugin-svelte": "^3.0.2",
18-
"@types/eslint": "8.56.2",
19-
"@typescript-eslint/eslint-plugin": "^5.62.0",
20-
"@typescript-eslint/parser": "^5.62.0",
21-
"eslint": "^8.56.0",
18+
"@types/eslint": "8.56.5",
19+
"@typescript-eslint/eslint-plugin": "^7.1.1",
20+
"@typescript-eslint/parser": "^7.1.1",
21+
"eslint": "^8.57.0",
2222
"eslint-config-prettier": "^9.1.0",
2323
"eslint-plugin-svelte": "^2.35.1",
2424
"prettier": "^3.2.5",
25-
"prettier-plugin-svelte": "^3.2.1",
26-
"svelte": "5.0.0-next.68",
27-
"svelte-check": "^3.6.4",
25+
"prettier-plugin-svelte": "^3.2.2",
26+
"svelte": "5.0.0-next.80",
27+
"svelte-check": "^3.6.6",
2828
"tslib": "^2.6.2",
2929
"typescript": "^5.3.3",
30-
"vite": "^5.1.2"
30+
"vite": "^5.1.5"
3131
},
3232
"type": "module",
3333
"dependencies": {

examples/svelte/svelte-melt/src/routes/+page.svelte

+5
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,13 @@
22
import Simple from './paginate.svelte';
33
import Cache from './cacheUpdate.svelte';
44
import Simple1 from './test.svelte';
5+
import DerivedQuery from './derivedQuery.svelte';
56
</script>
67

8+
<h1>testing list query cache update</h1>
9+
<Simple />
10+
<h1>testing DerivedQuery cache update</h1>
11+
<DerivedQuery />
712
<h1>testing pagination with createQuery</h1>
813
<Simple />
914
<hr />
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
export const csr = true;
21

3-
export const ssr = false;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<script lang="ts">
2+
import { createQuery, useQueryClient } from 'svelte-query/dev';
3+
import { bookFilterStore } from './store.svelte';
4+
import { unstate } from 'svelte';
5+
import { useQuery } from './external';
6+
import { useSvelteExtensionQuery } from './external.svelte';
7+
let a = { a: 1 };
8+
let b = ['hi', bookFilterStore];
9+
let p = $derived({ derived_state: bookFilterStore.paginate.page + 1 });
10+
function query(p) {
11+
const data = createQuery({
12+
queryKey: () => ['paginate', b],
13+
queryFn: async () => {
14+
const s = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'].map((v) => {
15+
return { title: v };
16+
});
17+
if (Math.abs(bookFilterStore.paginate.page % 2) == 1) {
18+
return s.slice(0, 5);
19+
}
20+
return s.slice(5, 6);
21+
},
22+
staleTime: 5000,
23+
enabled: bookFilterStore.paginate.page % 2 == 1
24+
});
25+
return data;
26+
}
27+
let data = query(p);
28+
</script>
29+
30+
<h2>testing derived query with list</h2>
31+
32+
{data.fetchStatus}
33+
{data.isLoading}
34+
{data.isFetching}
35+
{data.isRefetching}
36+
<button
37+
onclick={() => {
38+
console.log('click +1');
39+
bookFilterStore.paginate.page += 1;
40+
// p += 1;
41+
}}>next</button
42+
>
43+
<button
44+
onclick={() => {
45+
console.log('click -1');
46+
bookFilterStore.paginate.page -= 1;
47+
// p += 1;
48+
}}>prev</button
49+
>
50+
{bookFilterStore.paginate.page}
51+
{#each data?.data ?? [] as item}
52+
<div>{item.title}</div>
53+
{/each}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createQuery } from 'svelte-query/dev';
2+
export function useSvelteExtensionQuery(props) {
3+
const enabled = $derived({
4+
queryKey: ['sv-externel', props],
5+
queryFn: () => {
6+
return Date.now();
7+
},
8+
enabled: () => props.paginate.page > 0
9+
});
10+
return createQuery(enabled);
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { createQuery } from 'svelte-query';
2+
export function useQuery(props) {
3+
return createQuery({
4+
queryKey: ['eternal', props],
5+
queryFn: () => {
6+
return Date.now();
7+
},
8+
enabled: props.paginate.page > 0
9+
});
10+
}

examples/svelte/svelte-melt/src/routes/paginate.svelte

+3-1
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,16 @@
5050
onclick={() => {
5151
console.log('click -1');
5252
bookFilterStore.paginate.page -= 1;
53+
//p += 1;
5354
}}>prev</button
5455
>
5556
{bookFilterStore.paginate.page}
5657
{#each data?.data ?? [] as item}
5758
<div>{item.title}</div>
5859
{/each}
5960

60-
-------------
61+
<!-- -------------
6162
{external.data}
6263
-------------
6364
{externalsv.data}
65+
-->

packages/svelte-query-runes/package.json

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"name": "svelte-query-runes",
3-
"version": "5.14.2-beta.18.1",
2+
"name": "svelte-query",
3+
"version": "5.14.2-beta.18.4",
44
"private": false,
55
"description": "Primitives for managing, caching and syncing asynchronous and remote data in Svelte",
66
"author": "zhiheng",
@@ -19,13 +19,12 @@
1919
"exports": {
2020
".": {
2121
"types": "./dist/index.d.ts",
22-
"default": "./src/index",
2322
"svelte": "./dist/index.js"
2423
},
2524
"./dev": {
2625
"types": "./dist/index.d.ts",
27-
"default": "./src/index",
28-
"svelte": "./dist/index.js"
26+
"default": "./src/index.ts",
27+
"svelte": "./src/index.ts"
2928
}
3029
},
3130
"files": [

packages/svelte-query-runes/src/createBaseQuery.svelte.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,18 @@ export function createBaseQuery<
3434

3535
/** Creates a store that has the default options applied */
3636
function updateOptions() {
37-
const queryKey = optionsStore().queryKey?.map((v) => unstate(v))
37+
const key = optionsStore().queryKey
38+
const keyFn = typeof key === 'function' ? key : () => key //alow query-key and enable to be a function
39+
const queryKey = JSON.parse(JSON.stringify(keyFn())) // remove proxy
3840

3941
const defaultedOptions = client.defaultQueryOptions({
4042
...optionsStore(),
4143
//@ts-ignore
4244
queryKey: queryKey, // prevent reactive query in devTools,
4345
enabled:
4446
typeof optionsStore().enabled == 'function'
45-
? optionsStore().enabled()
47+
? //@ts-ignore
48+
optionsStore().enabled()
4649
: optionsStore().enabled,
4750
})
4851

packages/svelte-query-runes/src/types.ts

+16-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,14 @@ import type {
1010
QueryObserverOptions,
1111
QueryObserverResult,
1212
} from '@tanstack/query-core'
13-
13+
type Identity<T> = { [P in keyof T]: T[P] }
14+
type Replace<T, K extends keyof T, TReplace> = Identity<
15+
Pick<T, Exclude<keyof T, K>> & {
16+
[P in K]: TReplace
17+
}
18+
>
1419
export type FnOrVal<T> = (() => T) | T // can be a fn that returns reactive statement or $state or $derived deep states
20+
1521
/** Options for createBaseQuery */
1622
export type CreateBaseQueryOptions<
1723
TQueryFnData = unknown,
@@ -20,7 +26,15 @@ export type CreateBaseQueryOptions<
2026
TQueryData = TQueryFnData,
2127
TQueryKey extends QueryKey = QueryKey,
2228
> = FnOrVal<
23-
QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
29+
Replace<
30+
Replace<
31+
QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>,
32+
'queryKey',
33+
FnOrVal<QueryKey>
34+
>,
35+
'enabled',
36+
FnOrVal<boolean>
37+
>
2438
>
2539

2640
/** Result from createBaseQuery */

0 commit comments

Comments
 (0)