import { Middleware } from "../types/http.js"; /** * Options for compression middleware */ export interface CompressionOptions { /** * Minimum response size in bytes to trigger compression * Responses smaller than this will not be compressed * @default 1024 (1KB) */ threshold?: number; /** * Compression level (0-9) * 0 = no compression, 9 = maximum compression * @default 6 */ level?: number; /** * Prefer Brotli compression over gzip when available * @default true */ preferBrotli?: boolean; /** * Filter function to determine if a response should be compressed * Return true to compress, false to skip * @param contentType - The Content-Type header of the response * @returns true to compress, false to skip */ filter?: (contentType: string) => boolean; } /** * Creates a compression middleware that automatically compresses responses using gzip or Brotli. * * The middleware intercepts response data and compresses it if: * - The client supports compression (via Accept-Encoding header) * - The response size exceeds the threshold * - The content type is compressible (text, JSON, etc.) * * @param options - Compression configuration options * @returns A middleware function that handles response compression * * @example * ```typescript * import { createCompressionMiddleware } from "reiatsu"; * * // Use default settings * app.use(createCompressionMiddleware()); * * // Custom configuration * app.use(createCompressionMiddleware({ * threshold: 2048, // Only compress responses > 2KB * level: 9, // Maximum compression * preferBrotli: true, // Use Brotli when available * filter: (type) => type.startsWith('text/') // Only compress text * })); * ``` * * @remarks * - Brotli typically provides 15-20% better compression than gzip * - Higher compression levels increase CPU usage * - Small responses (< 1KB) are usually not worth compressing * - Images, videos, and already-compressed formats are automatically skipped */ export declare const createCompressionMiddleware: (options?: CompressionOptions) => Middleware; //# sourceMappingURL=compression.d.ts.map