soda-tanstack-query 0.0.1 → 0.0.3

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.
@@ -1,75 +1,76 @@
1
1
  import { DefinedInitialDataOptions, DefinedUseQueryResult, QueryClient, UndefinedInitialDataOptions, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
2
+ import { StrictPartial } from "soda-type";
2
3
  /** 判断函数的参数是否为必需的 */
3
4
  export type IsParamRequired<TFn extends (params: any) => any> = Parameters<TFn> extends [param: any] ? true : false;
4
5
  /** 参数必须的 useQuery */
5
- interface _UseQueryWithParams<TFn extends (params: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
6
- <TData = TResponse>(params: TParams): UseQueryResult<NoInfer<TData>, Error>;
7
- <TData = TResponse>(params: TParams, options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
8
- <TData = TResponse>(params: TParams, options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
9
- <TData = TResponse>(params: TParams, options?: Omit<UseQueryOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
6
+ interface _UseQueryWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
7
+ <TData = TInitSelectData>(params: TParams): UseQueryResult<NoInfer<TData>, Error>;
8
+ <TData = TInitSelectData>(params: TParams, options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
9
+ <TData = TInitSelectData>(params: TParams, options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
10
+ <TData = TInitSelectData>(params: TParams, options?: Omit<UseQueryOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
10
11
  }
11
- export interface UseQueryWithParams<TFn extends (params: any) => any> extends _UseQueryWithParams<TFn> {
12
+ export interface UseQueryWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryWithParams<TFn, TInitSelectData> {
12
13
  }
13
14
  /** 参数可选的 useQuery */
14
- interface _UseQueryWithOptionalParams<TFn extends (params?: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
15
- <TData = TResponse>(params?: TParams): UseQueryResult<NoInfer<TData>, Error>;
16
- <TData = TResponse>(params?: TParams, options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
17
- <TData = TResponse>(params?: TParams, options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
18
- <TData = TResponse>(params?: TParams, options?: Omit<UseQueryOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
15
+ interface _UseQueryWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
16
+ <TData = TInitSelectData>(params?: TParams): UseQueryResult<NoInfer<TData>, Error>;
17
+ <TData = TInitSelectData>(params?: TParams, options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
18
+ <TData = TInitSelectData>(params?: TParams, options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
19
+ <TData = TInitSelectData>(params?: TParams, options?: Omit<UseQueryOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
19
20
  }
20
- export interface UseQueryWithOptionalParams<TFn extends (params?: any) => any> extends _UseQueryWithOptionalParams<TFn> {
21
+ export interface UseQueryWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryWithOptionalParams<TFn, TInitSelectData> {
21
22
  }
22
23
  /** 根据参数是否必需,选择不同的 useQuery */
23
- export type UseQuery<TFn extends (param: any) => any> = IsParamRequired<TFn> extends true ? UseQueryWithParams<TFn> : UseQueryWithOptionalParams<TFn>;
24
+ export type UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryWithParams<TFn, TInitSelectData> : UseQueryWithOptionalParams<TFn, TInitSelectData>;
24
25
  /** 传递了初始化参数的 createUseQuery 参数 */
25
- export interface _CreateUseQueryDefinedInitialDataParams<TFn extends (param: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> extends Omit<DefinedInitialDataOptions<TResponse, Error, TResponse, [string, TParams]>, "queryKey" | "queryFn" | "select"> {
26
+ export 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"> {
26
27
  queryFn: TFn;
27
28
  queryKey: string;
28
29
  }
29
- export interface CreateUseQueryDefinedInitialDataParams<TFn extends (param: any) => any> extends _CreateUseQueryDefinedInitialDataParams<TFn> {
30
+ export interface CreateUseQueryDefinedInitialDataParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData> {
30
31
  }
31
32
  /** 传递了初始化参数的参数必需的 useQuery */
32
- interface _UseQueryDefinedInitialDataWithParams<TFn extends (params: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
33
- <TData = TResponse>(params: TParams, options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
33
+ interface _UseQueryDefinedInitialDataWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
34
+ <TData = TInitSelectData>(params: TParams, options?: StrictPartial<Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, "initialData">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
34
35
  }
35
- export interface UseQueryDefinedInitialDataWithParams<TFn extends (params: any) => any> extends _UseQueryDefinedInitialDataWithParams<TFn> {
36
+ export interface UseQueryDefinedInitialDataWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryDefinedInitialDataWithParams<TFn, TInitSelectData> {
36
37
  }
37
38
  /** 传递了初始化参数的参数可选的 useQuery */
38
- interface _UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
39
- <TData = TResponse>(params?: TParams, options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
39
+ interface _UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
40
+ <TData = TInitSelectData>(params?: TParams, options?: StrictPartial<Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, "initialData">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
40
41
  }
41
- export interface UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any> extends _UseQueryDefinedInitialDataWithOptionalParams<TFn> {
42
+ export interface UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {
42
43
  }
43
44
  /** 根据参数是否必需,选择不同的 useQuery */
44
- export type UseQueryDefinedInitialData<TFn extends (params?: any) => any> = IsParamRequired<TFn> extends true ? UseQueryDefinedInitialDataWithParams<TFn> : UseQueryDefinedInitialDataWithOptionalParams<TFn>;
45
+ export type UseQueryDefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryDefinedInitialDataWithParams<TFn, TInitSelectData> : UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData>;
45
46
  /** 未传递初始化参数的 createUseQuery 参数 */
46
- export interface _CreateUseQueryUndefinedInitialDataParams<TFn extends (param: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> extends Omit<UndefinedInitialDataOptions<TResponse, Error, TResponse, [string, TParams]>, "queryKey" | "queryFn" | "select"> {
47
+ export 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"> {
47
48
  queryFn: TFn;
48
49
  queryKey: string;
49
50
  }
50
- export interface CreateUseQueryUndefinedInitialDataParams<TFn extends (param: any) => any> extends _CreateUseQueryUndefinedInitialDataParams<TFn> {
51
+ export interface CreateUseQueryUndefinedInitialDataParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData> {
51
52
  }
52
53
  /** 未传递初始化参数的参数必需的 useQuery */
53
- interface _UseQueryUndefinedInitialDataWithParams<TFn extends (params: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
54
- <TData = TResponse>(params: TParams, options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
54
+ interface _UseQueryUndefinedInitialDataWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
55
+ <TData = TInitSelectData>(params: TParams, options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
55
56
  }
56
- export interface UseQueryUndefinedInitialDataWithParams<TFn extends (params: any) => any> extends _UseQueryUndefinedInitialDataWithParams<TFn> {
57
+ export interface UseQueryUndefinedInitialDataWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryUndefinedInitialDataWithParams<TFn, TInitSelectData> {
57
58
  }
58
59
  /** 未传递初始化参数的参数可选的 useQuery */
59
- interface _UseQueryUndefinedInitialDataWithOptionalParams<TFn extends (params: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
60
- <TData = TResponse>(params?: TParams, options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): DefinedUseQueryResult<NoInfer<TData>, Error>;
60
+ interface _UseQueryUndefinedInitialDataWithOptionalParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
61
+ <TData = TInitSelectData>(params?: TParams, options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, client?: QueryClient): UseQueryResult<NoInfer<TData>, Error>;
61
62
  }
62
- export interface UseQueryUndefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any> extends _UseQueryUndefinedInitialDataWithOptionalParams<TFn> {
63
+ export interface UseQueryUndefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {
63
64
  }
64
65
  /** 根据参数是否必需,选择不同的 useQuery */
65
- export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any> = IsParamRequired<TFn> extends true ? UseQueryUndefinedInitialDataWithParams<TFn> : UseQueryUndefinedInitialDataWithOptionalParams<TFn>;
66
- export interface _CreateUseQueryParams<TFn extends (param: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> extends Omit<UseQueryOptions<TResponse, Error, TResponse, [string, TParams]>, "queryKey" | "queryFn" | "select"> {
66
+ export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> = IsParamRequired<TFn> extends true ? UseQueryUndefinedInitialDataWithParams<TFn, TInitSelectData> : UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData>;
67
+ export 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"> {
67
68
  queryFn: TFn;
68
69
  queryKey: string;
69
70
  }
70
- export interface CreateUseQueryParams<TFn extends (param: any) => any> extends _CreateUseQueryParams<TFn> {
71
+ export interface CreateUseQueryParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _CreateUseQueryParams<TFn, TInitSelectData> {
71
72
  }
72
- export declare function createUseQuery<TFn extends (param: any) => any>(params: CreateUseQueryDefinedInitialDataParams<TFn>): UseQueryDefinedInitialData<TFn>;
73
- export declare function createUseQuery<TFn extends (param: any) => any>(pararm: CreateUseQueryUndefinedInitialDataParams<TFn>): UseQueryUndefinedInitialData<TFn>;
74
- export declare function createUseQuery<TFn extends (param: any) => any>(pararm: CreateUseQueryParams<TFn>): UseQuery<TFn>;
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>;
75
76
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "soda-tanstack-query",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "exports": {
@@ -38,7 +38,8 @@
38
38
  "@tanstack/react-query": "^5.90.19"
39
39
  },
40
40
  "devDependencies": {
41
- "typescript": ">=5.8.3"
41
+ "typescript": ">=5.8.3",
42
+ "soda-type": ""
42
43
  },
43
44
  "peerDependencies": {
44
45
  "@types/react": ">=19.2.7",
@@ -7,6 +7,7 @@ import {
7
7
  UseQueryOptions,
8
8
  UseQueryResult,
9
9
  } from "@tanstack/react-query"
10
+ import { StrictPartial } from "soda-type"
10
11
 
11
12
  /** 判断函数的参数是否为必需的 */
12
13
  export type IsParamRequired<TFn extends (params: any) => any> = Parameters<TFn> extends [param: any] ? true : false
@@ -14,149 +15,219 @@ export type IsParamRequired<TFn extends (params: any) => any> = Parameters<TFn>
14
15
  // 要在第一个加一个重载,因为 options 是可选的,如果不加这个重载,类型会任务是 DefinedInitialDataOptions,造成返回类型必定不为 undefined
15
16
 
16
17
  /** 参数必须的 useQuery */
17
- interface _UseQueryWithParams<TFn extends (params: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
18
- <TData = TResponse>(params: TParams): UseQueryResult<NoInfer<TData>, Error>
19
- <TData = TResponse>(
18
+ interface _UseQueryWithParams<
19
+ TFn extends (params: any) => any,
20
+ TInitSelectData = Awaited<ReturnType<TFn>>,
21
+ TParams = Parameters<TFn>[0],
22
+ TResponse = Awaited<ReturnType<TFn>>,
23
+ > {
24
+ <TData = TInitSelectData>(params: TParams): UseQueryResult<NoInfer<TData>, Error>
25
+ <TData = TInitSelectData>(
20
26
  params: TParams,
21
27
  options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
22
28
  client?: QueryClient,
23
29
  ): DefinedUseQueryResult<NoInfer<TData>, Error>
24
- <TData = TResponse>(
30
+ <TData = TInitSelectData>(
25
31
  params: TParams,
26
32
  options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
27
33
  client?: QueryClient,
28
34
  ): UseQueryResult<NoInfer<TData>, Error>
29
- <TData = TResponse>(
35
+ <TData = TInitSelectData>(
30
36
  params: TParams,
31
37
  options?: Omit<UseQueryOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
32
38
  client?: QueryClient,
33
39
  ): UseQueryResult<NoInfer<TData>, Error>
34
40
  }
35
41
 
36
- export interface UseQueryWithParams<TFn extends (params: any) => any> extends _UseQueryWithParams<TFn> {}
42
+ export interface UseQueryWithParams<TFn extends (params: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryWithParams<
43
+ TFn,
44
+ TInitSelectData
45
+ > {}
37
46
 
38
47
  /** 参数可选的 useQuery */
39
- interface _UseQueryWithOptionalParams<TFn extends (params?: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
40
- <TData = TResponse>(params?: TParams): UseQueryResult<NoInfer<TData>, Error>
41
- <TData = TResponse>(
48
+ interface _UseQueryWithOptionalParams<
49
+ TFn extends (params?: any) => any,
50
+ TInitSelectData = Awaited<ReturnType<TFn>>,
51
+ TParams = Parameters<TFn>[0],
52
+ TResponse = Awaited<ReturnType<TFn>>,
53
+ > {
54
+ <TData = TInitSelectData>(params?: TParams): UseQueryResult<NoInfer<TData>, Error>
55
+ <TData = TInitSelectData>(
42
56
  params?: TParams,
43
57
  options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
44
58
  client?: QueryClient,
45
59
  ): DefinedUseQueryResult<NoInfer<TData>, Error>
46
- <TData = TResponse>(
60
+ <TData = TInitSelectData>(
47
61
  params?: TParams,
48
62
  options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
49
63
  client?: QueryClient,
50
64
  ): UseQueryResult<NoInfer<TData>, Error>
51
- <TData = TResponse>(
65
+ <TData = TInitSelectData>(
52
66
  params?: TParams,
53
67
  options?: Omit<UseQueryOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
54
68
  client?: QueryClient,
55
69
  ): UseQueryResult<NoInfer<TData>, Error>
56
70
  }
57
71
 
58
- export interface UseQueryWithOptionalParams<TFn extends (params?: any) => any> extends _UseQueryWithOptionalParams<TFn> {}
72
+ export interface UseQueryWithOptionalParams<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _UseQueryWithOptionalParams<
73
+ TFn,
74
+ TInitSelectData
75
+ > {}
59
76
 
60
77
  /** 根据参数是否必需,选择不同的 useQuery */
61
- export type UseQuery<TFn extends (param: any) => any> = IsParamRequired<TFn> extends true ? UseQueryWithParams<TFn> : UseQueryWithOptionalParams<TFn>
78
+ export type UseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
79
+ IsParamRequired<TFn> extends true ? UseQueryWithParams<TFn, TInitSelectData> : UseQueryWithOptionalParams<TFn, TInitSelectData>
62
80
 
63
81
  /** 传递了初始化参数的 createUseQuery 参数 */
64
82
  export interface _CreateUseQueryDefinedInitialDataParams<
65
83
  TFn extends (param: any) => any,
84
+ TInitSelectData = Awaited<ReturnType<TFn>>,
66
85
  TParams = Parameters<TFn>[0],
67
86
  TResponse = Awaited<ReturnType<TFn>>,
68
- > extends Omit<DefinedInitialDataOptions<TResponse, Error, TResponse, [string, TParams]>, "queryKey" | "queryFn" | "select"> {
87
+ > extends Omit<DefinedInitialDataOptions<TResponse, Error, TInitSelectData, [string, TParams]>, "queryKey" | "queryFn"> {
69
88
  queryFn: TFn
70
89
  queryKey: string
71
90
  }
72
91
 
73
- export interface CreateUseQueryDefinedInitialDataParams<TFn extends (param: any) => any> extends _CreateUseQueryDefinedInitialDataParams<TFn> {}
92
+ export interface CreateUseQueryDefinedInitialDataParams<
93
+ TFn extends (param: any) => any,
94
+ TInitSelectData = Awaited<ReturnType<TFn>>,
95
+ > extends _CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData> {}
74
96
 
75
97
  /** 传递了初始化参数的参数必需的 useQuery */
76
- interface _UseQueryDefinedInitialDataWithParams<TFn extends (params: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
77
- <TData = TResponse>(
98
+ interface _UseQueryDefinedInitialDataWithParams<
99
+ TFn extends (params: any) => any,
100
+ TInitSelectData = Awaited<ReturnType<TFn>>,
101
+ TParams = Parameters<TFn>[0],
102
+ TResponse = Awaited<ReturnType<TFn>>,
103
+ > {
104
+ <TData = TInitSelectData>(
78
105
  params: TParams,
79
- options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
106
+ options?: StrictPartial<Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, "initialData">,
80
107
  client?: QueryClient,
81
108
  ): DefinedUseQueryResult<NoInfer<TData>, Error>
82
109
  }
83
110
 
84
- export interface UseQueryDefinedInitialDataWithParams<TFn extends (params: any) => any> extends _UseQueryDefinedInitialDataWithParams<TFn> {}
111
+ export interface UseQueryDefinedInitialDataWithParams<
112
+ TFn extends (params: any) => any,
113
+ TInitSelectData = Awaited<ReturnType<TFn>>,
114
+ > extends _UseQueryDefinedInitialDataWithParams<TFn, TInitSelectData> {}
85
115
 
86
116
  /** 传递了初始化参数的参数可选的 useQuery */
87
- interface _UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
88
- <TData = TResponse>(
117
+ interface _UseQueryDefinedInitialDataWithOptionalParams<
118
+ TFn extends (params?: any) => any,
119
+ TInitSelectData = Awaited<ReturnType<TFn>>,
120
+ TParams = Parameters<TFn>[0],
121
+ TResponse = Awaited<ReturnType<TFn>>,
122
+ > {
123
+ <TData = TInitSelectData>(
89
124
  params?: TParams,
90
- options?: Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
125
+ options?: StrictPartial<Omit<DefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">, "initialData">,
91
126
  client?: QueryClient,
92
127
  ): DefinedUseQueryResult<NoInfer<TData>, Error>
93
128
  }
94
129
 
95
- export interface UseQueryDefinedInitialDataWithOptionalParams<TFn extends (params?: any) => any> extends _UseQueryDefinedInitialDataWithOptionalParams<TFn> {}
130
+ export interface UseQueryDefinedInitialDataWithOptionalParams<
131
+ TFn extends (params?: any) => any,
132
+ TInitSelectData = Awaited<ReturnType<TFn>>,
133
+ > extends _UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {}
96
134
 
97
135
  /** 根据参数是否必需,选择不同的 useQuery */
98
- export type UseQueryDefinedInitialData<TFn extends (params?: any) => any> =
99
- IsParamRequired<TFn> extends true ? UseQueryDefinedInitialDataWithParams<TFn> : UseQueryDefinedInitialDataWithOptionalParams<TFn>
136
+ export type UseQueryDefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
137
+ IsParamRequired<TFn> extends true
138
+ ? UseQueryDefinedInitialDataWithParams<TFn, TInitSelectData>
139
+ : UseQueryDefinedInitialDataWithOptionalParams<TFn, TInitSelectData>
100
140
 
101
141
  /** 未传递初始化参数的 createUseQuery 参数 */
102
142
  export interface _CreateUseQueryUndefinedInitialDataParams<
103
143
  TFn extends (param: any) => any,
144
+ TInitSelectData = Awaited<ReturnType<TFn>>,
104
145
  TParams = Parameters<TFn>[0],
105
146
  TResponse = Awaited<ReturnType<TFn>>,
106
- > extends Omit<UndefinedInitialDataOptions<TResponse, Error, TResponse, [string, TParams]>, "queryKey" | "queryFn" | "select"> {
147
+ > extends Omit<UndefinedInitialDataOptions<TResponse, Error, TInitSelectData, [string, TParams]>, "queryKey" | "queryFn"> {
107
148
  queryFn: TFn
108
149
  queryKey: string
109
150
  }
110
151
 
111
- export interface CreateUseQueryUndefinedInitialDataParams<TFn extends (param: any) => any> extends _CreateUseQueryUndefinedInitialDataParams<TFn> {}
152
+ export interface CreateUseQueryUndefinedInitialDataParams<
153
+ TFn extends (param: any) => any,
154
+ TInitSelectData = Awaited<ReturnType<TFn>>,
155
+ > extends _CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData> {}
112
156
 
113
157
  /** 未传递初始化参数的参数必需的 useQuery */
114
- interface _UseQueryUndefinedInitialDataWithParams<TFn extends (params: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> {
115
- <TData = TResponse>(
158
+ interface _UseQueryUndefinedInitialDataWithParams<
159
+ TFn extends (params: any) => any,
160
+ TInitSelectData = Awaited<ReturnType<TFn>>,
161
+ TParams = Parameters<TFn>[0],
162
+ TResponse = Awaited<ReturnType<TFn>>,
163
+ > {
164
+ <TData = TInitSelectData>(
116
165
  params: TParams,
117
166
  options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
118
167
  client?: QueryClient,
119
- ): DefinedUseQueryResult<NoInfer<TData>, Error>
168
+ ): UseQueryResult<NoInfer<TData>, Error>
120
169
  }
121
170
 
122
- export interface UseQueryUndefinedInitialDataWithParams<TFn extends (params: any) => any> extends _UseQueryUndefinedInitialDataWithParams<TFn> {}
171
+ export interface UseQueryUndefinedInitialDataWithParams<
172
+ TFn extends (params: any) => any,
173
+ TInitSelectData = Awaited<ReturnType<TFn>>,
174
+ > extends _UseQueryUndefinedInitialDataWithParams<TFn, TInitSelectData> {}
123
175
 
124
176
  /** 未传递初始化参数的参数可选的 useQuery */
125
177
  interface _UseQueryUndefinedInitialDataWithOptionalParams<
126
178
  TFn extends (params: any) => any,
179
+ TInitSelectData = Awaited<ReturnType<TFn>>,
127
180
  TParams = Parameters<TFn>[0],
128
181
  TResponse = Awaited<ReturnType<TFn>>,
129
182
  > {
130
- <TData = TResponse>(
183
+ <TData = TInitSelectData>(
131
184
  params?: TParams,
132
185
  options?: Omit<UndefinedInitialDataOptions<TResponse, Error, TData, [string, TParams]>, "queryKey" | "queryFn">,
133
186
  client?: QueryClient,
134
- ): DefinedUseQueryResult<NoInfer<TData>, Error>
187
+ ): UseQueryResult<NoInfer<TData>, Error>
135
188
  }
136
189
 
137
190
  export interface UseQueryUndefinedInitialDataWithOptionalParams<
138
191
  TFn extends (params?: any) => any,
139
- > extends _UseQueryUndefinedInitialDataWithOptionalParams<TFn> {}
192
+ TInitSelectData = Awaited<ReturnType<TFn>>,
193
+ > extends _UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData> {}
140
194
 
141
195
  /** 根据参数是否必需,选择不同的 useQuery */
142
- export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any> =
143
- IsParamRequired<TFn> extends true ? UseQueryUndefinedInitialDataWithParams<TFn> : UseQueryUndefinedInitialDataWithOptionalParams<TFn>
196
+ export type UseQueryUndefinedInitialData<TFn extends (params?: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> =
197
+ IsParamRequired<TFn> extends true
198
+ ? UseQueryUndefinedInitialDataWithParams<TFn, TInitSelectData>
199
+ : UseQueryUndefinedInitialDataWithOptionalParams<TFn, TInitSelectData>
144
200
 
145
- export interface _CreateUseQueryParams<TFn extends (param: any) => any, TParams = Parameters<TFn>[0], TResponse = Awaited<ReturnType<TFn>>> extends Omit<
146
- UseQueryOptions<TResponse, Error, TResponse, [string, TParams]>,
147
- "queryKey" | "queryFn" | "select"
148
- > {
201
+ export interface _CreateUseQueryParams<
202
+ TFn extends (param: any) => any,
203
+ TInitSelectData = Awaited<ReturnType<TFn>>,
204
+ TParams = Parameters<TFn>[0],
205
+ TResponse = Awaited<ReturnType<TFn>>,
206
+ > extends Omit<UseQueryOptions<TResponse, Error, TInitSelectData, [string, TParams]>, "queryKey" | "queryFn"> {
149
207
  queryFn: TFn
150
208
  queryKey: string
151
209
  }
152
210
 
153
- export interface CreateUseQueryParams<TFn extends (param: any) => any> extends _CreateUseQueryParams<TFn> {}
211
+ export interface CreateUseQueryParams<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>> extends _CreateUseQueryParams<
212
+ TFn,
213
+ TInitSelectData
214
+ > {}
154
215
 
155
216
  // 根据是否传递初始化参数,选择不同的 createUseQuery,目前存在一个问题,UndefinedInitialDataOptions 和 UseQueryOptions 是完全一致的,所以匹配不到第三种可能,但这是 @tanstack/react-query 的问题
156
- export function createUseQuery<TFn extends (param: any) => any>(params: CreateUseQueryDefinedInitialDataParams<TFn>): UseQueryDefinedInitialData<TFn>
157
- export function createUseQuery<TFn extends (param: any) => any>(pararm: CreateUseQueryUndefinedInitialDataParams<TFn>): UseQueryUndefinedInitialData<TFn>
158
- export function createUseQuery<TFn extends (param: any) => any>(pararm: CreateUseQueryParams<TFn>): UseQuery<TFn>
159
- export function createUseQuery<TFn extends (param: any) => any>({ queryFn, queryKey, ...rest }: CreateUseQueryParams<TFn>): UseQuery<TFn> {
217
+ export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
218
+ params: CreateUseQueryDefinedInitialDataParams<TFn, TInitSelectData>,
219
+ ): UseQueryDefinedInitialData<TFn, TInitSelectData>
220
+ export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
221
+ pararm: CreateUseQueryUndefinedInitialDataParams<TFn, TInitSelectData>,
222
+ ): UseQueryUndefinedInitialData<TFn, TInitSelectData>
223
+ export function createUseQuery<TFn extends (param: any) => any, TInitSelectData = Awaited<ReturnType<TFn>>>(
224
+ pararm: CreateUseQueryParams<TFn, TInitSelectData>,
225
+ ): 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> {
160
231
  return function useRequest(params: any, options?: any, client?: QueryClient) {
161
232
  return useQuery(
162
233
  {