Files
NapCatQQ/.pnpm-store/v3/files/eb/b7462ca08b1db5e715d4e25887e57014b2ed1288ee0c85c2178a4f047d05cd61d762b7567a336e959a4b6b1bd1a205ef13ee780868b47de3026683d147cc57
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

174 lines
5.0 KiB
Plaintext

import type {
Action,
AsyncThunkAction,
Dispatch,
Middleware,
MiddlewareAPI,
ThunkAction,
ThunkDispatch,
UnknownAction,
} from '@reduxjs/toolkit'
import type { Api, ApiContext } from '../../apiTypes'
import type {
AssertTagTypes,
EndpointDefinitions,
} from '../../endpointDefinitions'
import type {
QueryStatus,
QuerySubState,
RootState,
SubscriptionInternalState,
SubscriptionState,
} from '../apiState'
import type {
InfiniteQueryThunk,
MutationThunk,
QueryThunk,
QueryThunkArg,
ThunkResult,
} from '../buildThunks'
import type {
InfiniteQueryActionCreatorResult,
MutationActionCreatorResult,
QueryActionCreatorResult,
} from '../buildInitiate'
import type { AllSelectors } from '../buildSelectors'
export type QueryStateMeta<T> = Record<string, undefined | T>
export type TimeoutId = ReturnType<typeof setTimeout>
type QueryPollState = {
nextPollTimestamp: number
timeout?: TimeoutId
pollingInterval: number
}
export interface InternalMiddlewareState {
currentSubscriptions: SubscriptionInternalState
currentPolls: Map<string, QueryPollState>
runningQueries: Map<
string,
| QueryActionCreatorResult<any>
| InfiniteQueryActionCreatorResult<any>
| undefined
>
runningMutations: Map<string, MutationActionCreatorResult<any> | undefined>
}
export interface SubscriptionSelectors {
getSubscriptions: () => SubscriptionInternalState
getSubscriptionCount: (queryCacheKey: string) => number
isRequestSubscribed: (queryCacheKey: string, requestId: string) => boolean
}
export interface BuildMiddlewareInput<
Definitions extends EndpointDefinitions,
ReducerPath extends string,
TagTypes extends string,
> {
reducerPath: ReducerPath
context: ApiContext<Definitions>
queryThunk: QueryThunk
mutationThunk: MutationThunk
infiniteQueryThunk: InfiniteQueryThunk<any>
api: Api<any, Definitions, ReducerPath, TagTypes>
assertTagType: AssertTagTypes
selectors: AllSelectors
getRunningQueryThunk: (
endpointName: string,
queryArgs: any,
) => (dispatch: Dispatch) => QueryActionCreatorResult<any> | undefined
getInternalState: (dispatch: Dispatch) => InternalMiddlewareState
}
export type SubMiddlewareApi = MiddlewareAPI<
ThunkDispatch<any, any, UnknownAction>,
RootState<EndpointDefinitions, string, string>
>
export interface BuildSubMiddlewareInput
extends BuildMiddlewareInput<EndpointDefinitions, string, string> {
internalState: InternalMiddlewareState
refetchQuery(
querySubState: Exclude<
QuerySubState<any>,
{ status: QueryStatus.uninitialized }
>,
): ThunkAction<QueryActionCreatorResult<any>, any, any, UnknownAction>
isThisApiSliceAction: (action: Action) => boolean
selectors: AllSelectors
mwApi: MiddlewareAPI<
ThunkDispatch<any, any, UnknownAction>,
RootState<EndpointDefinitions, string, string>
>
}
export type SubMiddlewareBuilder = (
input: BuildSubMiddlewareInput,
) => Middleware<
{},
RootState<EndpointDefinitions, string, string>,
ThunkDispatch<any, any, UnknownAction>
>
type MwNext = Parameters<ReturnType<Middleware>>[0]
export type ApiMiddlewareInternalHandler<Return = void> = (
action: Action,
mwApi: SubMiddlewareApi & { next: MwNext },
prevState: RootState<EndpointDefinitions, string, string>,
) => Return
export type InternalHandlerBuilder<ReturnType = void> = (
input: BuildSubMiddlewareInput,
) => ApiMiddlewareInternalHandler<ReturnType>
export interface PromiseConstructorWithKnownReason {
/**
* Creates a new Promise with a known rejection reason.
* @param executor A callback used to initialize the promise. This callback is passed two arguments:
* a resolve callback used to resolve the promise with a value or the result of another promise,
* and a reject callback used to reject the promise with a provided reason or error.
*/
new <T, R>(
executor: (
resolve: (value: T | PromiseLike<T>) => void,
reject: (reason?: R) => void,
) => void,
): PromiseWithKnownReason<T, R>
}
export type PromiseWithKnownReason<T, R> = Omit<
Promise<T>,
'then' | 'catch'
> & {
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult1 = T, TResult2 = never>(
onfulfilled?:
| ((value: T) => TResult1 | PromiseLike<TResult1>)
| undefined
| null,
onrejected?:
| ((reason: R) => TResult2 | PromiseLike<TResult2>)
| undefined
| null,
): Promise<TResult1 | TResult2>
/**
* Attaches a callback for only the rejection of the Promise.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of the callback.
*/
catch<TResult = never>(
onrejected?:
| ((reason: R) => TResult | PromiseLike<TResult>)
| undefined
| null,
): Promise<T | TResult>
}