bootifyjs 1.2.0 → 1.3.0
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.
- package/README.md +1 -1
- package/dist/api.d.ts +2 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +20 -4
- package/dist/api.js.map +1 -1
- package/dist/auth/examples/basic-usage.d.ts +2 -1
- package/dist/auth/examples/basic-usage.d.ts.map +1 -1
- package/dist/auth/examples/basic-usage.js +3 -2
- package/dist/auth/examples/basic-usage.js.map +1 -1
- package/dist/auth/index.d.ts +6 -8
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +11 -11
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/middleware/AuthMiddleware.js.map +1 -1
- package/dist/cache/bootstrap.js +1 -1
- package/dist/cache/bootstrap.js.map +1 -1
- package/dist/cache/index.d.ts +2 -1
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +4 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/{in-memory-cache.store.d.ts → stores/in-memory-cache.store.d.ts} +1 -1
- package/dist/cache/stores/in-memory-cache.store.d.ts.map +1 -0
- package/dist/cache/{in-memory-cache.store.js → stores/in-memory-cache.store.js} +1 -1
- package/dist/cache/stores/in-memory-cache.store.js.map +1 -0
- package/dist/cache/stores/index.d.ts +3 -0
- package/dist/cache/stores/index.d.ts.map +1 -0
- package/dist/cache/stores/index.js +20 -0
- package/dist/cache/stores/index.js.map +1 -0
- package/dist/cache/stores/redis-cache.store.d.ts +8 -0
- package/dist/cache/stores/redis-cache.store.d.ts.map +1 -0
- package/dist/cache/stores/redis-cache.store.js +39 -0
- package/dist/cache/stores/redis-cache.store.js.map +1 -0
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/router.js +3 -3
- package/dist/core/router.js.map +1 -1
- package/dist/events/bootstrap.d.ts +13 -1
- package/dist/events/bootstrap.d.ts.map +1 -1
- package/dist/events/bootstrap.js +30 -2
- package/dist/events/bootstrap.js.map +1 -1
- package/dist/events/buffered-event-bus.service.d.ts +135 -0
- package/dist/events/buffered-event-bus.service.d.ts.map +1 -0
- package/dist/events/buffered-event-bus.service.js +420 -0
- package/dist/events/buffered-event-bus.service.js.map +1 -0
- package/dist/events/config/buffered-event-config.d.ts +153 -0
- package/dist/events/config/buffered-event-config.d.ts.map +1 -0
- package/dist/events/config/buffered-event-config.js +181 -0
- package/dist/events/config/buffered-event-config.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +3 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/metrics/event-metrics.d.ts +175 -0
- package/dist/events/metrics/event-metrics.d.ts.map +1 -0
- package/dist/events/metrics/event-metrics.js +235 -0
- package/dist/events/metrics/event-metrics.js.map +1 -0
- package/dist/events/monitoring/health-monitor.d.ts +142 -0
- package/dist/events/monitoring/health-monitor.d.ts.map +1 -0
- package/dist/events/monitoring/health-monitor.js +492 -0
- package/dist/events/monitoring/health-monitor.js.map +1 -0
- package/dist/events/retry/retry-handler.d.ts +112 -0
- package/dist/events/retry/retry-handler.d.ts.map +1 -0
- package/dist/events/retry/retry-handler.js +218 -0
- package/dist/events/retry/retry-handler.js.map +1 -0
- package/dist/events/shared-buffer.d.ts +92 -0
- package/dist/events/shared-buffer.d.ts.map +1 -0
- package/dist/events/shared-buffer.js +179 -0
- package/dist/events/shared-buffer.js.map +1 -0
- package/dist/events/worker/event-processor.worker.d.ts +75 -0
- package/dist/events/worker/event-processor.worker.d.ts.map +1 -0
- package/dist/events/worker/event-processor.worker.js +293 -0
- package/dist/events/worker/event-processor.worker.js.map +1 -0
- package/dist/events/worker/worker-manager.d.ts +132 -0
- package/dist/events/worker/worker-manager.d.ts.map +1 -0
- package/dist/events/worker/worker-manager.js +436 -0
- package/dist/events/worker/worker-manager.js.map +1 -0
- package/dist/examples/auth/auth.middleware.d.ts +0 -26
- package/dist/examples/auth/auth.middleware.d.ts.map +1 -1
- package/dist/examples/auth/auth.middleware.js +0 -185
- package/dist/examples/auth/auth.middleware.js.map +1 -1
- package/dist/examples/controllers/auth.controller.d.ts +0 -63
- package/dist/examples/controllers/auth.controller.d.ts.map +1 -1
- package/dist/examples/controllers/auth.controller.js +247 -282
- package/dist/examples/controllers/auth.controller.js.map +1 -1
- package/dist/examples/events/buffered-event-example.d.ts +71 -0
- package/dist/examples/events/buffered-event-example.d.ts.map +1 -0
- package/dist/examples/events/buffered-event-example.js +182 -0
- package/dist/examples/events/buffered-event-example.js.map +1 -0
- package/dist/examples/events/integration-test.d.ts +10 -0
- package/dist/examples/events/integration-test.d.ts.map +1 -0
- package/dist/examples/events/integration-test.js +147 -0
- package/dist/examples/events/integration-test.js.map +1 -0
- package/dist/examples/index.d.ts +1 -0
- package/dist/examples/index.d.ts.map +1 -1
- package/dist/examples/index.js +11 -7
- package/dist/examples/index.js.map +1 -1
- package/dist/examples/todos/schema.d.ts +4 -4
- package/package.json +2 -1
- package/dist/cache/in-memory-cache.store.d.ts.map +0 -1
- package/dist/cache/in-memory-cache.store.js.map +0 -1
- package/dist/examples/authorization-examples.d.ts +0 -67
- package/dist/examples/authorization-examples.d.ts.map +0 -1
- package/dist/examples/authorization-examples.js +0 -202
- package/dist/examples/authorization-examples.js.map +0 -1
- package/dist/examples/controllers/todo-updated.controller.d.ts +0 -103
- package/dist/examples/controllers/todo-updated.controller.d.ts.map +0 -1
- package/dist/examples/controllers/todo-updated.controller.js +0 -328
- package/dist/examples/controllers/todo-updated.controller.js.map +0 -1
- package/dist/examples/controllers/todo-with-jwt-auth.controller.d.ts +0 -114
- package/dist/examples/controllers/todo-with-jwt-auth.controller.d.ts.map +0 -1
- package/dist/examples/controllers/todo-with-jwt-auth.controller.js +0 -329
- package/dist/examples/controllers/todo-with-jwt-auth.controller.js.map +0 -1
- package/dist/examples/jwt-auth-example.d.ts +0 -47
- package/dist/examples/jwt-auth-example.d.ts.map +0 -1
- package/dist/examples/jwt-auth-example.js +0 -316
- package/dist/examples/jwt-auth-example.js.map +0 -1
- package/dist/examples/services/user.service.d.ts +0 -99
- package/dist/examples/services/user.service.d.ts.map +0 -1
- package/dist/examples/services/user.service.js +0 -281
- package/dist/examples/services/user.service.js.map +0 -1
- package/dist/examples/test-auth-flow.d.ts +0 -56
- package/dist/examples/test-auth-flow.d.ts.map +0 -1
- package/dist/examples/test-auth-flow.js +0 -449
- package/dist/examples/test-auth-flow.js.map +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventMetricsCollector = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Event metrics collector and analyzer
|
|
6
|
+
*/
|
|
7
|
+
class EventMetricsCollector {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.metricsHistory = [];
|
|
10
|
+
this.maxHistorySize = 1000;
|
|
11
|
+
// Counters
|
|
12
|
+
this.eventsEnqueued = 0;
|
|
13
|
+
this.eventsProcessed = 0;
|
|
14
|
+
this.eventsDropped = 0;
|
|
15
|
+
this.processingTimes = [];
|
|
16
|
+
this.queueLatencies = [];
|
|
17
|
+
// Worker tracking
|
|
18
|
+
this.workerStatuses = new Map();
|
|
19
|
+
// Performance tracking
|
|
20
|
+
this.lastMetricsTime = Date.now();
|
|
21
|
+
this.lastEventsProcessed = 0;
|
|
22
|
+
this.config = config;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Record event enqueued
|
|
26
|
+
*/
|
|
27
|
+
recordEventEnqueued(priority = 'normal') {
|
|
28
|
+
this.eventsEnqueued++;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Record event processed
|
|
32
|
+
*/
|
|
33
|
+
recordEventProcessed(processingTime, queueLatency) {
|
|
34
|
+
this.eventsProcessed++;
|
|
35
|
+
this.processingTimes.push(processingTime);
|
|
36
|
+
this.queueLatencies.push(queueLatency);
|
|
37
|
+
// Keep only recent processing times (last 1000)
|
|
38
|
+
if (this.processingTimes.length > 1000) {
|
|
39
|
+
this.processingTimes.shift();
|
|
40
|
+
}
|
|
41
|
+
if (this.queueLatencies.length > 1000) {
|
|
42
|
+
this.queueLatencies.shift();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Record event dropped
|
|
47
|
+
*/
|
|
48
|
+
recordEventDropped() {
|
|
49
|
+
this.eventsDropped++;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Update worker status
|
|
53
|
+
*/
|
|
54
|
+
updateWorkerStatus(workerId, status) {
|
|
55
|
+
const existing = this.workerStatuses.get(workerId) || {
|
|
56
|
+
id: workerId,
|
|
57
|
+
pid: 0,
|
|
58
|
+
status: 'idle',
|
|
59
|
+
eventsProcessed: 0,
|
|
60
|
+
lastActivity: Date.now(),
|
|
61
|
+
memoryUsage: 0,
|
|
62
|
+
cpuUsage: 0,
|
|
63
|
+
errors: 0,
|
|
64
|
+
uptime: 0
|
|
65
|
+
};
|
|
66
|
+
this.workerStatuses.set(workerId, { ...existing, ...status });
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Collect current metrics
|
|
70
|
+
*/
|
|
71
|
+
collectMetrics(queueDepth, queueDepthByPriority, memoryUsage, retryStats, deadLetterQueueSize) {
|
|
72
|
+
const now = Date.now();
|
|
73
|
+
const timeDelta = (now - this.lastMetricsTime) / 1000; // seconds
|
|
74
|
+
// Calculate processing rate
|
|
75
|
+
const eventsProcessedDelta = this.eventsProcessed - this.lastEventsProcessed;
|
|
76
|
+
const processingRate = timeDelta > 0 ? eventsProcessedDelta / timeDelta : 0;
|
|
77
|
+
// Calculate performance metrics
|
|
78
|
+
const performance = this.calculatePerformanceMetrics();
|
|
79
|
+
// Count active/failed workers
|
|
80
|
+
const workerStatuses = Array.from(this.workerStatuses.values());
|
|
81
|
+
const activeWorkers = workerStatuses.filter(w => w.status === 'running' || w.status === 'idle').length;
|
|
82
|
+
const failedWorkers = workerStatuses.filter(w => w.status === 'error').length;
|
|
83
|
+
// Calculate error rate
|
|
84
|
+
const totalEvents = this.eventsProcessed + retryStats.failedRetries;
|
|
85
|
+
const errorRate = totalEvents > 0 ? (retryStats.failedRetries / totalEvents) * 100 : 0;
|
|
86
|
+
// Calculate memory utilization
|
|
87
|
+
const totalMemoryAllocated = this.config.maxMemoryMB * 1024 * 1024; // Convert to bytes
|
|
88
|
+
const memoryUtilization = (memoryUsage / totalMemoryAllocated) * 100;
|
|
89
|
+
const metrics = {
|
|
90
|
+
timestamp: now,
|
|
91
|
+
queueDepth,
|
|
92
|
+
queueDepthByPriority,
|
|
93
|
+
queueUtilization: (queueDepth / this.config.maxQueueSize) * 100,
|
|
94
|
+
eventsEnqueued: this.eventsEnqueued,
|
|
95
|
+
eventsProcessed: this.eventsProcessed,
|
|
96
|
+
eventsDropped: this.eventsDropped,
|
|
97
|
+
processingRate,
|
|
98
|
+
performance,
|
|
99
|
+
activeWorkers,
|
|
100
|
+
failedWorkers,
|
|
101
|
+
workerStatuses,
|
|
102
|
+
errorRate,
|
|
103
|
+
deadLetterQueueSize,
|
|
104
|
+
retryStats,
|
|
105
|
+
memoryUsage,
|
|
106
|
+
totalMemoryAllocated,
|
|
107
|
+
memoryUtilization
|
|
108
|
+
};
|
|
109
|
+
// Store in history
|
|
110
|
+
this.metricsHistory.push(metrics);
|
|
111
|
+
if (this.metricsHistory.length > this.maxHistorySize) {
|
|
112
|
+
this.metricsHistory.shift();
|
|
113
|
+
}
|
|
114
|
+
// Update tracking variables
|
|
115
|
+
this.lastMetricsTime = now;
|
|
116
|
+
this.lastEventsProcessed = this.eventsProcessed;
|
|
117
|
+
return metrics;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Calculate performance metrics
|
|
121
|
+
*/
|
|
122
|
+
calculatePerformanceMetrics() {
|
|
123
|
+
const averageProcessingTime = this.processingTimes.length > 0
|
|
124
|
+
? this.processingTimes.reduce((sum, time) => sum + time, 0) / this.processingTimes.length
|
|
125
|
+
: 0;
|
|
126
|
+
const p95ProcessingTime = this.calculatePercentile(this.processingTimes, 95);
|
|
127
|
+
const averageQueueLatency = this.queueLatencies.length > 0
|
|
128
|
+
? this.queueLatencies.reduce((sum, latency) => sum + latency, 0) / this.queueLatencies.length
|
|
129
|
+
: 0;
|
|
130
|
+
// Calculate rates based on recent history
|
|
131
|
+
const recentMetrics = this.metricsHistory.slice(-10); // Last 10 data points
|
|
132
|
+
const inputRate = this.calculateRate(recentMetrics, 'eventsEnqueued');
|
|
133
|
+
const processingRate = this.calculateRate(recentMetrics, 'eventsProcessed');
|
|
134
|
+
return {
|
|
135
|
+
averageProcessingTime,
|
|
136
|
+
p95ProcessingTime,
|
|
137
|
+
averageQueueLatency,
|
|
138
|
+
inputRate,
|
|
139
|
+
processingRate,
|
|
140
|
+
mainThreadCpuUsage: this.estimateMainThreadCpuUsage(),
|
|
141
|
+
mainThreadMemoryUsage: process.memoryUsage().heapUsed
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Calculate percentile from array of numbers
|
|
146
|
+
*/
|
|
147
|
+
calculatePercentile(values, percentile) {
|
|
148
|
+
if (values.length === 0)
|
|
149
|
+
return 0;
|
|
150
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
151
|
+
const index = Math.ceil((percentile / 100) * sorted.length) - 1;
|
|
152
|
+
return sorted[Math.max(0, index)];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Calculate rate from metrics history
|
|
156
|
+
*/
|
|
157
|
+
calculateRate(metrics, field) {
|
|
158
|
+
if (metrics.length < 2)
|
|
159
|
+
return 0;
|
|
160
|
+
const latest = metrics[metrics.length - 1];
|
|
161
|
+
const previous = metrics[0];
|
|
162
|
+
const timeDelta = (latest.timestamp - previous.timestamp) / 1000; // seconds
|
|
163
|
+
if (timeDelta <= 0)
|
|
164
|
+
return 0;
|
|
165
|
+
const valueDelta = latest[field] - previous[field];
|
|
166
|
+
return valueDelta / timeDelta;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Estimate main thread CPU usage (simplified)
|
|
170
|
+
*/
|
|
171
|
+
estimateMainThreadCpuUsage() {
|
|
172
|
+
// This is a simplified estimation
|
|
173
|
+
// In a real implementation, you might use process.cpuUsage()
|
|
174
|
+
const queueOperationsPerSecond = this.eventsEnqueued / (Date.now() / 1000);
|
|
175
|
+
const estimatedCpuUsage = Math.min(queueOperationsPerSecond * 0.001, 5); // Cap at 5%
|
|
176
|
+
return estimatedCpuUsage;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get queue depth by priority
|
|
180
|
+
*/
|
|
181
|
+
getQueueDepthByPriority() {
|
|
182
|
+
// This would be implemented by the SharedEventBuffer
|
|
183
|
+
// For now, return a placeholder
|
|
184
|
+
return {
|
|
185
|
+
critical: 0,
|
|
186
|
+
normal: 0,
|
|
187
|
+
low: 0
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get metrics history
|
|
192
|
+
*/
|
|
193
|
+
getMetricsHistory(limit) {
|
|
194
|
+
const history = [...this.metricsHistory];
|
|
195
|
+
return limit ? history.slice(-limit) : history;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Reset counters
|
|
199
|
+
*/
|
|
200
|
+
resetCounters() {
|
|
201
|
+
this.eventsEnqueued = 0;
|
|
202
|
+
this.eventsProcessed = 0;
|
|
203
|
+
this.eventsDropped = 0;
|
|
204
|
+
this.processingTimes.length = 0;
|
|
205
|
+
this.queueLatencies.length = 0;
|
|
206
|
+
this.lastEventsProcessed = 0;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Clear metrics history
|
|
210
|
+
*/
|
|
211
|
+
clearHistory() {
|
|
212
|
+
this.metricsHistory.length = 0;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get current worker count
|
|
216
|
+
*/
|
|
217
|
+
getWorkerCount() {
|
|
218
|
+
const statuses = Array.from(this.workerStatuses.values());
|
|
219
|
+
const active = statuses.filter(w => w.status === 'running' || w.status === 'idle').length;
|
|
220
|
+
const failed = statuses.filter(w => w.status === 'error').length;
|
|
221
|
+
return {
|
|
222
|
+
active,
|
|
223
|
+
failed,
|
|
224
|
+
total: statuses.length
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Remove worker from tracking
|
|
229
|
+
*/
|
|
230
|
+
removeWorker(workerId) {
|
|
231
|
+
this.workerStatuses.delete(workerId);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.EventMetricsCollector = EventMetricsCollector;
|
|
235
|
+
//# sourceMappingURL=event-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-metrics.js","sourceRoot":"","sources":["../../../src/events/metrics/event-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { EventMetrics, BottleneckReport, OptimizationHint } from '../metrics/event-metrics';
|
|
2
|
+
import { BufferedEventConfig } from '../config/buffered-event-config';
|
|
3
|
+
import { EventMetricsCollector } from '../metrics/event-metrics';
|
|
4
|
+
/**
|
|
5
|
+
* Health check result
|
|
6
|
+
*/
|
|
7
|
+
export interface HealthCheckResult {
|
|
8
|
+
status: 'healthy' | 'warning' | 'critical';
|
|
9
|
+
timestamp: number;
|
|
10
|
+
checks: HealthCheck[];
|
|
11
|
+
overallScore: number;
|
|
12
|
+
recommendations: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Individual health check
|
|
16
|
+
*/
|
|
17
|
+
export interface HealthCheck {
|
|
18
|
+
name: string;
|
|
19
|
+
status: 'pass' | 'warn' | 'fail';
|
|
20
|
+
value: number;
|
|
21
|
+
threshold: number;
|
|
22
|
+
message: string;
|
|
23
|
+
impact: 'low' | 'medium' | 'high';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Alert information
|
|
27
|
+
*/
|
|
28
|
+
export interface Alert {
|
|
29
|
+
id: string;
|
|
30
|
+
type: 'queue_depth' | 'processing_rate' | 'worker_failure' | 'memory_usage' | 'error_rate';
|
|
31
|
+
severity: 'warning' | 'critical';
|
|
32
|
+
message: string;
|
|
33
|
+
timestamp: number;
|
|
34
|
+
metrics: Partial<EventMetrics>;
|
|
35
|
+
acknowledged: boolean;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* System health trends
|
|
39
|
+
*/
|
|
40
|
+
export interface HealthTrends {
|
|
41
|
+
queueDepthTrend: 'increasing' | 'decreasing' | 'stable';
|
|
42
|
+
processingRateTrend: 'increasing' | 'decreasing' | 'stable';
|
|
43
|
+
errorRateTrend: 'increasing' | 'decreasing' | 'stable';
|
|
44
|
+
memoryUsageTrend: 'increasing' | 'decreasing' | 'stable';
|
|
45
|
+
overallTrend: 'improving' | 'degrading' | 'stable';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Event system health monitor
|
|
49
|
+
*/
|
|
50
|
+
export declare class EventSystemHealthMonitor {
|
|
51
|
+
private config;
|
|
52
|
+
private metricsCollector;
|
|
53
|
+
private alerts;
|
|
54
|
+
private maxAlertsHistory;
|
|
55
|
+
private lastHealthCheck?;
|
|
56
|
+
constructor(config: BufferedEventConfig, metricsCollector: EventMetricsCollector);
|
|
57
|
+
/**
|
|
58
|
+
* Perform comprehensive health check
|
|
59
|
+
*/
|
|
60
|
+
performHealthCheck(): Promise<HealthCheckResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Check queue depth health
|
|
63
|
+
*/
|
|
64
|
+
private checkQueueDepth;
|
|
65
|
+
/**
|
|
66
|
+
* Check processing rate health
|
|
67
|
+
*/
|
|
68
|
+
private checkProcessingRate;
|
|
69
|
+
/**
|
|
70
|
+
* Check worker health
|
|
71
|
+
*/
|
|
72
|
+
private checkWorkerHealth;
|
|
73
|
+
/**
|
|
74
|
+
* Check memory usage health
|
|
75
|
+
*/
|
|
76
|
+
private checkMemoryUsage;
|
|
77
|
+
/**
|
|
78
|
+
* Check error rate health
|
|
79
|
+
*/
|
|
80
|
+
private checkErrorRate;
|
|
81
|
+
/**
|
|
82
|
+
* Check main thread impact
|
|
83
|
+
*/
|
|
84
|
+
private checkMainThreadImpact;
|
|
85
|
+
/**
|
|
86
|
+
* Calculate overall health score
|
|
87
|
+
*/
|
|
88
|
+
private calculateOverallScore;
|
|
89
|
+
/**
|
|
90
|
+
* Determine overall status
|
|
91
|
+
*/
|
|
92
|
+
private determineOverallStatus;
|
|
93
|
+
/**
|
|
94
|
+
* Generate recommendations based on health checks
|
|
95
|
+
*/
|
|
96
|
+
private generateRecommendations;
|
|
97
|
+
/**
|
|
98
|
+
* Process alerts based on health checks
|
|
99
|
+
*/
|
|
100
|
+
private processAlerts;
|
|
101
|
+
/**
|
|
102
|
+
* Map health check name to alert type
|
|
103
|
+
*/
|
|
104
|
+
private mapCheckToAlertType;
|
|
105
|
+
/**
|
|
106
|
+
* Create new alert
|
|
107
|
+
*/
|
|
108
|
+
private createAlert;
|
|
109
|
+
/**
|
|
110
|
+
* Detect bottlenecks in the system
|
|
111
|
+
*/
|
|
112
|
+
detectBottlenecks(): BottleneckReport;
|
|
113
|
+
/**
|
|
114
|
+
* Map check name to bottleneck type
|
|
115
|
+
*/
|
|
116
|
+
private mapCheckToBottleneckType;
|
|
117
|
+
/**
|
|
118
|
+
* Suggest optimizations
|
|
119
|
+
*/
|
|
120
|
+
suggestOptimizations(): OptimizationHint[];
|
|
121
|
+
/**
|
|
122
|
+
* Get active alerts
|
|
123
|
+
*/
|
|
124
|
+
getActiveAlerts(): Alert[];
|
|
125
|
+
/**
|
|
126
|
+
* Acknowledge alert
|
|
127
|
+
*/
|
|
128
|
+
acknowledgeAlert(alertId: string): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Get health trends
|
|
131
|
+
*/
|
|
132
|
+
getHealthTrends(): HealthTrends;
|
|
133
|
+
/**
|
|
134
|
+
* Calculate trend for a metric
|
|
135
|
+
*/
|
|
136
|
+
private calculateTrend;
|
|
137
|
+
/**
|
|
138
|
+
* Get last health check result
|
|
139
|
+
*/
|
|
140
|
+
getLastHealthCheck(): HealthCheckResult | undefined;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=health-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-monitor.d.ts","sourceRoot":"","sources":["../../../src/events/monitoring/health-monitor.ts"],"names":[],"mappings":"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"}
|