UNPKG

apitally

Version:

Simple API monitoring & analytics for REST APIs built with Express, Fastify, NestJS, AdonisJS, Hono, H3, Elysia, Hapi, and Koa.

81 lines (78 loc) 2.71 kB
import { Buffer } from 'node:buffer'; import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'node:http'; import TempGzipFile from './tempGzipFile.cjs'; type Request = { timestamp: number; method: string; path?: string; url: string; headers: [string, string][]; size?: number; consumer?: string; body?: Buffer; }; type Response = { statusCode: number; responseTime: number; headers: [string, string][]; size?: number; body?: Buffer; }; type LogRecord = { timestamp: number; logger?: string; level: string; message: string; }; type RequestLoggingConfig = { enabled: boolean; logQueryParams: boolean; logRequestHeaders: boolean; logRequestBody: boolean; logResponseHeaders: boolean; logResponseBody: boolean; logException: boolean; captureLogs: boolean; maskQueryParams: RegExp[]; maskHeaders: RegExp[]; maskBodyFields: RegExp[]; maskRequestBodyCallback?: (request: Request) => Buffer | null | undefined; maskResponseBodyCallback?: (request: Request, response: Response) => Buffer | null | undefined; excludePaths: RegExp[]; excludeCallback?: (request: Request, response: Response) => boolean; }; declare class RequestLogger { config: RequestLoggingConfig; enabled: boolean; suspendUntil: number | null; private pendingWrites; private currentFile; private files; private maintainIntervalId?; private lock; constructor(config?: Partial<RequestLoggingConfig>); get maxBodySize(): number; private shouldExcludePath; private shouldExcludeUserAgent; private shouldMaskQueryParam; private shouldMaskHeader; private shouldMaskBodyField; private hasSupportedContentType; private hasJsonContentType; isSupportedContentType(contentType?: string | null): boolean; private maskQueryParams; private maskHeaders; private maskBody; private applyMasking; logRequest(request: Request, response: Response, error?: Error, logs?: LogRecord[]): void; writeToFile(): Promise<void>; getFile(): TempGzipFile | undefined; retryFileLater(file: TempGzipFile): void; rotateFile(): Promise<void>; maintain(): Promise<void>; clear(): Promise<void>; close(): Promise<void>; } declare function convertHeaders(headers: Headers | IncomingHttpHeaders | OutgoingHttpHeaders | Record<string, string | string[] | number | undefined> | undefined): [string, string][]; declare function convertBody(body: any, contentType?: string | null): Buffer<any> | undefined; export { type LogRecord, type Request, type RequestLoggingConfig, type Response, convertBody, convertHeaders, RequestLogger as default };