syntropylog
Version:
An instance manager with observability for Node.js applications
35 lines (34 loc) • 1.42 kB
TypeScript
/**
* @file src/sanitization/SanitizationEngine.ts
* @description Final security layer that sanitizes log entries before they are written by a transport.
*/
import { MaskingEngine } from '../masking/MaskingEngine';
/**
* @class SanitizationEngine
* A security engine that makes log entries safe for printing by stripping
* potentially malicious control characters, such as ANSI escape codes.
* This prevents log injection attacks that could exploit terminal vulnerabilities.
*/
export declare class SanitizationEngine {
private readonly maskingEngine?;
/** @private This regex matches ANSI escape codes used for colors, cursor movement, etc. */
private readonly ansiRegex;
/**
* @constructor
* The engine is currently not configurable, but the constructor is in place for future enhancements.
*/
constructor(maskingEngine?: MaskingEngine);
/**
* Processes a log metadata object, sanitizing all its string values.
* @param {Record<string, any>} meta - The metadata object to sanitize.
* @returns {Record<string, any>} A new, sanitized metadata object.
*/
process(meta: Record<string, any>): Record<string, any>;
/**
* @private
* Recursively traverses an object or array to sanitize all string values.
* @param {any} data - The data to process.
* @returns {any} The sanitized data.
*/
private sanitizeRecursively;
}