Skip to content

Commit

Permalink
fix(angular-query): fix type of isSuccess, isError, isPending, isIdle
Browse files Browse the repository at this point in the history
  • Loading branch information
divdavem committed Aug 20, 2024
1 parent 683c85e commit 081cba0
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,16 @@ import type { ThrowOnError } from '@tanstack/query-core';
// @public (undocumented)
export interface BaseMutationNarrowing<TData = unknown, TError = DefaultError, TVariables = unknown, TContext = unknown> {
// (undocumented)
isError: (this: CreateMutationResult<TData, TError, TVariables, TContext>) => this is CreateMutationResult<TData, TError, TVariables, TContext, CreateStatusBasedMutationResult<'error', TData, TError, TVariables, TContext>>;
isError: SignalFunction<(this: CreateMutationResult<TData, TError, TVariables, TContext>) => this is CreateMutationResult<TData, TError, TVariables, TContext, CreateStatusBasedMutationResult<'error', TData, TError, TVariables, TContext>>>;
// (undocumented)
isIdle: (this: CreateMutationResult<TData, TError, TVariables, TContext>) => this is CreateMutationResult<TData, TError, TVariables, TContext, CreateStatusBasedMutationResult<'idle', TData, TError, TVariables, TContext>>;
isIdle: SignalFunction<(this: CreateMutationResult<TData, TError, TVariables, TContext>) => this is CreateMutationResult<TData, TError, TVariables, TContext, CreateStatusBasedMutationResult<'idle', TData, TError, TVariables, TContext>>>;
// (undocumented)
isPending: (this: CreateMutationResult<TData, TError, TVariables, TContext>) => this is CreateMutationResult<TData, TError, TVariables, TContext, CreateStatusBasedMutationResult<'pending', TData, TError, TVariables, TContext>>;
isPending: SignalFunction<(this: CreateMutationResult<TData, TError, TVariables, TContext>) => this is CreateMutationResult<TData, TError, TVariables, TContext, CreateStatusBasedMutationResult<'pending', TData, TError, TVariables, TContext>>>;
// Warning: (ae-forgotten-export) The symbol "SignalFunction" needs to be exported by the entry point index.d.ts
// Warning: (ae-forgotten-export) The symbol "CreateStatusBasedMutationResult" needs to be exported by the entry point index.d.ts
//
// (undocumented)
isSuccess: (this: CreateMutationResult<TData, TError, TVariables, TContext>) => this is CreateMutationResult<TData, TError, TVariables, TContext, CreateStatusBasedMutationResult<'success', TData, TError, TVariables, TContext>>;
isSuccess: SignalFunction<(this: CreateMutationResult<TData, TError, TVariables, TContext>) => this is CreateMutationResult<TData, TError, TVariables, TContext, CreateStatusBasedMutationResult<'success', TData, TError, TVariables, TContext>>>;
}

// @public (undocumented)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { type InputSignal, isSignal, untracked } from '@angular/core'
import { type InputSignal, type Signal, isSignal, untracked } from '@angular/core'
import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals'
import type { ComponentFixture } from '@angular/core/testing'

Expand Down Expand Up @@ -86,7 +86,7 @@ function evaluateSignals<T extends Record<string, any>>(

export const expectSignals = <T extends Record<string, any>>(
obj: T,
expected: Partial<{ [K in keyof T]: ReturnType<T[K]> }>,
expected: Partial<{ [K in keyof T]: T[K] extends Signal<any> ? ReturnType<T[K]> : never }>,
): void => {
expect(evaluateSignals(obj)).toMatchObject(expected)
}
Expand Down
19 changes: 11 additions & 8 deletions packages/angular-query-experimental/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import type {
QueryObserverOptions,
QueryObserverResult,
} from '@tanstack/query-core'
import type { Signal } from '@angular/core'
import type { MapToSignals } from './signal-proxy'

/**
Expand Down Expand Up @@ -221,6 +222,8 @@ type CreateStatusBasedMutationResult<
{ status: TStatus }
>

type SignalFunction<T extends () => any> = T & Signal<ReturnType<T>>;

/**
* @public
*/
Expand All @@ -230,7 +233,7 @@ export interface BaseMutationNarrowing<
TVariables = unknown,
TContext = unknown,
> {
isSuccess: (
isSuccess: SignalFunction<(
this: CreateMutationResult<TData, TError, TVariables, TContext>,
) => this is CreateMutationResult<
TData,
Expand All @@ -244,8 +247,8 @@ export interface BaseMutationNarrowing<
TVariables,
TContext
>
>
isError: (
>>
isError: SignalFunction<(
this: CreateMutationResult<TData, TError, TVariables, TContext>,
) => this is CreateMutationResult<
TData,
Expand All @@ -259,8 +262,8 @@ export interface BaseMutationNarrowing<
TVariables,
TContext
>
>
isPending: (
>>
isPending: SignalFunction<(
this: CreateMutationResult<TData, TError, TVariables, TContext>,
) => this is CreateMutationResult<
TData,
Expand All @@ -274,16 +277,16 @@ export interface BaseMutationNarrowing<
TVariables,
TContext
>
>
isIdle: (
>>
isIdle: SignalFunction<(
this: CreateMutationResult<TData, TError, TVariables, TContext>,
) => this is CreateMutationResult<
TData,
TError,
TVariables,
TContext,
CreateStatusBasedMutationResult<'idle', TData, TError, TVariables, TContext>
>
>>
}

/**
Expand Down

0 comments on commit 081cba0

Please sign in to comment.