UNPKG

@pulzar/core

Version:

Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support

121 lines 4.62 kB
import { FastifyInstance } from "fastify"; import { EdgeRequest, EdgeResponse, EdgeContext, EdgeAdapterOptions, EdgePlatform, getPlatformCapabilities } from "./types"; /** * Base adapter for edge runtime deployments * Provides common functionality for all edge platforms */ export declare abstract class BaseEdgeAdapter { protected app: FastifyInstance; protected options: EdgeAdapterOptions; protected capabilities: ReturnType<typeof getPlatformCapabilities>; constructor(app: FastifyInstance, options: Partial<EdgeAdapterOptions>); /** * Create platform-specific handler */ abstract createHandler(): (...args: any[]) => Promise<Response>; /** * Parse platform-specific request */ protected abstract parseRequest(request: Request, ...args: any[]): Promise<EdgeRequest>; /** * Create platform-specific response */ protected abstract createResponse(edgeResponse: EdgeResponse): Response; /** * Handle WebSocket upgrade (if supported) */ protected handleWebSocketUpgrade(request: EdgeRequest, context: EdgeContext): Promise<Response>; /** * Create WebSocket response (override in platform-specific adapters) */ protected createWebSocketResponse(request: EdgeRequest, context: EdgeContext): Promise<Response>; /** * Process request through Fastify */ protected processRequest(request: EdgeRequest, context: EdgeContext): Promise<EdgeResponse>; /** * Parse request body with size limits */ protected parseBody(request: Request): Promise<any>; /** * Get remote address with fallbacks */ protected getRemoteAddress(request: EdgeRequest, context: EdgeContext): string; /** * Determine if response should be compressed */ protected shouldCompress(headers: Record<string, string>, body: any): boolean; /** * Compress response body */ protected compressResponse(body: string, headers: Record<string, string>): Promise<{ body: string; headers: Record<string, string>; }>; /** * Create error response */ protected createErrorResponse(error: any): Response; /** * Validate platform support */ private validatePlatformSupport; /** * Log request for analytics (background task) */ protected logRequest(request: EdgeRequest, response: EdgeResponse): Promise<void>; /** * Get adapter statistics */ getStats(): { platform: EdgePlatform; capabilities: ReturnType<typeof getPlatformCapabilities>; options: EdgeAdapterOptions; }; } /** * Cloudflare Workers Adapter */ export declare class CloudflareAdapter extends BaseEdgeAdapter { createHandler(): (request: Request, env: any, ctx: any) => Promise<Response>; protected parseRequest(request: Request, env: any, ctx: any): Promise<EdgeRequest>; protected createResponse(edgeResponse: EdgeResponse): Response; protected createWebSocketResponse(request: EdgeRequest, context: EdgeContext): Promise<Response>; private extractCloudflareGeo; } /** * Vercel Edge Adapter */ export declare class VercelAdapter extends BaseEdgeAdapter { createHandler(): (request: Request) => Promise<Response>; protected parseRequest(request: Request): Promise<EdgeRequest>; protected createResponse(edgeResponse: EdgeResponse): Response; private extractVercelGeo; } /** * Deno Deploy Adapter */ export declare class DenoAdapter extends BaseEdgeAdapter { createHandler(): (request: Request) => Promise<Response>; protected parseRequest(request: Request): Promise<EdgeRequest>; protected createResponse(edgeResponse: EdgeResponse): Response; protected createWebSocketResponse(request: EdgeRequest, context: EdgeContext): Promise<Response>; private extractDenoGeo; } /** * Netlify Edge Adapter */ export declare class NetlifyAdapter extends BaseEdgeAdapter { createHandler(): (request: Request, context: any) => Promise<Response>; protected parseRequest(request: Request, context: any): Promise<EdgeRequest>; protected createResponse(edgeResponse: EdgeResponse): Response; } /** * Create platform-specific adapter */ export declare function createEdgeAdapter(app: FastifyInstance, platform: EdgePlatform, options?: Partial<EdgeAdapterOptions>): BaseEdgeAdapter; /** * Quick handler creation for simple use cases */ export declare function createEdgeHandler(app: FastifyInstance, platform: EdgePlatform, options?: Partial<EdgeAdapterOptions>): (...args: any[]) => Promise<Response>; //# sourceMappingURL=adapter.d.ts.map