Skip to content

Commit 94cd3e7

Browse files
committed
Merge branch 'refactor/maybe-promise'
2 parents dbe22bf + 4c22b57 commit 94cd3e7

12 files changed

Lines changed: 60 additions & 39 deletions

File tree

docs/framework/react/plugins/persistQueryClient.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,12 @@ ReactDOM.createRoot(rootElement).render(
214214

215215
- `persistOptions: PersistQueryClientOptions`
216216
- all [options](#options) you can pass to [persistQueryClient](#persistqueryclient) minus the QueryClient itself
217-
- `onSuccess?: () => Promise<unknown> | unknown`
217+
- `onSuccess?: () => MaybePromise<void>`
218218
- optional
219219
- will be called when the initial restore is finished
220220
- can be used to [resumePausedMutations](../../../../reference/QueryClient.md#queryclientresumepausedmutations)
221221
- if a Promise is returned, it will be awaited; restoring is seen as ongoing until then
222-
- `onError?: () => Promise<unknown> | unknown`
222+
- `onError?: () => MaybePromise<void>`
223223
- optional
224224
- will be called when an error is thrown during restoration
225225
- if a Promise is returned, it will be awaited

docs/framework/react/reference/useMutation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ mutate(variables, {
6868
- This function will fire before the mutation function is fired and is passed the same variables the mutation function would receive
6969
- Useful to perform optimistic updates to a resource in hopes that the mutation succeeds
7070
- The value returned from this function will be passed to both the `onError` and `onSettled` functions in the event of a mutation failure and can be useful for rolling back optimistic updates.
71-
- `onSuccess: (data: TData, variables: TVariables, context: TContext) => Promise<unknown> | unknown`
71+
- `onSuccess: (data: TData, variables: TVariables, context: TContext) => MaybePromise<void>`
7272
- Optional
7373
- This function will fire when the mutation is successful and will be passed the mutation's result.
7474
- If a promise is returned, it will be awaited and resolved before proceeding
75-
- `onError: (err: TError, variables: TVariables, context?: TContext) => Promise<unknown> | unknown`
75+
- `onError: (err: TError, variables: TVariables, context?: TContext) => MaybePromise<void>`
7676
- Optional
7777
- This function will fire if the mutation encounters an error and will be passed the error.
7878
- If a promise is returned, it will be awaited and resolved before proceeding
79-
- `onSettled: (data: TData, error: TError, variables: TVariables, context?: TContext) => Promise<unknown> | unknown`
79+
- `onSettled: (data: TData, error: TError, variables: TVariables, context?: TContext) => MaybePromise<void>`
8080
- Optional
8181
- This function will fire when the mutation is either successfully fetched or encounters an error and be passed either the data or error
8282
- If a promise is returned, it will be awaited and resolved before proceeding

docs/reference/MutationCache.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,19 @@ Its available methods are:
2828

2929
**Options**
3030

31-
- `onError?: (error: unknown, variables: unknown, context: unknown, mutation: Mutation) => Promise<unknown> | unknown`
31+
- `onError?: (error: unknown, variables: unknown, context: unknown, mutation: Mutation) => MaybePromise<void>`
3232
- Optional
3333
- This function will be called if some mutation encounters an error.
3434
- If you return a Promise from it, it will be awaited
35-
- `onSuccess?: (data: unknown, variables: unknown, context: unknown, mutation: Mutation) => Promise<unknown> | unknown`
35+
- `onSuccess?: (data: unknown, variables: unknown, context: unknown, mutation: Mutation) => MaybePromise<void>`
3636
- Optional
3737
- This function will be called if some mutation is successful.
3838
- If you return a Promise from it, it will be awaited
39-
- `onSettled?: (data: unknown | undefined, error: unknown | null, variables: unknown, context: unknown, mutation: Mutation) => Promise<unknown> | unknown`
39+
- `onSettled?: (data: unknown | undefined, error: unknown | null, variables: unknown, context: unknown, mutation: Mutation) => MaybePromise<void>`
4040
- Optional
4141
- This function will be called if some mutation is settled (either successful or errored).
4242
- If you return a Promise from it, it will be awaited
43-
- `onMutate?: (variables: unknown, mutation: Mutation) => Promise<unknown> | unknown`
43+
- `onMutate?: (variables: unknown, mutation: Mutation) => MaybePromise<void>`
4444
- Optional
4545
- This function will be called before some mutation executes.
4646
- If you return a Promise from it, it will be awaited

packages/angular-query-persist-client/src/with-persist-query-client.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@ import {
1616
persistQueryClientSubscribe,
1717
} from '@tanstack/query-persist-client-core'
1818
import type { PersistQueryClientOptions as PersistQueryClientOptionsCore } from '@tanstack/query-persist-client-core'
19-
import type { PersistQueryClientFeature } from '@tanstack/angular-query-experimental'
19+
import type {
20+
MaybePromise,
21+
PersistQueryClientFeature,
22+
} from '@tanstack/angular-query-experimental'
2023

2124
type PersistQueryClientOptions = {
2225
persistOptions: Omit<PersistQueryClientOptionsCore, 'queryClient'>
23-
onSuccess?: () => Promise<unknown> | unknown
24-
onError?: () => Promise<unknown> | unknown
26+
onSuccess?: () => MaybePromise<void>
27+
onError?: () => MaybePromise<void>
2528
}
2629

2730
/**

packages/query-async-storage-persister/src/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { asyncThrottle } from './asyncThrottle'
22
import { noop } from './utils'
33
import type {
44
AsyncStorage,
5-
MaybePromise,
65
PersistedClient,
76
Persister,
87
Promisable,
@@ -29,12 +28,12 @@ interface CreateAsyncStoragePersisterOptions {
2928
* How to serialize the data to storage.
3029
* @default `JSON.stringify`
3130
*/
32-
serialize?: (client: PersistedClient) => MaybePromise<string>
31+
serialize?: (client: PersistedClient) => Promisable<string>
3332
/**
3433
* How to deserialize the data from storage.
3534
* @default `JSON.parse`
3635
*/
37-
deserialize?: (cachedString: string) => MaybePromise<PersistedClient>
36+
deserialize?: (cachedString: string) => Promisable<PersistedClient>
3837

3938
retry?: AsyncPersistRetryer
4039
}

packages/query-core/src/mutationCache.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ import { Mutation } from './mutation'
33
import { matchMutation, noop } from './utils'
44
import { Subscribable } from './subscribable'
55
import type { MutationObserver } from './mutationObserver'
6-
import type { DefaultError, MutationOptions, NotifyEvent } from './types'
6+
import type {
7+
DefaultError,
8+
MaybePromise,
9+
MutationOptions,
10+
NotifyEvent,
11+
} from './types'
712
import type { QueryClient } from './queryClient'
813
import type { Action, MutationState } from './mutation'
914
import type { MutationFilters } from './utils'
@@ -16,24 +21,24 @@ interface MutationCacheConfig {
1621
variables: unknown,
1722
context: unknown,
1823
mutation: Mutation<unknown, unknown, unknown>,
19-
) => Promise<unknown> | unknown
24+
) => MaybePromise<void>
2025
onSuccess?: (
2126
data: unknown,
2227
variables: unknown,
2328
context: unknown,
2429
mutation: Mutation<unknown, unknown, unknown>,
25-
) => Promise<unknown> | unknown
30+
) => MaybePromise<void>
2631
onMutate?: (
2732
variables: unknown,
2833
mutation: Mutation<unknown, unknown, unknown>,
29-
) => Promise<unknown> | unknown
34+
) => MaybePromise<void>
3035
onSettled?: (
3136
data: unknown | undefined,
3237
error: DefaultError | null,
3338
variables: unknown,
3439
context: unknown,
3540
mutation: Mutation<unknown, unknown, unknown>,
36-
) => Promise<unknown> | unknown
41+
) => MaybePromise<void>
3742
}
3843

3944
interface NotifyEventMutationAdded extends NotifyEvent {

packages/query-core/src/query.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import type {
1717
DefaultError,
1818
FetchStatus,
1919
InitialDataFunction,
20+
MaybePromise,
2021
OmitKeyof,
2122
QueryFunctionContext,
2223
QueryKey,
@@ -66,7 +67,7 @@ export interface FetchContext<
6667
TData,
6768
TQueryKey extends QueryKey = QueryKey,
6869
> {
69-
fetchFn: () => unknown | Promise<unknown>
70+
fetchFn: () => MaybePromise<unknown>
7071
fetchOptions?: FetchOptions<TQueryFnData>
7172
signal: AbortSignal
7273
options: QueryOptions<TQueryFnData, TError, TData, any>

packages/query-core/src/retryer.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@ import { focusManager } from './focusManager'
22
import { onlineManager } from './onlineManager'
33
import { pendingThenable } from './thenable'
44
import { isServer, sleep } from './utils'
5-
import type { CancelOptions, DefaultError, NetworkMode } from './types'
5+
import type {
6+
CancelOptions,
7+
DefaultError,
8+
MaybePromise,
9+
NetworkMode,
10+
} from './types'
611

712
// TYPES
813

914
interface RetryerConfig<TData = unknown, TError = DefaultError> {
10-
fn: () => TData | Promise<TData>
15+
fn: () => MaybePromise<TData>
1116
initialPromise?: Promise<TData>
1217
abort?: () => void
1318
onError?: (error: TError) => void
@@ -142,7 +147,7 @@ export function createRetryer<TData, TError>(
142147
return
143148
}
144149

145-
let promiseOrValue: any
150+
let promiseOrValue: MaybePromise<TData>
146151

147152
// we can re-use config.initialPromise on the first call of run()
148153
const initialPromise =

packages/query-core/src/types.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type { QueryFilters, QueryTypeFilter, SkipToken } from './utils'
99
import type { QueryCache } from './queryCache'
1010
import type { MutationCache } from './mutationCache'
1111

12+
export type MaybePromise<T> = T | Promise<T>
1213
export type NonUndefinedGuard<T> = T extends undefined ? never : T
1314

1415
export type DistributiveOmit<
@@ -97,7 +98,7 @@ export type QueryFunction<
9798
T = unknown,
9899
TQueryKey extends QueryKey = QueryKey,
99100
TPageParam = never,
100-
> = (context: QueryFunctionContext<TQueryKey, TPageParam>) => T | Promise<T>
101+
> = (context: QueryFunctionContext<TQueryKey, TPageParam>) => MaybePromise<T>
101102

102103
export type StaleTime = number | 'static'
103104

@@ -128,12 +129,12 @@ export type QueryPersister<
128129
queryFn: QueryFunction<T, TQueryKey, never>,
129130
context: QueryFunctionContext<TQueryKey>,
130131
query: Query,
131-
) => T | Promise<T>
132+
) => MaybePromise<T>
132133
: (
133134
queryFn: QueryFunction<T, TQueryKey, TPageParam>,
134135
context: QueryFunctionContext<TQueryKey>,
135136
query: Query,
136-
) => T | Promise<T>
137+
) => MaybePromise<T>
137138

138139
export type QueryFunctionContext<
139140
TQueryKey extends QueryKey = QueryKey,
@@ -1109,18 +1110,18 @@ export interface MutationOptions<
11091110
data: TData,
11101111
variables: TVariables,
11111112
context: TContext,
1112-
) => Promise<unknown> | unknown
1113+
) => MaybePromise<void>
11131114
onError?: (
11141115
error: TError,
11151116
variables: TVariables,
11161117
context: TContext | undefined,
1117-
) => Promise<unknown> | unknown
1118+
) => MaybePromise<void>
11181119
onSettled?: (
11191120
data: TData | undefined,
11201121
error: TError | null,
11211122
variables: TVariables,
11221123
context: TContext | undefined,
1123-
) => Promise<unknown> | unknown
1124+
) => MaybePromise<void>
11241125
retry?: RetryValue<TError>
11251126
retryDelay?: RetryDelayValue<TError>
11261127
networkMode?: NetworkMode

packages/query-persist-client-core/src/createPersister.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { matchQuery } from '@tanstack/query-core'
22
import type {
3+
MaybePromise,
34
Query,
45
QueryClient,
56
QueryFilters,
@@ -15,8 +16,6 @@ export interface PersistedQuery {
1516
state: QueryState
1617
}
1718

18-
export type MaybePromise<T> = T | Promise<T>
19-
2019
export interface AsyncStorage<TStorageValue = string> {
2120
getItem: (key: string) => MaybePromise<TStorageValue | undefined | null>
2221
setItem: (key: string, value: TStorageValue) => MaybePromise<unknown>
@@ -180,7 +179,7 @@ export function experimental_createQueryPersister<TStorageValue = string>({
180179
}
181180

182181
async function persisterFn<T, TQueryKey extends QueryKey>(
183-
queryFn: (context: QueryFunctionContext<TQueryKey>) => T | Promise<T>,
182+
queryFn: (context: QueryFunctionContext<TQueryKey>) => MaybePromise<T>,
184183
ctx: QueryFunctionContext<TQueryKey>,
185184
query: Query,
186185
) {

0 commit comments

Comments
 (0)