soda-tanstack-query 0.0.5 → 0.0.7
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.
|
@@ -27,17 +27,26 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
27
27
|
createUseQuery: ()=>createUseQuery
|
|
28
28
|
});
|
|
29
29
|
const react_query_namespaceObject = require("@tanstack/react-query");
|
|
30
|
-
function createUseQuery(
|
|
31
|
-
|
|
30
|
+
function createUseQuery(params, client) {
|
|
31
|
+
const { queryFn, queryKey, ...rest } = params;
|
|
32
|
+
const useRequest = function(params2, options, client2 = client) {
|
|
32
33
|
return (0, react_query_namespaceObject.useQuery)({
|
|
33
34
|
queryKey: [
|
|
34
35
|
queryKey,
|
|
35
|
-
|
|
36
|
+
params2
|
|
36
37
|
],
|
|
37
|
-
queryFn: ()=>queryFn(
|
|
38
|
+
queryFn: ()=>queryFn(params2),
|
|
38
39
|
...rest,
|
|
39
40
|
...options
|
|
40
|
-
},
|
|
41
|
+
}, client2);
|
|
42
|
+
};
|
|
43
|
+
useRequest.refine = function(params2, client2) {
|
|
44
|
+
params2 = "function" == typeof params2 ? params2(params, client) : params2;
|
|
45
|
+
client2 = "function" == typeof client2 ? client2(params, client) : client2;
|
|
46
|
+
return createUseQuery({
|
|
47
|
+
...params,
|
|
48
|
+
...params2
|
|
49
|
+
}, client2 ?? client);
|
|
41
50
|
};
|
|
42
51
|
}
|
|
43
52
|
exports.createUseQuery = __webpack_exports__.createUseQuery;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { DefinedInitialDataOptions, DefinedUseQueryResult, QueryClient, UndefinedInitialDataOptions, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
|
|
2
|
-
import { StrictPartial } from "soda-type";
|
|
3
|
-
/** 判断函数的参数是否为必需的 */
|
|
4
|
-
export type IsParamRequired<TFn extends (params: any) => any> = Parameters<TFn> extends [param: any] ? true : false;
|
|
2
|
+
import { Assign, IsParamRequired, StrictPartial } from "soda-type";
|
|
5
3
|
/** 参数必须的 useQuery */
|
|
6
4
|
interface _UseQueryWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
|
|
7
5
|
<TData = TInitSelectData>(params: TParams): UseQueryResult<NoInfer<TData>, Error>;
|
|
@@ -21,7 +19,12 @@ interface _UseQueryWithOptionalParams<TFn extends (params?: any) => any, TInitSe
|
|
|
21
19
|
export interface UseQueryWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryWithOptionalParams<TFn, TInitSelectData> {
|
|
22
20
|
}
|
|
23
21
|
/** 根据参数是否必需,选择不同的 useQuery */
|
|
24
|
-
|
|
22
|
+
type _UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryWithParams<TFn, TInitSelectData> : UseQueryWithOptionalParams<TFn, TInitSelectData>;
|
|
23
|
+
export type UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = _UseQuery<TFn, TInitSelectData> & {
|
|
24
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
25
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
26
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
27
|
+
};
|
|
25
28
|
/** 传递了初始化参数的 createUseQuery 参数 */
|
|
26
29
|
interface _CreateUseQueryDefinedInitialDataParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> extends Omit<DefinedInitialDataOptions<TResponse, Error, TInitSelectData, [string, TParams]>, "queryKey" | "queryFn"> {
|
|
27
30
|
queryFn: TFn;
|
|
@@ -42,7 +45,12 @@ interface _UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: an
|
|
|
42
45
|
export interface UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {
|
|
43
46
|
}
|
|
44
47
|
/** 根据参数是否必需,选择不同的 useQuery */
|
|
45
|
-
export type
|
|
48
|
+
export type _UseQueryDefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryDefinedInitialDataWithParams<TFn, TInitSelectData> : UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData>;
|
|
49
|
+
export type UseQueryDefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = _UseQueryDefinedInitialData<TFn, TInitSelectData> & {
|
|
50
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
51
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
52
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
53
|
+
};
|
|
46
54
|
/** 未传递初始化参数的 createUseQuery 参数 */
|
|
47
55
|
interface _CreateUseQueryUndefinedInitialDataParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> extends Omit<UndefinedInitialDataOptions<TResponse, Error, TInitSelectData, [string, TParams]>, "queryKey" | "queryFn"> {
|
|
48
56
|
queryFn: TFn;
|
|
@@ -63,14 +71,20 @@ interface _UseQueryUndefinedInitialDataWithOptionalParams<TFn extends (params: a
|
|
|
63
71
|
export interface UseQueryUndefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {
|
|
64
72
|
}
|
|
65
73
|
/** 根据参数是否必需,选择不同的 useQuery */
|
|
66
|
-
|
|
74
|
+
type _UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryUndefinedInitialDataWithParams<TFn, TInitSelectData> : UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData>;
|
|
75
|
+
export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = _UseQueryUndefinedInitialData<TFn, TInitSelectData> & {
|
|
76
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
77
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
78
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(params: TRefineParams | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams), client?: QueryClient | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined)): GetHookFromParams<Assign<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>;
|
|
79
|
+
};
|
|
67
80
|
interface _CreateUseQueryParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> extends Omit<UseQueryOptions<TResponse, Error, TInitSelectData, [string, TParams]>, "queryKey" | "queryFn"> {
|
|
68
81
|
queryFn: TFn;
|
|
69
82
|
queryKey: string;
|
|
70
83
|
}
|
|
71
84
|
export interface CreateUseQueryParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _CreateUseQueryParams<TFn, TInitSelectData> {
|
|
72
85
|
}
|
|
73
|
-
export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData
|
|
74
|
-
export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(pararm: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData
|
|
75
|
-
export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(pararm: CreateUseQueryParams<TFn, TInitSelectData
|
|
86
|
+
export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient): UseQueryDefinedInitialData<TFn, TInitSelectData>;
|
|
87
|
+
export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(pararm: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient): UseQueryUndefinedInitialData<TFn, TInitSelectData>;
|
|
88
|
+
export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(pararm: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient): UseQuery<TFn, TInitSelectData>;
|
|
89
|
+
export type GetHookFromParams<Params> = Params extends CreateUseQueryDefinedInitialDataParams<infer TFn, infer TInitSelectData> ? UseQueryDefinedInitialData<TFn, TInitSelectData> : Params extends CreateUseQueryUndefinedInitialDataParams<infer TFn, infer TInitSelectData> ? UseQueryUndefinedInitialData<TFn, TInitSelectData> : Params extends CreateUseQueryParams<infer TFn, infer TInitSelectData> ? UseQuery<TFn, TInitSelectData> : never;
|
|
76
90
|
export {};
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import { useQuery } from "@tanstack/react-query";
|
|
2
|
-
function createUseQuery(
|
|
3
|
-
|
|
2
|
+
function createUseQuery(params, client) {
|
|
3
|
+
const { queryFn, queryKey, ...rest } = params;
|
|
4
|
+
const useRequest = function(params2, options, client2 = client) {
|
|
4
5
|
return useQuery({
|
|
5
6
|
queryKey: [
|
|
6
7
|
queryKey,
|
|
7
|
-
|
|
8
|
+
params2
|
|
8
9
|
],
|
|
9
|
-
queryFn: ()=>queryFn(
|
|
10
|
+
queryFn: ()=>queryFn(params2),
|
|
10
11
|
...rest,
|
|
11
12
|
...options
|
|
12
|
-
},
|
|
13
|
+
}, client2);
|
|
14
|
+
};
|
|
15
|
+
useRequest.refine = function(params2, client2) {
|
|
16
|
+
params2 = "function" == typeof params2 ? params2(params, client) : params2;
|
|
17
|
+
client2 = "function" == typeof client2 ? client2(params, client) : client2;
|
|
18
|
+
return createUseQuery({
|
|
19
|
+
...params,
|
|
20
|
+
...params2
|
|
21
|
+
}, client2 ?? client);
|
|
13
22
|
};
|
|
14
23
|
}
|
|
15
24
|
export { createUseQuery };
|
package/package.json
CHANGED
|
@@ -7,10 +7,7 @@ import {
|
|
|
7
7
|
UseQueryOptions,
|
|
8
8
|
UseQueryResult,
|
|
9
9
|
} from "@tanstack/react-query"
|
|
10
|
-
import { StrictPartial } from "soda-type"
|
|
11
|
-
|
|
12
|
-
/** 判断函数的参数是否为必需的 */
|
|
13
|
-
export type IsParamRequired<TFn extends (params: any) => any> = Parameters<TFn> extends [param: any] ? true : false
|
|
10
|
+
import { Assign, IsParamRequired, StrictPartial } from "soda-type"
|
|
14
11
|
|
|
15
12
|
// 要在第一个加一个重载,因为 options 是可选的,如果不加这个重载,options 类型会匹配到 DefinedInitialDataOptions,会误认为 initialData 被传递了,造成返回类型必定不为 undefined
|
|
16
13
|
|
|
@@ -75,9 +72,24 @@ export interface UseQueryWithOptionalParams<TFn extends (params?: any) => any, T
|
|
|
75
72
|
> {}
|
|
76
73
|
|
|
77
74
|
/** 根据参数是否必需,选择不同的 useQuery */
|
|
78
|
-
|
|
75
|
+
type _UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
|
|
79
76
|
IsParamRequired<TFn> extends true ? UseQueryWithParams<TFn, TInitSelectData> : UseQueryWithOptionalParams<TFn, TInitSelectData>
|
|
80
77
|
|
|
78
|
+
export type UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = _UseQuery<TFn, TInitSelectData> & {
|
|
79
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
80
|
+
params: TRefineParams | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
81
|
+
client?: QueryClient | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
82
|
+
): GetHookFromParams<Assign<CreateUseQueryParams<TFn, TInitSelectData>, TRefineParams>>
|
|
83
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
84
|
+
params: TRefineParams | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
85
|
+
client?: QueryClient | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
86
|
+
): GetHookFromParams<Assign<CreateUseQueryParams<TFn, TInitSelectData>, TRefineParams>>
|
|
87
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
88
|
+
params: TRefineParams | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
89
|
+
client?: QueryClient | ((params: CreateUseQueryParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
90
|
+
): GetHookFromParams<Assign<CreateUseQueryParams<TFn, TInitSelectData>, TRefineParams>>
|
|
91
|
+
}
|
|
92
|
+
|
|
81
93
|
/** 传递了初始化参数的 createUseQuery 参数 */
|
|
82
94
|
interface _CreateUseQueryDefinedInitialDataParams<
|
|
83
95
|
TFn extends (param: any) => any,
|
|
@@ -133,11 +145,29 @@ export interface UseQueryDefinedInitialDataWithOptionalParams<
|
|
|
133
145
|
> extends _UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {}
|
|
134
146
|
|
|
135
147
|
/** 根据参数是否必需,选择不同的 useQuery */
|
|
136
|
-
export type
|
|
148
|
+
export type _UseQueryDefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
|
|
137
149
|
IsParamRequired<TFn> extends true
|
|
138
150
|
? UseQueryDefinedInitialDataWithParams<TFn, TInitSelectData>
|
|
139
151
|
: UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData>
|
|
140
152
|
|
|
153
|
+
export type UseQueryDefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = _UseQueryDefinedInitialData<
|
|
154
|
+
TFn,
|
|
155
|
+
TInitSelectData
|
|
156
|
+
> & {
|
|
157
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
158
|
+
params: TRefineParams | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
159
|
+
client?: QueryClient | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
160
|
+
): GetHookFromParams<Assign<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>
|
|
161
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
162
|
+
params: TRefineParams | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
163
|
+
client?: QueryClient | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
164
|
+
): GetHookFromParams<Assign<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>
|
|
165
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
166
|
+
params: TRefineParams | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
167
|
+
client?: QueryClient | ((params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
168
|
+
): GetHookFromParams<Assign<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>
|
|
169
|
+
}
|
|
170
|
+
|
|
141
171
|
/** 未传递初始化参数的 createUseQuery 参数 */
|
|
142
172
|
interface _CreateUseQueryUndefinedInitialDataParams<
|
|
143
173
|
TFn extends (param: any) => any,
|
|
@@ -193,11 +223,29 @@ export interface UseQueryUndefinedInitialDataWithOptionalParams<
|
|
|
193
223
|
> extends _UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {}
|
|
194
224
|
|
|
195
225
|
/** 根据参数是否必需,选择不同的 useQuery */
|
|
196
|
-
|
|
226
|
+
type _UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
|
|
197
227
|
IsParamRequired<TFn> extends true
|
|
198
228
|
? UseQueryUndefinedInitialDataWithParams<TFn, TInitSelectData>
|
|
199
229
|
: UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData>
|
|
200
230
|
|
|
231
|
+
export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = _UseQueryUndefinedInitialData<
|
|
232
|
+
TFn,
|
|
233
|
+
TInitSelectData
|
|
234
|
+
> & {
|
|
235
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
236
|
+
params: TRefineParams | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
237
|
+
client?: QueryClient | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
238
|
+
): GetHookFromParams<Assign<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>
|
|
239
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
240
|
+
params: TRefineParams | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
241
|
+
client?: QueryClient | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
242
|
+
): GetHookFromParams<Assign<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>
|
|
243
|
+
refine<TRefineParams extends StrictPartial<CreateUseQueryParams<TFn, TInitSelectData>, "queryKey" | "queryFn">>(
|
|
244
|
+
params: TRefineParams | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => TRefineParams),
|
|
245
|
+
client?: QueryClient | ((params: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, client?: QueryClient) => QueryClient | undefined),
|
|
246
|
+
): GetHookFromParams<Assign<CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>, TRefineParams>>
|
|
247
|
+
}
|
|
248
|
+
|
|
201
249
|
interface _CreateUseQueryParams<
|
|
202
250
|
TFn extends (param: any) => any,
|
|
203
251
|
TInitSelectData = Awaited<ReturnType<TFn>>,
|
|
@@ -216,27 +264,47 @@ export interface CreateUseQueryParams<TFn extends (param: any) => any, TInitSele
|
|
|
216
264
|
// 根据是否传递初始化参数,选择不同的 createUseQuery,目前存在一个问题,UndefinedInitialDataOptions 和 UseQueryOptions 是完全一致的,所以匹配不到第三种可能,但这是 @tanstack/react-query 的问题
|
|
217
265
|
export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
|
|
218
266
|
params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>,
|
|
267
|
+
client?: QueryClient,
|
|
219
268
|
): UseQueryDefinedInitialData<TFn, TInitSelectData>
|
|
220
269
|
export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
|
|
221
270
|
pararm: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>,
|
|
271
|
+
client?: QueryClient,
|
|
222
272
|
): UseQueryUndefinedInitialData<TFn, TInitSelectData>
|
|
223
273
|
export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
|
|
224
274
|
pararm: CreateUseQueryParams<TFn, TInitSelectData>,
|
|
275
|
+
client?: QueryClient,
|
|
225
276
|
): UseQuery<TFn, TInitSelectData>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
277
|
+
|
|
278
|
+
export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
|
|
279
|
+
params: CreateUseQueryParams<TFn, TInitSelectData>,
|
|
280
|
+
client?: QueryClient,
|
|
281
|
+
): any {
|
|
282
|
+
const { queryFn, queryKey, ...rest } = params
|
|
283
|
+
|
|
284
|
+
const useRequest: any = function useRequest(params2: any, options?: any, client2: QueryClient | undefined = client) {
|
|
232
285
|
return useQuery(
|
|
233
286
|
{
|
|
234
|
-
queryKey: [queryKey,
|
|
235
|
-
queryFn: () => queryFn(
|
|
287
|
+
queryKey: [queryKey, params2],
|
|
288
|
+
queryFn: () => queryFn(params2),
|
|
236
289
|
...rest,
|
|
237
290
|
...options,
|
|
238
291
|
},
|
|
239
|
-
|
|
292
|
+
client2,
|
|
240
293
|
)
|
|
241
294
|
}
|
|
295
|
+
|
|
296
|
+
useRequest.refine = function refine(params2: any, client2?: any) {
|
|
297
|
+
params2 = typeof params2 === "function" ? params2(params, client) : params2
|
|
298
|
+
client2 = typeof client2 === "function" ? client2(params, client) : client2
|
|
299
|
+
return createUseQuery({ ...params, ...params2 }, client2 ?? client)
|
|
300
|
+
}
|
|
242
301
|
}
|
|
302
|
+
|
|
303
|
+
export type GetHookFromParams<Params> =
|
|
304
|
+
Params extends CreateUseQueryDefinedInitialDataParams<infer TFn, infer TInitSelectData>
|
|
305
|
+
? UseQueryDefinedInitialData<TFn, TInitSelectData>
|
|
306
|
+
: Params extends CreateUseQueryUndefinedInitialDataParams<infer TFn, infer TInitSelectData>
|
|
307
|
+
? UseQueryUndefinedInitialData<TFn, TInitSelectData>
|
|
308
|
+
: Params extends CreateUseQueryParams<infer TFn, infer TInitSelectData>
|
|
309
|
+
? UseQuery<TFn, TInitSelectData>
|
|
310
|
+
: never
|