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,153 @@
1
+ import { EventPriority } from '../shared-buffer';
2
+ /**
3
+ * Configuration for buffered event processing system
4
+ */
5
+ export interface BufferedEventConfig {
6
+ /** Enable/disable buffered event processing */
7
+ enabled: boolean;
8
+ /** Number of worker threads to spawn */
9
+ workerCount: number;
10
+ /** Maximum number of events in queue */
11
+ maxQueueSize: number;
12
+ /** Maximum memory allocation in MB */
13
+ maxMemoryMB: number;
14
+ /** Maximum size per event in bytes */
15
+ maxEventSize: number;
16
+ /** Maximum retry attempts before moving to DLQ */
17
+ retryAttempts: number;
18
+ /** Retry delays in milliseconds (exponential backoff) */
19
+ retryDelays: number[];
20
+ /** Priority configuration */
21
+ priorities: {
22
+ critical: number;
23
+ normal: number;
24
+ low: number;
25
+ };
26
+ /** Memory limits */
27
+ memoryLimits: MemoryLimits;
28
+ /** Performance limits */
29
+ performanceLimits: PerformanceLimits;
30
+ /** Reliability limits */
31
+ reliabilityLimits: ReliabilityLimits;
32
+ /** Monitoring configuration */
33
+ monitoring: MonitoringConfig;
34
+ /** Fallback to synchronous processing if workers fail */
35
+ fallbackToSync: boolean;
36
+ }
37
+ /**
38
+ * Memory constraint configuration
39
+ */
40
+ export interface MemoryLimits {
41
+ /** Maximum events in buffer */
42
+ maxQueueSize: number;
43
+ /** Maximum size per event in bytes */
44
+ maxEventSize: number;
45
+ /** Total memory allocation in MB */
46
+ totalMemoryMB: number;
47
+ /** Per-worker heap limit in MB */
48
+ workerHeapMB: number;
49
+ }
50
+ /**
51
+ * Performance constraint configuration
52
+ */
53
+ export interface PerformanceLimits {
54
+ /** Maximum input rate (events/sec) */
55
+ maxInputRate: number;
56
+ /** Target processing rate (events/sec) */
57
+ targetProcessingRate: number;
58
+ /** Maximum CPU usage on main thread (%) */
59
+ maxMainThreadImpact: number;
60
+ /** Maximum queue latency for 95th percentile (ms) */
61
+ maxQueueLatency: number;
62
+ }
63
+ /**
64
+ * Reliability constraint configuration
65
+ */
66
+ export interface ReliabilityLimits {
67
+ /** Maximum retry attempts before DLQ */
68
+ maxRetryAttempts: number;
69
+ /** Delay before restarting failed worker (ms) */
70
+ workerRestartDelay: number;
71
+ /** Interval between health checks (ms) */
72
+ healthCheckInterval: number;
73
+ /** Timeout for graceful shutdown (ms) */
74
+ gracefulShutdownTimeout: number;
75
+ }
76
+ /**
77
+ * Monitoring and metrics configuration
78
+ */
79
+ export interface MonitoringConfig {
80
+ /** Enable metrics collection */
81
+ enabled: boolean;
82
+ /** Metrics collection interval (ms) */
83
+ metricsInterval: number;
84
+ /** Enable health monitoring */
85
+ healthMonitoring: boolean;
86
+ /** Health check interval (ms) */
87
+ healthCheckInterval: number;
88
+ /** Alert thresholds */
89
+ alertThresholds: AlertThresholds;
90
+ }
91
+ /**
92
+ * Alert threshold configuration
93
+ */
94
+ export interface AlertThresholds {
95
+ /** Queue depth warning threshold */
96
+ queueDepthWarning: number;
97
+ /** Processing rate degradation threshold (events/sec) */
98
+ processingRateMin: number;
99
+ /** Maximum failed workers before alert */
100
+ maxFailedWorkers: number;
101
+ /** Dead letter queue size alert threshold */
102
+ dlqSizeAlert: number;
103
+ /** Main thread CPU usage alert threshold (%) */
104
+ mainThreadCpuAlert: number;
105
+ }
106
+ /**
107
+ * Default configuration for buffered event processing
108
+ */
109
+ export declare const defaultBufferedEventConfig: BufferedEventConfig;
110
+ /**
111
+ * Configuration validator
112
+ */
113
+ export declare class BufferedEventConfigValidator {
114
+ /**
115
+ * Validate configuration and return errors if any
116
+ */
117
+ static validate(config: Partial<BufferedEventConfig>): string[];
118
+ /**
119
+ * Merge user config with defaults
120
+ */
121
+ static mergeWithDefaults(userConfig: Partial<BufferedEventConfig>): BufferedEventConfig;
122
+ }
123
+ /**
124
+ * Environment-based configuration loader
125
+ */
126
+ export declare class BufferedEventConfigLoader {
127
+ /**
128
+ * Load configuration from environment variables
129
+ */
130
+ static fromEnvironment(): Partial<BufferedEventConfig>;
131
+ /**
132
+ * Load configuration from file
133
+ */
134
+ static fromFile(filePath: string): Partial<BufferedEventConfig>;
135
+ }
136
+ /**
137
+ * Priority helper functions
138
+ */
139
+ export declare class PriorityHelper {
140
+ /**
141
+ * Get numeric priority value
142
+ */
143
+ static getPriorityValue(priority: EventPriority, config: BufferedEventConfig): number;
144
+ /**
145
+ * Compare priorities (higher number = higher priority)
146
+ */
147
+ static comparePriorities(a: EventPriority, b: EventPriority, config: BufferedEventConfig): number;
148
+ /**
149
+ * Check if priority is valid
150
+ */
151
+ static isValidPriority(priority: string): priority is EventPriority;
152
+ }
153
+ //# sourceMappingURL=buffered-event-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffered-event-config.d.ts","sourceRoot":"","sources":["../../../src/events/config/buffered-event-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PriorityHelper = exports.BufferedEventConfigLoader = exports.BufferedEventConfigValidator = exports.defaultBufferedEventConfig = void 0;
4
+ /**
5
+ * Default configuration for buffered event processing
6
+ */
7
+ exports.defaultBufferedEventConfig = {
8
+ enabled: true,
9
+ workerCount: 5,
10
+ maxQueueSize: 10000,
11
+ maxMemoryMB: 50,
12
+ maxEventSize: 5120, // 5KB
13
+ retryAttempts: 3,
14
+ retryDelays: [1000, 2000, 4000], // 1s, 2s, 4s
15
+ priorities: {
16
+ critical: 3,
17
+ normal: 2,
18
+ low: 1
19
+ },
20
+ memoryLimits: {
21
+ maxQueueSize: 10000,
22
+ maxEventSize: 5120,
23
+ totalMemoryMB: 50,
24
+ workerHeapMB: 100
25
+ },
26
+ performanceLimits: {
27
+ maxInputRate: 1000,
28
+ targetProcessingRate: 500,
29
+ maxMainThreadImpact: 5,
30
+ maxQueueLatency: 100
31
+ },
32
+ reliabilityLimits: {
33
+ maxRetryAttempts: 3,
34
+ workerRestartDelay: 1000,
35
+ healthCheckInterval: 5000,
36
+ gracefulShutdownTimeout: 10000
37
+ },
38
+ monitoring: {
39
+ enabled: true,
40
+ metricsInterval: 1000,
41
+ healthMonitoring: true,
42
+ healthCheckInterval: 5000,
43
+ alertThresholds: {
44
+ queueDepthWarning: 8000,
45
+ processingRateMin: 0, // Set to 0 to prevent alerts when no events are being processed
46
+ maxFailedWorkers: 1,
47
+ dlqSizeAlert: 100,
48
+ mainThreadCpuAlert: 10
49
+ }
50
+ },
51
+ fallbackToSync: true
52
+ };
53
+ /**
54
+ * Configuration validator
55
+ */
56
+ class BufferedEventConfigValidator {
57
+ /**
58
+ * Validate configuration and return errors if any
59
+ */
60
+ static validate(config) {
61
+ const errors = [];
62
+ if (config.workerCount && (config.workerCount < 1 || config.workerCount > 20)) {
63
+ errors.push('workerCount must be between 1 and 20');
64
+ }
65
+ if (config.maxQueueSize && config.maxQueueSize < 100) {
66
+ errors.push('maxQueueSize must be at least 100');
67
+ }
68
+ if (config.maxEventSize && config.maxEventSize < 1024) {
69
+ errors.push('maxEventSize must be at least 1KB');
70
+ }
71
+ if (config.maxMemoryMB && config.maxMemoryMB < 10) {
72
+ errors.push('maxMemoryMB must be at least 10MB');
73
+ }
74
+ if (config.retryAttempts && (config.retryAttempts < 0 || config.retryAttempts > 10)) {
75
+ errors.push('retryAttempts must be between 0 and 10');
76
+ }
77
+ if (config.retryDelays && config.retryDelays.some(delay => delay < 100)) {
78
+ errors.push('All retry delays must be at least 100ms');
79
+ }
80
+ return errors;
81
+ }
82
+ /**
83
+ * Merge user config with defaults
84
+ */
85
+ static mergeWithDefaults(userConfig) {
86
+ return {
87
+ ...exports.defaultBufferedEventConfig,
88
+ ...userConfig,
89
+ memoryLimits: {
90
+ ...exports.defaultBufferedEventConfig.memoryLimits,
91
+ ...userConfig.memoryLimits
92
+ },
93
+ performanceLimits: {
94
+ ...exports.defaultBufferedEventConfig.performanceLimits,
95
+ ...userConfig.performanceLimits
96
+ },
97
+ reliabilityLimits: {
98
+ ...exports.defaultBufferedEventConfig.reliabilityLimits,
99
+ ...userConfig.reliabilityLimits
100
+ },
101
+ monitoring: {
102
+ ...exports.defaultBufferedEventConfig.monitoring,
103
+ ...userConfig.monitoring,
104
+ alertThresholds: {
105
+ ...exports.defaultBufferedEventConfig.monitoring.alertThresholds,
106
+ ...userConfig.monitoring?.alertThresholds
107
+ }
108
+ }
109
+ };
110
+ }
111
+ }
112
+ exports.BufferedEventConfigValidator = BufferedEventConfigValidator;
113
+ /**
114
+ * Environment-based configuration loader
115
+ */
116
+ class BufferedEventConfigLoader {
117
+ /**
118
+ * Load configuration from environment variables
119
+ */
120
+ static fromEnvironment() {
121
+ const config = {};
122
+ if (process.env.BUFFERED_EVENTS_ENABLED) {
123
+ config.enabled = process.env.BUFFERED_EVENTS_ENABLED === 'true';
124
+ }
125
+ if (process.env.BUFFERED_EVENTS_WORKER_COUNT) {
126
+ config.workerCount = parseInt(process.env.BUFFERED_EVENTS_WORKER_COUNT, 10);
127
+ }
128
+ if (process.env.BUFFERED_EVENTS_MAX_QUEUE_SIZE) {
129
+ config.maxQueueSize = parseInt(process.env.BUFFERED_EVENTS_MAX_QUEUE_SIZE, 10);
130
+ }
131
+ if (process.env.BUFFERED_EVENTS_MAX_MEMORY_MB) {
132
+ config.maxMemoryMB = parseInt(process.env.BUFFERED_EVENTS_MAX_MEMORY_MB, 10);
133
+ }
134
+ if (process.env.BUFFERED_EVENTS_RETRY_ATTEMPTS) {
135
+ config.retryAttempts = parseInt(process.env.BUFFERED_EVENTS_RETRY_ATTEMPTS, 10);
136
+ }
137
+ return config;
138
+ }
139
+ /**
140
+ * Load configuration from file
141
+ */
142
+ static fromFile(filePath) {
143
+ try {
144
+ const fs = require('fs');
145
+ const configData = fs.readFileSync(filePath, 'utf8');
146
+ return JSON.parse(configData);
147
+ }
148
+ catch (error) {
149
+ console.warn(`Failed to load buffered event config from ${filePath}:`, error);
150
+ return {};
151
+ }
152
+ }
153
+ }
154
+ exports.BufferedEventConfigLoader = BufferedEventConfigLoader;
155
+ /**
156
+ * Priority helper functions
157
+ */
158
+ class PriorityHelper {
159
+ /**
160
+ * Get numeric priority value
161
+ */
162
+ static getPriorityValue(priority, config) {
163
+ return config.priorities[priority] || config.priorities.normal;
164
+ }
165
+ /**
166
+ * Compare priorities (higher number = higher priority)
167
+ */
168
+ static comparePriorities(a, b, config) {
169
+ const priorityA = this.getPriorityValue(a, config);
170
+ const priorityB = this.getPriorityValue(b, config);
171
+ return priorityB - priorityA; // Higher priority first
172
+ }
173
+ /**
174
+ * Check if priority is valid
175
+ */
176
+ static isValidPriority(priority) {
177
+ return ['critical', 'normal', 'low'].includes(priority);
178
+ }
179
+ }
180
+ exports.PriorityHelper = PriorityHelper;
181
+ //# sourceMappingURL=buffered-event-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffered-event-config.js","sourceRoot":"","sources":["../../../src/events/config/buffered-event-config.ts"],"names":[],"mappings":";;;AA6IA;;GAEG;AACU,QAAA,0BAA0B,GAAwB;IAC7D,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,IAAI,EAAE,MAAM;IAC1B,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa;IAC9C,UAAU,EAAE;QACV,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,GAAG,EAAE,CAAC;KACP;IACD,YAAY,EAAE;QACZ,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,GAAG;KAClB;IACD,iBAAiB,EAAE;QACjB,YAAY,EAAE,IAAI;QAClB,oBAAoB,EAAE,GAAG;QACzB,mBAAmB,EAAE,CAAC;QACtB,eAAe,EAAE,GAAG;KACrB;IACD,iBAAiB,EAAE;QACjB,gBAAgB,EAAE,CAAC;QACnB,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;QACzB,uBAAuB,EAAE,KAAK;KAC/B;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;QACzB,eAAe,EAAE;YACf,iBAAiB,EAAE,IAAI;YACvB,iBAAiB,EAAE,CAAC,EAAE,gEAAgE;YACtF,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,GAAG;YACjB,kBAAkB,EAAE,EAAE;SACvB;KACF;IACD,cAAc,EAAE,IAAI;CACrB,CAAC;AAEF;;GAEG;AACH,MAAa,4BAA4B;IACvC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAoC;QAClD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,GAAG,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAwC;QAC/D,OAAO;YACL,GAAG,kCAA0B;YAC7B,GAAG,UAAU;YACb,YAAY,EAAE;gBACZ,GAAG,kCAA0B,CAAC,YAAY;gBAC1C,GAAG,UAAU,CAAC,YAAY;aAC3B;YACD,iBAAiB,EAAE;gBACjB,GAAG,kCAA0B,CAAC,iBAAiB;gBAC/C,GAAG,UAAU,CAAC,iBAAiB;aAChC;YACD,iBAAiB,EAAE;gBACjB,GAAG,kCAA0B,CAAC,iBAAiB;gBAC/C,GAAG,UAAU,CAAC,iBAAiB;aAChC;YACD,UAAU,EAAE;gBACV,GAAG,kCAA0B,CAAC,UAAU;gBACxC,GAAG,UAAU,CAAC,UAAU;gBACxB,eAAe,EAAE;oBACf,GAAG,kCAA0B,CAAC,UAAU,CAAC,eAAe;oBACxD,GAAG,UAAU,CAAC,UAAU,EAAE,eAAe;iBAC1C;aACF;SACF,CAAC;IACJ,CAAC;CACF;AA/DD,oEA+DC;AAED;;GAEG;AACH,MAAa,yBAAyB;IACpC;;OAEG;IACH,MAAM,CAAC,eAAe;QACpB,MAAM,MAAM,GAAiC,EAAE,CAAC;QAEhD,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM,CAAC;QAClE,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;YAC7C,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;YAC/C,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;YAC9C,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;YAC/C,MAAM,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAgB;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,6CAA6C,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9E,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AA3CD,8DA2CC;AAED;;GAEG;AACH,MAAa,cAAc;IACzB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAuB,EAAE,MAA2B;QAC1E,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAgB,EAAE,CAAgB,EAAE,MAA2B;QACtF,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,SAAS,GAAG,SAAS,CAAC,CAAC,wBAAwB;IACxD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAgB;QACrC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;CACF;AAvBD,wCAuBC"}
@@ -1,5 +1,8 @@
1
1
  export * from './bootstrap';
2
2
  export * from './event-bus.service';
3
+ export * from './buffered-event-bus.service';
3
4
  export * from './event.types';
4
5
  export * from './decorators';
6
+ export * from './shared-buffer';
7
+ export * from './config/buffered-event-config';
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gCAAgC,CAAA"}
@@ -16,6 +16,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./bootstrap"), exports);
18
18
  __exportStar(require("./event-bus.service"), exports);
19
+ __exportStar(require("./buffered-event-bus.service"), exports);
19
20
  __exportStar(require("./event.types"), exports);
20
21
  __exportStar(require("./decorators"), exports);
22
+ __exportStar(require("./shared-buffer"), exports);
23
+ __exportStar(require("./config/buffered-event-config"), exports);
21
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,sDAAmC;AACnC,gDAA6B;AAC7B,+CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,sDAAmC;AACnC,+DAA4C;AAC5C,gDAA6B;AAC7B,+CAA4B;AAC5B,kDAA+B;AAC/B,iEAA8C"}
@@ -0,0 +1,175 @@
1
+ import { EventPriority } from '../shared-buffer';
2
+ import { BufferedEventConfig } from '../config/buffered-event-config';
3
+ import { RetryStats } from '../retry/retry-handler';
4
+ /**
5
+ * Worker status information
6
+ */
7
+ export interface WorkerStatus {
8
+ id: string;
9
+ pid: number;
10
+ status: 'running' | 'idle' | 'error' | 'restarting';
11
+ eventsProcessed: number;
12
+ lastActivity: number;
13
+ memoryUsage: number;
14
+ cpuUsage: number;
15
+ errors: number;
16
+ uptime: number;
17
+ }
18
+ /**
19
+ * Queue metrics by priority
20
+ */
21
+ export interface PriorityQueueMetrics {
22
+ critical: number;
23
+ normal: number;
24
+ low: number;
25
+ }
26
+ /**
27
+ * Performance metrics
28
+ */
29
+ export interface PerformanceMetrics {
30
+ /** Average processing time per event (ms) */
31
+ averageProcessingTime: number;
32
+ /** 95th percentile processing time (ms) */
33
+ p95ProcessingTime: number;
34
+ /** Queue latency (time from enqueue to dequeue) */
35
+ averageQueueLatency: number;
36
+ /** Throughput metrics */
37
+ inputRate: number;
38
+ processingRate: number;
39
+ /** Main thread impact */
40
+ mainThreadCpuUsage: number;
41
+ mainThreadMemoryUsage: number;
42
+ }
43
+ /**
44
+ * Comprehensive event system metrics
45
+ */
46
+ export interface EventMetrics {
47
+ /** Timestamp of metrics collection */
48
+ timestamp: number;
49
+ /** Queue metrics */
50
+ queueDepth: number;
51
+ queueDepthByPriority: PriorityQueueMetrics;
52
+ queueUtilization: number;
53
+ /** Throughput metrics */
54
+ eventsEnqueued: number;
55
+ eventsProcessed: number;
56
+ eventsDropped: number;
57
+ processingRate: number;
58
+ /** Performance metrics */
59
+ performance: PerformanceMetrics;
60
+ /** Worker health */
61
+ activeWorkers: number;
62
+ failedWorkers: number;
63
+ workerStatuses: WorkerStatus[];
64
+ /** Error metrics */
65
+ errorRate: number;
66
+ deadLetterQueueSize: number;
67
+ retryStats: RetryStats;
68
+ /** Resource usage */
69
+ memoryUsage: number;
70
+ totalMemoryAllocated: number;
71
+ memoryUtilization: number;
72
+ }
73
+ /**
74
+ * Bottleneck detection report
75
+ */
76
+ export interface BottleneckReport {
77
+ detected: boolean;
78
+ type: 'queue_full' | 'slow_processing' | 'worker_failure' | 'memory_pressure' | 'none';
79
+ severity: 'low' | 'medium' | 'high' | 'critical';
80
+ description: string;
81
+ recommendations: string[];
82
+ metrics: Partial<EventMetrics>;
83
+ }
84
+ /**
85
+ * Optimization hints
86
+ */
87
+ export interface OptimizationHint {
88
+ type: 'scale_workers' | 'increase_memory' | 'optimize_handlers' | 'adjust_priorities';
89
+ priority: 'low' | 'medium' | 'high';
90
+ description: string;
91
+ expectedImpact: string;
92
+ implementation: string;
93
+ }
94
+ /**
95
+ * Event metrics collector and analyzer
96
+ */
97
+ export declare class EventMetricsCollector {
98
+ private config;
99
+ private metricsHistory;
100
+ private maxHistorySize;
101
+ private eventsEnqueued;
102
+ private eventsProcessed;
103
+ private eventsDropped;
104
+ private processingTimes;
105
+ private queueLatencies;
106
+ private workerStatuses;
107
+ private lastMetricsTime;
108
+ private lastEventsProcessed;
109
+ constructor(config: BufferedEventConfig);
110
+ /**
111
+ * Record event enqueued
112
+ */
113
+ recordEventEnqueued(priority?: EventPriority): void;
114
+ /**
115
+ * Record event processed
116
+ */
117
+ recordEventProcessed(processingTime: number, queueLatency: number): void;
118
+ /**
119
+ * Record event dropped
120
+ */
121
+ recordEventDropped(): void;
122
+ /**
123
+ * Update worker status
124
+ */
125
+ updateWorkerStatus(workerId: string, status: Partial<WorkerStatus>): void;
126
+ /**
127
+ * Collect current metrics
128
+ */
129
+ collectMetrics(queueDepth: number, queueDepthByPriority: PriorityQueueMetrics, memoryUsage: number, retryStats: RetryStats, deadLetterQueueSize: number): EventMetrics;
130
+ /**
131
+ * Calculate performance metrics
132
+ */
133
+ private calculatePerformanceMetrics;
134
+ /**
135
+ * Calculate percentile from array of numbers
136
+ */
137
+ private calculatePercentile;
138
+ /**
139
+ * Calculate rate from metrics history
140
+ */
141
+ private calculateRate;
142
+ /**
143
+ * Estimate main thread CPU usage (simplified)
144
+ */
145
+ private estimateMainThreadCpuUsage;
146
+ /**
147
+ * Get queue depth by priority
148
+ */
149
+ getQueueDepthByPriority(): PriorityQueueMetrics;
150
+ /**
151
+ * Get metrics history
152
+ */
153
+ getMetricsHistory(limit?: number): EventMetrics[];
154
+ /**
155
+ * Reset counters
156
+ */
157
+ resetCounters(): void;
158
+ /**
159
+ * Clear metrics history
160
+ */
161
+ clearHistory(): void;
162
+ /**
163
+ * Get current worker count
164
+ */
165
+ getWorkerCount(): {
166
+ active: number;
167
+ failed: number;
168
+ total: number;
169
+ };
170
+ /**
171
+ * Remove worker from tracking
172
+ */
173
+ removeWorker(workerId: string): void;
174
+ }
175
+ //# sourceMappingURL=event-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-metrics.d.ts","sourceRoot":"","sources":["../../../src/events/metrics/event-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,qBAAqB,EAAE,MAAM,CAAC;IAE9B,2CAA2C;IAC3C,iBAAiB,EAAE,MAAM,CAAC;IAE1B,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAE5B,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IAEvB,yBAAyB;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IAEzB,yBAAyB;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAEvB,0BAA0B;IAC1B,WAAW,EAAE,kBAAkB,CAAC;IAEhC,oBAAoB;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,YAAY,EAAE,CAAC;IAE/B,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IAEvB,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,CAAC;IACvF,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;IACtF,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAUD;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,cAAc,CAAQ;IAG9B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,cAAc,CAAgB;IAGtC,OAAO,CAAC,cAAc,CAAwC;IAG9D,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,mBAAmB,CAAK;gBAEpB,MAAM,EAAE,mBAAmB;IAIvC;;OAEG;IACH,mBAAmB,CAAC,QAAQ,GAAE,aAAwB,GAAG,IAAI;IAI7D;;OAEG;IACH,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAexE;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAgBzE;;OAEG;IACH,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,oBAAoB,EAAE,oBAAoB,EAC1C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,MAAM,GAC1B,YAAY;IA0Df;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA2BnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAQlC;;OAEG;IACH,uBAAuB,IAAI,oBAAoB;IAU/C;;OAEG;IACH,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAKjD;;OAEG;IACH,aAAa,IAAI,IAAI;IASrB;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,cAAc,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAYnE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAGrC"}