od-temp 1.0.4 → 1.0.5

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.
@@ -0,0 +1,298 @@
1
+
2
+ //#region src/health/HealthCheck.ts
3
+ var HealthChecker = class {
4
+ constructor(detector) {
5
+ this.detector = detector;
6
+ this.initTime = Date.now();
7
+ }
8
+ /**
9
+ * Run complete health check
10
+ */
11
+ async check(options = {}) {
12
+ const result = {
13
+ status: "healthy",
14
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
15
+ checks: {
16
+ detector: {
17
+ status: "pass",
18
+ message: "Detector initialized"
19
+ },
20
+ patterns: {
21
+ status: "pass",
22
+ message: "Patterns loaded"
23
+ },
24
+ performance: {
25
+ status: "pass",
26
+ message: "Performance acceptable"
27
+ },
28
+ memory: {
29
+ status: "pass",
30
+ message: "Memory usage normal"
31
+ }
32
+ },
33
+ metrics: {
34
+ totalPatterns: 0,
35
+ compiledPatterns: 0,
36
+ cacheEnabled: false,
37
+ uptime: Date.now() - this.initTime
38
+ },
39
+ errors: [],
40
+ warnings: []
41
+ };
42
+ try {
43
+ result.checks.detector = await this.checkDetector(options);
44
+ result.checks.patterns = await this.checkPatterns();
45
+ if (options.checkPerformance !== false) result.checks.performance = await this.checkPerformance(options.performanceThreshold);
46
+ result.checks.memory = await this.checkMemory(options.memoryThreshold);
47
+ result.metrics = this.collectMetrics();
48
+ result.status = this.determineOverallStatus(result.checks);
49
+ for (const check of Object.values(result.checks)) if (check.status === "fail") result.errors.push(check.message);
50
+ else if (check.status === "warn") result.warnings.push(check.message);
51
+ } catch (error) {
52
+ result.status = "unhealthy";
53
+ result.errors.push(`Health check failed: ${error.message}`);
54
+ }
55
+ return result;
56
+ }
57
+ /**
58
+ * Check detector functionality
59
+ */
60
+ async checkDetector(options) {
61
+ try {
62
+ if (options.testDetection !== false) {
63
+ const result = await this.detector.detect("Test email: test@example.com");
64
+ if (!result || !result.detections) return {
65
+ status: "fail",
66
+ message: "Detector returned invalid result"
67
+ };
68
+ if (result.detections.length === 0) return {
69
+ status: "warn",
70
+ message: "Test detection found no PII (expected at least 1)"
71
+ };
72
+ }
73
+ return {
74
+ status: "pass",
75
+ message: "Detector functioning correctly"
76
+ };
77
+ } catch (error) {
78
+ return {
79
+ status: "fail",
80
+ message: `Detector check failed: ${error.message}`
81
+ };
82
+ }
83
+ }
84
+ /**
85
+ * Check patterns are loaded
86
+ */
87
+ async checkPatterns() {
88
+ try {
89
+ const patterns = this.detector.getPatterns();
90
+ if (!patterns || patterns.length === 0) return {
91
+ status: "fail",
92
+ message: "No patterns loaded",
93
+ value: 0,
94
+ threshold: 1
95
+ };
96
+ if (patterns.length < 10) return {
97
+ status: "warn",
98
+ message: "Very few patterns loaded (expected more)",
99
+ value: patterns.length,
100
+ threshold: 10
101
+ };
102
+ return {
103
+ status: "pass",
104
+ message: `${patterns.length} patterns loaded`,
105
+ value: patterns.length
106
+ };
107
+ } catch (error) {
108
+ return {
109
+ status: "fail",
110
+ message: `Pattern check failed: ${error.message}`
111
+ };
112
+ }
113
+ }
114
+ /**
115
+ * Check performance
116
+ */
117
+ async checkPerformance(threshold = 100) {
118
+ try {
119
+ const testText = "Test: john@example.com, phone: 555-123-4567, IP: 192.168.1.1";
120
+ const start = performance.now();
121
+ await this.detector.detect(testText);
122
+ const duration = performance.now() - start;
123
+ if (duration > threshold * 2) return {
124
+ status: "fail",
125
+ message: `Performance degraded: ${duration.toFixed(2)}ms`,
126
+ value: duration,
127
+ threshold
128
+ };
129
+ if (duration > threshold) return {
130
+ status: "warn",
131
+ message: `Performance slower than expected: ${duration.toFixed(2)}ms`,
132
+ value: duration,
133
+ threshold
134
+ };
135
+ return {
136
+ status: "pass",
137
+ message: `Performance good: ${duration.toFixed(2)}ms`,
138
+ value: duration,
139
+ threshold
140
+ };
141
+ } catch (error) {
142
+ return {
143
+ status: "fail",
144
+ message: `Performance check failed: ${error.message}`
145
+ };
146
+ }
147
+ }
148
+ /**
149
+ * Check memory usage
150
+ */
151
+ async checkMemory(threshold = 100) {
152
+ try {
153
+ if (typeof process === "undefined" || !process.memoryUsage) return {
154
+ status: "pass",
155
+ message: "Memory check skipped (not in Node.js)"
156
+ };
157
+ const heapUsedMB = process.memoryUsage().heapUsed / 1024 / 1024;
158
+ if (heapUsedMB > threshold * 2) return {
159
+ status: "fail",
160
+ message: `High memory usage: ${heapUsedMB.toFixed(2)}MB`,
161
+ value: heapUsedMB,
162
+ threshold
163
+ };
164
+ if (heapUsedMB > threshold) return {
165
+ status: "warn",
166
+ message: `Elevated memory usage: ${heapUsedMB.toFixed(2)}MB`,
167
+ value: heapUsedMB,
168
+ threshold
169
+ };
170
+ return {
171
+ status: "pass",
172
+ message: `Memory usage normal: ${heapUsedMB.toFixed(2)}MB`,
173
+ value: heapUsedMB,
174
+ threshold
175
+ };
176
+ } catch (error) {
177
+ return {
178
+ status: "warn",
179
+ message: `Memory check skipped: ${error.message}`
180
+ };
181
+ }
182
+ }
183
+ /**
184
+ * Collect metrics
185
+ */
186
+ collectMetrics() {
187
+ const patterns = this.detector.getPatterns();
188
+ const cacheStats = this.detector.getCacheStats();
189
+ return {
190
+ totalPatterns: patterns.length,
191
+ compiledPatterns: patterns.length,
192
+ cacheSize: cacheStats.size,
193
+ cacheEnabled: cacheStats.enabled,
194
+ uptime: Date.now() - this.initTime
195
+ };
196
+ }
197
+ /**
198
+ * Determine overall status
199
+ */
200
+ determineOverallStatus(checks) {
201
+ const statuses = Object.values(checks).map((c) => c.status);
202
+ if (statuses.includes("fail")) return "unhealthy";
203
+ if (statuses.includes("warn")) return "degraded";
204
+ return "healthy";
205
+ }
206
+ /**
207
+ * Quick health check (minimal overhead)
208
+ */
209
+ async quickCheck() {
210
+ try {
211
+ if (this.detector.getPatterns().length === 0) return {
212
+ status: "unhealthy",
213
+ message: "No patterns loaded"
214
+ };
215
+ return {
216
+ status: "healthy",
217
+ message: "OK"
218
+ };
219
+ } catch (error) {
220
+ return {
221
+ status: "unhealthy",
222
+ message: `Error: ${error.message}`
223
+ };
224
+ }
225
+ }
226
+ /**
227
+ * Get system info for debugging
228
+ */
229
+ getSystemInfo() {
230
+ const patterns = this.detector.getPatterns();
231
+ const cacheStats = this.detector.getCacheStats();
232
+ return {
233
+ version: "1.0.0",
234
+ patterns: {
235
+ total: patterns.length,
236
+ types: [...new Set(patterns.map((p) => p.type.split("_")[0]))].length
237
+ },
238
+ cache: {
239
+ enabled: cacheStats.enabled,
240
+ size: cacheStats.size,
241
+ maxSize: cacheStats.maxSize
242
+ },
243
+ uptime: Date.now() - this.initTime,
244
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
245
+ };
246
+ }
247
+ };
248
+ /**
249
+ * Create health checker for a detector
250
+ */
251
+ function createHealthChecker(detector) {
252
+ return new HealthChecker(detector);
253
+ }
254
+ /**
255
+ * Express middleware for health check endpoint
256
+ */
257
+ function healthCheckMiddleware(detector) {
258
+ const checker = new HealthChecker(detector);
259
+ return async (_req, res) => {
260
+ try {
261
+ const result = await checker.check({
262
+ testDetection: true,
263
+ checkPerformance: true,
264
+ performanceThreshold: 100,
265
+ memoryThreshold: 100
266
+ });
267
+ const statusCode = result.status === "healthy" ? 200 : result.status === "degraded" ? 200 : 503;
268
+ res.status(statusCode).json(result);
269
+ } catch (error) {
270
+ res.status(503).json({
271
+ status: "unhealthy",
272
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
273
+ error: error.message
274
+ });
275
+ }
276
+ };
277
+ }
278
+
279
+ //#endregion
280
+ Object.defineProperty(exports, 'HealthChecker', {
281
+ enumerable: true,
282
+ get: function () {
283
+ return HealthChecker;
284
+ }
285
+ });
286
+ Object.defineProperty(exports, 'createHealthChecker', {
287
+ enumerable: true,
288
+ get: function () {
289
+ return createHealthChecker;
290
+ }
291
+ });
292
+ Object.defineProperty(exports, 'healthCheckMiddleware', {
293
+ enumerable: true,
294
+ get: function () {
295
+ return healthCheckMiddleware;
296
+ }
297
+ });
298
+ //# sourceMappingURL=HealthCheck-CFX1wPqE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HealthCheck-CFX1wPqE.js","names":[],"sources":["../src/health/HealthCheck.ts"],"sourcesContent":["/**\n * Health check API for production monitoring\n * Verify detector is working correctly and get system status\n */\n\nimport type { OpenRedaction } from '../detector';\n\nexport interface HealthCheckResult {\n status: 'healthy' | 'degraded' | 'unhealthy';\n timestamp: string;\n checks: {\n detector: HealthCheckStatus;\n patterns: HealthCheckStatus;\n performance: HealthCheckStatus;\n memory: HealthCheckStatus;\n };\n metrics: {\n totalPatterns: number;\n compiledPatterns: number;\n cacheSize?: number;\n cacheEnabled: boolean;\n uptime: number; // milliseconds since initialization\n };\n errors: string[];\n warnings: string[];\n}\n\nexport interface HealthCheckStatus {\n status: 'pass' | 'warn' | 'fail';\n message: string;\n value?: any;\n threshold?: any;\n}\n\nexport interface HealthCheckOptions {\n testDetection?: boolean; // Run a test detection\n checkPerformance?: boolean; // Run performance benchmark\n performanceThreshold?: number; // Max acceptable detection time (ms)\n memoryThreshold?: number; // Max acceptable memory usage (MB)\n}\n\nexport class HealthChecker {\n private detector: OpenRedaction;\n private initTime: number;\n\n constructor(detector: OpenRedaction) {\n this.detector = detector;\n this.initTime = Date.now();\n }\n\n /**\n * Run complete health check\n */\n async check(options: HealthCheckOptions = {}): Promise<HealthCheckResult> {\n const result: HealthCheckResult = {\n status: 'healthy',\n timestamp: new Date().toISOString(),\n checks: {\n detector: { status: 'pass', message: 'Detector initialized' },\n patterns: { status: 'pass', message: 'Patterns loaded' },\n performance: { status: 'pass', message: 'Performance acceptable' },\n memory: { status: 'pass', message: 'Memory usage normal' }\n },\n metrics: {\n totalPatterns: 0,\n compiledPatterns: 0,\n cacheEnabled: false,\n uptime: Date.now() - this.initTime\n },\n errors: [],\n warnings: []\n };\n\n try {\n // Check 1: Detector status\n result.checks.detector = await this.checkDetector(options);\n\n // Check 2: Patterns status\n result.checks.patterns = await this.checkPatterns();\n\n // Check 3: Performance\n if (options.checkPerformance !== false) {\n result.checks.performance = await this.checkPerformance(\n options.performanceThreshold\n );\n }\n\n // Check 4: Memory\n result.checks.memory = await this.checkMemory(options.memoryThreshold);\n\n // Collect metrics\n result.metrics = this.collectMetrics();\n\n // Determine overall status\n result.status = this.determineOverallStatus(result.checks);\n\n // Collect errors and warnings\n for (const check of Object.values(result.checks)) {\n if (check.status === 'fail') {\n result.errors.push(check.message);\n } else if (check.status === 'warn') {\n result.warnings.push(check.message);\n }\n }\n } catch (error) {\n result.status = 'unhealthy';\n result.errors.push(`Health check failed: ${(error as Error).message}`);\n }\n\n return result;\n }\n\n /**\n * Check detector functionality\n */\n private async checkDetector(options: HealthCheckOptions): Promise<HealthCheckStatus> {\n try {\n // Run test detection if enabled\n if (options.testDetection !== false) {\n const testText = 'Test email: test@example.com';\n const result = await this.detector.detect(testText);\n\n if (!result || !result.detections) {\n return {\n status: 'fail',\n message: 'Detector returned invalid result'\n };\n }\n\n // Verify detection worked\n if (result.detections.length === 0) {\n return {\n status: 'warn',\n message: 'Test detection found no PII (expected at least 1)'\n };\n }\n }\n\n return {\n status: 'pass',\n message: 'Detector functioning correctly'\n };\n } catch (error) {\n return {\n status: 'fail',\n message: `Detector check failed: ${(error as Error).message}`\n };\n }\n }\n\n /**\n * Check patterns are loaded\n */\n private async checkPatterns(): Promise<HealthCheckStatus> {\n try {\n const patterns = this.detector.getPatterns();\n\n if (!patterns || patterns.length === 0) {\n return {\n status: 'fail',\n message: 'No patterns loaded',\n value: 0,\n threshold: 1\n };\n }\n\n if (patterns.length < 10) {\n return {\n status: 'warn',\n message: 'Very few patterns loaded (expected more)',\n value: patterns.length,\n threshold: 10\n };\n }\n\n return {\n status: 'pass',\n message: `${patterns.length} patterns loaded`,\n value: patterns.length\n };\n } catch (error) {\n return {\n status: 'fail',\n message: `Pattern check failed: ${(error as Error).message}`\n };\n }\n }\n\n /**\n * Check performance\n */\n private async checkPerformance(\n threshold: number = 100\n ): Promise<HealthCheckStatus> {\n try {\n const testText = 'Test: john@example.com, phone: 555-123-4567, IP: 192.168.1.1';\n const start = performance.now();\n await this.detector.detect(testText);\n const duration = performance.now() - start;\n\n if (duration > threshold * 2) {\n return {\n status: 'fail',\n message: `Performance degraded: ${duration.toFixed(2)}ms`,\n value: duration,\n threshold\n };\n }\n\n if (duration > threshold) {\n return {\n status: 'warn',\n message: `Performance slower than expected: ${duration.toFixed(2)}ms`,\n value: duration,\n threshold\n };\n }\n\n return {\n status: 'pass',\n message: `Performance good: ${duration.toFixed(2)}ms`,\n value: duration,\n threshold\n };\n } catch (error) {\n return {\n status: 'fail',\n message: `Performance check failed: ${(error as Error).message}`\n };\n }\n }\n\n /**\n * Check memory usage\n */\n private async checkMemory(threshold: number = 100): Promise<HealthCheckStatus> {\n try {\n if (typeof process === 'undefined' || !process.memoryUsage) {\n return {\n status: 'pass',\n message: 'Memory check skipped (not in Node.js)'\n };\n }\n\n const usage = process.memoryUsage();\n const heapUsedMB = usage.heapUsed / 1024 / 1024;\n\n if (heapUsedMB > threshold * 2) {\n return {\n status: 'fail',\n message: `High memory usage: ${heapUsedMB.toFixed(2)}MB`,\n value: heapUsedMB,\n threshold\n };\n }\n\n if (heapUsedMB > threshold) {\n return {\n status: 'warn',\n message: `Elevated memory usage: ${heapUsedMB.toFixed(2)}MB`,\n value: heapUsedMB,\n threshold\n };\n }\n\n return {\n status: 'pass',\n message: `Memory usage normal: ${heapUsedMB.toFixed(2)}MB`,\n value: heapUsedMB,\n threshold\n };\n } catch (error) {\n return {\n status: 'warn',\n message: `Memory check skipped: ${(error as Error).message}`\n };\n }\n }\n\n /**\n * Collect metrics\n */\n private collectMetrics() {\n const patterns = this.detector.getPatterns();\n const cacheStats = this.detector.getCacheStats();\n\n return {\n totalPatterns: patterns.length,\n compiledPatterns: patterns.length, // All patterns are pre-compiled\n cacheSize: cacheStats.size,\n cacheEnabled: cacheStats.enabled,\n uptime: Date.now() - this.initTime\n };\n }\n\n /**\n * Determine overall status\n */\n private determineOverallStatus(checks: HealthCheckResult['checks']): 'healthy' | 'degraded' | 'unhealthy' {\n const statuses = Object.values(checks).map(c => c.status);\n\n if (statuses.includes('fail')) {\n return 'unhealthy';\n }\n\n if (statuses.includes('warn')) {\n return 'degraded';\n }\n\n return 'healthy';\n }\n\n /**\n * Quick health check (minimal overhead)\n */\n async quickCheck(): Promise<{ status: 'healthy' | 'unhealthy'; message: string }> {\n try {\n // Just verify basic functionality\n const patterns = this.detector.getPatterns();\n if (patterns.length === 0) {\n return { status: 'unhealthy', message: 'No patterns loaded' };\n }\n\n return { status: 'healthy', message: 'OK' };\n } catch (error) {\n return {\n status: 'unhealthy',\n message: `Error: ${(error as Error).message}`\n };\n }\n }\n\n /**\n * Get system info for debugging\n */\n getSystemInfo() {\n const patterns = this.detector.getPatterns();\n const cacheStats = this.detector.getCacheStats();\n\n return {\n version: '1.0.0', // Should come from package.json\n patterns: {\n total: patterns.length,\n types: [...new Set(patterns.map(p => p.type.split('_')[0]))].length\n },\n cache: {\n enabled: cacheStats.enabled,\n size: cacheStats.size,\n maxSize: cacheStats.maxSize\n },\n uptime: Date.now() - this.initTime,\n timestamp: new Date().toISOString()\n };\n }\n}\n\n/**\n * Create health checker for a detector\n */\nexport function createHealthChecker(detector: OpenRedaction): HealthChecker {\n return new HealthChecker(detector);\n}\n\n/**\n * Express middleware for health check endpoint\n */\nexport function healthCheckMiddleware(detector: OpenRedaction) {\n const checker = new HealthChecker(detector);\n\n return async (_req: any, res: any) => {\n try {\n const result = await checker.check({\n testDetection: true,\n checkPerformance: true,\n performanceThreshold: 100,\n memoryThreshold: 100\n });\n\n const statusCode = result.status === 'healthy' ? 200 :\n result.status === 'degraded' ? 200 : 503;\n\n res.status(statusCode).json(result);\n } catch (error) {\n res.status(503).json({\n status: 'unhealthy',\n timestamp: new Date().toISOString(),\n error: (error as Error).message\n });\n }\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ const require_HealthCheck = require('./HealthCheck-CFX1wPqE.js');
2
+ const require_index = require('./index.js');
3
+
4
+ exports.HealthChecker = require_HealthCheck.HealthChecker;