@allan1361/iota-big3-sdk-middleware
Version:
🏆 A+ Grade Certified Enterprise Middleware Framework - Phase 3 Certified (90/100) with advanced resilience patterns, comprehensive type safety, and production-ready observability
44 lines • 1.67 kB
TypeScript
import type { IndustryType, SDK } from '@iota-big3/sdk-core';
import type { Request, RequestHandler, Response } from 'express';
import type { FastifyInstance } from 'fastify';
export interface RateLimitConfig {
windowMs?: number;
max?: number;
message?: string;
statusCode?: number;
headers?: boolean;
skipSuccessfulRequests?: boolean;
skipFailedRequests?: boolean;
keyGenerator?: (req: Request) => string;
skip?: (req: Request) => boolean;
handler?: (req: Request, res: Response) => void;
onLimitReached?: (req: Request, res: Response) => void;
store?: RateLimitStore;
}
export interface RateLimitMetadata {
serviceName: string;
tribe?: string;
industry?: IndustryType;
environment?: string;
sdk?: SDK;
}
export interface RateLimitStore {
incrementAsync(key: string): Promise<{
totalHits: number;
resetTime?: Date;
}>;
decrementAsync(key: string): Promise<void>;
resetAsync(key: string): Promise<void>;
resetAllAsync(): Promise<void>;
}
export interface RateLimitMiddleware extends RequestHandler {
express: RequestHandler;
fastify: (fastify: FastifyInstance) => Promise<void>;
resetKey: (key: string) => Promise<void>;
resetAll: () => Promise<void>;
}
export declare function createRateLimitMiddleware(metadata: RateLimitMetadata, config?: RateLimitConfig): RateLimitMiddleware;
export declare function createLegacyRateLimitMiddleware(config?: RateLimitConfig): RateLimitMiddleware;
export declare const rateLimitMiddleware: typeof createRateLimitMiddleware;
export default createRateLimitMiddleware;
//# sourceMappingURL=rate-limit-middleware.d.ts.map