UNPKG

7.13 kBTypeScriptView Raw
1import type { SerializedError } from '@reduxjs/toolkit';
2import type { BaseQueryError } from '../baseQueryTypes';
3import type { QueryDefinition, MutationDefinition, EndpointDefinitions, BaseEndpointDefinition, ResultTypeFrom, QueryArgFrom } from '../endpointDefinitions';
4import type { Id, WithRequiredProp } from '../tsHelpers';
5export declare type QueryCacheKey = string & {
6 _type: 'queryCacheKey';
7};
8export declare type QuerySubstateIdentifier = {
9 queryCacheKey: QueryCacheKey;
10};
11export declare type MutationSubstateIdentifier = {
12 requestId: string;
13};
14export declare type RefetchConfigOptions = {
15 refetchOnMountOrArgChange: boolean | number;
16 refetchOnReconnect: boolean;
17 refetchOnFocus: boolean;
18};
19/**
20 * Strings describing the query state at any given time.
21 */
22export declare enum QueryStatus {
23 uninitialized = "uninitialized",
24 pending = "pending",
25 fulfilled = "fulfilled",
26 rejected = "rejected"
27}
28export declare type RequestStatusFlags = {
29 status: QueryStatus.uninitialized;
30 isUninitialized: true;
31 isLoading: false;
32 isSuccess: false;
33 isError: false;
34} | {
35 status: QueryStatus.pending;
36 isUninitialized: false;
37 isLoading: true;
38 isSuccess: false;
39 isError: false;
40} | {
41 status: QueryStatus.fulfilled;
42 isUninitialized: false;
43 isLoading: false;
44 isSuccess: true;
45 isError: false;
46} | {
47 status: QueryStatus.rejected;
48 isUninitialized: false;
49 isLoading: false;
50 isSuccess: false;
51 isError: true;
52};
53export declare function getRequestStatusFlags(status: QueryStatus): RequestStatusFlags;
54export declare type SubscriptionOptions = {
55 /**
56 * How frequently to automatically re-fetch data (in milliseconds). Defaults to `0` (off).
57 */
58 pollingInterval?: number;
59 /**
60 * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after regaining a network connection.
61 *
62 * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.
63 *
64 * Note: requires [`setupListeners`](./setupListeners) to have been called.
65 */
66 refetchOnReconnect?: boolean;
67 /**
68 * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after the application window regains focus.
69 *
70 * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.
71 *
72 * Note: requires [`setupListeners`](./setupListeners) to have been called.
73 */
74 refetchOnFocus?: boolean;
75};
76export declare type Subscribers = {
77 [requestId: string]: SubscriptionOptions;
78};
79export declare type QueryKeys<Definitions extends EndpointDefinitions> = {
80 [K in keyof Definitions]: Definitions[K] extends QueryDefinition<any, any, any, any> ? K : never;
81}[keyof Definitions];
82export declare type MutationKeys<Definitions extends EndpointDefinitions> = {
83 [K in keyof Definitions]: Definitions[K] extends MutationDefinition<any, any, any, any> ? K : never;
84}[keyof Definitions];
85declare type BaseQuerySubState<D extends BaseEndpointDefinition<any, any, any>> = {
86 /**
87 * The argument originally passed into the hook or `initiate` action call
88 */
89 originalArgs: QueryArgFrom<D>;
90 /**
91 * A unique ID associated with the request
92 */
93 requestId: string;
94 /**
95 * The received data from the query
96 */
97 data?: ResultTypeFrom<D>;
98 /**
99 * The received error if applicable
100 */
101 error?: SerializedError | (D extends QueryDefinition<any, infer BaseQuery, any, any> ? BaseQueryError<BaseQuery> : never);
102 /**
103 * The name of the endpoint associated with the query
104 */
105 endpointName: string;
106 /**
107 * Time that the latest query started
108 */
109 startedTimeStamp: number;
110 /**
111 * Time that the latest query was fulfilled
112 */
113 fulfilledTimeStamp?: number;
114};
115export declare type QuerySubState<D extends BaseEndpointDefinition<any, any, any>> = Id<({
116 status: QueryStatus.fulfilled;
117} & WithRequiredProp<BaseQuerySubState<D>, 'data' | 'fulfilledTimeStamp'> & {
118 error: undefined;
119}) | ({
120 status: QueryStatus.pending;
121} & BaseQuerySubState<D>) | ({
122 status: QueryStatus.rejected;
123} & WithRequiredProp<BaseQuerySubState<D>, 'error'>) | {
124 status: QueryStatus.uninitialized;
125 originalArgs?: undefined;
126 data?: undefined;
127 error?: undefined;
128 requestId?: undefined;
129 endpointName?: string;
130 startedTimeStamp?: undefined;
131 fulfilledTimeStamp?: undefined;
132}>;
133declare type BaseMutationSubState<D extends BaseEndpointDefinition<any, any, any>> = {
134 data?: ResultTypeFrom<D>;
135 error?: SerializedError | (D extends MutationDefinition<any, infer BaseQuery, any, any> ? BaseQueryError<BaseQuery> : never);
136 endpointName: string;
137 startedTimeStamp: number;
138 fulfilledTimeStamp?: number;
139};
140export declare type MutationSubState<D extends BaseEndpointDefinition<any, any, any>> = (({
141 status: QueryStatus.fulfilled;
142} & WithRequiredProp<BaseMutationSubState<D>, 'data' | 'fulfilledTimeStamp'>) & {
143 error: undefined;
144}) | (({
145 status: QueryStatus.pending;
146} & BaseMutationSubState<D>) & {
147 data?: undefined;
148}) | ({
149 status: QueryStatus.rejected;
150} & WithRequiredProp<BaseMutationSubState<D>, 'error'>) | {
151 status: QueryStatus.uninitialized;
152 data?: undefined;
153 error?: undefined;
154 endpointName?: string;
155 startedTimeStamp?: undefined;
156 fulfilledTimeStamp?: undefined;
157};
158export declare type CombinedState<D extends EndpointDefinitions, E extends string, ReducerPath extends string> = {
159 queries: QueryState<D>;
160 mutations: MutationState<D>;
161 provided: InvalidationState<E>;
162 subscriptions: SubscriptionState;
163 config: ConfigState<ReducerPath>;
164};
165export declare type InvalidationState<TagTypes extends string> = {
166 [_ in TagTypes]: {
167 [id: string]: Array<QueryCacheKey>;
168 [id: number]: Array<QueryCacheKey>;
169 };
170};
171export declare type QueryState<D extends EndpointDefinitions> = {
172 [queryCacheKey: string]: QuerySubState<D[string]> | undefined;
173};
174export declare type SubscriptionState = {
175 [queryCacheKey: string]: Subscribers | undefined;
176};
177export declare type ConfigState<ReducerPath> = RefetchConfigOptions & {
178 reducerPath: ReducerPath;
179 online: boolean;
180 focused: boolean;
181 middlewareRegistered: boolean | 'conflict';
182} & ModifiableConfigState;
183export declare type ModifiableConfigState = {
184 keepUnusedDataFor: number;
185} & RefetchConfigOptions;
186export declare type MutationState<D extends EndpointDefinitions> = {
187 [requestId: string]: MutationSubState<D[string]> | undefined;
188};
189export declare type RootState<Definitions extends EndpointDefinitions, TagTypes extends string, ReducerPath extends string> = {
190 [P in ReducerPath]: CombinedState<Definitions, TagTypes, P>;
191};
192export {};