UNPKG

@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

188 lines 9.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MiddlewareChainBuilder = exports.presets = exports.ResponseCache = exports.RequestBatcher = exports.PerformanceMonitor = exports.OptimizedMiddlewareFactory = exports.ObjectPool = exports.createOptimizedMiddleware = exports.TimeoutHandler = exports.RetryHandler = exports.ResilientMiddlewareFactory = exports.HealthMonitor = exports.createResilientMiddleware = exports.CircuitBreakerState = exports.CircuitBreaker = exports.MiddlewareManager = exports.validateJsonBody = exports.isValidHeaderValue = exports.isValidationResult = exports.isMiddlewareConfig = exports.isJsonValue = exports.isJsonObject = exports.isAuthUser = exports.isAuthResult = exports.extractQueryString = exports.extractHeaderString = void 0; exports.createMiddlewareManager = createMiddlewareManager; exports.applyToExpress = applyToExpress; exports.applyToFastify = applyToFastify; exports.createProductionMiddleware = createProductionMiddleware; var types_1 = require("./types"); Object.defineProperty(exports, "extractHeaderString", { enumerable: true, get: function () { return types_1.extractHeaderString; } }); Object.defineProperty(exports, "extractQueryString", { enumerable: true, get: function () { return types_1.extractQueryString; } }); Object.defineProperty(exports, "isAuthResult", { enumerable: true, get: function () { return types_1.isAuthResult; } }); Object.defineProperty(exports, "isAuthUser", { enumerable: true, get: function () { return types_1.isAuthUser; } }); Object.defineProperty(exports, "isJsonObject", { enumerable: true, get: function () { return types_1.isJsonObject; } }); Object.defineProperty(exports, "isJsonValue", { enumerable: true, get: function () { return types_1.isJsonValue; } }); Object.defineProperty(exports, "isMiddlewareConfig", { enumerable: true, get: function () { return types_1.isMiddlewareConfig; } }); Object.defineProperty(exports, "isValidationResult", { enumerable: true, get: function () { return types_1.isValidationResult; } }); Object.defineProperty(exports, "isValidHeaderValue", { enumerable: true, get: function () { return types_1.isValidHeaderValue; } }); Object.defineProperty(exports, "validateJsonBody", { enumerable: true, get: function () { return types_1.validateJsonBody; } }); var middleware_manager_1 = require("./middleware-manager"); Object.defineProperty(exports, "MiddlewareManager", { enumerable: true, get: function () { return middleware_manager_1.MiddlewareManager; } }); var resilience_1 = require("./resilience"); Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return resilience_1.CircuitBreaker; } }); Object.defineProperty(exports, "CircuitBreakerState", { enumerable: true, get: function () { return resilience_1.CircuitBreakerState; } }); Object.defineProperty(exports, "createResilientMiddleware", { enumerable: true, get: function () { return resilience_1.createResilientMiddleware; } }); Object.defineProperty(exports, "HealthMonitor", { enumerable: true, get: function () { return resilience_1.HealthMonitor; } }); Object.defineProperty(exports, "ResilientMiddlewareFactory", { enumerable: true, get: function () { return resilience_1.ResilientMiddlewareFactory; } }); Object.defineProperty(exports, "RetryHandler", { enumerable: true, get: function () { return resilience_1.RetryHandler; } }); Object.defineProperty(exports, "TimeoutHandler", { enumerable: true, get: function () { return resilience_1.TimeoutHandler; } }); var performance_1 = require("./performance"); Object.defineProperty(exports, "createOptimizedMiddleware", { enumerable: true, get: function () { return performance_1.createOptimizedMiddleware; } }); Object.defineProperty(exports, "ObjectPool", { enumerable: true, get: function () { return performance_1.ObjectPool; } }); Object.defineProperty(exports, "OptimizedMiddlewareFactory", { enumerable: true, get: function () { return performance_1.OptimizedMiddlewareFactory; } }); Object.defineProperty(exports, "PerformanceMonitor", { enumerable: true, get: function () { return performance_1.PerformanceMonitor; } }); Object.defineProperty(exports, "RequestBatcher", { enumerable: true, get: function () { return performance_1.RequestBatcher; } }); Object.defineProperty(exports, "ResponseCache", { enumerable: true, get: function () { return performance_1.ResponseCache; } }); function createMiddlewareManager(integrations) { return new MiddlewareManager(integrations); } exports.presets = { basic: () => { return new MiddlewareManager(); }, secure: (integrations) => { const manager = new MiddlewareManager(integrations); manager.register('cors', manager.createCorsMiddleware({ origin: ['https://localhost:3000'], credentials: true })); manager.register('auth', manager.createAuthMiddleware({ requireAuth: true, tokenLocation: 'header' })); manager.register('rateLimit', manager.createRateLimitMiddleware({ windowMs: 15 * 60 * 1000, max: 100 })); return manager; }, api: (integrations) => { const manager = new MiddlewareManager(integrations); manager.register('compression', manager.createCompressionMiddleware({ level: 6, threshold: 1024 })); manager.register('logging', manager.createLoggingMiddleware({ level: 'info', excludePaths: ['/health', '/metrics'] })); return manager; }, production: (integrations) => { const manager = new MiddlewareManager(integrations); manager.register('cors', manager.createCorsMiddleware({ origin: process.env.ALLOWED_ORIGINS?.split(',') || ['https://localhost:3000'], credentials: true, maxAge: 86400 })); manager.register('auth', manager.createAuthMiddleware({ requireAuth: true, tokenLocation: 'header', roles: ['user'] })); manager.register('compression', manager.createCompressionMiddleware({ level: 6, threshold: 1024, filter: (req, _res) => !req.path?.startsWith('/api/stream') })); manager.register('rateLimit', manager.createRateLimitMiddleware({ windowMs: 15 * 60 * 1000, max: 1000, keyGenerator: (req) => req.ip || 'unknown' })); manager.register('logging', manager.createLoggingMiddleware({ level: 'info', includeBody: false, includeHeaders: true, excludePaths: ['/health', '/metrics', '/_health'] })); return manager; } }; class MiddlewareChainBuilder { constructor(integrations) { this.manager = new MiddlewareManager(integrations); } use(name, middleware) { this.manager.register(name, middleware); return this; } cors(options) { this.manager.register('cors', this.manager.createCorsMiddleware(options)); return this; } auth(options) { this.manager.register('auth', this.manager.createAuthMiddleware(options)); return this; } rateLimit(options) { this.manager.register('rateLimit', this.manager.createRateLimitMiddleware(options)); return this; } compression(options) { this.manager.register('compression', this.manager.createCompressionMiddleware(options)); return this; } logging(options) { this.manager.register('logging', this.manager.createLoggingMiddleware(options)); return this; } validation(schema, options) { this.manager.register('validation', this.manager.createValidationMiddleware(schema, options)); return this; } build() { return this.manager; } } exports.MiddlewareChainBuilder = MiddlewareChainBuilder; function applyToExpress(app, manager) { app.use((req, _res, next) => { manager.execute(req, _res, next); }); } async function applyToFastify(fastify, manager) { await fastify.addHook('onRequest', async (req, reply) => { return new Promise((resolve, reject) => { const expressReq = req; const expressRes = reply; manager.execute(expressReq, expressRes, (error) => { if (error) { reject(error); } else { resolve(); } }); }); }); } function createProductionMiddleware(integrations) { return { manager: createMiddlewareManager(integrations), resilience: createResilientMiddleware({ intervalMs: 30000, unhealthyThreshold: 3, healthyThreshold: 2 }), performance: createOptimizedMiddleware({ enableProfiling: true, enableMemoryTracking: true, enableRequestSizeTracking: true, sampleRate: 0.1, slowRequestThreshold: 1000, memoryLeakThreshold: 50 * 1024 * 1024 }, { defaultTtlMs: 300000 }) }; } exports.default = { createMiddlewareManager, presets: exports.presets, MiddlewareChainBuilder, applyToExpress, applyToFastify, createProductionMiddleware }; //# sourceMappingURL=index.js.map