/** * Function Wrapper - 함수 래핑 및 로깅 * * 함수의 입력/출력을 자동으로 로깅하고, * 에러 발생 시에도 원본 함수의 동작을 보장합니다. */ import { ContextManager } from './context/context'; import { SanitizerOptions } from './masking/sanitizer'; import { MaskingRule } from './masking/rule-builder'; import { SourceLocation } from '../utils/source-location'; /** * 함수 로그 엔트리 */ export interface FunctionLogEntry { /** 이벤트 타입 */ event: 'start' | 'end' | 'error'; /** 함수 이름 */ functionName: string; /** 모듈 경로 (옵션) */ modulePath?: string; /** Trace ID (옵션) */ traceId?: string; /** 함수 인자 (start 이벤트) */ args?: unknown[]; /** 함수 결과 (end 이벤트) */ result?: unknown; /** 에러 메시지 (error 이벤트) */ error?: string; /** 실행 시간 (ms) */ duration?: number; /** 타임스탬프 */ timestamp: number; /** 소스 위치 정보 (파일, 라인) */ sourceLocation?: SourceLocation | null; } /** * Wrapper 옵션 */ export interface WrapperOptions { /** 로그 콜백 */ onLog: (entry: FunctionLogEntry) => void; /** Context Manager (옵션) */ contextManager?: ContextManager; /** 모듈 경로 (옵션) */ modulePath?: string; /** Sanitizer 옵션 (옵션) */ sanitizerOptions?: SanitizerOptions; /** 마스킹 룰 (옵션) - 인자 기반 마스킹에 사용 */ maskingRules?: MaskingRule[]; /** 비활성화 여부 */ disabled?: boolean; } /** * 함수를 래핑하여 입력/출력을 로깅합니다. * * @param fn 래핑할 함수 * @param functionName 함수 이름 * @param options Wrapper 옵션 * @returns 래핑된 함수 */ export declare function wrapFunction any>(fn: T, functionName: string, options: WrapperOptions): T;