floppy-disk 3.0.0-alpha.5 → 3.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/react/create-mutation.d.mts +13 -13
- package/esm/react/create-query.d.mts +20 -20
- package/package.json +2 -2
- package/react/create-mutation.d.ts +13 -13
- package/react/create-query.d.ts +20 -20
|
@@ -14,7 +14,7 @@ import { type InitStoreOptions, type SetState } from 'floppy-disk/vanilla';
|
|
|
14
14
|
* - No retry mechanism
|
|
15
15
|
* - No caching across executions
|
|
16
16
|
*/
|
|
17
|
-
export type MutationState<TData, TVariable> = {
|
|
17
|
+
export type MutationState<TData, TVariable, TError> = {
|
|
18
18
|
isPending: boolean;
|
|
19
19
|
} & ({
|
|
20
20
|
state: 'INITIAL';
|
|
@@ -41,7 +41,7 @@ export type MutationState<TData, TVariable> = {
|
|
|
41
41
|
variable: TVariable;
|
|
42
42
|
data: undefined;
|
|
43
43
|
dataUpdatedAt: undefined;
|
|
44
|
-
error:
|
|
44
|
+
error: TError;
|
|
45
45
|
errorUpdatedAt: number;
|
|
46
46
|
});
|
|
47
47
|
/**
|
|
@@ -50,19 +50,19 @@ export type MutationState<TData, TVariable> = {
|
|
|
50
50
|
* @remarks
|
|
51
51
|
* Lifecycle callbacks are triggered for each execution.
|
|
52
52
|
*/
|
|
53
|
-
export type MutationOptions<TData, TVariable> = InitStoreOptions<MutationState<TData, TVariable>> & {
|
|
53
|
+
export type MutationOptions<TData, TVariable, TError = Error> = InitStoreOptions<MutationState<TData, TVariable, TError>> & {
|
|
54
54
|
/**
|
|
55
55
|
* Called when the mutation succeeds.
|
|
56
56
|
*/
|
|
57
|
-
onSuccess?: (data: TData, variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable>) => void;
|
|
57
|
+
onSuccess?: (data: TData, variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable, TError>) => void;
|
|
58
58
|
/**
|
|
59
59
|
* Called when the mutation fails.
|
|
60
60
|
*/
|
|
61
|
-
onError?: (error:
|
|
61
|
+
onError?: (error: TError, variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable, TError>) => void;
|
|
62
62
|
/**
|
|
63
63
|
* Called after the mutation settles (either success or error).
|
|
64
64
|
*/
|
|
65
|
-
onSettled?: (variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable>) => void;
|
|
65
|
+
onSettled?: (variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable, TError>) => void;
|
|
66
66
|
};
|
|
67
67
|
/**
|
|
68
68
|
* Creates a mutation store for handling async operations that modify data.
|
|
@@ -89,10 +89,10 @@ export type MutationOptions<TData, TVariable> = InitStoreOptions<MutationState<T
|
|
|
89
89
|
* const { isPending } = useCreateUser();
|
|
90
90
|
* const result = await useCreateUser.execute({ name: 'John' });
|
|
91
91
|
*/
|
|
92
|
-
export declare const createMutation: <TData, TVariable = undefined>(mutationFn: (variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable>) => Promise<TData>, options?: MutationOptions<TData, TVariable>) => (() => MutationState<TData, TVariable>) & {
|
|
93
|
-
subscribe: (subscriber: import("../vanilla.d.mts").Subscriber<MutationState<TData, TVariable>>) => () => void;
|
|
94
|
-
getSubscribers: () => Set<import("../vanilla.d.mts").Subscriber<MutationState<TData, TVariable>>>;
|
|
95
|
-
getState: () => MutationState<TData, TVariable>;
|
|
92
|
+
export declare const createMutation: <TData, TVariable = undefined, TError = Error>(mutationFn: (variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable, TError>) => Promise<TData>, options?: MutationOptions<TData, TVariable, TError>) => (() => MutationState<TData, TVariable, TError>) & {
|
|
93
|
+
subscribe: (subscriber: import("../vanilla.d.mts").Subscriber<MutationState<TData, TVariable, TError>>) => () => void;
|
|
94
|
+
getSubscribers: () => Set<import("../vanilla.d.mts").Subscriber<MutationState<TData, TVariable, TError>>>;
|
|
95
|
+
getState: () => MutationState<TData, TVariable, TError>;
|
|
96
96
|
/**
|
|
97
97
|
* Manually updates the mutation state.
|
|
98
98
|
*
|
|
@@ -100,7 +100,7 @@ export declare const createMutation: <TData, TVariable = undefined>(mutationFn:
|
|
|
100
100
|
* - Intended for advanced use cases.
|
|
101
101
|
* - Prefer using provided mutation actions (`execute`, `reset`) instead.
|
|
102
102
|
*/
|
|
103
|
-
setState: (value: SetState<MutationState<TData, TVariable>>) => void;
|
|
103
|
+
setState: (value: SetState<MutationState<TData, TVariable, TError>>) => void;
|
|
104
104
|
/**
|
|
105
105
|
* Executes the mutation.
|
|
106
106
|
*
|
|
@@ -118,11 +118,11 @@ export declare const createMutation: <TData, TVariable = undefined>(mutationFn:
|
|
|
118
118
|
execute: TVariable extends undefined ? () => Promise<{
|
|
119
119
|
variable: undefined;
|
|
120
120
|
data?: TData;
|
|
121
|
-
error?:
|
|
121
|
+
error?: TError;
|
|
122
122
|
}> : (variable: TVariable) => Promise<{
|
|
123
123
|
variable: TVariable;
|
|
124
124
|
data?: TData;
|
|
125
|
-
error?:
|
|
125
|
+
error?: TError;
|
|
126
126
|
}>;
|
|
127
127
|
/**
|
|
128
128
|
* Resets the mutation state back to its initial state.
|
|
@@ -19,7 +19,7 @@ import { type InitStoreOptions, type SetState } from 'floppy-disk/vanilla';
|
|
|
19
19
|
* @remarks
|
|
20
20
|
* - Data and error are mutually exclusive except in `SUCCESS_BUT_REVALIDATION_ERROR`.
|
|
21
21
|
*/
|
|
22
|
-
export type QueryState<TData> = {
|
|
22
|
+
export type QueryState<TData, TError> = {
|
|
23
23
|
isPending: boolean;
|
|
24
24
|
isRevalidating: boolean;
|
|
25
25
|
isRetrying: boolean;
|
|
@@ -46,7 +46,7 @@ export type QueryState<TData> = {
|
|
|
46
46
|
isError: true;
|
|
47
47
|
data: undefined;
|
|
48
48
|
dataUpdatedAt: undefined;
|
|
49
|
-
error:
|
|
49
|
+
error: TError;
|
|
50
50
|
errorUpdatedAt: number;
|
|
51
51
|
} | {
|
|
52
52
|
state: 'SUCCESS_BUT_REVALIDATION_ERROR';
|
|
@@ -54,7 +54,7 @@ export type QueryState<TData> = {
|
|
|
54
54
|
isError: false;
|
|
55
55
|
data: TData;
|
|
56
56
|
dataUpdatedAt: number;
|
|
57
|
-
error:
|
|
57
|
+
error: TError;
|
|
58
58
|
errorUpdatedAt: number;
|
|
59
59
|
});
|
|
60
60
|
/**
|
|
@@ -63,7 +63,7 @@ export type QueryState<TData> = {
|
|
|
63
63
|
* @remarks
|
|
64
64
|
* Controls caching, retry behavior, lifecycle, and side effects of an async operation.
|
|
65
65
|
*/
|
|
66
|
-
export type QueryOptions<TData, TVariable extends Record<string, any
|
|
66
|
+
export type QueryOptions<TData, TVariable extends Record<string, any>, TError = Error> = InitStoreOptions<QueryState<TData, TError>> & {
|
|
67
67
|
/**
|
|
68
68
|
* Time (in milliseconds) that data is considered fresh.
|
|
69
69
|
*
|
|
@@ -95,15 +95,15 @@ export type QueryOptions<TData, TVariable extends Record<string, any>> = InitSto
|
|
|
95
95
|
/**
|
|
96
96
|
* Called when the query succeeds.
|
|
97
97
|
*/
|
|
98
|
-
onSuccess?: (data: TData, variable: TVariable, stateBeforeExecute: QueryState<TData>) => void;
|
|
98
|
+
onSuccess?: (data: TData, variable: TVariable, stateBeforeExecute: QueryState<TData, TError>) => void;
|
|
99
99
|
/**
|
|
100
100
|
* Called when the query fails and will not retry.
|
|
101
101
|
*/
|
|
102
|
-
onError?: (error:
|
|
102
|
+
onError?: (error: TError, variable: TVariable, stateBeforeExecute: QueryState<TData, TError>) => void;
|
|
103
103
|
/**
|
|
104
104
|
* Called after the query settles (success or final failure).
|
|
105
105
|
*/
|
|
106
|
-
onSettled?: (variable: TVariable, stateBeforeExecute: QueryState<TData>) => void;
|
|
106
|
+
onSettled?: (variable: TVariable, stateBeforeExecute: QueryState<TData, TError>) => void;
|
|
107
107
|
/**
|
|
108
108
|
* Determines whether a failed query should retry.
|
|
109
109
|
*
|
|
@@ -120,7 +120,7 @@ export type QueryOptions<TData, TVariable extends Record<string, any>> = InitSto
|
|
|
120
120
|
* return [false];
|
|
121
121
|
* }
|
|
122
122
|
*/
|
|
123
|
-
shouldRetry?: (error:
|
|
123
|
+
shouldRetry?: (error: TError, currentState: QueryState<TData, TError>) => [true, number] | [false];
|
|
124
124
|
};
|
|
125
125
|
/**
|
|
126
126
|
* Creates a query factory for managing cached async operations.
|
|
@@ -157,7 +157,7 @@ export type QueryOptions<TData, TVariable extends Record<string, any>> = InitSto
|
|
|
157
157
|
* // ...
|
|
158
158
|
* }
|
|
159
159
|
*/
|
|
160
|
-
export declare const createQuery: <TData, TVariable extends Record<string, any> = never>(queryFn: (variable: TVariable, currentState: QueryState<TData>) => Promise<TData>, options?: QueryOptions<TData, TVariable>) => ((variable?: TVariable) => ((options?: {
|
|
160
|
+
export declare const createQuery: <TData, TVariable extends Record<string, any> = never, TError = Error>(queryFn: (variable: TVariable, currentState: QueryState<TData, TError>) => Promise<TData>, options?: QueryOptions<TData, TVariable, TError>) => ((variable?: TVariable) => ((options?: {
|
|
161
161
|
/**
|
|
162
162
|
* Whether the query should execute automatically on mount.
|
|
163
163
|
*
|
|
@@ -180,13 +180,13 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
180
180
|
* // While loading userId=2, still show userId=1 data
|
|
181
181
|
* useQuery({ id: userId }, { keepPreviousData: true });
|
|
182
182
|
*/ keepPreviousData?: boolean;
|
|
183
|
-
}) => QueryState<TData>) & {
|
|
183
|
+
}) => QueryState<TData, TError>) & {
|
|
184
184
|
metadata: {
|
|
185
185
|
isInvalidated?: boolean;
|
|
186
|
-
promise?: Promise<QueryState<TData>> | undefined;
|
|
187
|
-
promiseResolver?: ((value: QueryState<TData> | PromiseLike<QueryState<TData>>) => void) | undefined;
|
|
186
|
+
promise?: Promise<QueryState<TData, TError>> | undefined;
|
|
187
|
+
promiseResolver?: ((value: QueryState<TData, TError> | PromiseLike<QueryState<TData, TError>>) => void) | undefined;
|
|
188
188
|
retryTimeoutId?: number;
|
|
189
|
-
retryResolver?: ((value: QueryState<TData> | PromiseLike<QueryState<TData>>) => void) | undefined;
|
|
189
|
+
retryResolver?: ((value: QueryState<TData, TError> | PromiseLike<QueryState<TData, TError>>) => void) | undefined;
|
|
190
190
|
garbageCollectionTimeoutId?: number;
|
|
191
191
|
rollbackData?: TData | undefined;
|
|
192
192
|
};
|
|
@@ -222,7 +222,7 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
222
222
|
*/
|
|
223
223
|
execute: (options?: {
|
|
224
224
|
overwriteOngoingExecution?: boolean;
|
|
225
|
-
}) => Promise<QueryState<TData>>;
|
|
225
|
+
}) => Promise<QueryState<TData, TError>>;
|
|
226
226
|
/**
|
|
227
227
|
* Re-executes the query if needed based on freshness or invalidation.
|
|
228
228
|
*
|
|
@@ -238,7 +238,7 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
238
238
|
*/
|
|
239
239
|
revalidate: (options?: {
|
|
240
240
|
overwriteOngoingExecution?: boolean;
|
|
241
|
-
}) => Promise<QueryState<TData>>;
|
|
241
|
+
}) => Promise<QueryState<TData, TError>>;
|
|
242
242
|
/**
|
|
243
243
|
* Marks the query as invalidated and optionally triggers re-execution.
|
|
244
244
|
*
|
|
@@ -290,7 +290,7 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
290
290
|
* const { rollback, revalidate } = query.optimisticUpdate(newData);
|
|
291
291
|
*/
|
|
292
292
|
optimisticUpdate: (data: TData) => {
|
|
293
|
-
revalidate: () => Promise<QueryState<TData>>;
|
|
293
|
+
revalidate: () => Promise<QueryState<TData, TError>>;
|
|
294
294
|
rollback: () => TData;
|
|
295
295
|
};
|
|
296
296
|
/**
|
|
@@ -302,10 +302,10 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
302
302
|
* - Should be used if an optimistic update fails.
|
|
303
303
|
*/
|
|
304
304
|
rollbackOptimisticUpdate: () => TData;
|
|
305
|
-
subscribe: (subscriber: import("../vanilla.d.mts").Subscriber<QueryState<TData>>) => () => void;
|
|
306
|
-
getSubscribers: () => Set<import("../vanilla.d.mts").Subscriber<QueryState<TData>>>;
|
|
307
|
-
getState: () => QueryState<TData>;
|
|
308
|
-
setState: (value: SetState<QueryState<TData>>) => void;
|
|
305
|
+
subscribe: (subscriber: import("../vanilla.d.mts").Subscriber<QueryState<TData, TError>>) => () => void;
|
|
306
|
+
getSubscribers: () => Set<import("../vanilla.d.mts").Subscriber<QueryState<TData, TError>>>;
|
|
307
|
+
getState: () => QueryState<TData, TError>;
|
|
308
|
+
setState: (value: SetState<QueryState<TData, TError>>) => void;
|
|
309
309
|
}) & {
|
|
310
310
|
/**
|
|
311
311
|
* Executes all query instances.
|
package/package.json
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"name": "floppy-disk",
|
|
3
3
|
"description": "Lightweight, simple, and powerful state management library",
|
|
4
4
|
"private": false,
|
|
5
|
-
"version": "3.0.0-
|
|
5
|
+
"version": "3.0.0-beta.2",
|
|
6
6
|
"publishConfig": {
|
|
7
|
-
"tag": "
|
|
7
|
+
"tag": "beta"
|
|
8
8
|
},
|
|
9
9
|
"keywords": [
|
|
10
10
|
"utilities",
|
|
@@ -14,7 +14,7 @@ import { type InitStoreOptions, type SetState } from 'floppy-disk/vanilla';
|
|
|
14
14
|
* - No retry mechanism
|
|
15
15
|
* - No caching across executions
|
|
16
16
|
*/
|
|
17
|
-
export type MutationState<TData, TVariable> = {
|
|
17
|
+
export type MutationState<TData, TVariable, TError> = {
|
|
18
18
|
isPending: boolean;
|
|
19
19
|
} & ({
|
|
20
20
|
state: 'INITIAL';
|
|
@@ -41,7 +41,7 @@ export type MutationState<TData, TVariable> = {
|
|
|
41
41
|
variable: TVariable;
|
|
42
42
|
data: undefined;
|
|
43
43
|
dataUpdatedAt: undefined;
|
|
44
|
-
error:
|
|
44
|
+
error: TError;
|
|
45
45
|
errorUpdatedAt: number;
|
|
46
46
|
});
|
|
47
47
|
/**
|
|
@@ -50,19 +50,19 @@ export type MutationState<TData, TVariable> = {
|
|
|
50
50
|
* @remarks
|
|
51
51
|
* Lifecycle callbacks are triggered for each execution.
|
|
52
52
|
*/
|
|
53
|
-
export type MutationOptions<TData, TVariable> = InitStoreOptions<MutationState<TData, TVariable>> & {
|
|
53
|
+
export type MutationOptions<TData, TVariable, TError = Error> = InitStoreOptions<MutationState<TData, TVariable, TError>> & {
|
|
54
54
|
/**
|
|
55
55
|
* Called when the mutation succeeds.
|
|
56
56
|
*/
|
|
57
|
-
onSuccess?: (data: TData, variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable>) => void;
|
|
57
|
+
onSuccess?: (data: TData, variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable, TError>) => void;
|
|
58
58
|
/**
|
|
59
59
|
* Called when the mutation fails.
|
|
60
60
|
*/
|
|
61
|
-
onError?: (error:
|
|
61
|
+
onError?: (error: TError, variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable, TError>) => void;
|
|
62
62
|
/**
|
|
63
63
|
* Called after the mutation settles (either success or error).
|
|
64
64
|
*/
|
|
65
|
-
onSettled?: (variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable>) => void;
|
|
65
|
+
onSettled?: (variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable, TError>) => void;
|
|
66
66
|
};
|
|
67
67
|
/**
|
|
68
68
|
* Creates a mutation store for handling async operations that modify data.
|
|
@@ -89,10 +89,10 @@ export type MutationOptions<TData, TVariable> = InitStoreOptions<MutationState<T
|
|
|
89
89
|
* const { isPending } = useCreateUser();
|
|
90
90
|
* const result = await useCreateUser.execute({ name: 'John' });
|
|
91
91
|
*/
|
|
92
|
-
export declare const createMutation: <TData, TVariable = undefined>(mutationFn: (variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable>) => Promise<TData>, options?: MutationOptions<TData, TVariable>) => (() => MutationState<TData, TVariable>) & {
|
|
93
|
-
subscribe: (subscriber: import("../vanilla.ts").Subscriber<MutationState<TData, TVariable>>) => () => void;
|
|
94
|
-
getSubscribers: () => Set<import("../vanilla.ts").Subscriber<MutationState<TData, TVariable>>>;
|
|
95
|
-
getState: () => MutationState<TData, TVariable>;
|
|
92
|
+
export declare const createMutation: <TData, TVariable = undefined, TError = Error>(mutationFn: (variable: TVariable, stateBeforeExecute: MutationState<TData, TVariable, TError>) => Promise<TData>, options?: MutationOptions<TData, TVariable, TError>) => (() => MutationState<TData, TVariable, TError>) & {
|
|
93
|
+
subscribe: (subscriber: import("../vanilla.ts").Subscriber<MutationState<TData, TVariable, TError>>) => () => void;
|
|
94
|
+
getSubscribers: () => Set<import("../vanilla.ts").Subscriber<MutationState<TData, TVariable, TError>>>;
|
|
95
|
+
getState: () => MutationState<TData, TVariable, TError>;
|
|
96
96
|
/**
|
|
97
97
|
* Manually updates the mutation state.
|
|
98
98
|
*
|
|
@@ -100,7 +100,7 @@ export declare const createMutation: <TData, TVariable = undefined>(mutationFn:
|
|
|
100
100
|
* - Intended for advanced use cases.
|
|
101
101
|
* - Prefer using provided mutation actions (`execute`, `reset`) instead.
|
|
102
102
|
*/
|
|
103
|
-
setState: (value: SetState<MutationState<TData, TVariable>>) => void;
|
|
103
|
+
setState: (value: SetState<MutationState<TData, TVariable, TError>>) => void;
|
|
104
104
|
/**
|
|
105
105
|
* Executes the mutation.
|
|
106
106
|
*
|
|
@@ -118,11 +118,11 @@ export declare const createMutation: <TData, TVariable = undefined>(mutationFn:
|
|
|
118
118
|
execute: TVariable extends undefined ? () => Promise<{
|
|
119
119
|
variable: undefined;
|
|
120
120
|
data?: TData;
|
|
121
|
-
error?:
|
|
121
|
+
error?: TError;
|
|
122
122
|
}> : (variable: TVariable) => Promise<{
|
|
123
123
|
variable: TVariable;
|
|
124
124
|
data?: TData;
|
|
125
|
-
error?:
|
|
125
|
+
error?: TError;
|
|
126
126
|
}>;
|
|
127
127
|
/**
|
|
128
128
|
* Resets the mutation state back to its initial state.
|
package/react/create-query.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ import { type InitStoreOptions, type SetState } from 'floppy-disk/vanilla';
|
|
|
19
19
|
* @remarks
|
|
20
20
|
* - Data and error are mutually exclusive except in `SUCCESS_BUT_REVALIDATION_ERROR`.
|
|
21
21
|
*/
|
|
22
|
-
export type QueryState<TData> = {
|
|
22
|
+
export type QueryState<TData, TError> = {
|
|
23
23
|
isPending: boolean;
|
|
24
24
|
isRevalidating: boolean;
|
|
25
25
|
isRetrying: boolean;
|
|
@@ -46,7 +46,7 @@ export type QueryState<TData> = {
|
|
|
46
46
|
isError: true;
|
|
47
47
|
data: undefined;
|
|
48
48
|
dataUpdatedAt: undefined;
|
|
49
|
-
error:
|
|
49
|
+
error: TError;
|
|
50
50
|
errorUpdatedAt: number;
|
|
51
51
|
} | {
|
|
52
52
|
state: 'SUCCESS_BUT_REVALIDATION_ERROR';
|
|
@@ -54,7 +54,7 @@ export type QueryState<TData> = {
|
|
|
54
54
|
isError: false;
|
|
55
55
|
data: TData;
|
|
56
56
|
dataUpdatedAt: number;
|
|
57
|
-
error:
|
|
57
|
+
error: TError;
|
|
58
58
|
errorUpdatedAt: number;
|
|
59
59
|
});
|
|
60
60
|
/**
|
|
@@ -63,7 +63,7 @@ export type QueryState<TData> = {
|
|
|
63
63
|
* @remarks
|
|
64
64
|
* Controls caching, retry behavior, lifecycle, and side effects of an async operation.
|
|
65
65
|
*/
|
|
66
|
-
export type QueryOptions<TData, TVariable extends Record<string, any
|
|
66
|
+
export type QueryOptions<TData, TVariable extends Record<string, any>, TError = Error> = InitStoreOptions<QueryState<TData, TError>> & {
|
|
67
67
|
/**
|
|
68
68
|
* Time (in milliseconds) that data is considered fresh.
|
|
69
69
|
*
|
|
@@ -95,15 +95,15 @@ export type QueryOptions<TData, TVariable extends Record<string, any>> = InitSto
|
|
|
95
95
|
/**
|
|
96
96
|
* Called when the query succeeds.
|
|
97
97
|
*/
|
|
98
|
-
onSuccess?: (data: TData, variable: TVariable, stateBeforeExecute: QueryState<TData>) => void;
|
|
98
|
+
onSuccess?: (data: TData, variable: TVariable, stateBeforeExecute: QueryState<TData, TError>) => void;
|
|
99
99
|
/**
|
|
100
100
|
* Called when the query fails and will not retry.
|
|
101
101
|
*/
|
|
102
|
-
onError?: (error:
|
|
102
|
+
onError?: (error: TError, variable: TVariable, stateBeforeExecute: QueryState<TData, TError>) => void;
|
|
103
103
|
/**
|
|
104
104
|
* Called after the query settles (success or final failure).
|
|
105
105
|
*/
|
|
106
|
-
onSettled?: (variable: TVariable, stateBeforeExecute: QueryState<TData>) => void;
|
|
106
|
+
onSettled?: (variable: TVariable, stateBeforeExecute: QueryState<TData, TError>) => void;
|
|
107
107
|
/**
|
|
108
108
|
* Determines whether a failed query should retry.
|
|
109
109
|
*
|
|
@@ -120,7 +120,7 @@ export type QueryOptions<TData, TVariable extends Record<string, any>> = InitSto
|
|
|
120
120
|
* return [false];
|
|
121
121
|
* }
|
|
122
122
|
*/
|
|
123
|
-
shouldRetry?: (error:
|
|
123
|
+
shouldRetry?: (error: TError, currentState: QueryState<TData, TError>) => [true, number] | [false];
|
|
124
124
|
};
|
|
125
125
|
/**
|
|
126
126
|
* Creates a query factory for managing cached async operations.
|
|
@@ -157,7 +157,7 @@ export type QueryOptions<TData, TVariable extends Record<string, any>> = InitSto
|
|
|
157
157
|
* // ...
|
|
158
158
|
* }
|
|
159
159
|
*/
|
|
160
|
-
export declare const createQuery: <TData, TVariable extends Record<string, any> = never>(queryFn: (variable: TVariable, currentState: QueryState<TData>) => Promise<TData>, options?: QueryOptions<TData, TVariable>) => ((variable?: TVariable) => ((options?: {
|
|
160
|
+
export declare const createQuery: <TData, TVariable extends Record<string, any> = never, TError = Error>(queryFn: (variable: TVariable, currentState: QueryState<TData, TError>) => Promise<TData>, options?: QueryOptions<TData, TVariable, TError>) => ((variable?: TVariable) => ((options?: {
|
|
161
161
|
/**
|
|
162
162
|
* Whether the query should execute automatically on mount.
|
|
163
163
|
*
|
|
@@ -180,13 +180,13 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
180
180
|
* // While loading userId=2, still show userId=1 data
|
|
181
181
|
* useQuery({ id: userId }, { keepPreviousData: true });
|
|
182
182
|
*/ keepPreviousData?: boolean;
|
|
183
|
-
}) => QueryState<TData>) & {
|
|
183
|
+
}) => QueryState<TData, TError>) & {
|
|
184
184
|
metadata: {
|
|
185
185
|
isInvalidated?: boolean;
|
|
186
|
-
promise?: Promise<QueryState<TData>> | undefined;
|
|
187
|
-
promiseResolver?: ((value: QueryState<TData> | PromiseLike<QueryState<TData>>) => void) | undefined;
|
|
186
|
+
promise?: Promise<QueryState<TData, TError>> | undefined;
|
|
187
|
+
promiseResolver?: ((value: QueryState<TData, TError> | PromiseLike<QueryState<TData, TError>>) => void) | undefined;
|
|
188
188
|
retryTimeoutId?: number;
|
|
189
|
-
retryResolver?: ((value: QueryState<TData> | PromiseLike<QueryState<TData>>) => void) | undefined;
|
|
189
|
+
retryResolver?: ((value: QueryState<TData, TError> | PromiseLike<QueryState<TData, TError>>) => void) | undefined;
|
|
190
190
|
garbageCollectionTimeoutId?: number;
|
|
191
191
|
rollbackData?: TData | undefined;
|
|
192
192
|
};
|
|
@@ -222,7 +222,7 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
222
222
|
*/
|
|
223
223
|
execute: (options?: {
|
|
224
224
|
overwriteOngoingExecution?: boolean;
|
|
225
|
-
}) => Promise<QueryState<TData>>;
|
|
225
|
+
}) => Promise<QueryState<TData, TError>>;
|
|
226
226
|
/**
|
|
227
227
|
* Re-executes the query if needed based on freshness or invalidation.
|
|
228
228
|
*
|
|
@@ -238,7 +238,7 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
238
238
|
*/
|
|
239
239
|
revalidate: (options?: {
|
|
240
240
|
overwriteOngoingExecution?: boolean;
|
|
241
|
-
}) => Promise<QueryState<TData>>;
|
|
241
|
+
}) => Promise<QueryState<TData, TError>>;
|
|
242
242
|
/**
|
|
243
243
|
* Marks the query as invalidated and optionally triggers re-execution.
|
|
244
244
|
*
|
|
@@ -290,7 +290,7 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
290
290
|
* const { rollback, revalidate } = query.optimisticUpdate(newData);
|
|
291
291
|
*/
|
|
292
292
|
optimisticUpdate: (data: TData) => {
|
|
293
|
-
revalidate: () => Promise<QueryState<TData>>;
|
|
293
|
+
revalidate: () => Promise<QueryState<TData, TError>>;
|
|
294
294
|
rollback: () => TData;
|
|
295
295
|
};
|
|
296
296
|
/**
|
|
@@ -302,10 +302,10 @@ export declare const createQuery: <TData, TVariable extends Record<string, any>
|
|
|
302
302
|
* - Should be used if an optimistic update fails.
|
|
303
303
|
*/
|
|
304
304
|
rollbackOptimisticUpdate: () => TData;
|
|
305
|
-
subscribe: (subscriber: import("../vanilla.ts").Subscriber<QueryState<TData>>) => () => void;
|
|
306
|
-
getSubscribers: () => Set<import("../vanilla.ts").Subscriber<QueryState<TData>>>;
|
|
307
|
-
getState: () => QueryState<TData>;
|
|
308
|
-
setState: (value: SetState<QueryState<TData>>) => void;
|
|
305
|
+
subscribe: (subscriber: import("../vanilla.ts").Subscriber<QueryState<TData, TError>>) => () => void;
|
|
306
|
+
getSubscribers: () => Set<import("../vanilla.ts").Subscriber<QueryState<TData, TError>>>;
|
|
307
|
+
getState: () => QueryState<TData, TError>;
|
|
308
|
+
setState: (value: SetState<QueryState<TData, TError>>) => void;
|
|
309
309
|
}) & {
|
|
310
310
|
/**
|
|
311
311
|
* Executes all query instances.
|