@gati-framework/runtime
Version:
Gati runtime execution engine for running handler-based applications
79 lines • 2.47 kB
TypeScript
/**
* @module runtime/middleware
* @description Middleware pipeline management for Gati framework
*/
import type { Middleware, ErrorMiddleware, MiddlewareEntry, MiddlewareOptions } from './types/middleware.js';
import type { Request, Response, GlobalContext, LocalContext } from './types/index.js';
export type { Middleware, ErrorMiddleware } from './types/middleware.js';
/**
* Middleware manager for organizing and executing middleware chain
*/
export declare class MiddlewareManager {
private middlewares;
private errorMiddlewares;
/**
* Register a middleware function
*
* @param middleware - Middleware function to register
* @param options - Middleware configuration options
*/
use(middleware: Middleware, options?: MiddlewareOptions): void;
/**
* Register an error handling middleware
*
* @param middleware - Error middleware function
*/
useError(middleware: ErrorMiddleware): void;
/**
* Execute middleware chain for a request
*
* @param req - HTTP request
* @param res - HTTP response
* @param gctx - Global context
* @param lctx - Local context
* @param handler - Final handler to execute after middleware
*/
execute(req: Request, res: Response, gctx: GlobalContext, lctx: LocalContext, handler: () => Promise<void> | void): Promise<void>;
/**
* Handle errors through error middleware chain
*/
private handleError;
/**
* Get middlewares applicable to the current request
*/
private getApplicableMiddlewares;
/**
* Match request path against middleware path pattern
* Supports:
* - Exact match: '/api/users'
* - Wildcard: '/api/*' matches '/api/anything'
* - Parameters: '/api/:version/users' matches '/api/v1/users'
*/
private matchPath;
/**
* Convert path pattern to regex
* Supports :param syntax and wildcards
*/
private patternToRegex;
/**
* Sort middlewares by priority (highest first)
*/
private sortMiddlewares;
/**
* Get all registered middlewares
*/
getMiddlewares(): MiddlewareEntry[];
/**
* Clear all middlewares
*/
clear(): void;
/**
* Get number of registered middlewares
*/
size(): number;
}
/**
* Create a new middleware manager instance
*/
export declare function createMiddlewareManager(): MiddlewareManager;
//# sourceMappingURL=middleware.d.ts.map