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.
Files changed (123) hide show
  1. package/README.md +1 -1
  2. package/dist/api.d.ts +2 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +20 -4
  5. package/dist/api.js.map +1 -1
  6. package/dist/auth/examples/basic-usage.d.ts +2 -1
  7. package/dist/auth/examples/basic-usage.d.ts.map +1 -1
  8. package/dist/auth/examples/basic-usage.js +3 -2
  9. package/dist/auth/examples/basic-usage.js.map +1 -1
  10. package/dist/auth/index.d.ts +6 -8
  11. package/dist/auth/index.d.ts.map +1 -1
  12. package/dist/auth/index.js +11 -11
  13. package/dist/auth/index.js.map +1 -1
  14. package/dist/auth/middleware/AuthMiddleware.js.map +1 -1
  15. package/dist/cache/bootstrap.js +1 -1
  16. package/dist/cache/bootstrap.js.map +1 -1
  17. package/dist/cache/index.d.ts +2 -1
  18. package/dist/cache/index.d.ts.map +1 -1
  19. package/dist/cache/index.js +4 -1
  20. package/dist/cache/index.js.map +1 -1
  21. package/dist/cache/{in-memory-cache.store.d.ts → stores/in-memory-cache.store.d.ts} +1 -1
  22. package/dist/cache/stores/in-memory-cache.store.d.ts.map +1 -0
  23. package/dist/cache/{in-memory-cache.store.js → stores/in-memory-cache.store.js} +1 -1
  24. package/dist/cache/stores/in-memory-cache.store.js.map +1 -0
  25. package/dist/cache/stores/index.d.ts +3 -0
  26. package/dist/cache/stores/index.d.ts.map +1 -0
  27. package/dist/cache/stores/index.js +20 -0
  28. package/dist/cache/stores/index.js.map +1 -0
  29. package/dist/cache/stores/redis-cache.store.d.ts +8 -0
  30. package/dist/cache/stores/redis-cache.store.d.ts.map +1 -0
  31. package/dist/cache/stores/redis-cache.store.js +39 -0
  32. package/dist/cache/stores/redis-cache.store.js.map +1 -0
  33. package/dist/core/router.d.ts.map +1 -1
  34. package/dist/core/router.js +3 -3
  35. package/dist/core/router.js.map +1 -1
  36. package/dist/events/bootstrap.d.ts +13 -1
  37. package/dist/events/bootstrap.d.ts.map +1 -1
  38. package/dist/events/bootstrap.js +30 -2
  39. package/dist/events/bootstrap.js.map +1 -1
  40. package/dist/events/buffered-event-bus.service.d.ts +135 -0
  41. package/dist/events/buffered-event-bus.service.d.ts.map +1 -0
  42. package/dist/events/buffered-event-bus.service.js +420 -0
  43. package/dist/events/buffered-event-bus.service.js.map +1 -0
  44. package/dist/events/config/buffered-event-config.d.ts +153 -0
  45. package/dist/events/config/buffered-event-config.d.ts.map +1 -0
  46. package/dist/events/config/buffered-event-config.js +181 -0
  47. package/dist/events/config/buffered-event-config.js.map +1 -0
  48. package/dist/events/index.d.ts +3 -0
  49. package/dist/events/index.d.ts.map +1 -1
  50. package/dist/events/index.js +3 -0
  51. package/dist/events/index.js.map +1 -1
  52. package/dist/events/metrics/event-metrics.d.ts +175 -0
  53. package/dist/events/metrics/event-metrics.d.ts.map +1 -0
  54. package/dist/events/metrics/event-metrics.js +235 -0
  55. package/dist/events/metrics/event-metrics.js.map +1 -0
  56. package/dist/events/monitoring/health-monitor.d.ts +142 -0
  57. package/dist/events/monitoring/health-monitor.d.ts.map +1 -0
  58. package/dist/events/monitoring/health-monitor.js +492 -0
  59. package/dist/events/monitoring/health-monitor.js.map +1 -0
  60. package/dist/events/retry/retry-handler.d.ts +112 -0
  61. package/dist/events/retry/retry-handler.d.ts.map +1 -0
  62. package/dist/events/retry/retry-handler.js +218 -0
  63. package/dist/events/retry/retry-handler.js.map +1 -0
  64. package/dist/events/shared-buffer.d.ts +92 -0
  65. package/dist/events/shared-buffer.d.ts.map +1 -0
  66. package/dist/events/shared-buffer.js +179 -0
  67. package/dist/events/shared-buffer.js.map +1 -0
  68. package/dist/events/worker/event-processor.worker.d.ts +75 -0
  69. package/dist/events/worker/event-processor.worker.d.ts.map +1 -0
  70. package/dist/events/worker/event-processor.worker.js +293 -0
  71. package/dist/events/worker/event-processor.worker.js.map +1 -0
  72. package/dist/events/worker/worker-manager.d.ts +132 -0
  73. package/dist/events/worker/worker-manager.d.ts.map +1 -0
  74. package/dist/events/worker/worker-manager.js +436 -0
  75. package/dist/events/worker/worker-manager.js.map +1 -0
  76. package/dist/examples/auth/auth.middleware.d.ts +0 -26
  77. package/dist/examples/auth/auth.middleware.d.ts.map +1 -1
  78. package/dist/examples/auth/auth.middleware.js +0 -185
  79. package/dist/examples/auth/auth.middleware.js.map +1 -1
  80. package/dist/examples/controllers/auth.controller.d.ts +0 -63
  81. package/dist/examples/controllers/auth.controller.d.ts.map +1 -1
  82. package/dist/examples/controllers/auth.controller.js +247 -282
  83. package/dist/examples/controllers/auth.controller.js.map +1 -1
  84. package/dist/examples/events/buffered-event-example.d.ts +71 -0
  85. package/dist/examples/events/buffered-event-example.d.ts.map +1 -0
  86. package/dist/examples/events/buffered-event-example.js +182 -0
  87. package/dist/examples/events/buffered-event-example.js.map +1 -0
  88. package/dist/examples/events/integration-test.d.ts +10 -0
  89. package/dist/examples/events/integration-test.d.ts.map +1 -0
  90. package/dist/examples/events/integration-test.js +147 -0
  91. package/dist/examples/events/integration-test.js.map +1 -0
  92. package/dist/examples/index.d.ts +1 -0
  93. package/dist/examples/index.d.ts.map +1 -1
  94. package/dist/examples/index.js +11 -7
  95. package/dist/examples/index.js.map +1 -1
  96. package/dist/examples/todos/schema.d.ts +4 -4
  97. package/package.json +2 -1
  98. package/dist/cache/in-memory-cache.store.d.ts.map +0 -1
  99. package/dist/cache/in-memory-cache.store.js.map +0 -1
  100. package/dist/examples/authorization-examples.d.ts +0 -67
  101. package/dist/examples/authorization-examples.d.ts.map +0 -1
  102. package/dist/examples/authorization-examples.js +0 -202
  103. package/dist/examples/authorization-examples.js.map +0 -1
  104. package/dist/examples/controllers/todo-updated.controller.d.ts +0 -103
  105. package/dist/examples/controllers/todo-updated.controller.d.ts.map +0 -1
  106. package/dist/examples/controllers/todo-updated.controller.js +0 -328
  107. package/dist/examples/controllers/todo-updated.controller.js.map +0 -1
  108. package/dist/examples/controllers/todo-with-jwt-auth.controller.d.ts +0 -114
  109. package/dist/examples/controllers/todo-with-jwt-auth.controller.d.ts.map +0 -1
  110. package/dist/examples/controllers/todo-with-jwt-auth.controller.js +0 -329
  111. package/dist/examples/controllers/todo-with-jwt-auth.controller.js.map +0 -1
  112. package/dist/examples/jwt-auth-example.d.ts +0 -47
  113. package/dist/examples/jwt-auth-example.d.ts.map +0 -1
  114. package/dist/examples/jwt-auth-example.js +0 -316
  115. package/dist/examples/jwt-auth-example.js.map +0 -1
  116. package/dist/examples/services/user.service.d.ts +0 -99
  117. package/dist/examples/services/user.service.d.ts.map +0 -1
  118. package/dist/examples/services/user.service.js +0 -281
  119. package/dist/examples/services/user.service.js.map +0 -1
  120. package/dist/examples/test-auth-flow.d.ts +0 -56
  121. package/dist/examples/test-auth-flow.d.ts.map +0 -1
  122. package/dist/examples/test-auth-flow.js +0 -449
  123. 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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"}