xypriss 1.2.4 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +51 -3
  2. package/dist/cjs/mods/security/src/components/cache/index.js +1 -1
  3. package/dist/cjs/shared/logger/Logger.js +2 -0
  4. package/dist/cjs/shared/logger/Logger.js.map +1 -1
  5. package/dist/cjs/src/cluster/bun-cluster-manager.js +1567 -0
  6. package/dist/cjs/src/cluster/bun-cluster-manager.js.map +1 -0
  7. package/dist/cjs/src/cluster/cluster-manager.js +1 -1
  8. package/dist/cjs/src/cluster/cluster-manager.js.map +1 -1
  9. package/dist/cjs/src/cluster/index.js +25 -6
  10. package/dist/cjs/src/cluster/index.js.map +1 -1
  11. package/dist/cjs/src/cluster/memory-manager.js +486 -0
  12. package/dist/cjs/src/cluster/memory-manager.js.map +1 -0
  13. package/dist/cjs/src/cluster/modules/BunIPCManager.js +603 -0
  14. package/dist/cjs/src/cluster/modules/BunIPCManager.js.map +1 -0
  15. package/dist/cjs/src/cluster/modules/ClusterFactory.js +22 -1
  16. package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +1 -1
  17. package/dist/cjs/src/cluster/modules/CpuMonitor.js +658 -0
  18. package/dist/cjs/src/cluster/modules/CpuMonitor.js.map +1 -0
  19. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js +257 -0
  20. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js.map +1 -0
  21. package/dist/cjs/src/cluster/modules/ProcessMonitor.js +513 -0
  22. package/dist/cjs/src/cluster/modules/ProcessMonitor.js.map +1 -0
  23. package/dist/cjs/src/plugins/server-maintenance-plugin.js +79 -14
  24. package/dist/cjs/src/plugins/server-maintenance-plugin.js.map +1 -1
  25. package/dist/cjs/src/server/FastServer.js +64 -43
  26. package/dist/cjs/src/server/FastServer.js.map +1 -1
  27. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +226 -10
  28. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  29. package/dist/cjs/src/server/const/Cluster.config.js +174 -31
  30. package/dist/cjs/src/server/const/Cluster.config.js.map +1 -1
  31. package/dist/cjs/src/server/const/default.js +11 -2
  32. package/dist/cjs/src/server/const/default.js.map +1 -1
  33. package/dist/cjs/src/server/utils/PortManager.js +26 -15
  34. package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
  35. package/dist/esm/mods/security/src/components/cache/index.js +1 -1
  36. package/dist/esm/shared/logger/Logger.js +2 -0
  37. package/dist/esm/shared/logger/Logger.js.map +1 -1
  38. package/dist/esm/src/cluster/bun-cluster-manager.js +1565 -0
  39. package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -0
  40. package/dist/esm/src/cluster/cluster-manager.js +1 -1
  41. package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
  42. package/dist/esm/src/cluster/index.js +25 -6
  43. package/dist/esm/src/cluster/index.js.map +1 -1
  44. package/dist/esm/src/cluster/memory-manager.js +484 -0
  45. package/dist/esm/src/cluster/memory-manager.js.map +1 -0
  46. package/dist/esm/src/cluster/modules/BunIPCManager.js +601 -0
  47. package/dist/esm/src/cluster/modules/BunIPCManager.js.map +1 -0
  48. package/dist/esm/src/cluster/modules/ClusterFactory.js +22 -1
  49. package/dist/esm/src/cluster/modules/ClusterFactory.js.map +1 -1
  50. package/dist/esm/src/cluster/modules/CpuMonitor.js +656 -0
  51. package/dist/esm/src/cluster/modules/CpuMonitor.js.map +1 -0
  52. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +255 -0
  53. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -0
  54. package/dist/esm/src/cluster/modules/ProcessMonitor.js +511 -0
  55. package/dist/esm/src/cluster/modules/ProcessMonitor.js.map +1 -0
  56. package/dist/esm/src/plugins/server-maintenance-plugin.js +79 -14
  57. package/dist/esm/src/plugins/server-maintenance-plugin.js.map +1 -1
  58. package/dist/esm/src/server/FastServer.js +64 -43
  59. package/dist/esm/src/server/FastServer.js.map +1 -1
  60. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +226 -10
  61. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  62. package/dist/esm/src/server/const/Cluster.config.js +174 -31
  63. package/dist/esm/src/server/const/Cluster.config.js.map +1 -1
  64. package/dist/esm/src/server/const/default.js +11 -2
  65. package/dist/esm/src/server/const/default.js.map +1 -1
  66. package/dist/esm/src/server/utils/PortManager.js +26 -15
  67. package/dist/esm/src/server/utils/PortManager.js.map +1 -1
  68. package/dist/index.d.ts +90 -2
  69. package/package.json +6 -1
  70. package/dist/cjs/src/plugins/modules/network/index.js +0 -120
  71. package/dist/cjs/src/plugins/modules/network/index.js.map +0 -1
  72. package/dist/cjs/src/server/plugins/PluginEngine.js +0 -378
  73. package/dist/cjs/src/server/plugins/PluginEngine.js.map +0 -1
  74. package/dist/cjs/src/server/plugins/PluginRegistry.js +0 -339
  75. package/dist/cjs/src/server/plugins/PluginRegistry.js.map +0 -1
  76. package/dist/cjs/src/server/plugins/builtin/JWTAuthPlugin.js +0 -591
  77. package/dist/cjs/src/server/plugins/builtin/JWTAuthPlugin.js.map +0 -1
  78. package/dist/cjs/src/server/plugins/builtin/ResponseTimePlugin.js +0 -413
  79. package/dist/cjs/src/server/plugins/builtin/ResponseTimePlugin.js.map +0 -1
  80. package/dist/cjs/src/server/plugins/builtin/SmartCachePlugin.js +0 -843
  81. package/dist/cjs/src/server/plugins/builtin/SmartCachePlugin.js.map +0 -1
  82. package/dist/cjs/src/server/plugins/core/CachePlugin.js +0 -1975
  83. package/dist/cjs/src/server/plugins/core/CachePlugin.js.map +0 -1
  84. package/dist/cjs/src/server/plugins/core/PerformancePlugin.js +0 -894
  85. package/dist/cjs/src/server/plugins/core/PerformancePlugin.js.map +0 -1
  86. package/dist/cjs/src/server/plugins/core/SecurityPlugin.js +0 -799
  87. package/dist/cjs/src/server/plugins/core/SecurityPlugin.js.map +0 -1
  88. package/dist/cjs/src/server/plugins/types/PluginTypes.js +0 -47
  89. package/dist/cjs/src/server/plugins/types/PluginTypes.js.map +0 -1
  90. package/dist/esm/src/plugins/modules/network/index.js +0 -109
  91. package/dist/esm/src/plugins/modules/network/index.js.map +0 -1
  92. package/dist/esm/src/server/plugins/PluginEngine.js +0 -376
  93. package/dist/esm/src/server/plugins/PluginEngine.js.map +0 -1
  94. package/dist/esm/src/server/plugins/PluginRegistry.js +0 -337
  95. package/dist/esm/src/server/plugins/PluginRegistry.js.map +0 -1
  96. package/dist/esm/src/server/plugins/builtin/JWTAuthPlugin.js +0 -589
  97. package/dist/esm/src/server/plugins/builtin/JWTAuthPlugin.js.map +0 -1
  98. package/dist/esm/src/server/plugins/builtin/ResponseTimePlugin.js +0 -411
  99. package/dist/esm/src/server/plugins/builtin/ResponseTimePlugin.js.map +0 -1
  100. package/dist/esm/src/server/plugins/builtin/SmartCachePlugin.js +0 -841
  101. package/dist/esm/src/server/plugins/builtin/SmartCachePlugin.js.map +0 -1
  102. package/dist/esm/src/server/plugins/core/CachePlugin.js +0 -1973
  103. package/dist/esm/src/server/plugins/core/CachePlugin.js.map +0 -1
  104. package/dist/esm/src/server/plugins/core/PerformancePlugin.js +0 -872
  105. package/dist/esm/src/server/plugins/core/PerformancePlugin.js.map +0 -1
  106. package/dist/esm/src/server/plugins/core/SecurityPlugin.js +0 -797
  107. package/dist/esm/src/server/plugins/core/SecurityPlugin.js.map +0 -1
  108. package/dist/esm/src/server/plugins/types/PluginTypes.js +0 -47
  109. package/dist/esm/src/server/plugins/types/PluginTypes.js.map +0 -1
@@ -1,413 +0,0 @@
1
- 'use strict';
2
-
3
- var events = require('events');
4
- var PerformancePlugin = require('../core/PerformancePlugin.js');
5
- var PluginTypes = require('../types/PluginTypes.js');
6
-
7
- /**
8
- * Response Time Monitoring Plugin
9
- *
10
- * Ultra-fast performance monitoring plugin with <0.3ms overhead
11
- * for tracking response times and performance metrics.
12
- */
13
- /**
14
- * Response Time Monitoring Plugin for ultra-fast performance tracking
15
- */
16
- class ResponseTimePlugin extends PerformancePlugin.PerformancePlugin {
17
- constructor() {
18
- super(...arguments);
19
- this.eventEmitter = new events.EventEmitter();
20
- this.id = "XyPriss.performance.response-time";
21
- this.name = "Response Time Monitoring Plugin";
22
- this.version = "1.0.0";
23
- this.priority = PluginTypes.PluginPriority.NORMAL;
24
- // Performance thresholds (can be configured)
25
- this.performanceThresholds = {
26
- responseTime: 100, // 100ms
27
- memoryUsage: 50 * 1024 * 1024, // 50MB
28
- cpuUsage: 80, // 80%
29
- };
30
- // Performance tracking
31
- this.routeMetrics = new Map();
32
- // Alert thresholds
33
- this.alertThresholds = {
34
- slowResponseTime: 1000, // 1 second
35
- verySlowResponseTime: 5000, // 5 seconds
36
- highMemoryUsage: 100 * 1024 * 1024, // 100MB
37
- criticalMemoryUsage: 200 * 1024 * 1024, // 200MB
38
- };
39
- // Performance alerts
40
- this.alertCooldowns = new Map();
41
- this.ALERT_COOLDOWN = 60000; // 1 minute
42
- }
43
- /**
44
- * Initialize performance monitoring plugin
45
- */
46
- async initializePerformanceMonitoring(context) {
47
- // Configure thresholds from settings
48
- if (context.config.customSettings.responseTimeThreshold) {
49
- this.alertThresholds.slowResponseTime =
50
- context.config.customSettings.responseTimeThreshold;
51
- }
52
- if (context.config.customSettings.memoryThreshold) {
53
- this.alertThresholds.highMemoryUsage =
54
- context.config.customSettings.memoryThreshold;
55
- }
56
- // Setup periodic metrics cleanup
57
- this.setupMetricsCleanup();
58
- // Setup performance alerts
59
- this.setupPerformanceAlerts();
60
- context.logger.info("Response Time Monitoring Plugin initialized");
61
- }
62
- /**
63
- * Execute performance monitoring logic
64
- */
65
- executePerformanceLogic(context, metrics) {
66
- const { req, res } = context;
67
- const route = this.normalizeRoute(req.path);
68
- // Start response time tracking
69
- const startTime = performance.now();
70
- // Add response time header
71
- res.setHeader("X-Response-Time-Start", startTime.toString());
72
- // Hook into response finish event to capture total time
73
- const originalEnd = res.end;
74
- res.end = (...args) => {
75
- const endTime = performance.now();
76
- const responseTime = endTime - startTime;
77
- // Record route metrics
78
- this.recordRouteMetrics(route, responseTime);
79
- // Add response time headers
80
- res.setHeader("X-Response-Time", `${responseTime.toFixed(2)}ms`);
81
- res.setHeader("X-Performance-Score", this.calculatePerformanceScore(responseTime, metrics));
82
- // Check for performance alerts
83
- this.checkRoutePerformanceAlerts(route, responseTime, metrics);
84
- // Call original end method with proper arguments
85
- return originalEnd.apply(res, args);
86
- };
87
- return {
88
- route,
89
- startTime,
90
- memoryUsage: metrics.memoryUsage,
91
- cpuUsage: metrics.cpuUsage,
92
- requestSize: metrics.requestSize,
93
- };
94
- }
95
- /**
96
- * Precompile performance monitoring systems
97
- */
98
- async precompilePerformanceMonitoring() {
99
- // Pre-warm performance calculation functions
100
- this.calculatePerformanceScore(100, {
101
- memoryUsage: 10 * 1024 * 1024,
102
- cpuUsage: 50,
103
- });
104
- // Pre-warm route normalization
105
- this.normalizeRoute("/api/test/123");
106
- }
107
- /**
108
- * Collect custom performance metrics
109
- */
110
- collectCustomMetrics(context) {
111
- const { req } = context;
112
- const route = this.normalizeRoute(req.path);
113
- const routeMetrics = this.routeMetrics.get(route);
114
- return {
115
- route,
116
- routeMetrics: routeMetrics
117
- ? {
118
- averageResponseTime: routeMetrics.averageTime,
119
- p95ResponseTime: routeMetrics.p95Time,
120
- p99ResponseTime: routeMetrics.p99Time,
121
- requestCount: routeMetrics.count,
122
- minResponseTime: routeMetrics.minTime,
123
- maxResponseTime: routeMetrics.maxTime,
124
- }
125
- : null,
126
- totalRoutes: this.routeMetrics.size,
127
- alertsActive: this.getActiveAlerts(),
128
- };
129
- }
130
- // ===== ROUTE METRICS METHODS =====
131
- /**
132
- * Record metrics for a specific route
133
- */
134
- recordRouteMetrics(route, responseTime) {
135
- let metrics = this.routeMetrics.get(route);
136
- if (!metrics) {
137
- metrics = {
138
- count: 0,
139
- totalTime: 0,
140
- minTime: Infinity,
141
- maxTime: 0,
142
- averageTime: 0,
143
- p95Time: 0,
144
- p99Time: 0,
145
- recentTimes: [],
146
- };
147
- this.routeMetrics.set(route, metrics);
148
- }
149
- // Update basic metrics
150
- metrics.count++;
151
- metrics.totalTime += responseTime;
152
- metrics.minTime = Math.min(metrics.minTime, responseTime);
153
- metrics.maxTime = Math.max(metrics.maxTime, responseTime);
154
- metrics.averageTime = metrics.totalTime / metrics.count;
155
- // Update recent times for percentile calculation
156
- metrics.recentTimes.push(responseTime);
157
- // Keep only last 100 response times for memory efficiency
158
- if (metrics.recentTimes.length > 100) {
159
- metrics.recentTimes.shift();
160
- }
161
- // Calculate percentiles
162
- this.updatePercentiles(metrics);
163
- }
164
- /**
165
- * Update percentile calculations
166
- */
167
- updatePercentiles(metrics) {
168
- if (metrics.recentTimes.length === 0)
169
- return;
170
- const sortedTimes = [...metrics.recentTimes].sort((a, b) => a - b);
171
- const length = sortedTimes.length;
172
- // Calculate P95 (95th percentile)
173
- const p95Index = Math.ceil(length * 0.95) - 1;
174
- metrics.p95Time = sortedTimes[Math.max(0, p95Index)];
175
- // Calculate P99 (99th percentile)
176
- const p99Index = Math.ceil(length * 0.99) - 1;
177
- metrics.p99Time = sortedTimes[Math.max(0, p99Index)];
178
- }
179
- /**
180
- * Normalize route for consistent metrics tracking
181
- */
182
- normalizeRoute(path) {
183
- // Replace dynamic segments with placeholders
184
- return path
185
- .replace(/\/\d+/g, "/:id") // Replace numeric IDs
186
- .replace(/\/[a-f0-9-]{36}/g, "/:uuid") // Replace UUIDs
187
- .replace(/\/[a-f0-9]{24}/g, "/:objectId") // Replace MongoDB ObjectIds
188
- .replace(/\?.*$/, ""); // Remove query parameters
189
- }
190
- // ===== PERFORMANCE SCORING =====
191
- /**
192
- * Calculate performance score (0-100)
193
- */
194
- calculatePerformanceScore(responseTime, metrics) {
195
- let score = 100;
196
- // Response time scoring (50% weight)
197
- if (responseTime > this.alertThresholds.verySlowResponseTime) {
198
- score -= 50;
199
- }
200
- else if (responseTime > this.alertThresholds.slowResponseTime) {
201
- score -= 25;
202
- }
203
- else if (responseTime > this.performanceThresholds.responseTime) {
204
- score -= 10;
205
- }
206
- // Memory usage scoring (25% weight)
207
- if (metrics.memoryUsage > this.alertThresholds.criticalMemoryUsage) {
208
- score -= 25;
209
- }
210
- else if (metrics.memoryUsage > this.alertThresholds.highMemoryUsage) {
211
- score -= 15;
212
- }
213
- else if (metrics.memoryUsage > this.performanceThresholds.memoryUsage) {
214
- score -= 5;
215
- }
216
- // CPU usage scoring (25% weight)
217
- if (metrics.cpuUsage > 90) {
218
- score -= 25;
219
- }
220
- else if (metrics.cpuUsage > this.performanceThresholds.cpuUsage) {
221
- score -= 10;
222
- }
223
- return Math.max(0, score);
224
- }
225
- // ===== PERFORMANCE ALERTS =====
226
- /**
227
- * Check for performance alerts (override from PerformancePlugin)
228
- */
229
- checkPerformanceAlerts(metrics) {
230
- const alerts = [];
231
- // Check response time alerts
232
- if (metrics.responseTime > this.alertThresholds.verySlowResponseTime) {
233
- alerts.push("CRITICAL: Response time severely degraded");
234
- this.triggerAlert("critical_response_time", {
235
- route: metrics.route,
236
- responseTime: metrics.responseTime,
237
- threshold: this.alertThresholds.verySlowResponseTime,
238
- });
239
- }
240
- else if (metrics.responseTime > this.alertThresholds.slowResponseTime) {
241
- alerts.push("WARNING: Slow response time detected");
242
- this.triggerAlert("slow_response_time", {
243
- route: metrics.route,
244
- responseTime: metrics.responseTime,
245
- threshold: this.alertThresholds.slowResponseTime,
246
- });
247
- }
248
- // Check memory usage alerts
249
- if (metrics.memoryUsage > this.alertThresholds.criticalMemoryUsage) {
250
- alerts.push("CRITICAL: Memory usage critically high");
251
- this.triggerAlert("critical_memory_usage", {
252
- memoryUsage: metrics.memoryUsage,
253
- threshold: this.alertThresholds.criticalMemoryUsage,
254
- });
255
- }
256
- else if (metrics.memoryUsage > this.alertThresholds.highMemoryUsage) {
257
- alerts.push("WARNING: High memory usage detected");
258
- this.triggerAlert("high_memory_usage", {
259
- memoryUsage: metrics.memoryUsage,
260
- threshold: this.alertThresholds.highMemoryUsage,
261
- });
262
- }
263
- // Check CPU usage alerts
264
- if (metrics.cpuUsage > 90) {
265
- alerts.push("CRITICAL: CPU usage critically high");
266
- this.triggerAlert("critical_cpu_usage", {
267
- cpuUsage: metrics.cpuUsage,
268
- threshold: 90,
269
- });
270
- }
271
- return alerts;
272
- }
273
- /**
274
- * Check for performance alerts with route-specific parameters
275
- */
276
- checkRoutePerformanceAlerts(route, responseTime, metrics) {
277
- // Use the base class method with enhanced metrics
278
- const enhancedMetrics = {
279
- ...metrics,
280
- route,
281
- responseTime,
282
- };
283
- this.checkPerformanceAlerts(enhancedMetrics);
284
- }
285
- /**
286
- * Trigger performance alert with cooldown
287
- */
288
- triggerAlert(alertType, data) {
289
- const now = Date.now();
290
- const lastAlert = this.alertCooldowns.get(alertType) || 0;
291
- // Check cooldown
292
- if (now - lastAlert < this.ALERT_COOLDOWN) {
293
- return;
294
- }
295
- // Update cooldown
296
- this.alertCooldowns.set(alertType, now);
297
- // Log alert
298
- console.warn(`[PERFORMANCE ALERT] ${alertType}:`, data);
299
- // Emit alert event (can be listened to by monitoring systems)
300
- this.eventEmitter.emit("performance_alert", {
301
- type: alertType,
302
- data,
303
- timestamp: new Date(),
304
- });
305
- }
306
- /**
307
- * Get active alerts
308
- */
309
- getActiveAlerts() {
310
- const now = Date.now();
311
- const activeAlerts = [];
312
- for (const [alertType, lastTriggered,] of this.alertCooldowns.entries()) {
313
- if (now - lastTriggered < this.ALERT_COOLDOWN) {
314
- activeAlerts.push(alertType);
315
- }
316
- }
317
- return activeAlerts;
318
- }
319
- // ===== CLEANUP AND MAINTENANCE =====
320
- /**
321
- * Setup metrics cleanup
322
- */
323
- setupMetricsCleanup() {
324
- // Clean up old metrics every 10 minutes
325
- setInterval(() => {
326
- this.cleanupOldMetrics();
327
- }, 600000); // 10 minutes
328
- }
329
- /**
330
- * Clean up old metrics to prevent memory leaks
331
- */
332
- cleanupOldMetrics() {
333
- const now = Date.now();
334
- // Remove routes that haven't been accessed in the last hour
335
- for (const [route, metrics] of this.routeMetrics.entries()) {
336
- // If no recent activity, remove the route metrics
337
- if (metrics.recentTimes.length === 0) {
338
- this.routeMetrics.delete(route);
339
- }
340
- }
341
- // Clean up old alert cooldowns
342
- for (const [alertType, lastTriggered,] of this.alertCooldowns.entries()) {
343
- if (now - lastTriggered > this.ALERT_COOLDOWN * 2) {
344
- this.alertCooldowns.delete(alertType);
345
- }
346
- }
347
- }
348
- /**
349
- * Setup performance alerts monitoring
350
- */
351
- setupPerformanceAlerts() {
352
- // Monitor overall system performance every 30 seconds
353
- setInterval(() => {
354
- this.checkSystemPerformance();
355
- }, 30000); // 30 seconds
356
- }
357
- /**
358
- * Check overall system performance
359
- */
360
- checkSystemPerformance() {
361
- const memoryUsage = this.getMemoryUsage();
362
- const cpuUsage = this.getCpuUsage();
363
- // Check system-wide thresholds
364
- if (memoryUsage > this.alertThresholds.criticalMemoryUsage) {
365
- this.triggerAlert("system_critical_memory", { memoryUsage });
366
- }
367
- if (cpuUsage > 95) {
368
- this.triggerAlert("system_critical_cpu", { cpuUsage });
369
- }
370
- }
371
- // ===== PUBLIC API =====
372
- /**
373
- * Get route performance summary
374
- */
375
- getRoutePerformanceSummary() {
376
- const summary = {};
377
- for (const [route, metrics] of this.routeMetrics.entries()) {
378
- summary[route] = {
379
- requestCount: metrics.count,
380
- averageResponseTime: Math.round(metrics.averageTime * 100) / 100,
381
- minResponseTime: Math.round(metrics.minTime * 100) / 100,
382
- maxResponseTime: Math.round(metrics.maxTime * 100) / 100,
383
- p95ResponseTime: Math.round(metrics.p95Time * 100) / 100,
384
- p99ResponseTime: Math.round(metrics.p99Time * 100) / 100,
385
- };
386
- }
387
- return summary;
388
- }
389
- /**
390
- * Get performance alerts summary
391
- */
392
- getPerformanceAlertsSummary() {
393
- return {
394
- activeAlerts: this.getActiveAlerts(),
395
- alertThresholds: this.alertThresholds,
396
- lastAlerts: Object.fromEntries(this.alertCooldowns),
397
- };
398
- }
399
- /**
400
- * Reset route metrics
401
- */
402
- resetRouteMetrics(route) {
403
- if (route) {
404
- this.routeMetrics.delete(route);
405
- }
406
- else {
407
- this.routeMetrics.clear();
408
- }
409
- }
410
- }
411
-
412
- exports.ResponseTimePlugin = ResponseTimePlugin;
413
- //# sourceMappingURL=ResponseTimePlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResponseTimePlugin.js","sources":["../../../../../../src/server/plugins/builtin/ResponseTimePlugin.ts"],"sourcesContent":[null],"names":["PerformancePlugin","EventEmitter","PluginPriority"],"mappings":"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"}