/** * Express App Configuration Helper * * Configures an Express application with middleware based on CoreInitOptions. * Call this after creating your Express app. * * @example * ```typescript * import express from 'express'; * import { configureExpressApp } from '@plyaz/core/express'; * import { buildCoreConfig } from './config'; * * async function bootstrap() { * const app = express(); * const options = buildCoreConfig(); * * // Configure middleware, security, etc. * await configureExpressApp(app, options); * * app.listen(3000); * } * ``` */ import type { Application, Request, Response, NextFunction } from 'express'; import type { ConfigureAppResult, CoreExpressMiddlewareConfig } from '@plyaz/types/core'; import { type CoreInitOptions } from '../CoreInitializer'; /** * Configure an Express application with middleware based on CoreInitOptions. * * This function applies: * - Compression middleware (if compression: true) * - Helmet security headers (if helmet: true) * - Rate limiting (if rateLimit config provided) * - Body size limits * - Request timeout * - Raw body parsing for webhooks * - CORS configuration * - Error handler middleware * - Graceful shutdown handlers * * @param app - Express application instance * @param options - Core initialization options (reads express config) * @returns Configuration result with enabled/skipped features * * @example Basic usage * ```typescript * const app = express(); * await configureExpressApp(app, { * express: { * compression: true, * helmet: true, * rateLimit: { ttl: 60, limit: 100 }, * }, * }); * ``` * * @example Full production config * ```typescript * await configureExpressApp(app, { * express: { * compression: true, * helmet: true, * rateLimit: { ttl: 60, limit: 100 }, * bodyLimit: '10mb', * timeout: 30000, * trustProxy: true, * rawBody: { paths: ['/webhooks/*'] }, * gracefulShutdown: true, * }, * }); * ``` */ export declare function configureExpressApp(app: Application, options: CoreInitOptions): Promise; /** * Create Express error handler middleware. * Must be added AFTER all routes. * * @param options - Core initialization options * @returns Express error handler middleware * * @example * ```typescript * const app = express(); * * // Your routes * app.get('/api/users', async (req, res) => { ... }); * * // Error handler (must be last) * app.use(createExpressErrorHandler(options)); * ``` */ export declare function createExpressErrorHandler(options: CoreInitOptions): (err: unknown, req: Request, res: Response, next: NextFunction) => void; /** * Setup graceful shutdown handlers for Express. * * @param server - HTTP server instance * @param options - Core initialization options * * @example * ```typescript * const app = express(); * const server = app.listen(3000); * setupGracefulShutdown(server, options); * ``` */ export declare function setupExpressGracefulShutdown(server: { close: (callback?: (err?: Error) => void) => void; }, options: CoreInitOptions): void; /** * Get default Express middleware configuration. * * @param isProduction - Whether running in production * @returns Default configuration */ export declare function getDefaultExpressConfig(isProduction?: boolean): CoreExpressMiddlewareConfig; //# sourceMappingURL=configureExpressApp.d.ts.map