@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
TypeScript
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