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({ queryFn, queryKey, ...rest }) {
31
- return function(params, options, client) {
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
- params
36
+ params2
36
37
  ],
37
- queryFn: ()=>queryFn(params),
38
+ queryFn: ()=>queryFn(params2),
38
39
  ...rest,
39
40
  ...options
40
- }, client);
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
- export type UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryWithParams<TFn, TInitSelectData> : UseQueryWithOptionalParams<TFn, TInitSelectData>;
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 UseQueryDefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryDefinedInitialDataWithParams<TFn, TInitSelectData> : UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData>;
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
- export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryUndefinedInitialDataWithParams<TFn, TInitSelectData> : UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData>;
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>): UseQueryDefinedInitialData<TFn, TInitSelectData>;
74
- export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(pararm: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>): UseQueryUndefinedInitialData<TFn, TInitSelectData>;
75
- export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(pararm: CreateUseQueryParams<TFn, TInitSelectData>): UseQuery<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({ queryFn, queryKey, ...rest }) {
3
- return function(params, options, client) {
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
- params
8
+ params2
8
9
  ],
9
- queryFn: ()=>queryFn(params),
10
+ queryFn: ()=>queryFn(params2),
10
11
  ...rest,
11
12
  ...options
12
- }, client);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "soda-tanstack-query",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "exports": {
@@ -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
- export type UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
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 UseQueryDefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
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
- export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
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
- export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>({
227
- queryFn,
228
- queryKey,
229
- ...rest
230
- }: CreateUseQueryParams<TFn, TInitSelectData>): UseQuery<TFn, TInitSelectData> {
231
- return function useRequest(params: any, options?: any, client?: QueryClient) {
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, params],
235
- queryFn: () => queryFn(params),
287
+ queryKey: [queryKey, params2],
288
+ queryFn: () => queryFn(params2),
236
289
  ...rest,
237
290
  ...options,
238
291
  },
239
- client,
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