UNPKG

3.76 kBTypeScriptView Raw
1import type { MutationSubState, QuerySubState, RootState as _RootState, RequestStatusFlags, QueryCacheKey } from './apiState';
2import type { EndpointDefinitions, QueryDefinition, MutationDefinition, QueryArgFrom, TagTypesFrom, ReducerPathFrom, TagDescription } from '../endpointDefinitions';
3import type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs';
4export declare type SkipToken = typeof skipToken;
5/**
6 * Can be passed into `useQuery`, `useQueryState` or `useQuerySubscription`
7 * instead of the query argument to get the same effect as if setting
8 * `skip: true` in the query options.
9 *
10 * Useful for scenarios where a query should be skipped when `arg` is `undefined`
11 * and TypeScript complains about it because `arg` is not allowed to be passed
12 * in as `undefined`, such as
13 *
14 * ```ts
15 * // codeblock-meta title="will error if the query argument is not allowed to be undefined" no-transpile
16 * useSomeQuery(arg, { skip: !!arg })
17 * ```
18 *
19 * ```ts
20 * // codeblock-meta title="using skipToken instead" no-transpile
21 * useSomeQuery(arg ?? skipToken)
22 * ```
23 *
24 * If passed directly into a query or mutation selector, that selector will always
25 * return an uninitialized state.
26 */
27export declare const skipToken: unique symbol;
28/** @deprecated renamed to `skipToken` */
29export declare const skipSelector: symbol;
30declare module './module' {
31 interface ApiEndpointQuery<Definition extends QueryDefinition<any, any, any, any, any>, Definitions extends EndpointDefinitions> {
32 select: QueryResultSelectorFactory<Definition, _RootState<Definitions, TagTypesFrom<Definition>, ReducerPathFrom<Definition>>>;
33 }
34 interface ApiEndpointMutation<Definition extends MutationDefinition<any, any, any, any, any>, Definitions extends EndpointDefinitions> {
35 select: MutationResultSelectorFactory<Definition, _RootState<Definitions, TagTypesFrom<Definition>, ReducerPathFrom<Definition>>>;
36 }
37}
38declare type QueryResultSelectorFactory<Definition extends QueryDefinition<any, any, any, any>, RootState> = (queryArg: QueryArgFrom<Definition> | SkipToken) => (state: RootState) => QueryResultSelectorResult<Definition>;
39export declare type QueryResultSelectorResult<Definition extends QueryDefinition<any, any, any, any>> = QuerySubState<Definition> & RequestStatusFlags;
40declare type MutationResultSelectorFactory<Definition extends MutationDefinition<any, any, any, any>, RootState> = (requestId: string | {
41 requestId: string | undefined;
42 fixedCacheKey: string | undefined;
43} | SkipToken) => (state: RootState) => MutationResultSelectorResult<Definition>;
44export declare type MutationResultSelectorResult<Definition extends MutationDefinition<any, any, any, any>> = MutationSubState<Definition> & RequestStatusFlags;
45export declare function buildSelectors<Definitions extends EndpointDefinitions, ReducerPath extends string>({ serializeQueryArgs, reducerPath, }: {
46 serializeQueryArgs: InternalSerializeQueryArgs;
47 reducerPath: ReducerPath;
48}): {
49 buildQuerySelector: (endpointName: string, endpointDefinition: QueryDefinition<any, any, any, any>) => QueryResultSelectorFactory<any, {
50 [x: string]: import("./apiState").CombinedState<Definitions, string, string>;
51 }>;
52 buildMutationSelector: () => MutationResultSelectorFactory<any, {
53 [x: string]: import("./apiState").CombinedState<Definitions, string, string>;
54 }>;
55 selectInvalidatedBy: (state: {
56 [x: string]: import("./apiState").CombinedState<Definitions, string, string>;
57 }, tags: ReadonlyArray<TagDescription<string>>) => Array<{
58 endpointName: string;
59 originalArgs: any;
60 queryCacheKey: QueryCacheKey;
61 }>;
62};
63export {};