UNPKG

3.35 kBTypeScriptView Raw
1import type { MutationSubState, QuerySubState, RootState as _RootState, RequestStatusFlags } from './apiState';
2import type { EndpointDefinitions, QueryDefinition, MutationDefinition, QueryArgFrom, TagTypesFrom, ReducerPathFrom } 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 | SkipToken) => (state: RootState) => MutationResultSelectorResult<Definition>;
41export declare type MutationResultSelectorResult<Definition extends MutationDefinition<any, any, any, any>> = MutationSubState<Definition> & RequestStatusFlags;
42export declare function buildSelectors<Definitions extends EndpointDefinitions, ReducerPath extends string>({ serializeQueryArgs, reducerPath, }: {
43 serializeQueryArgs: InternalSerializeQueryArgs;
44 reducerPath: ReducerPath;
45}): {
46 buildQuerySelector: (endpointName: string, endpointDefinition: QueryDefinition<any, any, any, any>) => QueryResultSelectorFactory<any, {
47 [x: string]: import("./apiState").CombinedState<Definitions, string, string>;
48 }>;
49 buildMutationSelector: () => MutationResultSelectorFactory<any, {
50 [x: string]: import("./apiState").CombinedState<Definitions, string, string>;
51 }>;
52};
53export {};