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