@akala/core
Version:
59 lines (58 loc) • 3.15 kB
TypeScript
import type { AnyAsyncMiddleware, MiddlewareAsync, MiddlewarePromise, MiddlewareResult, OptionsResponse, SpecialNextParam } from './shared.js';
export interface ExtendableCompositeMiddlewareAsync<T extends unknown[], TSpecialNextParam extends string | void = SpecialNextParam> {
}
/**
* A class representing a composite middleware that handles asynchronous operations.
*/
export declare class MiddlewareCompositeAsync<T extends unknown[], TSpecialNextParam extends string | undefined = SpecialNextParam> implements MiddlewareAsync<T, TSpecialNextParam>, ExtendableCompositeMiddlewareAsync<T, TSpecialNextParam> {
readonly name?: string;
/**
* Creates an instance of MiddlewareCompositeAsync.
* @param {string} [name] - The name of the middleware composite.
*/
constructor(name?: string);
/**
* Creates a new MiddlewareCompositeAsync instance with the provided middlewares.
* @param {...AnyAsyncMiddleware<T>[]} middlewares - The middlewares to be used.
* @returns {MiddlewareCompositeAsync<T>} A new MiddlewareCompositeAsync instance.
*/
static new<T extends unknown[]>(...middlewares: AnyAsyncMiddleware<T>[]): MiddlewareCompositeAsync<T, "break">;
private readonly stack;
/**
* Adds middlewares to the stack.
* @param {...AnyAsyncMiddleware<T, TSpecialNextParam>[]} middlewares - The middlewares to be added.
* @returns {this} The current instance of MiddlewareCompositeAsync.
*/
useMiddleware(...middlewares: AnyAsyncMiddleware<T, TSpecialNextParam>[]): this;
/**
* Adds standard middlewares to the stack.
* @param {...((...args: T) => Promise<unknown>)[]} middlewares - The standard middlewares to be added.
* @returns {this} The current instance of MiddlewareCompositeAsync.
*/
use(...middlewares: ((...args: T) => Promise<unknown>)[]): this;
/**
* Adds error middlewares to the stack.
* @param {...((error: Error | OptionsResponse, ...args: T) => Promise<unknown>)[]} middlewares - The error middlewares to be added.
* @returns {this} The current instance of MiddlewareCompositeAsync.
*/
useError(...middlewares: ((error: Error | OptionsResponse, ...args: T) => Promise<unknown>)[]): this;
/**
* Processes the request and returns a promise.
* @param {...T} req - The request parameters.
* @returns {Promise<X>} A promise that resolves or rejects based on the middleware processing.
*/
process<X = unknown>(...req: T): Promise<X>;
/**
* Handles errors in the middleware stack.
* @param {MiddlewareResult} error - The error to be handled.
* @param {...T} req - The request parameters.
* @returns {MiddlewarePromise} A promise that resolves or rejects based on the error handling.
*/
handleError(error: MiddlewareResult, ...req: T): MiddlewarePromise;
/**
* Handles the middleware stack.
* @param {...T} req - The request parameters.
* @returns {MiddlewarePromise<TSpecialNextParam>} A promise that resolves or rejects based on the middleware processing.
*/
handle(...req: T): MiddlewarePromise<TSpecialNextParam>;
}