UNPKG

@reduxjs/toolkit

Version:

The official, opinionated, batteries-included toolset for efficient Redux development

60 lines (54 loc) 1.72 kB
import type { DefinitionType, EndpointDefinitions, MutationDefinition, QueryDefinition, InfiniteQueryDefinition, } from '@reduxjs/toolkit/query' import type { UseInfiniteQuery, UseLazyQuery, UseMutation, UseQuery, } from './buildHooks' type QueryHookNames<Definitions extends EndpointDefinitions> = { [K in keyof Definitions as Definitions[K] extends { type: DefinitionType.query } ? `use${Capitalize<K & string>}Query` : never]: UseQuery< Extract<Definitions[K], QueryDefinition<any, any, any, any>> > } type LazyQueryHookNames<Definitions extends EndpointDefinitions> = { [K in keyof Definitions as Definitions[K] extends { type: DefinitionType.query } ? `useLazy${Capitalize<K & string>}Query` : never]: UseLazyQuery< Extract<Definitions[K], QueryDefinition<any, any, any, any>> > } type InfiniteQueryHookNames<Definitions extends EndpointDefinitions> = { [K in keyof Definitions as Definitions[K] extends { type: DefinitionType.infinitequery } ? `use${Capitalize<K & string>}InfiniteQuery` : never]: UseInfiniteQuery< Extract<Definitions[K], InfiniteQueryDefinition<any, any, any, any, any>> > } type MutationHookNames<Definitions extends EndpointDefinitions> = { [K in keyof Definitions as Definitions[K] extends { type: DefinitionType.mutation } ? `use${Capitalize<K & string>}Mutation` : never]: UseMutation< Extract<Definitions[K], MutationDefinition<any, any, any, any>> > } export type HooksWithUniqueNames<Definitions extends EndpointDefinitions> = QueryHookNames<Definitions> & LazyQueryHookNames<Definitions> & InfiniteQueryHookNames<Definitions> & MutationHookNames<Definitions>