mcp-wordpress 2.5.1 → 2.5.2
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/package.json +1 -1
- package/dist/src/cache/CacheInvalidation.d.ts +0 -120
- package/dist/src/cache/CacheInvalidation.d.ts.map +0 -1
- package/dist/src/cache/CacheInvalidation.js +0 -355
- package/dist/src/cache/CacheInvalidation.js.map +0 -1
- package/dist/src/cache/CacheManager.d.ts +0 -149
- package/dist/src/cache/CacheManager.d.ts.map +0 -1
- package/dist/src/cache/CacheManager.js +0 -326
- package/dist/src/cache/CacheManager.js.map +0 -1
- package/dist/src/cache/HttpCacheWrapper.d.ts +0 -122
- package/dist/src/cache/HttpCacheWrapper.d.ts.map +0 -1
- package/dist/src/cache/HttpCacheWrapper.js +0 -283
- package/dist/src/cache/HttpCacheWrapper.js.map +0 -1
- package/dist/src/cache/index.d.ts +0 -12
- package/dist/src/cache/index.d.ts.map +0 -1
- package/dist/src/cache/index.js +0 -9
- package/dist/src/cache/index.js.map +0 -1
- package/dist/src/client/CachedWordPressClient.d.ts +0 -174
- package/dist/src/client/CachedWordPressClient.d.ts.map +0 -1
- package/dist/src/client/CachedWordPressClient.js +0 -345
- package/dist/src/client/CachedWordPressClient.js.map +0 -1
- package/dist/src/client/MockWordPressClient.d.ts +0 -56
- package/dist/src/client/MockWordPressClient.d.ts.map +0 -1
- package/dist/src/client/MockWordPressClient.js +0 -371
- package/dist/src/client/MockWordPressClient.js.map +0 -1
- package/dist/src/client/api.d.ts +0 -235
- package/dist/src/client/api.d.ts.map +0 -1
- package/dist/src/client/api.js +0 -896
- package/dist/src/client/api.js.map +0 -1
- package/dist/src/client/auth.d.ts +0 -121
- package/dist/src/client/auth.d.ts.map +0 -1
- package/dist/src/client/auth.js +0 -429
- package/dist/src/client/auth.js.map +0 -1
- package/dist/src/client/managers/AuthenticationManager.d.ts +0 -92
- package/dist/src/client/managers/AuthenticationManager.d.ts.map +0 -1
- package/dist/src/client/managers/AuthenticationManager.js +0 -369
- package/dist/src/client/managers/AuthenticationManager.js.map +0 -1
- package/dist/src/client/managers/BaseManager.d.ts +0 -22
- package/dist/src/client/managers/BaseManager.d.ts.map +0 -1
- package/dist/src/client/managers/BaseManager.js +0 -53
- package/dist/src/client/managers/BaseManager.js.map +0 -1
- package/dist/src/client/managers/RequestManager.d.ts +0 -47
- package/dist/src/client/managers/RequestManager.d.ts.map +0 -1
- package/dist/src/client/managers/RequestManager.js +0 -193
- package/dist/src/client/managers/RequestManager.js.map +0 -1
- package/dist/src/client/managers/index.d.ts +0 -8
- package/dist/src/client/managers/index.d.ts.map +0 -1
- package/dist/src/client/managers/index.js +0 -8
- package/dist/src/client/managers/index.js.map +0 -1
- package/dist/src/config/Config.d.ts +0 -155
- package/dist/src/config/Config.d.ts.map +0 -1
- package/dist/src/config/Config.js +0 -215
- package/dist/src/config/Config.js.map +0 -1
- package/dist/src/config/ConfigurationSchema.d.ts +0 -281
- package/dist/src/config/ConfigurationSchema.d.ts.map +0 -1
- package/dist/src/config/ConfigurationSchema.js +0 -205
- package/dist/src/config/ConfigurationSchema.js.map +0 -1
- package/dist/src/config/ServerConfiguration.d.ts +0 -47
- package/dist/src/config/ServerConfiguration.d.ts.map +0 -1
- package/dist/src/config/ServerConfiguration.js +0 -255
- package/dist/src/config/ServerConfiguration.js.map +0 -1
- package/dist/src/docs/DocumentationGenerator.d.ts +0 -185
- package/dist/src/docs/DocumentationGenerator.d.ts.map +0 -1
- package/dist/src/docs/DocumentationGenerator.js +0 -777
- package/dist/src/docs/DocumentationGenerator.js.map +0 -1
- package/dist/src/docs/MarkdownFormatter.d.ts +0 -84
- package/dist/src/docs/MarkdownFormatter.d.ts.map +0 -1
- package/dist/src/docs/MarkdownFormatter.js +0 -458
- package/dist/src/docs/MarkdownFormatter.js.map +0 -1
- package/dist/src/docs/index.d.ts +0 -8
- package/dist/src/docs/index.d.ts.map +0 -1
- package/dist/src/docs/index.js +0 -7
- package/dist/src/docs/index.js.map +0 -1
- package/dist/src/dxt-entry.d.ts +0 -6
- package/dist/src/dxt-entry.d.ts.map +0 -1
- package/dist/src/dxt-entry.js +0 -39
- package/dist/src/dxt-entry.js.map +0 -1
- package/dist/src/index.d.ts +0 -18
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -143
- package/dist/src/index.js.map +0 -1
- package/dist/src/performance/MetricsCollector.d.ts +0 -145
- package/dist/src/performance/MetricsCollector.d.ts.map +0 -1
- package/dist/src/performance/MetricsCollector.js +0 -368
- package/dist/src/performance/MetricsCollector.js.map +0 -1
- package/dist/src/performance/PerformanceAnalytics.d.ts +0 -168
- package/dist/src/performance/PerformanceAnalytics.d.ts.map +0 -1
- package/dist/src/performance/PerformanceAnalytics.js +0 -570
- package/dist/src/performance/PerformanceAnalytics.js.map +0 -1
- package/dist/src/performance/PerformanceMonitor.d.ts +0 -203
- package/dist/src/performance/PerformanceMonitor.d.ts.map +0 -1
- package/dist/src/performance/PerformanceMonitor.js +0 -478
- package/dist/src/performance/PerformanceMonitor.js.map +0 -1
- package/dist/src/performance/index.d.ts +0 -11
- package/dist/src/performance/index.d.ts.map +0 -1
- package/dist/src/performance/index.js +0 -8
- package/dist/src/performance/index.js.map +0 -1
- package/dist/src/security/AISecurityScanner.d.ts +0 -176
- package/dist/src/security/AISecurityScanner.d.ts.map +0 -1
- package/dist/src/security/AISecurityScanner.js +0 -655
- package/dist/src/security/AISecurityScanner.js.map +0 -1
- package/dist/src/security/AutomatedRemediation.d.ts +0 -146
- package/dist/src/security/AutomatedRemediation.d.ts.map +0 -1
- package/dist/src/security/AutomatedRemediation.js +0 -566
- package/dist/src/security/AutomatedRemediation.js.map +0 -1
- package/dist/src/security/InputValidator.d.ts +0 -219
- package/dist/src/security/InputValidator.d.ts.map +0 -1
- package/dist/src/security/InputValidator.js +0 -295
- package/dist/src/security/InputValidator.js.map +0 -1
- package/dist/src/security/SecurityCIPipeline.d.ts +0 -213
- package/dist/src/security/SecurityCIPipeline.d.ts.map +0 -1
- package/dist/src/security/SecurityCIPipeline.js +0 -693
- package/dist/src/security/SecurityCIPipeline.js.map +0 -1
- package/dist/src/security/SecurityConfig.d.ts +0 -129
- package/dist/src/security/SecurityConfig.d.ts.map +0 -1
- package/dist/src/security/SecurityConfig.js +0 -266
- package/dist/src/security/SecurityConfig.js.map +0 -1
- package/dist/src/security/SecurityConfigManager.d.ts +0 -294
- package/dist/src/security/SecurityConfigManager.d.ts.map +0 -1
- package/dist/src/security/SecurityConfigManager.js +0 -558
- package/dist/src/security/SecurityConfigManager.js.map +0 -1
- package/dist/src/security/SecurityMonitoring.d.ts +0 -245
- package/dist/src/security/SecurityMonitoring.d.ts.map +0 -1
- package/dist/src/security/SecurityMonitoring.js +0 -598
- package/dist/src/security/SecurityMonitoring.js.map +0 -1
- package/dist/src/security/SecurityReviewer.d.ts +0 -168
- package/dist/src/security/SecurityReviewer.d.ts.map +0 -1
- package/dist/src/security/SecurityReviewer.js +0 -686
- package/dist/src/security/SecurityReviewer.js.map +0 -1
- package/dist/src/security/index.d.ts +0 -183
- package/dist/src/security/index.d.ts.map +0 -1
- package/dist/src/security/index.js +0 -218
- package/dist/src/security/index.js.map +0 -1
- package/dist/src/server/ConnectionTester.d.ts +0 -32
- package/dist/src/server/ConnectionTester.d.ts.map +0 -1
- package/dist/src/server/ConnectionTester.js +0 -135
- package/dist/src/server/ConnectionTester.js.map +0 -1
- package/dist/src/server/ToolRegistry.d.ts +0 -50
- package/dist/src/server/ToolRegistry.d.ts.map +0 -1
- package/dist/src/server/ToolRegistry.js +0 -219
- package/dist/src/server/ToolRegistry.js.map +0 -1
- package/dist/src/server.d.ts +0 -7
- package/dist/src/server.d.ts.map +0 -1
- package/dist/src/server.js +0 -7
- package/dist/src/server.js.map +0 -1
- package/dist/src/tools/BaseToolManager.d.ts +0 -62
- package/dist/src/tools/BaseToolManager.d.ts.map +0 -1
- package/dist/src/tools/BaseToolManager.js +0 -195
- package/dist/src/tools/BaseToolManager.js.map +0 -1
- package/dist/src/tools/auth.d.ts +0 -50
- package/dist/src/tools/auth.d.ts.map +0 -1
- package/dist/src/tools/auth.js +0 -133
- package/dist/src/tools/auth.js.map +0 -1
- package/dist/src/tools/cache.d.ts +0 -260
- package/dist/src/tools/cache.d.ts.map +0 -1
- package/dist/src/tools/cache.js +0 -232
- package/dist/src/tools/cache.js.map +0 -1
- package/dist/src/tools/comments.d.ts +0 -33
- package/dist/src/tools/comments.d.ts.map +0 -1
- package/dist/src/tools/comments.js +0 -235
- package/dist/src/tools/comments.js.map +0 -1
- package/dist/src/tools/index.d.ts +0 -11
- package/dist/src/tools/index.d.ts.map +0 -1
- package/dist/src/tools/index.js +0 -11
- package/dist/src/tools/index.js.map +0 -1
- package/dist/src/tools/media.d.ts +0 -70
- package/dist/src/tools/media.d.ts.map +0 -1
- package/dist/src/tools/media.js +0 -248
- package/dist/src/tools/media.js.map +0 -1
- package/dist/src/tools/pages.d.ts +0 -32
- package/dist/src/tools/pages.d.ts.map +0 -1
- package/dist/src/tools/pages.js +0 -215
- package/dist/src/tools/pages.js.map +0 -1
- package/dist/src/tools/performance.d.ts +0 -73
- package/dist/src/tools/performance.d.ts.map +0 -1
- package/dist/src/tools/performance.js +0 -922
- package/dist/src/tools/performance.js.map +0 -1
- package/dist/src/tools/posts/PostHandlers.d.ts +0 -46
- package/dist/src/tools/posts/PostHandlers.d.ts.map +0 -1
- package/dist/src/tools/posts/PostHandlers.js +0 -400
- package/dist/src/tools/posts/PostHandlers.js.map +0 -1
- package/dist/src/tools/posts/PostToolDefinitions.d.ts +0 -37
- package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +0 -1
- package/dist/src/tools/posts/PostToolDefinitions.js +0 -236
- package/dist/src/tools/posts/PostToolDefinitions.js.map +0 -1
- package/dist/src/tools/posts/index.d.ts +0 -138
- package/dist/src/tools/posts/index.d.ts.map +0 -1
- package/dist/src/tools/posts/index.js +0 -163
- package/dist/src/tools/posts/index.js.map +0 -1
- package/dist/src/tools/posts.d.ts +0 -15
- package/dist/src/tools/posts.d.ts.map +0 -1
- package/dist/src/tools/posts.js +0 -16
- package/dist/src/tools/posts.js.map +0 -1
- package/dist/src/tools/site.d.ts +0 -32
- package/dist/src/tools/site.d.ts.map +0 -1
- package/dist/src/tools/site.js +0 -234
- package/dist/src/tools/site.js.map +0 -1
- package/dist/src/tools/taxonomies.d.ts +0 -36
- package/dist/src/tools/taxonomies.d.ts.map +0 -1
- package/dist/src/tools/taxonomies.js +0 -286
- package/dist/src/tools/taxonomies.js.map +0 -1
- package/dist/src/tools/users.d.ts +0 -33
- package/dist/src/tools/users.d.ts.map +0 -1
- package/dist/src/tools/users.js +0 -308
- package/dist/src/tools/users.js.map +0 -1
- package/dist/src/types/client.d.ts +0 -223
- package/dist/src/types/client.d.ts.map +0 -1
- package/dist/src/types/client.js +0 -97
- package/dist/src/types/client.js.map +0 -1
- package/dist/src/types/enhanced.d.ts +0 -237
- package/dist/src/types/enhanced.d.ts.map +0 -1
- package/dist/src/types/enhanced.js +0 -49
- package/dist/src/types/enhanced.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -160
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -14
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/mcp.d.ts +0 -178
- package/dist/src/types/mcp.d.ts.map +0 -1
- package/dist/src/types/mcp.js +0 -7
- package/dist/src/types/mcp.js.map +0 -1
- package/dist/src/types/requests.d.ts +0 -322
- package/dist/src/types/requests.d.ts.map +0 -1
- package/dist/src/types/requests.js +0 -8
- package/dist/src/types/requests.js.map +0 -1
- package/dist/src/types/tools.d.ts +0 -506
- package/dist/src/types/tools.d.ts.map +0 -1
- package/dist/src/types/tools.js +0 -8
- package/dist/src/types/tools.js.map +0 -1
- package/dist/src/types/wordpress.d.ts +0 -471
- package/dist/src/types/wordpress.d.ts.map +0 -1
- package/dist/src/types/wordpress.js +0 -14
- package/dist/src/types/wordpress.js.map +0 -1
- package/dist/src/utils/debug.d.ts +0 -71
- package/dist/src/utils/debug.d.ts.map +0 -1
- package/dist/src/utils/debug.js +0 -235
- package/dist/src/utils/debug.js.map +0 -1
- package/dist/src/utils/enhancedError.d.ts +0 -61
- package/dist/src/utils/enhancedError.d.ts.map +0 -1
- package/dist/src/utils/enhancedError.js +0 -221
- package/dist/src/utils/enhancedError.js.map +0 -1
- package/dist/src/utils/error.d.ts +0 -17
- package/dist/src/utils/error.d.ts.map +0 -1
- package/dist/src/utils/error.js +0 -108
- package/dist/src/utils/error.js.map +0 -1
- package/dist/src/utils/logger.d.ts +0 -106
- package/dist/src/utils/logger.d.ts.map +0 -1
- package/dist/src/utils/logger.js +0 -280
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/utils/streaming.d.ts +0 -104
- package/dist/src/utils/streaming.d.ts.map +0 -1
- package/dist/src/utils/streaming.js +0 -331
- package/dist/src/utils/streaming.js.map +0 -1
- package/dist/src/utils/toolWrapper.d.ts +0 -42
- package/dist/src/utils/toolWrapper.d.ts.map +0 -1
- package/dist/src/utils/toolWrapper.js +0 -101
- package/dist/src/utils/toolWrapper.js.map +0 -1
- package/dist/src/utils/validation/core.d.ts +0 -21
- package/dist/src/utils/validation/core.d.ts.map +0 -1
- package/dist/src/utils/validation/core.js +0 -71
- package/dist/src/utils/validation/core.js.map +0 -1
- package/dist/src/utils/validation/index.d.ts +0 -25
- package/dist/src/utils/validation/index.d.ts.map +0 -1
- package/dist/src/utils/validation/index.js +0 -29
- package/dist/src/utils/validation/index.js.map +0 -1
- package/dist/src/utils/validation/network.d.ts +0 -19
- package/dist/src/utils/validation/network.d.ts.map +0 -1
- package/dist/src/utils/validation/network.js +0 -93
- package/dist/src/utils/validation/network.js.map +0 -1
- package/dist/src/utils/validation/rateLimit.d.ts +0 -21
- package/dist/src/utils/validation/rateLimit.d.ts.map +0 -1
- package/dist/src/utils/validation/rateLimit.js +0 -43
- package/dist/src/utils/validation/rateLimit.js.map +0 -1
- package/dist/src/utils/validation/security.d.ts +0 -29
- package/dist/src/utils/validation/security.d.ts.map +0 -1
- package/dist/src/utils/validation/security.js +0 -327
- package/dist/src/utils/validation/security.js.map +0 -1
- package/dist/src/utils/validation/wordpress.d.ts +0 -31
- package/dist/src/utils/validation/wordpress.d.ts.map +0 -1
- package/dist/src/utils/validation/wordpress.js +0 -146
- package/dist/src/utils/validation/wordpress.js.map +0 -1
- package/dist/src/utils/validation.d.ts +0 -15
- package/dist/src/utils/validation.d.ts.map +0 -1
- package/dist/src/utils/validation.js +0 -27
- package/dist/src/utils/validation.js.map +0 -1
- package/dist/tests/vitest.setup.d.ts +0 -6
- package/dist/tests/vitest.setup.d.ts.map +0 -1
- package/dist/tests/vitest.setup.js +0 -39
- package/dist/tests/vitest.setup.js.map +0 -1
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Performance Monitoring System for WordPress MCP Server
|
|
3
|
-
* Collects, analyzes, and reports performance metrics
|
|
4
|
-
*/
|
|
5
|
-
export interface PerformanceMetrics {
|
|
6
|
-
requests: {
|
|
7
|
-
total: number;
|
|
8
|
-
successful: number;
|
|
9
|
-
failed: number;
|
|
10
|
-
averageResponseTime: number;
|
|
11
|
-
minResponseTime: number;
|
|
12
|
-
maxResponseTime: number;
|
|
13
|
-
requestsPerSecond: number;
|
|
14
|
-
p50ResponseTime: number;
|
|
15
|
-
p95ResponseTime: number;
|
|
16
|
-
p99ResponseTime: number;
|
|
17
|
-
};
|
|
18
|
-
cache: {
|
|
19
|
-
hits: number;
|
|
20
|
-
misses: number;
|
|
21
|
-
hitRate: number;
|
|
22
|
-
totalSize: number;
|
|
23
|
-
memoryUsageMB: number;
|
|
24
|
-
evictions: number;
|
|
25
|
-
averageCacheTime: number;
|
|
26
|
-
};
|
|
27
|
-
system: {
|
|
28
|
-
cpuUsage: number;
|
|
29
|
-
memoryUsage: number;
|
|
30
|
-
uptime: number;
|
|
31
|
-
activeConnections: number;
|
|
32
|
-
concurrentRequests: number;
|
|
33
|
-
};
|
|
34
|
-
wordpress: {
|
|
35
|
-
authSuccessRate: number;
|
|
36
|
-
apiVersion: string;
|
|
37
|
-
siteHealth: "healthy" | "warning" | "critical";
|
|
38
|
-
averageDbResponseTime: number;
|
|
39
|
-
pluginCompatibility: number;
|
|
40
|
-
};
|
|
41
|
-
tools: {
|
|
42
|
-
mostUsedTool: string;
|
|
43
|
-
toolUsageCount: Record<string, number>;
|
|
44
|
-
toolPerformance: Record<string, {
|
|
45
|
-
averageTime: number;
|
|
46
|
-
successRate: number;
|
|
47
|
-
callCount: number;
|
|
48
|
-
}>;
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
export interface PerformanceAlert {
|
|
52
|
-
id: string;
|
|
53
|
-
timestamp: number;
|
|
54
|
-
severity: "info" | "warning" | "error" | "critical";
|
|
55
|
-
category: "performance" | "cache" | "system" | "wordpress";
|
|
56
|
-
message: string;
|
|
57
|
-
metric: string;
|
|
58
|
-
threshold: number;
|
|
59
|
-
actualValue: number;
|
|
60
|
-
suggestion?: string;
|
|
61
|
-
}
|
|
62
|
-
export interface PerformanceConfig {
|
|
63
|
-
collectInterval: number;
|
|
64
|
-
retentionPeriod: number;
|
|
65
|
-
alertThresholds: {
|
|
66
|
-
responseTime: number;
|
|
67
|
-
errorRate: number;
|
|
68
|
-
cacheHitRate: number;
|
|
69
|
-
memoryUsage: number;
|
|
70
|
-
cpuUsage: number;
|
|
71
|
-
};
|
|
72
|
-
enableRealTimeMonitoring: boolean;
|
|
73
|
-
enableHistoricalData: boolean;
|
|
74
|
-
enableAlerts: boolean;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Core Performance Monitor class
|
|
78
|
-
*/
|
|
79
|
-
export declare class PerformanceMonitor {
|
|
80
|
-
private metrics;
|
|
81
|
-
private historicalData;
|
|
82
|
-
private alerts;
|
|
83
|
-
private config;
|
|
84
|
-
private startTime;
|
|
85
|
-
private responseTimes;
|
|
86
|
-
private collectionTimer?;
|
|
87
|
-
constructor(config?: Partial<PerformanceConfig>);
|
|
88
|
-
/**
|
|
89
|
-
* Initialize empty metrics structure
|
|
90
|
-
*/
|
|
91
|
-
private initializeMetrics;
|
|
92
|
-
/**
|
|
93
|
-
* Record a request performance metric
|
|
94
|
-
*/
|
|
95
|
-
recordRequest(responseTime: number, success: boolean, toolName?: string): void;
|
|
96
|
-
/**
|
|
97
|
-
* Update cache metrics from cache manager
|
|
98
|
-
*/
|
|
99
|
-
updateCacheMetrics(cacheStats: Record<string, unknown>): void;
|
|
100
|
-
/**
|
|
101
|
-
* Update system metrics
|
|
102
|
-
*/
|
|
103
|
-
updateSystemMetrics(): void;
|
|
104
|
-
/**
|
|
105
|
-
* Get current performance metrics
|
|
106
|
-
*/
|
|
107
|
-
getMetrics(): PerformanceMetrics;
|
|
108
|
-
/**
|
|
109
|
-
* Get historical performance data
|
|
110
|
-
*/
|
|
111
|
-
getHistoricalData(startTime?: number, endTime?: number): PerformanceMetrics[];
|
|
112
|
-
/**
|
|
113
|
-
* Get performance alerts
|
|
114
|
-
*/
|
|
115
|
-
getAlerts(severity?: string): PerformanceAlert[];
|
|
116
|
-
/**
|
|
117
|
-
* Clear alerts
|
|
118
|
-
*/
|
|
119
|
-
clearAlerts(): void;
|
|
120
|
-
/**
|
|
121
|
-
* Generate performance insights
|
|
122
|
-
*/
|
|
123
|
-
generateInsights(): {
|
|
124
|
-
summary: string;
|
|
125
|
-
recommendations: string[];
|
|
126
|
-
trends: string[];
|
|
127
|
-
health: "excellent" | "good" | "warning" | "critical";
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* Export performance data
|
|
131
|
-
*/
|
|
132
|
-
exportData(format?: "json" | "csv"): string;
|
|
133
|
-
/**
|
|
134
|
-
* Start automatic metric collection
|
|
135
|
-
* Note: This uses setInterval and is not called in test environments to avoid Jest timer issues
|
|
136
|
-
*/
|
|
137
|
-
private startCollection;
|
|
138
|
-
/**
|
|
139
|
-
* Stop metric collection
|
|
140
|
-
*/
|
|
141
|
-
stop(): void;
|
|
142
|
-
/**
|
|
143
|
-
* Record tool usage and performance
|
|
144
|
-
*/
|
|
145
|
-
private recordToolUsage;
|
|
146
|
-
/**
|
|
147
|
-
* Update response time metrics with percentiles
|
|
148
|
-
*/
|
|
149
|
-
private updateResponseTimeMetrics;
|
|
150
|
-
/**
|
|
151
|
-
* Get percentile value from sorted array
|
|
152
|
-
*/
|
|
153
|
-
private getPercentile;
|
|
154
|
-
/**
|
|
155
|
-
* Estimate cache memory usage
|
|
156
|
-
*/
|
|
157
|
-
private estimateCacheMemoryUsage;
|
|
158
|
-
/**
|
|
159
|
-
* Get CPU usage (simplified)
|
|
160
|
-
*/
|
|
161
|
-
private getCpuUsage;
|
|
162
|
-
/**
|
|
163
|
-
* Check for performance alerts
|
|
164
|
-
*/
|
|
165
|
-
private checkPerformanceAlerts;
|
|
166
|
-
/**
|
|
167
|
-
* Add performance alert
|
|
168
|
-
*/
|
|
169
|
-
private addAlert;
|
|
170
|
-
/**
|
|
171
|
-
* Calculate overall system health
|
|
172
|
-
*/
|
|
173
|
-
private calculateOverallHealth;
|
|
174
|
-
/**
|
|
175
|
-
* Generate performance summary
|
|
176
|
-
*/
|
|
177
|
-
private generateSummary;
|
|
178
|
-
/**
|
|
179
|
-
* Generate performance recommendations
|
|
180
|
-
*/
|
|
181
|
-
private generateRecommendations;
|
|
182
|
-
/**
|
|
183
|
-
* Generate trend analysis
|
|
184
|
-
*/
|
|
185
|
-
private generateTrends;
|
|
186
|
-
/**
|
|
187
|
-
* Check if values are increasing
|
|
188
|
-
*/
|
|
189
|
-
private isIncreasing;
|
|
190
|
-
/**
|
|
191
|
-
* Check if values are decreasing
|
|
192
|
-
*/
|
|
193
|
-
private isDecreasing;
|
|
194
|
-
/**
|
|
195
|
-
* Convert data to CSV format
|
|
196
|
-
*/
|
|
197
|
-
private convertToCSV;
|
|
198
|
-
/**
|
|
199
|
-
* Clean up old historical data
|
|
200
|
-
*/
|
|
201
|
-
private cleanupOldData;
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=PerformanceMonitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PerformanceMonitor.d.ts","sourceRoot":"","sources":["../../../src/performance/PerformanceMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Performance Monitoring System for WordPress MCP Server
|
|
3
|
-
* Collects, analyzes, and reports performance metrics
|
|
4
|
-
*/
|
|
5
|
-
import { ConfigHelpers } from "../config/Config.js";
|
|
6
|
-
/**
|
|
7
|
-
* Core Performance Monitor class
|
|
8
|
-
*/
|
|
9
|
-
export class PerformanceMonitor {
|
|
10
|
-
metrics;
|
|
11
|
-
historicalData = [];
|
|
12
|
-
alerts = [];
|
|
13
|
-
config;
|
|
14
|
-
startTime;
|
|
15
|
-
responseTimes = [];
|
|
16
|
-
collectionTimer;
|
|
17
|
-
constructor(config = {}) {
|
|
18
|
-
this.startTime = Date.now();
|
|
19
|
-
this.config = {
|
|
20
|
-
collectInterval: 30000, // 30 seconds
|
|
21
|
-
retentionPeriod: 24 * 60 * 60 * 1000, // 24 hours
|
|
22
|
-
alertThresholds: {
|
|
23
|
-
responseTime: 2000, // 2 seconds
|
|
24
|
-
errorRate: 0.05, // 5%
|
|
25
|
-
cacheHitRate: 0.8, // 80%
|
|
26
|
-
memoryUsage: 80, // 80%
|
|
27
|
-
cpuUsage: 80, // 80%
|
|
28
|
-
},
|
|
29
|
-
enableRealTimeMonitoring: true,
|
|
30
|
-
enableHistoricalData: true,
|
|
31
|
-
enableAlerts: true,
|
|
32
|
-
...config,
|
|
33
|
-
};
|
|
34
|
-
this.metrics = this.initializeMetrics();
|
|
35
|
-
// Don't start collection in test environment to avoid timer issues
|
|
36
|
-
if (this.config.enableRealTimeMonitoring && !ConfigHelpers.isTest()) {
|
|
37
|
-
this.startCollection();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Initialize empty metrics structure
|
|
42
|
-
*/
|
|
43
|
-
initializeMetrics() {
|
|
44
|
-
return {
|
|
45
|
-
requests: {
|
|
46
|
-
total: 0,
|
|
47
|
-
successful: 0,
|
|
48
|
-
failed: 0,
|
|
49
|
-
averageResponseTime: 0,
|
|
50
|
-
minResponseTime: 0,
|
|
51
|
-
maxResponseTime: 0,
|
|
52
|
-
requestsPerSecond: 0,
|
|
53
|
-
p50ResponseTime: 0,
|
|
54
|
-
p95ResponseTime: 0,
|
|
55
|
-
p99ResponseTime: 0,
|
|
56
|
-
},
|
|
57
|
-
cache: {
|
|
58
|
-
hits: 0,
|
|
59
|
-
misses: 0,
|
|
60
|
-
hitRate: 0,
|
|
61
|
-
totalSize: 0,
|
|
62
|
-
memoryUsageMB: 0,
|
|
63
|
-
evictions: 0,
|
|
64
|
-
averageCacheTime: 0,
|
|
65
|
-
},
|
|
66
|
-
system: {
|
|
67
|
-
cpuUsage: 0,
|
|
68
|
-
memoryUsage: 0,
|
|
69
|
-
uptime: 0,
|
|
70
|
-
activeConnections: 0,
|
|
71
|
-
concurrentRequests: 0,
|
|
72
|
-
},
|
|
73
|
-
wordpress: {
|
|
74
|
-
authSuccessRate: 0,
|
|
75
|
-
apiVersion: "v2",
|
|
76
|
-
siteHealth: "healthy",
|
|
77
|
-
averageDbResponseTime: 0,
|
|
78
|
-
pluginCompatibility: 100,
|
|
79
|
-
},
|
|
80
|
-
tools: {
|
|
81
|
-
mostUsedTool: "",
|
|
82
|
-
toolUsageCount: {},
|
|
83
|
-
toolPerformance: {},
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Record a request performance metric
|
|
89
|
-
*/
|
|
90
|
-
recordRequest(responseTime, success, toolName) {
|
|
91
|
-
this.metrics.requests.total++;
|
|
92
|
-
if (success) {
|
|
93
|
-
this.metrics.requests.successful++;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this.metrics.requests.failed++;
|
|
97
|
-
}
|
|
98
|
-
// Track response times
|
|
99
|
-
this.responseTimes.push(responseTime);
|
|
100
|
-
this.updateResponseTimeMetrics();
|
|
101
|
-
// Track tool usage
|
|
102
|
-
if (toolName) {
|
|
103
|
-
this.recordToolUsage(toolName, responseTime, success);
|
|
104
|
-
}
|
|
105
|
-
// Check for alerts
|
|
106
|
-
if (this.config.enableAlerts) {
|
|
107
|
-
this.checkPerformanceAlerts();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Update cache metrics from cache manager
|
|
112
|
-
*/
|
|
113
|
-
updateCacheMetrics(cacheStats) {
|
|
114
|
-
this.metrics.cache = {
|
|
115
|
-
hits: cacheStats.hits || 0,
|
|
116
|
-
misses: cacheStats.misses || 0,
|
|
117
|
-
hitRate: cacheStats.hitRate || 0,
|
|
118
|
-
totalSize: cacheStats.totalSize || 0,
|
|
119
|
-
memoryUsageMB: this.estimateCacheMemoryUsage(cacheStats.totalSize || 0),
|
|
120
|
-
evictions: cacheStats.evictions || 0,
|
|
121
|
-
averageCacheTime: 0.5, // Sub-millisecond average
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Update system metrics
|
|
126
|
-
*/
|
|
127
|
-
updateSystemMetrics() {
|
|
128
|
-
const memUsage = process.memoryUsage();
|
|
129
|
-
this.metrics.system = {
|
|
130
|
-
cpuUsage: this.getCpuUsage(),
|
|
131
|
-
memoryUsage: Math.round((memUsage.heapUsed / memUsage.heapTotal) * 100),
|
|
132
|
-
uptime: Date.now() - this.startTime,
|
|
133
|
-
activeConnections: 1, // Will be updated by connection manager
|
|
134
|
-
concurrentRequests: 0, // Will be updated by request manager
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Get current performance metrics
|
|
139
|
-
*/
|
|
140
|
-
getMetrics() {
|
|
141
|
-
this.updateSystemMetrics();
|
|
142
|
-
return { ...this.metrics };
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Get historical performance data
|
|
146
|
-
*/
|
|
147
|
-
getHistoricalData(startTime, endTime) {
|
|
148
|
-
if (!this.config.enableHistoricalData) {
|
|
149
|
-
return [];
|
|
150
|
-
}
|
|
151
|
-
let data = [...this.historicalData];
|
|
152
|
-
if (startTime) {
|
|
153
|
-
data = data.filter((m) => m.system.uptime >= startTime);
|
|
154
|
-
}
|
|
155
|
-
if (endTime) {
|
|
156
|
-
data = data.filter((m) => m.system.uptime <= endTime);
|
|
157
|
-
}
|
|
158
|
-
return data;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Get performance alerts
|
|
162
|
-
*/
|
|
163
|
-
getAlerts(severity) {
|
|
164
|
-
if (severity) {
|
|
165
|
-
return this.alerts.filter((alert) => alert.severity === severity);
|
|
166
|
-
}
|
|
167
|
-
return [...this.alerts];
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Clear alerts
|
|
171
|
-
*/
|
|
172
|
-
clearAlerts() {
|
|
173
|
-
this.alerts = [];
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Generate performance insights
|
|
177
|
-
*/
|
|
178
|
-
generateInsights() {
|
|
179
|
-
const current = this.getMetrics();
|
|
180
|
-
const health = this.calculateOverallHealth(current);
|
|
181
|
-
return {
|
|
182
|
-
summary: this.generateSummary(current),
|
|
183
|
-
recommendations: this.generateRecommendations(current),
|
|
184
|
-
trends: this.generateTrends(),
|
|
185
|
-
health,
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Export performance data
|
|
190
|
-
*/
|
|
191
|
-
exportData(format = "json") {
|
|
192
|
-
const data = {
|
|
193
|
-
currentMetrics: this.getMetrics(),
|
|
194
|
-
historicalData: this.getHistoricalData(),
|
|
195
|
-
alerts: this.getAlerts(),
|
|
196
|
-
config: this.config,
|
|
197
|
-
generatedAt: new Date().toISOString(),
|
|
198
|
-
};
|
|
199
|
-
if (format === "csv") {
|
|
200
|
-
return this.convertToCSV([data]);
|
|
201
|
-
}
|
|
202
|
-
return JSON.stringify(data, null, 2);
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Start automatic metric collection
|
|
206
|
-
* Note: This uses setInterval and is not called in test environments to avoid Jest timer issues
|
|
207
|
-
*/
|
|
208
|
-
startCollection() {
|
|
209
|
-
this.collectionTimer = setInterval(() => {
|
|
210
|
-
const snapshot = this.getMetrics();
|
|
211
|
-
if (this.config.enableHistoricalData) {
|
|
212
|
-
this.historicalData.push(snapshot);
|
|
213
|
-
this.cleanupOldData();
|
|
214
|
-
}
|
|
215
|
-
}, this.config.collectInterval);
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Stop metric collection
|
|
219
|
-
*/
|
|
220
|
-
stop() {
|
|
221
|
-
if (this.collectionTimer) {
|
|
222
|
-
clearInterval(this.collectionTimer);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Record tool usage and performance
|
|
227
|
-
*/
|
|
228
|
-
recordToolUsage(toolName, responseTime, success) {
|
|
229
|
-
// Update usage count
|
|
230
|
-
this.metrics.tools.toolUsageCount[toolName] = (this.metrics.tools.toolUsageCount[toolName] || 0) + 1;
|
|
231
|
-
// Update performance metrics
|
|
232
|
-
if (!this.metrics.tools.toolPerformance[toolName]) {
|
|
233
|
-
this.metrics.tools.toolPerformance[toolName] = {
|
|
234
|
-
averageTime: responseTime,
|
|
235
|
-
successRate: success ? 1 : 0,
|
|
236
|
-
callCount: 1,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
const perf = this.metrics.tools.toolPerformance[toolName];
|
|
241
|
-
const totalCalls = perf.callCount + 1;
|
|
242
|
-
// Update average time
|
|
243
|
-
perf.averageTime = (perf.averageTime * perf.callCount + responseTime) / totalCalls;
|
|
244
|
-
// Update success rate
|
|
245
|
-
const totalSuccess = perf.successRate * perf.callCount + (success ? 1 : 0);
|
|
246
|
-
perf.successRate = totalSuccess / totalCalls;
|
|
247
|
-
perf.callCount = totalCalls;
|
|
248
|
-
}
|
|
249
|
-
// Update most used tool
|
|
250
|
-
const usageCounts = this.metrics.tools.toolUsageCount;
|
|
251
|
-
this.metrics.tools.mostUsedTool = Object.keys(usageCounts).reduce((a, b) => usageCounts[a] > usageCounts[b] ? a : b);
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Update response time metrics with percentiles
|
|
255
|
-
*/
|
|
256
|
-
updateResponseTimeMetrics() {
|
|
257
|
-
if (this.responseTimes.length === 0)
|
|
258
|
-
return;
|
|
259
|
-
const sorted = [...this.responseTimes].sort((a, b) => a - b);
|
|
260
|
-
const total = this.metrics.requests.total;
|
|
261
|
-
this.metrics.requests.averageResponseTime =
|
|
262
|
-
this.responseTimes.reduce((sum, time) => sum + time, 0) / this.responseTimes.length;
|
|
263
|
-
this.metrics.requests.minResponseTime = sorted[0];
|
|
264
|
-
this.metrics.requests.maxResponseTime = sorted[sorted.length - 1];
|
|
265
|
-
// Calculate percentiles
|
|
266
|
-
this.metrics.requests.p50ResponseTime = this.getPercentile(sorted, 0.5);
|
|
267
|
-
this.metrics.requests.p95ResponseTime = this.getPercentile(sorted, 0.95);
|
|
268
|
-
this.metrics.requests.p99ResponseTime = this.getPercentile(sorted, 0.99);
|
|
269
|
-
// Calculate requests per second
|
|
270
|
-
const uptime = (Date.now() - this.startTime) / 1000;
|
|
271
|
-
this.metrics.requests.requestsPerSecond = total / uptime;
|
|
272
|
-
// Limit response time history to prevent memory growth
|
|
273
|
-
if (this.responseTimes.length > 10000) {
|
|
274
|
-
this.responseTimes = this.responseTimes.slice(-5000);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Get percentile value from sorted array
|
|
279
|
-
*/
|
|
280
|
-
getPercentile(sorted, percentile) {
|
|
281
|
-
const index = Math.ceil(sorted.length * percentile) - 1;
|
|
282
|
-
return sorted[Math.max(0, index)];
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Estimate cache memory usage
|
|
286
|
-
*/
|
|
287
|
-
estimateCacheMemoryUsage(totalSize) {
|
|
288
|
-
// Rough estimate: ~1KB per cache entry
|
|
289
|
-
return (totalSize * 1024) / (1024 * 1024); // Convert to MB
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Get CPU usage (simplified)
|
|
293
|
-
*/
|
|
294
|
-
getCpuUsage() {
|
|
295
|
-
// Simplified CPU usage estimation
|
|
296
|
-
// In production, use more sophisticated monitoring
|
|
297
|
-
return Math.round(Math.random() * 20 + 10); // 10-30% placeholder
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Check for performance alerts
|
|
301
|
-
*/
|
|
302
|
-
checkPerformanceAlerts() {
|
|
303
|
-
const thresholds = this.config.alertThresholds;
|
|
304
|
-
// Response time alert
|
|
305
|
-
if (this.metrics.requests.averageResponseTime > thresholds.responseTime) {
|
|
306
|
-
this.addAlert("warning", "performance", `High response time: ${this.metrics.requests.averageResponseTime}ms`, "averageResponseTime", thresholds.responseTime, this.metrics.requests.averageResponseTime, "Consider enabling caching or optimizing queries");
|
|
307
|
-
}
|
|
308
|
-
// Error rate alert
|
|
309
|
-
const errorRate = this.metrics.requests.failed / this.metrics.requests.total;
|
|
310
|
-
if (errorRate > thresholds.errorRate) {
|
|
311
|
-
this.addAlert("error", "performance", `High error rate: ${Math.round(errorRate * 100)}%`, "errorRate", thresholds.errorRate, errorRate, "Check WordPress connectivity and authentication");
|
|
312
|
-
}
|
|
313
|
-
// Cache hit rate alert
|
|
314
|
-
if (this.metrics.cache.hitRate < thresholds.cacheHitRate) {
|
|
315
|
-
this.addAlert("warning", "cache", `Low cache hit rate: ${Math.round(this.metrics.cache.hitRate * 100)}%`, "cacheHitRate", thresholds.cacheHitRate, this.metrics.cache.hitRate, "Consider cache warming or adjusting TTL values");
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Add performance alert
|
|
320
|
-
*/
|
|
321
|
-
addAlert(severity, category, message, metric, threshold, actualValue, suggestion) {
|
|
322
|
-
const alert = {
|
|
323
|
-
id: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
324
|
-
timestamp: Date.now(),
|
|
325
|
-
severity,
|
|
326
|
-
category,
|
|
327
|
-
message,
|
|
328
|
-
metric,
|
|
329
|
-
threshold,
|
|
330
|
-
actualValue,
|
|
331
|
-
...(suggestion && { suggestion }),
|
|
332
|
-
};
|
|
333
|
-
this.alerts.push(alert);
|
|
334
|
-
// Limit alert history
|
|
335
|
-
if (this.alerts.length > 1000) {
|
|
336
|
-
this.alerts = this.alerts.slice(-500);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Calculate overall system health
|
|
341
|
-
*/
|
|
342
|
-
calculateOverallHealth(metrics) {
|
|
343
|
-
let score = 100;
|
|
344
|
-
// Response time impact
|
|
345
|
-
if (metrics.requests.averageResponseTime > 3000)
|
|
346
|
-
score -= 30;
|
|
347
|
-
else if (metrics.requests.averageResponseTime > 1000)
|
|
348
|
-
score -= 15;
|
|
349
|
-
// Error rate impact
|
|
350
|
-
const errorRate = metrics.requests.failed / metrics.requests.total;
|
|
351
|
-
if (errorRate > 0.1)
|
|
352
|
-
score -= 40;
|
|
353
|
-
else if (errorRate > 0.05)
|
|
354
|
-
score -= 20;
|
|
355
|
-
// Cache performance impact
|
|
356
|
-
if (metrics.cache.hitRate < 0.5)
|
|
357
|
-
score -= 25;
|
|
358
|
-
else if (metrics.cache.hitRate < 0.8)
|
|
359
|
-
score -= 10;
|
|
360
|
-
// System resource impact
|
|
361
|
-
if (metrics.system.memoryUsage > 90)
|
|
362
|
-
score -= 20;
|
|
363
|
-
else if (metrics.system.memoryUsage > 80)
|
|
364
|
-
score -= 10;
|
|
365
|
-
if (score >= 90)
|
|
366
|
-
return "excellent";
|
|
367
|
-
if (score >= 75)
|
|
368
|
-
return "good";
|
|
369
|
-
if (score >= 50)
|
|
370
|
-
return "warning";
|
|
371
|
-
return "critical";
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Generate performance summary
|
|
375
|
-
*/
|
|
376
|
-
generateSummary(metrics) {
|
|
377
|
-
const errorRate = metrics.requests.total > 0 ? ((metrics.requests.failed / metrics.requests.total) * 100).toFixed(1) : "0";
|
|
378
|
-
return (`Performance Summary: ${metrics.requests.total} requests processed with ${errorRate}% error rate. ` +
|
|
379
|
-
`Average response time: ${metrics.requests.averageResponseTime.toFixed(0)}ms. ` +
|
|
380
|
-
`Cache hit rate: ${(metrics.cache.hitRate * 100).toFixed(1)}%. ` +
|
|
381
|
-
`System uptime: ${Math.round(metrics.system.uptime / 1000 / 60)} minutes.`);
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* Generate performance recommendations
|
|
385
|
-
*/
|
|
386
|
-
generateRecommendations(metrics) {
|
|
387
|
-
const recommendations = [];
|
|
388
|
-
if (metrics.requests.averageResponseTime > 1000) {
|
|
389
|
-
recommendations.push("Enable caching to reduce response times");
|
|
390
|
-
}
|
|
391
|
-
if (metrics.cache.hitRate < 0.8) {
|
|
392
|
-
recommendations.push("Warm cache with frequently accessed data");
|
|
393
|
-
}
|
|
394
|
-
if (metrics.system.memoryUsage > 80) {
|
|
395
|
-
recommendations.push("Consider increasing memory allocation or cache size limits");
|
|
396
|
-
}
|
|
397
|
-
const errorRate = metrics.requests.failed / metrics.requests.total;
|
|
398
|
-
if (errorRate > 0.05) {
|
|
399
|
-
recommendations.push("Review error logs and improve error handling");
|
|
400
|
-
}
|
|
401
|
-
return recommendations;
|
|
402
|
-
}
|
|
403
|
-
/**
|
|
404
|
-
* Generate trend analysis
|
|
405
|
-
*/
|
|
406
|
-
generateTrends() {
|
|
407
|
-
if (this.historicalData.length < 2) {
|
|
408
|
-
return ["Insufficient data for trend analysis"];
|
|
409
|
-
}
|
|
410
|
-
const trends = [];
|
|
411
|
-
const recent = this.historicalData.slice(-5);
|
|
412
|
-
// Response time trend
|
|
413
|
-
const responseTimes = recent.map((d) => d.requests.averageResponseTime);
|
|
414
|
-
if (this.isIncreasing(responseTimes)) {
|
|
415
|
-
trends.push("Response times are increasing");
|
|
416
|
-
}
|
|
417
|
-
else if (this.isDecreasing(responseTimes)) {
|
|
418
|
-
trends.push("Response times are improving");
|
|
419
|
-
}
|
|
420
|
-
// Cache hit rate trend
|
|
421
|
-
const hitRates = recent.map((d) => d.cache.hitRate);
|
|
422
|
-
if (this.isIncreasing(hitRates)) {
|
|
423
|
-
trends.push("Cache performance is improving");
|
|
424
|
-
}
|
|
425
|
-
else if (this.isDecreasing(hitRates)) {
|
|
426
|
-
trends.push("Cache performance is declining");
|
|
427
|
-
}
|
|
428
|
-
return trends;
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* Check if values are increasing
|
|
432
|
-
*/
|
|
433
|
-
isIncreasing(values) {
|
|
434
|
-
for (let i = 1; i < values.length; i++) {
|
|
435
|
-
if (values[i] <= values[i - 1])
|
|
436
|
-
return false;
|
|
437
|
-
}
|
|
438
|
-
return true;
|
|
439
|
-
}
|
|
440
|
-
/**
|
|
441
|
-
* Check if values are decreasing
|
|
442
|
-
*/
|
|
443
|
-
isDecreasing(values) {
|
|
444
|
-
for (let i = 1; i < values.length; i++) {
|
|
445
|
-
if (values[i] >= values[i - 1])
|
|
446
|
-
return false;
|
|
447
|
-
}
|
|
448
|
-
return true;
|
|
449
|
-
}
|
|
450
|
-
/**
|
|
451
|
-
* Convert data to CSV format
|
|
452
|
-
*/
|
|
453
|
-
convertToCSV(data) {
|
|
454
|
-
// Simplified CSV conversion for metrics
|
|
455
|
-
const reportData = data[0];
|
|
456
|
-
const metrics = reportData?.currentMetrics;
|
|
457
|
-
const csv = [
|
|
458
|
-
"Metric,Value",
|
|
459
|
-
`Total Requests,${metrics.requests.total}`,
|
|
460
|
-
`Successful Requests,${metrics.requests.successful}`,
|
|
461
|
-
`Failed Requests,${metrics.requests.failed}`,
|
|
462
|
-
`Average Response Time,${metrics.requests.averageResponseTime}`,
|
|
463
|
-
`Cache Hit Rate,${metrics.cache.hitRate}`,
|
|
464
|
-
`Cache Size,${metrics.cache.totalSize}`,
|
|
465
|
-
`Memory Usage,${metrics.system.memoryUsage}%`,
|
|
466
|
-
`Uptime,${metrics.system.uptime}ms`,
|
|
467
|
-
];
|
|
468
|
-
return csv.join("\n");
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* Clean up old historical data
|
|
472
|
-
*/
|
|
473
|
-
cleanupOldData() {
|
|
474
|
-
const cutoff = Date.now() - this.config.retentionPeriod;
|
|
475
|
-
this.historicalData = this.historicalData.filter((data) => data.system.uptime > cutoff);
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
//# sourceMappingURL=PerformanceMonitor.js.map
|