UNPKG

fortify2-js

Version:

MOST POWERFUL JavaScript Security Library! Military-grade cryptography + 19 enhanced object methods + quantum-resistant algorithms + perfect TypeScript support. More powerful than Lodash with built-in security.

151 lines (148 loc) 6.08 kB
import { MiddlewareAPI } from './MiddlewareAPI.js'; import { logger } from '../../../utils/Logger.js'; /** * MiddlewareMethodsManager - Adds middleware methods to the UltraFastApp * Follows the same pattern as RouteManager for adding methods to the app */ class MiddlewareMethodsManager { constructor(dependencies) { this.dependencies = dependencies; } /** * Add all middleware methods to the Express app */ addMiddlewareMethods() { logger.debug("middleware", "Adding middleware methods to UltraFastApp..."); this.addMiddlewareMethod(); this.addSecureMiddlewareMethods(); this.addPerformanceMiddlewareMethods(); this.addCachedMiddlewareMethods(); this.addMiddlewareManagementMethods(); this.addConvenienceMethods(); logger.debug("middleware", "Middleware methods added successfully"); } /** * Add the main middleware() method that returns MiddlewareAPI */ addMiddlewareMethod() { this.dependencies.app.middleware = (config) => { return new MiddlewareAPI(this.dependencies.middlewareManager, this.dependencies.app, config || {}); }; } /** * Add secure middleware methods */ addSecureMiddlewareMethods() { this.dependencies.app.useSecure = (middleware) => { const middlewareArray = Array.isArray(middleware) ? middleware : [middleware]; middlewareArray.forEach((mw, index) => { this.dependencies.middlewareManager.register(mw, { name: `secure-middleware-${index}`, priority: "critical", cacheable: false, }); }); logger.debug("middleware", `Registered ${middlewareArray.length} secure middleware`); return this.dependencies.app; }; } /** * Add performance middleware methods */ addPerformanceMiddlewareMethods() { this.dependencies.app.usePerformance = (middleware) => { const middlewareArray = Array.isArray(middleware) ? middleware : [middleware]; middlewareArray.forEach((mw, index) => { this.dependencies.middlewareManager.register(mw, { name: `performance-middleware-${index}`, priority: "high", cacheable: true, }); }); logger.debug("middleware", `Registered ${middlewareArray.length} performance middleware`); return this.dependencies.app; }; } /** * Add cached middleware methods */ addCachedMiddlewareMethods() { this.dependencies.app.useCached = (middleware, ttl) => { const middlewareArray = Array.isArray(middleware) ? middleware : [middleware]; middlewareArray.forEach((mw, index) => { this.dependencies.middlewareManager.register(mw, { name: `cached-middleware-${index}`, priority: "normal", cacheable: true, ttl: ttl || 300000, // 5 minutes default }); }); logger.debug("middleware", `Registered ${middlewareArray.length} cached middleware`); return this.dependencies.app; }; } /** * Add middleware management methods */ addMiddlewareManagementMethods() { // Get middleware information this.dependencies.app.getMiddleware = (name) => { return this.dependencies.middlewareManager.getInfo(name); }; // Remove middleware this.dependencies.app.removeMiddleware = (name) => { // Find middleware by name and remove it const allMiddleware = this.dependencies.middlewareManager.getInfo(); const targetMiddleware = allMiddleware.find((mw) => mw.name === name); if (targetMiddleware) { // In a real implementation, we'd need to track IDs better // For now, this is a simplified approach logger.debug("middleware", `Middleware removed: ${name}`); return true; } logger.warn("middleware", `Middleware not found: ${name}`); return false; }; // Get middleware statistics this.dependencies.app.getMiddlewareStats = () => { return this.dependencies.middlewareManager.getStats(); }; } /** * Add convenience methods for common middleware types */ addConvenienceMethods() { // Enable security middleware this.dependencies.app.enableSecurity = (options) => { this.dependencies.middlewareManager.enableSecurity(options); logger.debug("middleware", "Security middleware enabled via convenience method"); return this.dependencies.app; }; // Enable compression middleware this.dependencies.app.enableCompression = (options) => { this.dependencies.middlewareManager.enableCompression(options); logger.debug("middleware", "Compression middleware enabled via convenience method"); return this.dependencies.app; }; // Enable rate limiting middleware this.dependencies.app.enableRateLimit = (options) => { this.dependencies.middlewareManager.enableRateLimit(options); logger.debug("middleware", "Rate limiting middleware enabled via convenience method"); return this.dependencies.app; }; // Enable CORS middleware this.dependencies.app.enableCors = (options) => { this.dependencies.middlewareManager.enableCors(options); logger.debug("middleware", "CORS middleware enabled via convenience method"); return this.dependencies.app; }; } } export { MiddlewareMethodsManager }; //# sourceMappingURL=MiddlewareMethodsManager.js.map