soda-tanstack-query 0.0.6 → 0.0.8

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,18 +27,28 @@ __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 useQuery = 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);
41
42
  };
43
+ useQuery.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);
50
+ };
51
+ return useQuery;
42
52
  }
43
53
  exports.createUseQuery = __webpack_exports__.createUseQuery;
44
54
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
@@ -1,5 +1,5 @@
1
1
  import { DefinedInitialDataOptions, DefinedUseQueryResult, QueryClient, UndefinedInitialDataOptions, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
2
- import { IsParamRequired, StrictPartial } from "soda-type";
2
+ import { Assign, IsParamRequired, StrictPartial } from "soda-type";
3
3
  /** 参数必须的 useQuery */
4
4
  interface _UseQueryWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
5
5
  <TData = TInitSelectData>(params: TParams): UseQueryResult<NoInfer<TData>, Error>;
@@ -19,7 +19,12 @@ interface _UseQueryWithOptionalParams<TFn extends (params?: any) => any, TInitSe
19
19
  export interface UseQueryWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryWithOptionalParams<TFn, TInitSelectData> {
20
20
  }
21
21
  /** 根据参数是否必需,选择不同的 useQuery */
22
- 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
+ };
23
28
  /** 传递了初始化参数的 createUseQuery 参数 */
24
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"> {
25
30
  queryFn: TFn;
@@ -40,7 +45,12 @@ interface _UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: an
40
45
  export interface UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {
41
46
  }
42
47
  /** 根据参数是否必需,选择不同的 useQuery */
43
- 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
+ };
44
54
  /** 未传递初始化参数的 createUseQuery 参数 */
45
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"> {
46
56
  queryFn: TFn;
@@ -61,14 +71,20 @@ interface _UseQueryUndefinedInitialDataWithOptionalParams<TFn extends (params: a
61
71
  export interface UseQueryUndefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {
62
72
  }
63
73
  /** 根据参数是否必需,选择不同的 useQuery */
64
- 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
+ };
65
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"> {
66
81
  queryFn: TFn;
67
82
  queryKey: string;
68
83
  }
69
84
  export interface CreateUseQueryParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _CreateUseQueryParams<TFn, TInitSelectData> {
70
85
  }
71
- export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>): UseQueryDefinedInitialData<TFn, TInitSelectData>;
72
- export declare function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(pararm: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>): UseQueryUndefinedInitialData<TFn, TInitSelectData>;
73
- 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;
74
90
  export {};
@@ -1,15 +1,25 @@
1
- import { useQuery } from "@tanstack/react-query";
2
- function createUseQuery({ queryFn, queryKey, ...rest }) {
3
- return function(params, options, client) {
4
- return useQuery({
1
+ import { useQuery as react_query_useQuery } from "@tanstack/react-query";
2
+ function createUseQuery(params, client) {
3
+ const { queryFn, queryKey, ...rest } = params;
4
+ const useQuery = function(params2, options, client2 = client) {
5
+ return react_query_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);
13
14
  };
15
+ useQuery.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);
22
+ };
23
+ return useQuery;
14
24
  }
15
25
  export { createUseQuery };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "soda-tanstack-query",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "exports": {
@@ -3,11 +3,11 @@ import {
3
3
  DefinedUseQueryResult,
4
4
  QueryClient,
5
5
  UndefinedInitialDataOptions,
6
- useQuery,
6
+ useQuery as _useQuery,
7
7
  UseQueryOptions,
8
8
  UseQueryResult,
9
9
  } from "@tanstack/react-query"
10
- import { IsParamRequired, StrictPartial } from "soda-type"
10
+ import { Assign, IsParamRequired, StrictPartial } from "soda-type"
11
11
 
12
12
  // 要在第一个加一个重载,因为 options 是可选的,如果不加这个重载,options 类型会匹配到 DefinedInitialDataOptions,会误认为 initialData 被传递了,造成返回类型必定不为 undefined
13
13
 
@@ -72,9 +72,24 @@ export interface UseQueryWithOptionalParams<TFn extends (params?: any) => any, T
72
72
  > {}
73
73
 
74
74
  /** 根据参数是否必需,选择不同的 useQuery */
75
- export type UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
75
+ type _UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
76
76
  IsParamRequired<TFn> extends true ? UseQueryWithParams<TFn, TInitSelectData> : UseQueryWithOptionalParams<TFn, TInitSelectData>
77
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
+
78
93
  /** 传递了初始化参数的 createUseQuery 参数 */
79
94
  interface _CreateUseQueryDefinedInitialDataParams<
80
95
  TFn extends (param: any) => any,
@@ -130,11 +145,29 @@ export interface UseQueryDefinedInitialDataWithOptionalParams<
130
145
  > extends _UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {}
131
146
 
132
147
  /** 根据参数是否必需,选择不同的 useQuery */
133
- 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>>> =
134
149
  IsParamRequired<TFn> extends true
135
150
  ? UseQueryDefinedInitialDataWithParams<TFn, TInitSelectData>
136
151
  : UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData>
137
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
+
138
171
  /** 未传递初始化参数的 createUseQuery 参数 */
139
172
  interface _CreateUseQueryUndefinedInitialDataParams<
140
173
  TFn extends (param: any) => any,
@@ -190,11 +223,29 @@ export interface UseQueryUndefinedInitialDataWithOptionalParams<
190
223
  > extends _UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {}
191
224
 
192
225
  /** 根据参数是否必需,选择不同的 useQuery */
193
- export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
226
+ type _UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
194
227
  IsParamRequired<TFn> extends true
195
228
  ? UseQueryUndefinedInitialDataWithParams<TFn, TInitSelectData>
196
229
  : UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData>
197
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
+
198
249
  interface _CreateUseQueryParams<
199
250
  TFn extends (param: any) => any,
200
251
  TInitSelectData = Awaited<ReturnType<TFn>>,
@@ -213,27 +264,49 @@ export interface CreateUseQueryParams<TFn extends (param: any) => any, TInitSele
213
264
  // 根据是否传递初始化参数,选择不同的 createUseQuery,目前存在一个问题,UndefinedInitialDataOptions 和 UseQueryOptions 是完全一致的,所以匹配不到第三种可能,但这是 @tanstack/react-query 的问题
214
265
  export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
215
266
  params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>,
267
+ client?: QueryClient,
216
268
  ): UseQueryDefinedInitialData<TFn, TInitSelectData>
217
269
  export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
218
270
  pararm: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>,
271
+ client?: QueryClient,
219
272
  ): UseQueryUndefinedInitialData<TFn, TInitSelectData>
220
273
  export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
221
274
  pararm: CreateUseQueryParams<TFn, TInitSelectData>,
275
+ client?: QueryClient,
222
276
  ): UseQuery<TFn, TInitSelectData>
223
- export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>({
224
- queryFn,
225
- queryKey,
226
- ...rest
227
- }: CreateUseQueryParams<TFn, TInitSelectData>): UseQuery<TFn, TInitSelectData> {
228
- return function useRequest(params: any, options?: any, client?: QueryClient) {
229
- return useQuery(
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 useQuery: any = function useRequest(params2: any, options?: any, client2: QueryClient | undefined = client) {
285
+ return _useQuery(
230
286
  {
231
- queryKey: [queryKey, params],
232
- queryFn: () => queryFn(params),
287
+ queryKey: [queryKey, params2],
288
+ queryFn: () => queryFn(params2),
233
289
  ...rest,
234
290
  ...options,
235
291
  },
236
- client,
292
+ client2,
237
293
  )
238
294
  }
295
+
296
+ useQuery.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
+ }
301
+
302
+ return useQuery
239
303
  }
304
+
305
+ export type GetHookFromParams<Params> =
306
+ Params extends CreateUseQueryDefinedInitialDataParams<infer TFn, infer TInitSelectData>
307
+ ? UseQueryDefinedInitialData<TFn, TInitSelectData>
308
+ : Params extends CreateUseQueryUndefinedInitialDataParams<infer TFn, infer TInitSelectData>
309
+ ? UseQueryUndefinedInitialData<TFn, TInitSelectData>
310
+ : Params extends CreateUseQueryParams<infer TFn, infer TInitSelectData>
311
+ ? UseQuery<TFn, TInitSelectData>
312
+ : never