UNPKG

@reduxjs/toolkit

Version:

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

64 lines (58 loc) • 1.77 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>