/** * Base Framework Adapter * * Abstract base class for framework-specific streaming adapters. * Converts framework-specific request/response to Web Request/Response. * * Follows the adapter pattern used in BaseTransportAdapter and BaseAuthAdapter. * * @example * ```typescript * class MyFrameworkAdapter extends BaseFrameworkAdapter { * readonly framework = 'myframework' as const; * * createHandler(handleRequest, options) { * return (req, res) => { * const webRequest = this.convertRequest(req); * const response = await handleRequest(webRequest, options?.transport); * await this.handleResponse(response, req, res); * }; * } * // ... other methods * } * ``` */ import type { FrameworkType, FrameworkAdapterConfig, FrameworkHandlerOptions, CoreRequestHandler } from '@plyaz/types/core'; /** * BaseFrameworkAdapter - Abstract base class for framework adapters * * Provides: * - Common configuration handling * - Interface for request/response conversion * - Handler creation abstraction * * Subclasses must implement: * - framework - Framework identifier * - createHandler() - Create framework-specific handler * - convertRequest() - Convert framework request to Web Request * - handleResponse() - Handle Web Response for framework */ export declare abstract class BaseFrameworkAdapter { /** Adapter name for logging/debugging */ readonly name: string; /** Framework type identifier */ abstract readonly framework: FrameworkType; /** Whether adapter is enabled */ readonly enabled: boolean; constructor(config?: FrameworkAdapterConfig); /** * Create a handler function for the framework. * * The returned handler type varies by framework: * - Next.js: `(request: Request) => Promise` * - Express: `(req: Request, res: Response) => Promise` * - NestJS: `(req: Request, res: Response) => Promise` * * @param handleRequest - Core request handler from StreamServer * @param options - Handler options (transport type, etc.) * @returns Framework-specific handler function * * @example * ```typescript * // Next.js * export const GET = adapter.createHandler(streamServer.handleRequest); * * // Express * app.get('/stream', adapter.createHandler(streamServer.handleRequest)); * ``` */ abstract createHandler(handleRequest: CoreRequestHandler, options?: FrameworkHandlerOptions): unknown; /** * Convert framework-specific request to Web Request. * * @param frameworkRequest - Framework-specific request object * @returns Web Request object */ abstract convertRequest(frameworkRequest: unknown): Request; /** * Handle Web Response and send to framework response. * * For Next.js/Edge: Returns Response directly * For Express/NestJS: Streams to res object * * @param response - Web Response from core handler * @param frameworkRequest - Original framework request * @param frameworkResponse - Framework response object (for Express-like frameworks) * @returns Response for return-based frameworks, void for stream-based */ abstract handleResponse(response: Response, frameworkRequest: unknown, frameworkResponse?: unknown): Promise; /** * Get adapter info for debugging */ getAdapterInfo(): { name: string; framework: FrameworkType; enabled: boolean; }; } //# sourceMappingURL=BaseFrameworkAdapter.d.ts.map