UNPKG

1.33 kBPlain TextView Raw
1import type { UseMutation, UseLazyQuery, UseQuery } from './buildHooks'
2import type {
3 DefinitionType,
4 EndpointDefinitions,
5 MutationDefinition,
6 QueryDefinition,
7} from '@reduxjs/toolkit/query'
8
9type 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
19type 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
29type 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
39export type HooksWithUniqueNames<Definitions extends EndpointDefinitions> =
40 QueryHookNames<Definitions> &
41 LazyQueryHookNames<Definitions> &
42 MutationHookNames<Definitions>