@wgtechlabs/log-engine 2.0.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +869 -608
  3. package/dist/cjs/__tests__/async-test-utils.cjs +276 -0
  4. package/dist/cjs/__tests__/async-test-utils.d.ts +51 -0
  5. package/dist/cjs/__tests__/async-test-utils.d.ts.map +1 -0
  6. package/dist/cjs/__tests__/async-test-utils.js.map +1 -0
  7. package/dist/cjs/__tests__/redaction/test-utils.cjs +72 -0
  8. package/dist/cjs/__tests__/redaction/test-utils.d.ts +33 -0
  9. package/dist/cjs/__tests__/redaction/test-utils.d.ts.map +1 -0
  10. package/dist/cjs/__tests__/redaction/test-utils.js.map +1 -0
  11. package/dist/cjs/__tests__/test-utils.cjs +49 -0
  12. package/dist/cjs/__tests__/test-utils.d.ts +41 -0
  13. package/dist/cjs/__tests__/test-utils.d.ts.map +1 -0
  14. package/dist/cjs/__tests__/test-utils.js.map +1 -0
  15. package/dist/{formatter/colors.js → cjs/formatter/colors.cjs} +1 -0
  16. package/dist/cjs/formatter/colors.d.ts.map +1 -0
  17. package/dist/cjs/formatter/colors.js.map +1 -0
  18. package/dist/{formatter/data-formatter.js → cjs/formatter/data-formatter.cjs} +2 -1
  19. package/dist/{formatter → cjs/formatter}/data-formatter.d.ts +2 -1
  20. package/dist/cjs/formatter/data-formatter.d.ts.map +1 -0
  21. package/dist/cjs/formatter/data-formatter.js.map +1 -0
  22. package/dist/{formatter/index.js → cjs/formatter/index.cjs} +6 -5
  23. package/dist/cjs/formatter/index.d.ts.map +1 -0
  24. package/dist/cjs/formatter/index.js.map +1 -0
  25. package/dist/{formatter/message-formatter.js → cjs/formatter/message-formatter.cjs} +28 -27
  26. package/dist/cjs/formatter/message-formatter.d.ts +41 -0
  27. package/dist/cjs/formatter/message-formatter.d.ts.map +1 -0
  28. package/dist/cjs/formatter/message-formatter.js.map +1 -0
  29. package/dist/{formatter/timestamp.js → cjs/formatter/timestamp.cjs} +1 -0
  30. package/dist/cjs/formatter/timestamp.d.ts.map +1 -0
  31. package/dist/cjs/formatter/timestamp.js.map +1 -0
  32. package/dist/cjs/index.cjs +202 -0
  33. package/dist/cjs/index.d.ts +180 -0
  34. package/dist/cjs/index.d.ts.map +1 -0
  35. package/dist/cjs/index.js.map +1 -0
  36. package/dist/cjs/logger/advanced-outputs.cjs +587 -0
  37. package/dist/cjs/logger/advanced-outputs.d.ts +159 -0
  38. package/dist/cjs/logger/advanced-outputs.d.ts.map +1 -0
  39. package/dist/cjs/logger/advanced-outputs.js.map +1 -0
  40. package/dist/{logger/config.js → cjs/logger/config.cjs} +36 -32
  41. package/dist/cjs/logger/config.d.ts +42 -0
  42. package/dist/cjs/logger/config.d.ts.map +1 -0
  43. package/dist/cjs/logger/config.js.map +1 -0
  44. package/dist/cjs/logger/core.cjs +371 -0
  45. package/dist/cjs/logger/core.d.ts +152 -0
  46. package/dist/cjs/logger/core.d.ts.map +1 -0
  47. package/dist/cjs/logger/core.js.map +1 -0
  48. package/dist/{logger/environment.js → cjs/logger/environment.cjs} +17 -16
  49. package/dist/cjs/logger/environment.d.ts +36 -0
  50. package/dist/cjs/logger/environment.d.ts.map +1 -0
  51. package/dist/cjs/logger/environment.js.map +1 -0
  52. package/dist/cjs/logger/filtering.cjs +81 -0
  53. package/dist/cjs/logger/filtering.d.ts +36 -0
  54. package/dist/cjs/logger/filtering.d.ts.map +1 -0
  55. package/dist/cjs/logger/filtering.js.map +1 -0
  56. package/dist/{logger/index.js → cjs/logger/index.cjs} +6 -5
  57. package/dist/cjs/logger/index.d.ts.map +1 -0
  58. package/dist/cjs/logger/index.js.map +1 -0
  59. package/dist/cjs/package.json +3 -0
  60. package/dist/{redaction/config.js → cjs/redaction/config.cjs} +9 -8
  61. package/dist/{redaction → cjs/redaction}/config.d.ts +8 -8
  62. package/dist/cjs/redaction/config.d.ts.map +1 -0
  63. package/dist/cjs/redaction/config.js.map +1 -0
  64. package/dist/{redaction/index.js → cjs/redaction/index.cjs} +3 -2
  65. package/dist/cjs/redaction/index.d.ts.map +1 -0
  66. package/dist/cjs/redaction/index.js.map +1 -0
  67. package/dist/cjs/redaction/redactor.cjs +263 -0
  68. package/dist/cjs/redaction/redactor.d.ts +99 -0
  69. package/dist/cjs/redaction/redactor.d.ts.map +1 -0
  70. package/dist/cjs/redaction/redactor.js.map +1 -0
  71. package/dist/{types/index.js → cjs/types/index.cjs} +1 -0
  72. package/dist/{types → cjs/types}/index.d.ts +98 -16
  73. package/dist/cjs/types/index.d.ts.map +1 -0
  74. package/dist/cjs/types/index.js.map +1 -0
  75. package/dist/esm/__tests__/async-test-utils.d.ts +51 -0
  76. package/dist/esm/__tests__/async-test-utils.d.ts.map +1 -0
  77. package/dist/esm/__tests__/async-test-utils.js +231 -0
  78. package/dist/esm/__tests__/async-test-utils.js.map +1 -0
  79. package/dist/esm/__tests__/redaction/test-utils.d.ts +33 -0
  80. package/dist/esm/__tests__/redaction/test-utils.d.ts.map +1 -0
  81. package/dist/esm/__tests__/redaction/test-utils.js +65 -0
  82. package/dist/esm/__tests__/redaction/test-utils.js.map +1 -0
  83. package/dist/esm/__tests__/test-utils.d.ts +41 -0
  84. package/dist/esm/__tests__/test-utils.d.ts.map +1 -0
  85. package/dist/esm/__tests__/test-utils.js +42 -0
  86. package/dist/esm/__tests__/test-utils.js.map +1 -0
  87. package/dist/esm/formatter/colors.d.ts +32 -0
  88. package/dist/esm/formatter/colors.d.ts.map +1 -0
  89. package/dist/esm/formatter/colors.js +32 -0
  90. package/dist/esm/formatter/colors.js.map +1 -0
  91. package/dist/esm/formatter/data-formatter.d.ts +26 -0
  92. package/dist/esm/formatter/data-formatter.d.ts.map +1 -0
  93. package/dist/esm/formatter/data-formatter.js +50 -0
  94. package/dist/esm/formatter/data-formatter.js.map +1 -0
  95. package/dist/esm/formatter/index.d.ts +10 -0
  96. package/dist/esm/formatter/index.d.ts.map +1 -0
  97. package/dist/esm/formatter/index.js +11 -0
  98. package/dist/esm/formatter/index.js.map +1 -0
  99. package/dist/esm/formatter/message-formatter.d.ts +41 -0
  100. package/dist/esm/formatter/message-formatter.d.ts.map +1 -0
  101. package/dist/esm/formatter/message-formatter.js +84 -0
  102. package/dist/esm/formatter/message-formatter.js.map +1 -0
  103. package/dist/esm/formatter/timestamp.d.ts +27 -0
  104. package/dist/esm/formatter/timestamp.d.ts.map +1 -0
  105. package/dist/esm/formatter/timestamp.js +36 -0
  106. package/dist/esm/formatter/timestamp.js.map +1 -0
  107. package/dist/esm/index.d.ts +180 -0
  108. package/dist/esm/index.d.ts.map +1 -0
  109. package/dist/esm/index.js +194 -0
  110. package/dist/esm/index.js.map +1 -0
  111. package/dist/esm/logger/advanced-outputs.d.ts +159 -0
  112. package/dist/esm/logger/advanced-outputs.d.ts.map +1 -0
  113. package/dist/esm/logger/advanced-outputs.js +542 -0
  114. package/dist/esm/logger/advanced-outputs.js.map +1 -0
  115. package/dist/esm/logger/config.d.ts +42 -0
  116. package/dist/esm/logger/config.d.ts.map +1 -0
  117. package/dist/esm/logger/config.js +101 -0
  118. package/dist/esm/logger/config.js.map +1 -0
  119. package/dist/esm/logger/core.d.ts +152 -0
  120. package/dist/esm/logger/core.d.ts.map +1 -0
  121. package/dist/esm/logger/core.js +367 -0
  122. package/dist/esm/logger/core.js.map +1 -0
  123. package/dist/esm/logger/environment.d.ts +36 -0
  124. package/dist/esm/logger/environment.d.ts.map +1 -0
  125. package/dist/esm/logger/environment.js +58 -0
  126. package/dist/esm/logger/environment.js.map +1 -0
  127. package/dist/esm/logger/filtering.d.ts +36 -0
  128. package/dist/esm/logger/filtering.d.ts.map +1 -0
  129. package/dist/esm/logger/filtering.js +77 -0
  130. package/dist/esm/logger/filtering.js.map +1 -0
  131. package/dist/esm/logger/index.d.ts +10 -0
  132. package/dist/esm/logger/index.d.ts.map +1 -0
  133. package/dist/esm/logger/index.js +11 -0
  134. package/dist/esm/logger/index.js.map +1 -0
  135. package/dist/esm/redaction/config.d.ts +29 -0
  136. package/dist/esm/redaction/config.d.ts.map +1 -0
  137. package/dist/esm/redaction/config.js +92 -0
  138. package/dist/esm/redaction/config.js.map +1 -0
  139. package/dist/esm/redaction/index.d.ts +8 -0
  140. package/dist/esm/redaction/index.d.ts.map +1 -0
  141. package/dist/esm/redaction/index.js +7 -0
  142. package/dist/esm/redaction/index.js.map +1 -0
  143. package/dist/esm/redaction/redactor.d.ts +99 -0
  144. package/dist/esm/redaction/redactor.d.ts.map +1 -0
  145. package/dist/esm/redaction/redactor.js +259 -0
  146. package/dist/esm/redaction/redactor.js.map +1 -0
  147. package/dist/esm/types/index.d.ts +310 -0
  148. package/dist/esm/types/index.d.ts.map +1 -0
  149. package/dist/esm/types/index.js +41 -0
  150. package/dist/esm/types/index.js.map +1 -0
  151. package/package.json +94 -68
  152. package/dist/formatter/colors.d.ts.map +0 -1
  153. package/dist/formatter/data-formatter.d.ts.map +0 -1
  154. package/dist/formatter/index.d.ts.map +0 -1
  155. package/dist/formatter/message-formatter.d.ts +0 -41
  156. package/dist/formatter/message-formatter.d.ts.map +0 -1
  157. package/dist/formatter/timestamp.d.ts.map +0 -1
  158. package/dist/index.d.ts +0 -186
  159. package/dist/index.d.ts.map +0 -1
  160. package/dist/index.js +0 -201
  161. package/dist/logger/config.d.ts +0 -42
  162. package/dist/logger/config.d.ts.map +0 -1
  163. package/dist/logger/core.d.ts +0 -108
  164. package/dist/logger/core.d.ts.map +0 -1
  165. package/dist/logger/core.js +0 -185
  166. package/dist/logger/environment.d.ts +0 -36
  167. package/dist/logger/environment.d.ts.map +0 -1
  168. package/dist/logger/filtering.d.ts +0 -36
  169. package/dist/logger/filtering.d.ts.map +0 -1
  170. package/dist/logger/filtering.js +0 -65
  171. package/dist/logger/index.d.ts.map +0 -1
  172. package/dist/redaction/config.d.ts.map +0 -1
  173. package/dist/redaction/index.d.ts.map +0 -1
  174. package/dist/redaction/redactor.d.ts +0 -99
  175. package/dist/redaction/redactor.d.ts.map +0 -1
  176. package/dist/redaction/redactor.js +0 -257
  177. package/dist/types/index.d.ts.map +0 -1
  178. /package/dist/{formatter → cjs/formatter}/colors.d.ts +0 -0
  179. /package/dist/{formatter → cjs/formatter}/index.d.ts +0 -0
  180. /package/dist/{formatter → cjs/formatter}/timestamp.d.ts +0 -0
  181. /package/dist/{logger → cjs/logger}/index.d.ts +0 -0
  182. /package/dist/{redaction → cjs/redaction}/index.d.ts +0 -0
@@ -2,6 +2,11 @@
2
2
  * Type definitions for the Log Engine library
3
3
  * Provides strongly-typed interfaces for configuration and log levels
4
4
  */
5
+ /**
6
+ * Type for log data - accepts any value since logs can contain literally anything
7
+ * This is intentionally `any` rather than `unknown` for maximum usability in a logging context
8
+ */
9
+ export type LogData = any;
5
10
  /**
6
11
  * Log levels representing message severity (lowest to highest)
7
12
  * Used for filtering messages based on importance
@@ -48,6 +53,73 @@ export interface LogEntry {
48
53
  /** The actual log message content */
49
54
  message: string;
50
55
  }
56
+ /**
57
+ * Output handler function type for custom log output
58
+ * Receives the log level, formatted message, and optional data
59
+ */
60
+ export type LogOutputHandler = (level: string, message: string, data?: LogData) => void;
61
+ /**
62
+ * Built-in output handler types
63
+ */
64
+ export type BuiltInOutputHandler = 'console' | 'silent' | 'file' | 'http';
65
+ /**
66
+ * Configuration for file output handler
67
+ */
68
+ export interface FileOutputConfig {
69
+ /** File path to write logs to */
70
+ filePath: string;
71
+ /** Whether to append to existing file (default: true) */
72
+ append?: boolean;
73
+ /** Maximum file size before rotation in bytes (optional) */
74
+ maxFileSize?: number;
75
+ /** Number of backup files to keep during rotation (default: 3) */
76
+ maxBackupFiles?: number;
77
+ /** Custom format function for file output */
78
+ formatter?: (level: string, message: string, data?: LogData) => string;
79
+ }
80
+ /**
81
+ * Configuration for HTTP output handler
82
+ */
83
+ export interface HttpOutputConfig {
84
+ /** HTTP endpoint URL to send logs to */
85
+ url: string;
86
+ /** HTTP method (default: 'POST') */
87
+ method?: 'POST' | 'PUT' | 'PATCH';
88
+ /** Custom headers to include with requests */
89
+ headers?: Record<string, string>;
90
+ /** Batch size for sending multiple logs (default: 1) */
91
+ batchSize?: number;
92
+ /** Timeout for HTTP requests in ms (default: 5000) */
93
+ timeout?: number;
94
+ /** Custom format function for HTTP payload */
95
+ formatter?: (logs: Array<{
96
+ level: string;
97
+ message: string;
98
+ data?: LogData;
99
+ timestamp: string;
100
+ }>) => LogData;
101
+ }
102
+ /**
103
+ * Configuration object for advanced built-in handlers
104
+ */
105
+ export interface AdvancedOutputConfig {
106
+ file?: FileOutputConfig;
107
+ http?: HttpOutputConfig;
108
+ }
109
+ /**
110
+ * Enhanced output target - can be built-in handler, custom function, or configured handler object
111
+ */
112
+ export type EnhancedOutputTarget = BuiltInOutputHandler | LogOutputHandler | {
113
+ type: 'file';
114
+ config: FileOutputConfig;
115
+ } | {
116
+ type: 'http';
117
+ config: HttpOutputConfig;
118
+ };
119
+ /**
120
+ * Output target - can be a built-in handler string or custom function
121
+ */
122
+ export type OutputTarget = BuiltInOutputHandler | LogOutputHandler;
51
123
  /**
52
124
  * Configuration options for the logger
53
125
  * Supports both legacy level-based and new mode-based configuration
@@ -60,6 +132,16 @@ export interface LoggerConfig {
60
132
  level?: LogLevel;
61
133
  /** Optional environment identifier for context (e.g., 'production', 'staging') */
62
134
  environment?: string;
135
+ /** Custom output handler function to replace console output (backward compatibility) */
136
+ outputHandler?: LogOutputHandler;
137
+ /** Array of output targets for multiple simultaneous outputs */
138
+ outputs?: OutputTarget[];
139
+ /** Enhanced outputs with advanced configuration support */
140
+ enhancedOutputs?: EnhancedOutputTarget[];
141
+ /** Whether to suppress default console output (useful with custom outputHandler) */
142
+ suppressConsoleOutput?: boolean;
143
+ /** Advanced configuration for built-in handlers */
144
+ advancedOutputConfig?: AdvancedOutputConfig;
63
145
  }
64
146
  /**
65
147
  * Configuration options for automatic data redaction
@@ -91,25 +173,25 @@ export interface ILogEngine {
91
173
  /** Configure the logger with new settings */
92
174
  configure(config: Partial<LoggerConfig>): void;
93
175
  /** Log a debug message with automatic data redaction */
94
- debug(message: string, data?: any): void;
176
+ debug(message: string, data?: LogData): void;
95
177
  /** Log an info message with automatic data redaction */
96
- info(message: string, data?: any): void;
178
+ info(message: string, data?: LogData): void;
97
179
  /** Log a warn message with automatic data redaction */
98
- warn(message: string, data?: any): void;
180
+ warn(message: string, data?: LogData): void;
99
181
  /** Log an error message with automatic data redaction */
100
- error(message: string, data?: any): void;
182
+ error(message: string, data?: LogData): void;
101
183
  /** Log a message with automatic data redaction */
102
- log(message: string, data?: any): void;
184
+ log(message: string, data?: LogData): void;
103
185
  /** Log a debug message without redaction */
104
- debugRaw(message: string, data?: any): void;
186
+ debugRaw(message: string, data?: LogData): void;
105
187
  /** Log an info message without redaction */
106
- infoRaw(message: string, data?: any): void;
188
+ infoRaw(message: string, data?: LogData): void;
107
189
  /** Log a warn message without redaction */
108
- warnRaw(message: string, data?: any): void;
190
+ warnRaw(message: string, data?: LogData): void;
109
191
  /** Log an error message without redaction */
110
- errorRaw(message: string, data?: any): void;
192
+ errorRaw(message: string, data?: LogData): void;
111
193
  /** Log a message without redaction */
112
- logRaw(message: string, data?: any): void;
194
+ logRaw(message: string, data?: LogData): void;
113
195
  /** Configure redaction settings */
114
196
  configureRedaction(config: Partial<RedactionConfig>): void;
115
197
  /** Reset redaction configuration to defaults */
@@ -135,15 +217,15 @@ export interface ILogEngine {
135
217
  */
136
218
  export interface ILogEngineWithoutRedaction {
137
219
  /** Log a debug message without redaction */
138
- debug(message: string, data?: any): void;
220
+ debug(message: string, data?: LogData): void;
139
221
  /** Log an info message without redaction */
140
- info(message: string, data?: any): void;
222
+ info(message: string, data?: LogData): void;
141
223
  /** Log a warn message without redaction */
142
- warn(message: string, data?: any): void;
224
+ warn(message: string, data?: LogData): void;
143
225
  /** Log an error message without redaction */
144
- error(message: string, data?: any): void;
226
+ error(message: string, data?: LogData): void;
145
227
  /** Log a message without redaction */
146
- log(message: string, data?: any): void;
228
+ log(message: string, data?: LogData): void;
147
229
  }
148
230
  /**
149
231
  * Interface for the DataRedactor static class methods
@@ -165,7 +247,7 @@ export interface IDataRedactor {
165
247
  /** Test if a field name would be redacted */
166
248
  testFieldRedaction(fieldName: string): boolean;
167
249
  /** Redact sensitive data from any value */
168
- redactData(data: any): any;
250
+ redactData(data: LogData): LogData;
169
251
  }
170
252
  /**
171
253
  * Interface for the RedactionController methods
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH;;;GAGG;AACH,IAAY,QAWX;AAXD,WAAY,QAAQ;IAChB,qFAAqF;IACrF,yCAAS,CAAA;IACT,2DAA2D;IAC3D,uCAAQ,CAAA;IACR,kEAAkE;IAClE,uCAAQ,CAAA;IACR,sEAAsE;IACtE,yCAAS,CAAA;IACT,kGAAkG;IAClG,sCAAQ,CAAA;AACZ,CAAC,EAXW,QAAQ,wBAAR,QAAQ,QAWnB;AAED;;;GAGG;AACH,IAAY,OAaX;AAbD,WAAY,OAAO;IACf,kEAAkE;IAClE,uCAAS,CAAA;IACT,uDAAuD;IACvD,qCAAQ,CAAA;IACR,gDAAgD;IAChD,qCAAQ,CAAA;IACR,0CAA0C;IAC1C,uCAAS,CAAA;IACT,8CAA8C;IAC9C,yCAAU,CAAA;IACV,kDAAkD;IAClD,mCAAO,CAAA;AACX,CAAC,EAbW,OAAO,uBAAP,OAAO,QAalB"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Wait for a file to exist with optimized polling
3
+ */
4
+ export declare function waitForFile(filePath: string, timeoutMs?: number): Promise<void>;
5
+ /**
6
+ * Wait for multiple files to exist with parallel checking
7
+ */
8
+ export declare function waitForFiles(filePaths: string[], timeoutMs?: number): Promise<void>;
9
+ /**
10
+ * Wait for a file to have specific content with optimized polling
11
+ */
12
+ export declare function waitForFileContent(filePath: string, expectedContent: string | RegExp, timeoutMs?: number): Promise<void>;
13
+ /**
14
+ * Wait for a directory to be empty with faster polling
15
+ */
16
+ export declare function waitForDirectoryEmpty(dirPath: string, timeoutMs?: number): Promise<void>;
17
+ /**
18
+ * Safely remove a file with optimized retry logic
19
+ */
20
+ export declare function safeRemoveFile(filePath: string, maxRetries?: number): Promise<void>;
21
+ /**
22
+ * Safely clean up a directory with retry logic
23
+ */
24
+ export declare function safeCleanupDirectory(dirPath: string): Promise<void>;
25
+ /**
26
+ * Enhanced mock HTTP handler with faster timeouts and better error handling
27
+ */
28
+ export declare class MockHttpHandler {
29
+ private requests;
30
+ private pendingPromises;
31
+ private timeoutIds;
32
+ addRequest(url: string, options: any): void;
33
+ getRequests(): {
34
+ url: string;
35
+ options: any;
36
+ }[];
37
+ waitForRequests(count?: number, timeoutMs?: number): Promise<void>;
38
+ clear(): void;
39
+ }
40
+ /**
41
+ * Create a test timeout that fails fast instead of hanging
42
+ */
43
+ export declare function createTestTimeout(timeoutMs?: number): {
44
+ promise: Promise<never>;
45
+ cancel: () => void;
46
+ };
47
+ /**
48
+ * Race a promise against a timeout for fail-fast behavior
49
+ */
50
+ export declare function withTimeout<T>(promise: Promise<T>, timeoutMs?: number): Promise<T>;
51
+ //# sourceMappingURL=async-test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-test-utils.d.ts","sourceRoot":"","sources":["../../../src/__tests__/async-test-utils.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CActG;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1G;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB/I;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/G;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB5F;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzE;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAIN;IAEV,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,UAAU,CAAkC;IAEpD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;IAe3C,WAAW;;;;IAIL,eAAe,CAAC,KAAK,GAAE,MAAU,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC5F,KAAK,IAAI,IAAI;CAUd;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,MAAwB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CAetH;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,GAAE,MAAwB,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBzG"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Test utilities for handling async file operations properly
3
+ * Replaces arbitrary timeouts with proper Promise-based waiting
4
+ * Optimized for CI environments with faster polling and shorter timeouts
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ // Optimized defaults for CI environments
9
+ const DEFAULT_TIMEOUT = 3000; // Reduced from 5000ms
10
+ const POLL_INTERVAL = 5; // Reduced from 10ms for faster detection
11
+ /**
12
+ * Wait for a file to exist with optimized polling
13
+ */
14
+ export async function waitForFile(filePath, timeoutMs = DEFAULT_TIMEOUT) {
15
+ const startTime = Date.now();
16
+ while (Date.now() - startTime < timeoutMs) {
17
+ try {
18
+ await fs.promises.access(filePath, fs.constants.F_OK);
19
+ return; // File exists
20
+ }
21
+ catch (error) {
22
+ // File doesn't exist yet, wait a bit
23
+ await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL));
24
+ }
25
+ }
26
+ throw new Error(`File ${filePath} did not appear within ${timeoutMs}ms`);
27
+ }
28
+ /**
29
+ * Wait for multiple files to exist with parallel checking
30
+ */
31
+ export async function waitForFiles(filePaths, timeoutMs = DEFAULT_TIMEOUT) {
32
+ await Promise.all(filePaths.map(filePath => waitForFile(filePath, timeoutMs)));
33
+ }
34
+ /**
35
+ * Wait for a file to have specific content with optimized polling
36
+ */
37
+ export async function waitForFileContent(filePath, expectedContent, timeoutMs = DEFAULT_TIMEOUT) {
38
+ const startTime = Date.now();
39
+ while (Date.now() - startTime < timeoutMs) {
40
+ try {
41
+ const content = await fs.promises.readFile(filePath, 'utf8');
42
+ if (typeof expectedContent === 'string') {
43
+ if (content.includes(expectedContent)) {
44
+ return;
45
+ }
46
+ }
47
+ else {
48
+ if (expectedContent.test(content)) {
49
+ return;
50
+ }
51
+ }
52
+ }
53
+ catch (error) {
54
+ // File might not exist yet or be readable
55
+ }
56
+ await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL));
57
+ }
58
+ throw new Error(`File ${filePath} did not contain expected content within ${timeoutMs}ms`);
59
+ }
60
+ /**
61
+ * Wait for a directory to be empty with faster polling
62
+ */
63
+ export async function waitForDirectoryEmpty(dirPath, timeoutMs = DEFAULT_TIMEOUT) {
64
+ const startTime = Date.now();
65
+ while (Date.now() - startTime < timeoutMs) {
66
+ try {
67
+ const files = await fs.promises.readdir(dirPath);
68
+ if (files.length === 0) {
69
+ return;
70
+ }
71
+ }
72
+ catch (error) {
73
+ // Directory might not exist, which is also "empty"
74
+ return;
75
+ }
76
+ await new Promise(resolve => setTimeout(resolve, POLL_INTERVAL));
77
+ }
78
+ throw new Error(`Directory ${dirPath} was not empty within ${timeoutMs}ms`);
79
+ }
80
+ /**
81
+ * Safely remove a file with optimized retry logic
82
+ */
83
+ export async function safeRemoveFile(filePath, maxRetries = 3) {
84
+ for (let i = 0; i < maxRetries; i++) {
85
+ try {
86
+ await fs.promises.unlink(filePath);
87
+ return;
88
+ }
89
+ catch (error) {
90
+ if (i === maxRetries - 1) {
91
+ // Only throw on last retry if it's not a "file not found" error
92
+ if (error.code !== 'ENOENT') {
93
+ throw error;
94
+ }
95
+ }
96
+ else {
97
+ // Wait a bit before retrying (reduced wait time)
98
+ await new Promise(resolve => setTimeout(resolve, 10));
99
+ }
100
+ }
101
+ }
102
+ }
103
+ /**
104
+ * Safely clean up a directory with retry logic
105
+ */
106
+ export async function safeCleanupDirectory(dirPath) {
107
+ try {
108
+ const files = await fs.promises.readdir(dirPath);
109
+ // Remove all files with retry logic
110
+ await Promise.all(files.map(file => safeRemoveFile(path.join(dirPath, file))));
111
+ // Remove the directory itself
112
+ await fs.promises.rmdir(dirPath);
113
+ }
114
+ catch (error) {
115
+ // Directory might not exist, which is fine
116
+ if (error.code !== 'ENOENT') {
117
+ // Try force removal as fallback
118
+ try {
119
+ await fs.promises.rm(dirPath, { recursive: true, force: true });
120
+ }
121
+ catch (fallbackError) {
122
+ // Ignore cleanup errors in tests
123
+ }
124
+ }
125
+ }
126
+ }
127
+ /**
128
+ * Enhanced mock HTTP handler with faster timeouts and better error handling
129
+ */
130
+ export class MockHttpHandler {
131
+ constructor() {
132
+ this.requests = [];
133
+ this.pendingPromises = [];
134
+ this.timeoutIds = new Set();
135
+ }
136
+ addRequest(url, options) {
137
+ let resolveRequest;
138
+ const promise = new Promise(resolve => {
139
+ resolveRequest = resolve;
140
+ });
141
+ this.requests.push({
142
+ url,
143
+ options,
144
+ resolve: resolveRequest
145
+ });
146
+ this.pendingPromises.push(promise);
147
+ }
148
+ getRequests() {
149
+ return this.requests.map(({ url, options }) => ({ url, options }));
150
+ }
151
+ async waitForRequests(count = 1, timeoutMs = DEFAULT_TIMEOUT) {
152
+ const startTime = Date.now();
153
+ // Set up a timeout that will be cleaned up
154
+ let timeoutId;
155
+ const timeoutPromise = new Promise((_, reject) => {
156
+ timeoutId = setTimeout(() => {
157
+ reject(new Error(`Expected ${count} requests but got ${this.requests.length} within ${timeoutMs}ms`));
158
+ }, timeoutMs);
159
+ this.timeoutIds.add(timeoutId);
160
+ });
161
+ try {
162
+ while (this.requests.length < count && Date.now() - startTime < timeoutMs) {
163
+ await new Promise(resolve => {
164
+ const id = setTimeout(resolve, POLL_INTERVAL);
165
+ this.timeoutIds.add(id);
166
+ });
167
+ }
168
+ if (this.requests.length < count) {
169
+ throw new Error(`Expected ${count} requests but got ${this.requests.length} within ${timeoutMs}ms`);
170
+ }
171
+ // Mark all requests as processed
172
+ this.requests.forEach(req => req.resolve());
173
+ // Wait for all pending promises to resolve
174
+ await Promise.all(this.pendingPromises);
175
+ }
176
+ finally {
177
+ // Clean up the timeout
178
+ if (timeoutId) {
179
+ clearTimeout(timeoutId);
180
+ this.timeoutIds.delete(timeoutId);
181
+ }
182
+ }
183
+ }
184
+ clear() {
185
+ // Clean up any remaining timeouts
186
+ for (const timeoutId of this.timeoutIds) {
187
+ clearTimeout(timeoutId);
188
+ }
189
+ this.timeoutIds.clear();
190
+ this.requests = [];
191
+ this.pendingPromises = [];
192
+ }
193
+ }
194
+ /**
195
+ * Create a test timeout that fails fast instead of hanging
196
+ */
197
+ export function createTestTimeout(timeoutMs = DEFAULT_TIMEOUT) {
198
+ let timeoutId;
199
+ const promise = new Promise((_, reject) => {
200
+ timeoutId = setTimeout(() => {
201
+ reject(new Error(`Test timed out after ${timeoutMs}ms`));
202
+ }, timeoutMs);
203
+ });
204
+ const cancel = () => {
205
+ if (timeoutId) {
206
+ clearTimeout(timeoutId);
207
+ }
208
+ };
209
+ return { promise, cancel };
210
+ }
211
+ /**
212
+ * Race a promise against a timeout for fail-fast behavior
213
+ */
214
+ export async function withTimeout(promise, timeoutMs = DEFAULT_TIMEOUT) {
215
+ const timeout = createTestTimeout(timeoutMs);
216
+ try {
217
+ const result = await Promise.race([
218
+ promise,
219
+ timeout.promise
220
+ ]);
221
+ // Cancel the timeout since we got a result
222
+ timeout.cancel();
223
+ return result;
224
+ }
225
+ catch (error) {
226
+ // Cancel the timeout in case of error
227
+ timeout.cancel();
228
+ throw error;
229
+ }
230
+ }
231
+ //# sourceMappingURL=async-test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-test-utils.js","sourceRoot":"","sources":["../../../src/__tests__/async-test-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared test utilities for redaction tests
3
+ * Common setup, mocks, and helper functions
4
+ */
5
+ export declare const mockConsole: {
6
+ log: jest.Mock<any, any, any>;
7
+ warn: jest.Mock<any, any, any>;
8
+ error: jest.Mock<any, any, any>;
9
+ };
10
+ export declare const originalConsole: {
11
+ log: (message?: any, ...optionalParams: any[]) => void;
12
+ warn: (message?: any, ...optionalParams: any[]) => void;
13
+ error: (message?: any, ...optionalParams: any[]) => void;
14
+ };
15
+ /**
16
+ * Setup console mocks for testing
17
+ */
18
+ export declare function setupConsoleMocks(): void;
19
+ /**
20
+ * Restore original console methods
21
+ */
22
+ export declare function restoreConsole(): void;
23
+ /**
24
+ * Setup environment for testing
25
+ */
26
+ export declare function setupTestEnvironment(): {
27
+ originalEnv: NodeJS.ProcessEnv;
28
+ };
29
+ /**
30
+ * Restore environment after testing
31
+ */
32
+ export declare function restoreEnvironment(originalEnv: NodeJS.ProcessEnv): void;
33
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/redaction/test-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,WAAW;;;;CAIvB,CAAC;AAGF,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,WAAW,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,CAGzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAqBvE"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Shared test utilities for redaction tests
3
+ * Common setup, mocks, and helper functions
4
+ */
5
+ // Mock console methods to capture output for integration tests
6
+ export const mockConsole = {
7
+ log: jest.fn(),
8
+ warn: jest.fn(),
9
+ error: jest.fn()
10
+ };
11
+ // Store original console methods
12
+ export const originalConsole = {
13
+ log: console.log,
14
+ warn: console.warn,
15
+ error: console.error
16
+ };
17
+ /**
18
+ * Setup console mocks for testing
19
+ */
20
+ export function setupConsoleMocks() {
21
+ jest.clearAllMocks();
22
+ console.log = mockConsole.log;
23
+ console.warn = mockConsole.warn;
24
+ console.error = mockConsole.error;
25
+ }
26
+ /**
27
+ * Restore original console methods
28
+ */
29
+ export function restoreConsole() {
30
+ console.log = originalConsole.log;
31
+ console.warn = originalConsole.warn;
32
+ console.error = originalConsole.error;
33
+ }
34
+ /**
35
+ * Setup environment for testing
36
+ */
37
+ export function setupTestEnvironment() {
38
+ const originalEnv = { ...process.env };
39
+ return { originalEnv };
40
+ }
41
+ /**
42
+ * Restore environment after testing
43
+ */
44
+ export function restoreEnvironment(originalEnv) {
45
+ // Only remove environment variables that were added during the test
46
+ // (i.e., those not present in the originalEnv)
47
+ // Create a copy of the keys to avoid mutation during iteration
48
+ const currentEnvKeys = Object.keys(process.env);
49
+ for (const key of currentEnvKeys) {
50
+ if (!Object.prototype.hasOwnProperty.call(originalEnv, key)) {
51
+ // Safe deletion using explicit type assertion
52
+ delete process.env[key];
53
+ }
54
+ }
55
+ // Restore or update variables that existed originally
56
+ // Iterate over originalEnv keys safely
57
+ const originalEnvKeys = Object.keys(originalEnv);
58
+ for (const key of originalEnvKeys) {
59
+ if (Object.prototype.hasOwnProperty.call(originalEnv, key)) {
60
+ // Safe assignment using explicit access
61
+ process.env[key] = originalEnv[key];
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../../src/__tests__/redaction/test-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;IACd,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;IACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;CACjB,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,KAAK,EAAE,OAAO,CAAC,KAAK;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;IAC9B,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAChC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC;IAClC,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;IACpC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAA8B;IAC/D,oEAAoE;IACpE,+CAA+C;IAC/C,+DAA+D;IAC/D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;YAC5D,8CAA8C;YAC9C,OAAQ,OAAO,CAAC,GAA0C,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,uCAAuC;IACvC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;YAC3D,wCAAwC;YACvC,OAAO,CAAC,GAA0C,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Shared test utilities for log-engine tests
3
+ * Provides consistent console mocking and cleanup functionality across all test suites
4
+ */
5
+ /**
6
+ * Interface for managing console method mocks during testing
7
+ * Groups all console spy instances for easy setup and cleanup
8
+ */
9
+ export interface ConsoleMocks {
10
+ /** Mock for console.log (used by debug and info methods) */
11
+ mockConsoleLog: jest.SpyInstance;
12
+ /** Mock for console.warn (used by warn method) */
13
+ mockConsoleWarn: jest.SpyInstance;
14
+ /** Mock for console.error (used by error method) */
15
+ mockConsoleError: jest.SpyInstance;
16
+ }
17
+ /**
18
+ * Sets up console mocks for testing log output
19
+ * Replaces console methods with Jest spies to capture and verify log calls
20
+ * @returns ConsoleMocks object containing all spy instances
21
+ */
22
+ export declare const setupConsoleMocks: () => ConsoleMocks;
23
+ /**
24
+ * Restores console mocks after testing
25
+ * Cleans up Jest spies and restores original console functionality
26
+ * @param mocks - The ConsoleMocks object from setupConsoleMocks
27
+ */
28
+ export declare const restoreConsoleMocks: (mocks: ConsoleMocks) => void;
29
+ /**
30
+ * Convenience function for setting up console mocks in beforeEach hooks
31
+ * Identical to setupConsoleMocks but with a more descriptive name for test setup
32
+ * @returns ConsoleMocks object containing all spy instances
33
+ */
34
+ export declare const setupConsoleBeforeEach: () => ConsoleMocks;
35
+ /**
36
+ * Convenience function for restoring console mocks in afterEach hooks
37
+ * Identical to restoreConsoleMocks but with a more descriptive name for test cleanup
38
+ * @param mocks - The ConsoleMocks object to restore
39
+ */
40
+ export declare const restoreConsoleAfterEach: (mocks: ConsoleMocks) => void;
41
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC;IACjC,kDAAkD;IAClD,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC;IAClC,oDAAoD;IACpD,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC;CACpC;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAO,YAMpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,YAAY,KAAG,IAIzD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAO,YAEzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,YAAY,KAAG,IAE7D,CAAC"}