From 437672d802589a4c0576d4eafe53abb7577028ef 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 eb40d272320..8ac8267aa0d 100644 --- a/packages/query-core/src/types.ts +++ b/packages/query-core/src/types.ts @@ -7,7 +7,14 @@ import type { QueryFilters, QueryTypeFilter } from './utils' import type { QueryCache } from './queryCache' import type { MutationCache } from './mutationCache' -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 @@ -85,7 +92,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 @@ -137,7 +150,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. */ @@ -610,7 +623,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 @@ -652,7 +670,7 @@ export interface MutationOptions< networkMode?: NetworkMode gcTime?: number _defaulted?: boolean - meta?: MutationMeta + meta?: MutationMeta } export interface MutationObserverOptions<