From 309c3f5e27d193fff9c0c708be9d8f2cc77a3067 Mon Sep 17 00:00:00 2001 From: Stefan Vojvodic Date: Wed, 24 May 2023 10:52:05 +0200 Subject: [PATCH] refactor(query-core): Make MutationMeta and QueryMeta generic --- packages/query-core/src/types.ts | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/packages/query-core/src/types.ts b/packages/query-core/src/types.ts index b08c4d905e9..be96eca370e 100644 --- a/packages/query-core/src/types.ts +++ b/packages/query-core/src/types.ts @@ -8,7 +8,14 @@ import type { QueryCache } from './queryCache' import type { MutationCache } from './mutationCache' import type { FetchDirection } from './query' -export interface Register { +// @ts-expect-error unused arg +export interface Register< + TQueryFnDataOrTData = unknown, + TError = unknown, + TDataOrTVariables = unknown, + TQueryKeyOrTContext = unknown, + TPageParam = never, +> { // defaultError: Error // queryMeta: Record // mutationMeta: Record @@ -86,7 +93,13 @@ export interface InfiniteData { pageParams: unknown[] } -export type QueryMeta = Register extends { +export type QueryMeta< + TQueryFnData = unknown, + TError = DefaultError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, + TPageParam = never, +> = Register extends { queryMeta: infer TQueryMeta } ? TQueryMeta extends Record @@ -133,7 +146,7 @@ export interface QueryOptions< * Additional payload to be stored on each query. * Use this property to pass information that can be used in other places. */ - meta?: QueryMeta + meta?: QueryMeta /** * Maximum number of pages to store in the data of an infinite query. */ @@ -591,7 +604,12 @@ export type MutationKey = readonly unknown[] export type MutationStatus = 'idle' | 'pending' | 'success' | 'error' -export type MutationMeta = Register extends { +export type MutationMeta< + TData = unknown, + TError = DefaultError, + TVariables = unknown, + TContext = unknown, +> = Register extends { mutationMeta: infer TMutationMeta } ? TMutationMeta @@ -633,7 +651,7 @@ export interface MutationOptions< networkMode?: NetworkMode gcTime?: number _defaulted?: boolean - meta?: MutationMeta + meta?: MutationMeta } export interface MutationObserverOptions<