UNPKG

stream-chat

Version:

JS SDK for the Stream Chat API

49 lines (48 loc) 1.97 kB
export type InsertPosition = { after: string; before?: never; } | { after?: never; before: string; }; export type MiddlewareStatus = 'complete' | 'discard'; export type MiddlewareExecutionResult<TValue> = { state: TValue; status?: MiddlewareStatus; }; export type ExecuteParams<TValue> = { eventName: string; initialValue: TValue; mode?: 'concurrent' | 'cancelable'; }; export type MiddlewareHandlerParams<TValue> = { state: TValue; next: (state: TValue) => Promise<MiddlewareExecutionResult<TValue>>; complete: (state: TValue) => Promise<MiddlewareExecutionResult<TValue>>; discard: () => Promise<MiddlewareExecutionResult<TValue>>; forward: () => Promise<MiddlewareExecutionResult<TValue>>; }; export type MiddlewareHandler<TValue> = (params: MiddlewareHandlerParams<TValue>) => Promise<MiddlewareExecutionResult<TValue>>; export type MiddlewareHandlers<TValue, THandlers extends string> = { [K in THandlers]: MiddlewareHandler<TValue>; }; export type Middleware<TValue, THandlers extends string> = { id: string; handlers: MiddlewareHandlers<TValue, THandlers>; }; export declare class MiddlewareExecutor<TValue, THandlers extends string> { readonly id: string; private middleware; constructor(); use(middleware: Middleware<TValue, THandlers> | Middleware<TValue, THandlers>[]): this; replace(middleware: Middleware<TValue, THandlers>[]): this; insert({ middleware, position, unique, }: { middleware: Middleware<TValue, THandlers>[]; position: InsertPosition; unique?: boolean; }): this; setOrder(order: string[]): void; remove(middlewareIds: string | string[]): void; protected executeMiddlewareChain({ eventName, initialValue, mode, }: ExecuteParams<TValue>): Promise<MiddlewareExecutionResult<TValue>>; execute({ eventName, initialValue: initialState, mode, }: ExecuteParams<TValue>): Promise<MiddlewareExecutionResult<TValue>>; }