@@ -3,23 +3,37 @@ import { RTKLoader } from "./RTKLoader";
33import * as Types from "./types" ;
44
55export const createUseLoader = <
6- Q extends Types . _Q ,
7- D extends Types . _D ,
8- E extends Types . _E ,
9- R extends unknown = Types . ResolveDataShape <
10- Types . MakeDataRequired < Q > ,
11- D ,
12- E
6+ TQueries extends Types . _TQueries ,
7+ TDeferred extends Types . _TDeferred ,
8+ TPayload extends Types . _TPayload ,
9+ TReturn extends unknown = Types . ResolveDataShape <
10+ Types . MakeDataRequired < TQueries > ,
11+ TDeferred ,
12+ TPayload
1313 > ,
14- A = never
14+ TArg = never
1515> (
16- createUseLoaderArgs : Types . CreateUseLoaderArgs < Q , D , E , R , A >
17- ) : Types . UseLoader < A , R , Q , D , E > => {
18- const useLoader = ( ...args : Types . OptionalGenericArg < A > ) => {
16+ createUseLoaderArgs : Types . CreateUseLoaderArgs <
17+ TQueries ,
18+ TDeferred ,
19+ TPayload ,
20+ TReturn ,
21+ TArg
22+ >
23+ ) : Types . UseLoader <
24+ TArg ,
25+ TReturn ,
26+ TQueries ,
27+ TDeferred ,
28+ TPayload
29+ > => {
30+ const useLoader = (
31+ ...args : Types . OptionalGenericArg < TArg >
32+ ) => {
1933 const loaderRes = createUseLoaderArgs . useQueries ( ...args ) ;
2034 const queriesList = loaderRes . queries
2135 ? Object . keys ( loaderRes . queries ) . map (
22- ( key ) => ( loaderRes . queries as Q ) [ key ]
36+ ( key ) => ( loaderRes . queries as TQueries ) [ key ]
2337 )
2438 : [ ] ;
2539 const aggregatedQuery = aggregateToQuery ( queriesList ) ;
@@ -28,9 +42,9 @@ export const createUseLoader = <
2842 const data = createUseLoaderArgs . transform
2943 ? createUseLoaderArgs . transform (
3044 loaderRes as Types . ResolveDataShape <
31- Types . MakeDataRequired < Q > ,
32- D ,
33- E
45+ Types . MakeDataRequired < TQueries > ,
46+ TDeferred ,
47+ TPayload
3448 >
3549 )
3650 : loaderRes ;
@@ -41,38 +55,59 @@ export const createUseLoader = <
4155 data,
4256 currentData : data ,
4357 originalArgs : args ,
44- } as Types . UseQueryResult < R > ;
58+ } as Types . UseQueryResult < TReturn > ;
4559 }
4660
47- return aggregatedQuery as Types . UseQueryResult < R > ;
61+ return aggregatedQuery as Types . UseQueryResult < TReturn > ;
4862 } ;
4963
5064 useLoader . original_args = createUseLoaderArgs ;
5165 return useLoader ;
5266} ;
5367
5468export const createLoader = <
55- P extends unknown ,
56- Q extends Types . _Q ,
57- D extends Types . _D ,
58- E extends Types . _E ,
59- R extends unknown = Types . ResolveDataShape <
60- Types . MakeDataRequired < Q > ,
61- D ,
62- E
69+ TProps extends unknown ,
70+ TQueries extends Types . _TQueries = never ,
71+ TDeferred extends Types . _TDeferred = never ,
72+ TPayload extends Types . _TPayload = never ,
73+ TReturn extends unknown = Types . ResolveDataShape <
74+ Types . MakeDataRequired < TQueries > ,
75+ TDeferred ,
76+ TPayload
6377 > ,
64- A extends unknown = never
78+ TArg extends unknown = never
6579> (
66- createLoaderArgs : Types . CreateLoaderArgs < P , Q , D , E , R , A >
67- ) : Types . Loader < P , R , Q , D , E , A > => {
80+ createLoaderArgs : Types . CreateLoaderArgs <
81+ TProps ,
82+ TQueries ,
83+ TDeferred ,
84+ TPayload ,
85+ TReturn ,
86+ TArg
87+ >
88+ ) : Types . Loader <
89+ TProps ,
90+ TReturn ,
91+ TQueries ,
92+ TDeferred ,
93+ TPayload ,
94+ TArg
95+ > => {
6896 const useLoader = createUseLoader ( {
6997 useQueries :
7098 createLoaderArgs . useQueries ??
71- ( ( ) => ( { } as unknown as Q ) ) ,
99+ ( ( ) => ( { } as unknown as TQueries ) ) ,
72100 transform : createLoaderArgs . transform ,
73101 } ) ;
74102
75- const loader : Types . Loader < P , R , Q , D , E , A > = {
103+ const loader : Types . Loader <
104+ TProps ,
105+ TReturn ,
106+ TQueries ,
107+ TDeferred ,
108+ TPayload ,
109+ TArg
110+ > = {
76111 useLoader,
77112 onLoading : createLoaderArgs . onLoading ,
78113 onError : createLoaderArgs . onError ,
@@ -82,34 +117,57 @@ export const createLoader = <
82117 LoaderComponent :
83118 createLoaderArgs . loaderComponent ?? RTKLoader ,
84119 extend : function <
85- Qb extends Types . _Q ,
86- Db extends Types . _D ,
87- Eb extends Types . _E ,
88- Pb extends unknown = P ,
89- Rb = Qb extends unknown
90- ? R
91- : Types . ResolveDataShape <
92- Types . MakeDataRequired < Qb > ,
93- Db ,
94- Eb
120+ E_TQueries extends Types . _TQueries = TQueries ,
121+ E_TDeferred extends Types . _TDeferred = TDeferred ,
122+ E_TPayload extends Types . _TPayload = TPayload ,
123+ E_TReturn extends unknown = Types . AllEql <
124+ TQueries ,
125+ E_TQueries ,
126+ TDeferred ,
127+ E_TDeferred ,
128+ TPayload ,
129+ E_TPayload
130+ > extends true
131+ ? TReturn
132+ : Types . ResolveLoadedDataShape <
133+ E_TQueries ,
134+ E_TDeferred ,
135+ E_TPayload
95136 > ,
96- Ab extends unknown = A
137+ E_TProps extends unknown = TProps ,
138+ E_TArg = TArg
97139 > ( {
98140 useQueries,
99141 transform,
100142 ...loaderArgs
101- } : Partial < Types . CreateLoaderArgs < Pb , Qb , Db , Eb , Rb , Ab > > ) {
102- const extendedLoader = {
143+ } : Partial <
144+ Types . CreateLoaderArgs <
145+ E_TProps ,
146+ E_TQueries ,
147+ E_TDeferred ,
148+ E_TPayload ,
149+ E_TReturn ,
150+ E_TArg
151+ >
152+ > ) {
153+ const extendedLoader : Types . Loader <
154+ E_TProps ,
155+ E_TReturn ,
156+ E_TQueries ,
157+ E_TDeferred ,
158+ E_TPayload ,
159+ E_TArg
160+ > = {
103161 ...( this as unknown as Types . Loader <
104- Pb ,
105- Rb ,
106- Qb ,
107- Db ,
108- Eb ,
109- Ab
162+ E_TProps ,
163+ E_TReturn ,
164+ E_TQueries ,
165+ E_TDeferred ,
166+ E_TPayload ,
167+ E_TArg
110168 > ) ,
111169 ...loaderArgs ,
112- } as Types . Loader < Pb , Rb , Qb , Db , Eb , Ab > ;
170+ } ;
113171
114172 if ( useQueries ) {
115173 const newUseLoader = createUseLoader ( {
0 commit comments