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

106 lines 3.24 kB
import { AsyncLocalStorage } from "async_hooks"; import { FastifyRequest } from "fastify"; export interface RequestContext { requestId: string; traceId?: string; spanId?: string; userId?: string; userRoles?: string[]; userPermissions?: string[]; startTime: number; ip: string; userAgent?: string; correlationId?: string; metadata: Record<string, any>; } declare const requestContextStorage: AsyncLocalStorage<RequestContext>; /** * Get the current request context */ export declare function getRequestContext(): RequestContext | undefined; /** * Set request context data */ export declare function setRequestContext(context: RequestContext): void; /** * Update specific fields in request context */ export declare function updateRequestContext(updates: Partial<RequestContext>): void; /** * Run a function within a request context */ export declare function runWithRequestContext<T>(context: RequestContext, fn: () => T): T; /** * Get a specific value from request context */ export declare function getContextValue<K extends keyof RequestContext>(key: K): RequestContext[K] | undefined; /** * Set a specific value in request context */ export declare function setContextValue<K extends keyof RequestContext>(key: K, value: RequestContext[K]): void; /** * Get metadata from request context */ export declare function getContextMetadata(key: string): any; /** * Set metadata in request context */ export declare function setContextMetadata(key: string, value: any): void; /** * Generate a unique request ID */ export declare function generateRequestId(): string; /** * Generate a unique trace ID */ export declare function generateTraceId(): string; /** * Generate a unique span ID */ export declare function generateSpanId(): string; /** * Extract trace information from headers */ export declare function extractTraceInfo(request: FastifyRequest): { traceId?: string; spanId?: string; correlationId?: string; }; /** * Create request context from Fastify request */ export declare function createRequestContext(request: FastifyRequest): RequestContext; /** * Fastify plugin for request context */ export declare function requestContextPlugin(fastify: any): Promise<void>; /** * Middleware to extract user information from JWT or session */ export declare function extractUserContext(token?: string, session?: any): Partial<RequestContext>; /** * Check if user has required role */ export declare function hasRole(role: string): boolean; /** * Check if user has required permission */ export declare function hasPermission(permission: string): boolean; /** * Check if user has any of the required roles */ export declare function hasAnyRole(roles: string[]): boolean; /** * Check if user has any of the required permissions */ export declare function hasAnyPermission(permissions: string[]): boolean; /** * Get user-specific child logger */ export declare function getUserLogger(): any; /** * Measure operation performance within request context */ export declare function measureOperation<T>(operationName: string, operation: () => Promise<T> | T): Promise<T>; export { requestContextStorage }; //# sourceMappingURL=request-context.d.ts.map