1 | import type { UseMutation, UseLazyQuery, UseQuery } from './buildHooks'
|
2 | import type {
|
3 | DefinitionType,
|
4 | EndpointDefinitions,
|
5 | MutationDefinition,
|
6 | QueryDefinition,
|
7 | } from '@reduxjs/toolkit/query'
|
8 |
|
9 | type QueryHookNames<Definitions extends EndpointDefinitions> = {
|
10 | [K in keyof Definitions as Definitions[K] extends {
|
11 | type: DefinitionType.query
|
12 | }
|
13 | ? `use${Capitalize<K & string>}Query`
|
14 | : never]: UseQuery<
|
15 | Extract<Definitions[K], QueryDefinition<any, any, any, any>>
|
16 | >
|
17 | }
|
18 |
|
19 | type LazyQueryHookNames<Definitions extends EndpointDefinitions> = {
|
20 | [K in keyof Definitions as Definitions[K] extends {
|
21 | type: DefinitionType.query
|
22 | }
|
23 | ? `useLazy${Capitalize<K & string>}Query`
|
24 | : never]: UseLazyQuery<
|
25 | Extract<Definitions[K], QueryDefinition<any, any, any, any>>
|
26 | >
|
27 | }
|
28 |
|
29 | type MutationHookNames<Definitions extends EndpointDefinitions> = {
|
30 | [K in keyof Definitions as Definitions[K] extends {
|
31 | type: DefinitionType.mutation
|
32 | }
|
33 | ? `use${Capitalize<K & string>}Mutation`
|
34 | : never]: UseMutation<
|
35 | Extract<Definitions[K], MutationDefinition<any, any, any, any>>
|
36 | >
|
37 | }
|
38 |
|
39 | export type HooksWithUniqueNames<Definitions extends EndpointDefinitions> =
|
40 | QueryHookNames<Definitions> &
|
41 | LazyQueryHookNames<Definitions> &
|
42 | MutationHookNames<Definitions>
|