From dc2d1254104eea8d75a492be01ca6be7efcc87a3 Mon Sep 17 00:00:00 2001 From: "ben.durrant" Date: Mon, 2 Oct 2023 15:18:33 +0100 Subject: [PATCH 1/2] Rewrite HooksWithUniqueNames type --- .../toolkit/src/query/react/namedHooks.ts | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/packages/toolkit/src/query/react/namedHooks.ts b/packages/toolkit/src/query/react/namedHooks.ts index ae146cf4cf..e91b405036 100644 --- a/packages/toolkit/src/query/react/namedHooks.ts +++ b/packages/toolkit/src/query/react/namedHooks.ts @@ -6,26 +6,30 @@ import type { QueryDefinition, } from '@reduxjs/toolkit/query' -export type HooksWithUniqueNames = - keyof Definitions extends infer Keys - ? Keys extends string - ? Definitions[Keys] extends { type: DefinitionType.query } - ? { - [K in Keys as `use${Capitalize}Query`]: UseQuery< - Extract> - > - } & - { - [K in Keys as `useLazy${Capitalize}Query`]: UseLazyQuery< - Extract> - > - } - : Definitions[Keys] extends { type: DefinitionType.mutation } - ? { - [K in Keys as `use${Capitalize}Mutation`]: UseMutation< - Extract> - > - } - : never - : never - : never +export type HooksWithUniqueNames = { + [K in keyof Definitions as Definitions[K] extends { + type: DefinitionType.query + } + ? `use${Capitalize}Query` + : never]: UseQuery< + Extract> + > +} & + { + [K in keyof Definitions as Definitions[K] extends { + type: DefinitionType.query + } + ? `useLazy${Capitalize}Query` + : never]: UseLazyQuery< + Extract> + > + } & + { + [K in keyof Definitions as Definitions[K] extends { + type: DefinitionType.mutation + } + ? `use${Capitalize}Mutation` + : never]: UseMutation< + Extract> + > + } From 3e370a3f6c9178f4526a157f6f4f6997d28c551c Mon Sep 17 00:00:00 2001 From: Ben Durrant Date: Mon, 2 Oct 2023 22:53:59 +0100 Subject: [PATCH 2/2] copy over split type --- .../toolkit/src/query/react/namedHooks.ts | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/packages/toolkit/src/query/react/namedHooks.ts b/packages/toolkit/src/query/react/namedHooks.ts index e91b405036..7a21b993f4 100644 --- a/packages/toolkit/src/query/react/namedHooks.ts +++ b/packages/toolkit/src/query/react/namedHooks.ts @@ -6,7 +6,7 @@ import type { QueryDefinition, } from '@reduxjs/toolkit/query' -export type HooksWithUniqueNames = { +type QueryHookNames = { [K in keyof Definitions as Definitions[K] extends { type: DefinitionType.query } @@ -14,22 +14,29 @@ export type HooksWithUniqueNames = { : never]: UseQuery< Extract> > -} & - { - [K in keyof Definitions as Definitions[K] extends { - type: DefinitionType.query - } - ? `useLazy${Capitalize}Query` - : never]: UseLazyQuery< - Extract> - > - } & - { - [K in keyof Definitions as Definitions[K] extends { - type: DefinitionType.mutation - } - ? `use${Capitalize}Mutation` - : never]: UseMutation< - Extract> - > +} + +type LazyQueryHookNames = { + [K in keyof Definitions as Definitions[K] extends { + type: DefinitionType.query + } + ? `useLazy${Capitalize}Query` + : never]: UseLazyQuery< + Extract> + > +} + +type MutationHookNames = { + [K in keyof Definitions as Definitions[K] extends { + type: DefinitionType.mutation } + ? `use${Capitalize}Mutation` + : never]: UseMutation< + Extract> + > +} + +export type HooksWithUniqueNames = + QueryHookNames & + LazyQueryHookNames & + MutationHookNames