From c2861c44fbedad03fd8a1c2a907888e72f219d2d Mon Sep 17 00:00:00 2001 From: Dominik Dorfmeister Date: Wed, 15 May 2024 16:19:45 +0200 Subject: [PATCH] fix(types): make TVariables default to unknown on Mutation (#7433) * fix: make TVariables default to unknown on Mutation we only need `void` as the default for MutationOptions so that we can fire mutations with no parameters without passing undefined to them explicitly. For reading mutations and mutationState, unknown is better. * refactor: remove unnecessary type assertion * refactor: remove unnecessary type assertion * refactor: some more remove unnecessary type assertion --- .../src/inject-mutation-state.ts | 11 ++--------- packages/query-core/src/hydration.ts | 3 ++- packages/query-core/src/mutation.ts | 4 ++-- packages/react-query/src/useMutationState.ts | 11 ++--------- .../src/__tests__/useMutationState.test-d.tsx | 4 +--- packages/solid-query/src/useMutationState.ts | 11 ++--------- packages/vue-query/src/useMutationState.ts | 11 ++--------- 7 files changed, 13 insertions(+), 42 deletions(-) diff --git a/packages/angular-query-experimental/src/inject-mutation-state.ts b/packages/angular-query-experimental/src/inject-mutation-state.ts index 00cf66c193..ea46ff3ac5 100644 --- a/packages/angular-query-experimental/src/inject-mutation-state.ts +++ b/packages/angular-query-experimental/src/inject-mutation-state.ts @@ -7,7 +7,6 @@ import { untracked, } from '@angular/core' import { - type DefaultError, type Mutation, type MutationCache, type MutationFilters, @@ -22,9 +21,7 @@ import type { Injector, Signal } from '@angular/core' type MutationStateOptions = { filters?: MutationFilters - select?: ( - mutation: Mutation, - ) => TResult + select?: (mutation: Mutation) => TResult } function getResult( @@ -35,11 +32,7 @@ function getResult( .findAll(options.filters) .map( (mutation): TResult => - (options.select - ? options.select( - mutation as Mutation, - ) - : mutation.state) as TResult, + (options.select ? options.select(mutation) : mutation.state) as TResult, ) } diff --git a/packages/query-core/src/hydration.ts b/packages/query-core/src/hydration.ts index 0b0f090686..564cf13319 100644 --- a/packages/query-core/src/hydration.ts +++ b/packages/query-core/src/hydration.ts @@ -1,4 +1,5 @@ import type { + DefaultError, MutationKey, MutationMeta, MutationOptions, @@ -21,7 +22,7 @@ export interface DehydrateOptions { export interface HydrateOptions { defaultOptions?: { queries?: QueryOptions - mutations?: MutationOptions + mutations?: MutationOptions } } diff --git a/packages/query-core/src/mutation.ts b/packages/query-core/src/mutation.ts index 69f9d6286b..e2e2afd600 100644 --- a/packages/query-core/src/mutation.ts +++ b/packages/query-core/src/mutation.ts @@ -23,7 +23,7 @@ interface MutationConfig { export interface MutationState< TData = unknown, TError = DefaultError, - TVariables = void, + TVariables = unknown, TContext = unknown, > { context: TContext | undefined @@ -81,7 +81,7 @@ export type Action = export class Mutation< TData = unknown, TError = DefaultError, - TVariables = void, + TVariables = unknown, TContext = unknown, > extends Removable { state: MutationState diff --git a/packages/react-query/src/useMutationState.ts b/packages/react-query/src/useMutationState.ts index d14ebc46b7..2d1bd7d335 100644 --- a/packages/react-query/src/useMutationState.ts +++ b/packages/react-query/src/useMutationState.ts @@ -4,7 +4,6 @@ import * as React from 'react' import { notifyManager, replaceEqualDeep } from '@tanstack/query-core' import { useQueryClient } from './QueryClientProvider' import type { - DefaultError, Mutation, MutationCache, MutationFilters, @@ -25,9 +24,7 @@ export function useIsMutating( type MutationStateOptions = { filters?: MutationFilters - select?: ( - mutation: Mutation, - ) => TResult + select?: (mutation: Mutation) => TResult } function getResult( @@ -38,11 +35,7 @@ function getResult( .findAll(options.filters) .map( (mutation): TResult => - (options.select - ? options.select( - mutation as Mutation, - ) - : mutation.state) as TResult, + (options.select ? options.select(mutation) : mutation.state) as TResult, ) } diff --git a/packages/solid-query/src/__tests__/useMutationState.test-d.tsx b/packages/solid-query/src/__tests__/useMutationState.test-d.tsx index 91c8fae717..dc8cca1e70 100644 --- a/packages/solid-query/src/__tests__/useMutationState.test-d.tsx +++ b/packages/solid-query/src/__tests__/useMutationState.test-d.tsx @@ -8,9 +8,7 @@ describe('useMutationState', () => { filters: { status: 'pending' }, })) - expectTypeOf(result()).toEqualTypeOf< - Array> - >() + expectTypeOf(result()).toEqualTypeOf>() }) it('should infer with select', () => { const result = useMutationState(() => ({ diff --git a/packages/solid-query/src/useMutationState.ts b/packages/solid-query/src/useMutationState.ts index e04a8c115b..2a405a1ae4 100644 --- a/packages/solid-query/src/useMutationState.ts +++ b/packages/solid-query/src/useMutationState.ts @@ -2,7 +2,6 @@ import { createEffect, createMemo, createSignal, onCleanup } from 'solid-js' import { replaceEqualDeep } from '@tanstack/query-core' import { useQueryClient } from './QueryClientProvider' import type { - DefaultError, Mutation, MutationCache, MutationFilters, @@ -13,9 +12,7 @@ import type { QueryClient } from './QueryClient' type MutationStateOptions = { filters?: MutationFilters - select?: ( - mutation: Mutation, - ) => TResult + select?: (mutation: Mutation) => TResult } function getResult( @@ -26,11 +23,7 @@ function getResult( .findAll(options.filters) .map( (mutation): TResult => - (options.select - ? options.select( - mutation as Mutation, - ) - : mutation.state) as TResult, + (options.select ? options.select(mutation) : mutation.state) as TResult, ) } diff --git a/packages/vue-query/src/useMutationState.ts b/packages/vue-query/src/useMutationState.ts index 9720a5d6e8..ae9ccd6476 100644 --- a/packages/vue-query/src/useMutationState.ts +++ b/packages/vue-query/src/useMutationState.ts @@ -10,7 +10,6 @@ import { useQueryClient } from './useQueryClient' import { cloneDeepUnref } from './utils' import type { DeepReadonly, Ref } from 'vue-demi' import type { - DefaultError, MutationFilters as MF, Mutation, MutationState, @@ -51,9 +50,7 @@ export function useIsMutating( export type MutationStateOptions = { filters?: MutationFilters - select?: ( - mutation: Mutation, - ) => TResult + select?: (mutation: Mutation) => TResult } function getResult( @@ -64,11 +61,7 @@ function getResult( .findAll(options.filters) .map( (mutation): TResult => - (options.select - ? options.select( - mutation as Mutation, - ) - : mutation.state) as TResult, + (options.select ? options.select(mutation) : mutation.state) as TResult, ) }