Skip to content

Commit 2c86aa0

Browse files
committed
internal: add preset code
1 parent b393993 commit 2c86aa0

File tree

7 files changed

+119
-0
lines changed

7 files changed

+119
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { QueryClientConfig, hashKey } from '@tanstack/query-core';
2+
3+
const MAX_FAILURE_COUNT = 3;
4+
5+
export const defaultQueryClientConfig = {
6+
defaultOptions: {
7+
queries: {
8+
throwOnError: true,
9+
queryKeyHashFn: hashKey,
10+
refetchOnWindowFocus: 'always',
11+
refetchOnReconnect: 'always',
12+
staleTime: 5 * 60 * 1000,
13+
retry: (failureCount, error) => {
14+
if (error instanceof Response && error.status >= 500) {
15+
return MAX_FAILURE_COUNT - failureCount > 0;
16+
}
17+
return false;
18+
},
19+
},
20+
mutations: {
21+
throwOnError: true,
22+
},
23+
},
24+
} satisfies QueryClientConfig;

src/preset/configs/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './default-query-client-config';
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { DefaultError, QueryKey } from '@tanstack/query-core';
2+
3+
import { MobxInfiniteQuery } from '../mobx-inifinite-query';
4+
import { MobxInfiniteQueryConfig } from '../mobx-inifinite-query.types';
5+
6+
import { queryClient } from './query-client';
7+
8+
export const createInfiniteQuery = <
9+
TData,
10+
TError = DefaultError,
11+
TQueryKey extends QueryKey = any,
12+
TPageParam = unknown,
13+
>(
14+
fn: MobxInfiniteQueryConfig<TData, TError, TQueryKey, TPageParam>['queryFn'],
15+
params?: Omit<
16+
MobxInfiniteQueryConfig<TData, TError, TQueryKey, TPageParam>,
17+
'queryClient' | 'queryFn'
18+
>,
19+
) => {
20+
return new MobxInfiniteQuery({
21+
queryClient,
22+
...params,
23+
queryFn: fn,
24+
onInit: (query) => {
25+
queryClient.mount();
26+
params?.onInit?.(query);
27+
},
28+
});
29+
};

src/preset/create-mutation.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { DefaultError } from '@tanstack/query-core';
2+
3+
import { MobxMutation } from '../mobx-mutation';
4+
import { MobxMutationConfig } from '../mobx-mutation.types';
5+
6+
import { queryClient } from './query-client';
7+
8+
export const creatMutation = <
9+
TData = unknown,
10+
TVariables = void,
11+
TError = DefaultError,
12+
TContext = unknown,
13+
>(
14+
fn: MobxMutationConfig<TData, TVariables, TError, TContext>['mutationFn'],
15+
params?: Omit<
16+
MobxMutationConfig<TData, TVariables, TError, TContext>,
17+
'queryClient' | 'mutationFn'
18+
>,
19+
) => {
20+
return new MobxMutation({
21+
queryClient,
22+
...params,
23+
mutationFn: fn,
24+
onInit: (mutation) => {
25+
queryClient.mount();
26+
params?.onInit?.(mutation);
27+
},
28+
});
29+
};

src/preset/create-query.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { DefaultError, QueryKey } from '@tanstack/query-core';
2+
3+
import { MobxQuery } from '../mobx-query';
4+
import { MobxQueryConfig } from '../mobx-query.types';
5+
6+
import { queryClient } from './query-client';
7+
8+
export const createQuery = <
9+
TData,
10+
TError = DefaultError,
11+
TQueryKey extends QueryKey = any,
12+
>(
13+
fn: MobxQueryConfig<TData, TError, TQueryKey>['queryFn'],
14+
params?: Omit<
15+
MobxQueryConfig<TData, TError, TQueryKey>,
16+
'queryClient' | 'queryFn'
17+
>,
18+
) => {
19+
return new MobxQuery({
20+
queryClient,
21+
...params,
22+
queryFn: fn,
23+
onInit: (query) => {
24+
queryClient.mount();
25+
params?.onInit?.(query);
26+
},
27+
});
28+
};

src/preset/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './query-client';
2+
export * from './create-query';
3+
export * from './create-mutation';

src/preset/query-client.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { QueryClient } from '@tanstack/query-core';
2+
3+
import { defaultQueryClientConfig } from './configs';
4+
5+
export const queryClient = new QueryClient(defaultQueryClientConfig);

0 commit comments

Comments
 (0)