mcp-wordpress 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +210 -182
- package/dist/cache/CacheInvalidation.d.ts +3 -3
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +119 -119
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/cache/CacheManager.d.ts +5 -0
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.js +26 -16
- package/dist/cache/CacheManager.js.map +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
- package/dist/cache/HttpCacheWrapper.js +29 -29
- package/dist/cache/HttpCacheWrapper.js.map +1 -1
- package/dist/cache/__tests__/CacheInvalidation.test.js +96 -94
- package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -1
- package/dist/cache/__tests__/CacheManager.test.js +113 -113
- package/dist/cache/__tests__/CacheManager.test.js.map +1 -1
- package/dist/cache/__tests__/CachedWordPressClient.test.js +102 -99
- package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -1
- package/dist/cache/__tests__/HttpCacheWrapper.test.js +98 -95
- package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -1
- package/dist/cache/index.d.ts +7 -7
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +4 -4
- package/dist/cache/index.js.map +1 -1
- package/dist/client/CachedWordPressClient.d.ts +4 -4
- package/dist/client/CachedWordPressClient.d.ts.map +1 -1
- package/dist/client/CachedWordPressClient.js +55 -51
- package/dist/client/CachedWordPressClient.js.map +1 -1
- package/dist/client/api.d.ts +10 -10
- package/dist/client/api.js +158 -158
- package/dist/client/api.js.map +1 -1
- package/dist/client/auth.d.ts +2 -2
- package/dist/client/auth.js +72 -72
- package/dist/client/managers/AuthenticationManager.d.ts +2 -2
- package/dist/client/managers/AuthenticationManager.js +46 -46
- package/dist/client/managers/BaseManager.d.ts +1 -1
- package/dist/client/managers/BaseManager.js +9 -9
- package/dist/client/managers/RequestManager.d.ts +5 -3
- package/dist/client/managers/RequestManager.d.ts.map +1 -1
- package/dist/client/managers/RequestManager.js +39 -19
- package/dist/client/managers/RequestManager.js.map +1 -1
- package/dist/client/managers/index.d.ts +3 -3
- package/dist/client/managers/index.js +3 -3
- package/dist/config/ConfigurationSchema.d.ts +2 -2
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +40 -40
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +2 -2
- package/dist/config/ServerConfiguration.js +35 -35
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
- package/dist/docs/DocumentationGenerator.js +296 -255
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/docs/MarkdownFormatter.d.ts +1 -1
- package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
- package/dist/docs/MarkdownFormatter.js +60 -51
- package/dist/docs/MarkdownFormatter.js.map +1 -1
- package/dist/docs/index.d.ts +3 -3
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/mcp-wordpress-1.3.0.tgz +0 -0
- package/dist/performance/MetricsCollector.d.ts +3 -3
- package/dist/performance/MetricsCollector.d.ts.map +1 -1
- package/dist/performance/MetricsCollector.js +33 -27
- package/dist/performance/MetricsCollector.js.map +1 -1
- package/dist/performance/PerformanceAnalytics.d.ts +12 -12
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
- package/dist/performance/PerformanceAnalytics.js +200 -154
- package/dist/performance/PerformanceAnalytics.js.map +1 -1
- package/dist/performance/PerformanceMonitor.d.ts +5 -5
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
- package/dist/performance/PerformanceMonitor.js +53 -52
- package/dist/performance/PerformanceMonitor.js.map +1 -1
- package/dist/performance/index.d.ts +6 -6
- package/dist/performance/index.d.ts.map +1 -1
- package/dist/performance/index.js +3 -3
- package/dist/security/InputValidator.d.ts +1 -1
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +111 -88
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/security/SecurityConfig.d.ts +5 -5
- package/dist/security/SecurityConfig.js +92 -92
- package/dist/security/SecurityConfig.js.map +1 -1
- package/dist/server/ConnectionTester.d.ts +1 -1
- package/dist/server/ConnectionTester.d.ts.map +1 -1
- package/dist/server/ConnectionTester.js +4 -4
- package/dist/server/ConnectionTester.js.map +1 -1
- package/dist/server/ToolRegistry.d.ts +2 -2
- package/dist/server/ToolRegistry.d.ts.map +1 -1
- package/dist/server/ToolRegistry.js +35 -32
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -2
- package/dist/tools/BaseToolManager.js +5 -5
- package/dist/tools/auth.d.ts +2 -2
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +32 -31
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/cache.d.ts +1 -1
- package/dist/tools/cache.d.ts.map +1 -1
- package/dist/tools/cache.js +71 -71
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/comments.d.ts +2 -2
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +79 -79
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/index.d.ts +10 -10
- package/dist/tools/index.js +10 -10
- package/dist/tools/media.d.ts +2 -2
- package/dist/tools/media.js +80 -80
- package/dist/tools/pages.d.ts +2 -2
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +75 -75
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/performance.d.ts +1 -1
- package/dist/tools/performance.d.ts.map +1 -1
- package/dist/tools/performance.js +311 -287
- package/dist/tools/performance.js.map +1 -1
- package/dist/tools/posts.d.ts +2 -2
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +94 -94
- package/dist/tools/posts.js.map +1 -1
- package/dist/tools/site.d.ts +2 -2
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +60 -60
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/taxonomies.d.ts +2 -2
- package/dist/tools/taxonomies.js +89 -89
- package/dist/tools/users.d.ts +2 -2
- package/dist/tools/users.js +68 -68
- package/dist/tools/users.js.map +1 -1
- package/dist/types/client.d.ts +13 -13
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js +12 -12
- package/dist/types/client.js.map +1 -1
- package/dist/types/index.d.ts +19 -19
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -3
- package/dist/types/mcp.d.ts +7 -7
- package/dist/types/wordpress.d.ts +21 -21
- package/dist/types/wordpress.d.ts.map +1 -1
- package/dist/utils/debug.d.ts +2 -2
- package/dist/utils/debug.js +28 -28
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.js +13 -13
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts.map +1 -1
- package/dist/utils/toolWrapper.js +5 -5
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +41 -31
- package/dist/utils/validation.js.map +1 -1
- package/docs/CACHING.md +36 -2
- package/docs/DOCKER.md +24 -18
- package/docs/PERFORMANCE_MONITORING.md +49 -1
- package/docs/SECURITY_TESTING.md +30 -1
- package/docs/api/README.md +9 -1
- package/docs/api/summary.json +1 -1
- package/docs/contract-testing.md +24 -3
- package/docs/developer/GITHUB_ACTIONS_SETUP.md +8 -2
- package/docs/developer/MAINTENANCE.md +29 -3
- package/docs/developer/MIGRATION_GUIDE.md +13 -1
- package/docs/developer/NPM_AUTH_SETUP.md +13 -2
- package/docs/developer/REFACTORING.md +31 -1
- package/docs/releases/COMMUNITY_ANNOUNCEMENT_v1.1.2.md +18 -7
- package/docs/releases/RELEASE_NOTES_v1.1.2.md +31 -5
- package/docs/user-guides/DOCKER_SETUP.md +264 -0
- package/docs/user-guides/DTX_SETUP.md +327 -0
- package/docs/user-guides/NPM_SETUP.md +109 -0
- package/docs/user-guides/NPX_SETUP.md +281 -0
- package/docs/wordpress-rest-api-authentication-troubleshooting.md +13 -2
- package/package.json +27 -8
- package/src/cache/CacheInvalidation.ts +140 -132
- package/src/cache/CacheManager.ts +40 -29
- package/src/cache/HttpCacheWrapper.ts +105 -68
- package/src/cache/__tests__/CacheInvalidation.test.ts +123 -118
- package/src/cache/__tests__/CacheManager.test.ts +156 -152
- package/src/cache/__tests__/CachedWordPressClient.test.ts +131 -116
- package/src/cache/__tests__/HttpCacheWrapper.test.ts +118 -115
- package/src/cache/index.ts +13 -13
- package/src/client/CachedWordPressClient.ts +90 -80
- package/src/client/api.ts +205 -205
- package/src/client/auth.ts +80 -80
- package/src/client/managers/AuthenticationManager.ts +61 -61
- package/src/client/managers/BaseManager.ts +11 -11
- package/src/client/managers/RequestManager.ts +79 -47
- package/src/client/managers/index.ts +3 -3
- package/src/config/ConfigurationSchema.ts +44 -44
- package/src/config/ServerConfiguration.ts +39 -39
- package/src/docs/DocumentationGenerator.ts +402 -295
- package/src/docs/MarkdownFormatter.ts +94 -69
- package/src/docs/index.ts +4 -4
- package/src/index.ts +24 -21
- package/src/performance/MetricsCollector.ts +90 -58
- package/src/performance/PerformanceAnalytics.ts +386 -262
- package/src/performance/PerformanceMonitor.ts +152 -118
- package/src/performance/index.ts +9 -9
- package/src/security/InputValidator.ts +148 -91
- package/src/security/SecurityConfig.ts +94 -94
- package/src/server/ConnectionTester.ts +21 -15
- package/src/server/ToolRegistry.ts +64 -51
- package/src/server.ts +2 -2
- package/src/tools/BaseToolManager.ts +6 -6
- package/src/tools/auth.ts +42 -37
- package/src/tools/cache.ts +85 -81
- package/src/tools/comments.ts +93 -91
- package/src/tools/index.ts +10 -10
- package/src/tools/media.ts +89 -89
- package/src/tools/pages.ts +89 -87
- package/src/tools/performance.ts +443 -352
- package/src/tools/posts.ts +109 -107
- package/src/tools/site.ts +86 -77
- package/src/tools/taxonomies.ts +102 -102
- package/src/tools/users.ts +77 -77
- package/src/types/client.ts +157 -60
- package/src/types/index.ts +49 -27
- package/src/types/mcp.ts +15 -15
- package/src/types/wordpress.ts +57 -29
- package/src/utils/debug.ts +37 -37
- package/src/utils/error.ts +47 -25
- package/src/utils/toolWrapper.ts +12 -8
- package/src/utils/validation.ts +116 -65
- package/dist/client/WordPressClient.d.ts +0 -81
- package/dist/client/WordPressClient.d.ts.map +0 -1
- package/dist/client/WordPressClient.js +0 -354
- package/dist/client/WordPressClient.js.map +0 -1
- package/dist/performance/AnomalyDetector.d.ts +0 -63
- package/dist/performance/AnomalyDetector.d.ts.map +0 -1
- package/dist/performance/AnomalyDetector.js +0 -222
- package/dist/performance/AnomalyDetector.js.map +0 -1
- package/dist/performance/BenchmarkAnalyzer.d.ts +0 -67
- package/dist/performance/BenchmarkAnalyzer.d.ts.map +0 -1
- package/dist/performance/BenchmarkAnalyzer.js +0 -301
- package/dist/performance/BenchmarkAnalyzer.js.map +0 -1
- package/dist/performance/TrendAnalyzer.d.ts +0 -69
- package/dist/performance/TrendAnalyzer.d.ts.map +0 -1
- package/dist/performance/TrendAnalyzer.js +0 -203
- package/dist/performance/TrendAnalyzer.js.map +0 -1
- package/dist/tools/BaseToolClass.d.ts +0 -76
- package/dist/tools/BaseToolClass.d.ts.map +0 -1
- package/dist/tools/BaseToolClass.js +0 -104
- package/dist/tools/BaseToolClass.js.map +0 -1
- package/dist/tools/base.d.ts +0 -37
- package/dist/tools/base.d.ts.map +0 -1
- package/dist/tools/base.js +0 -60
- package/dist/tools/base.js.map +0 -1
- package/docs/user-guides/CLAUDE_DESKTOP_SETUP.md +0 -187
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnomalyDetector.js","sourceRoot":"","sources":["../../src/performance/AnomalyDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Benchmark Analysis for Performance Metrics
|
|
3
|
-
* Compares current performance against industry standards
|
|
4
|
-
*/
|
|
5
|
-
import { PerformanceMetrics } from './PerformanceMonitor.js';
|
|
6
|
-
export interface BenchmarkComparison {
|
|
7
|
-
category: string;
|
|
8
|
-
currentValue: number;
|
|
9
|
-
benchmarkValue: number;
|
|
10
|
-
percentile: number;
|
|
11
|
-
status: 'excellent' | 'good' | 'average' | 'below_average' | 'poor';
|
|
12
|
-
improvement: number;
|
|
13
|
-
}
|
|
14
|
-
export interface BenchmarkThresholds {
|
|
15
|
-
excellent: number;
|
|
16
|
-
good: number;
|
|
17
|
-
average: number;
|
|
18
|
-
below_average: number;
|
|
19
|
-
poor: number;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Analyzes performance against industry benchmarks
|
|
23
|
-
*/
|
|
24
|
-
export declare class BenchmarkAnalyzer {
|
|
25
|
-
private benchmarks;
|
|
26
|
-
/**
|
|
27
|
-
* Compare current metrics against benchmarks
|
|
28
|
-
*/
|
|
29
|
-
compareToBenchmarks(metrics: PerformanceMetrics): BenchmarkComparison[];
|
|
30
|
-
/**
|
|
31
|
-
* Create a benchmark comparison for a specific metric
|
|
32
|
-
*/
|
|
33
|
-
private createBenchmarkComparison;
|
|
34
|
-
/**
|
|
35
|
-
* Determine performance status based on thresholds
|
|
36
|
-
*/
|
|
37
|
-
private determineStatus;
|
|
38
|
-
/**
|
|
39
|
-
* Calculate percentile ranking
|
|
40
|
-
*/
|
|
41
|
-
private calculatePercentile;
|
|
42
|
-
/**
|
|
43
|
-
* Get the benchmark value for a given status
|
|
44
|
-
*/
|
|
45
|
-
private getBenchmarkValue;
|
|
46
|
-
/**
|
|
47
|
-
* Calculate improvement needed to reach next tier
|
|
48
|
-
*/
|
|
49
|
-
private calculateImprovement;
|
|
50
|
-
/**
|
|
51
|
-
* Generate benchmark report
|
|
52
|
-
*/
|
|
53
|
-
generateBenchmarkReport(comparisons: BenchmarkComparison[]): string;
|
|
54
|
-
/**
|
|
55
|
-
* Get emoji for performance status
|
|
56
|
-
*/
|
|
57
|
-
private getStatusEmoji;
|
|
58
|
-
/**
|
|
59
|
-
* Get recommendations based on benchmark results
|
|
60
|
-
*/
|
|
61
|
-
getRecommendations(comparisons: BenchmarkComparison[]): string[];
|
|
62
|
-
/**
|
|
63
|
-
* Get specific recommendations for a metric
|
|
64
|
-
*/
|
|
65
|
-
private getMetricRecommendations;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=BenchmarkAnalyzer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BenchmarkAnalyzer.d.ts","sourceRoot":"","sources":["../../src/performance/BenchmarkAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC;IACpE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,UAAU,CAoChB;IAEF;;OAEG;IACI,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,EAAE;IAyD9E;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAsBjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAoBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;OAEG;IACI,uBAAuB,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM;IA6C1E;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACI,kBAAkB,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE;IAYvE;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAkDjC"}
|
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Benchmark Analysis for Performance Metrics
|
|
3
|
-
* Compares current performance against industry standards
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Analyzes performance against industry benchmarks
|
|
7
|
-
*/
|
|
8
|
-
export class BenchmarkAnalyzer {
|
|
9
|
-
// Performance benchmarks (based on industry standards)
|
|
10
|
-
benchmarks = {
|
|
11
|
-
responseTime: {
|
|
12
|
-
excellent: 200, // <200ms
|
|
13
|
-
good: 500, // 200-500ms
|
|
14
|
-
average: 1000, // 500ms-1s
|
|
15
|
-
below_average: 2000, // 1-2s
|
|
16
|
-
poor: Infinity // >2s
|
|
17
|
-
},
|
|
18
|
-
cacheHitRate: {
|
|
19
|
-
excellent: 0.95, // >95%
|
|
20
|
-
good: 0.85, // 85-95%
|
|
21
|
-
average: 0.70, // 70-85%
|
|
22
|
-
below_average: 0.50, // 50-70%
|
|
23
|
-
poor: 0 // <50%
|
|
24
|
-
},
|
|
25
|
-
errorRate: {
|
|
26
|
-
excellent: 0.001, // <0.1%
|
|
27
|
-
good: 0.01, // 0.1-1%
|
|
28
|
-
average: 0.02, // 1-2%
|
|
29
|
-
below_average: 0.05, // 2-5%
|
|
30
|
-
poor: Infinity // >5%
|
|
31
|
-
},
|
|
32
|
-
memoryUsage: {
|
|
33
|
-
excellent: 50, // <50%
|
|
34
|
-
good: 70, // 50-70%
|
|
35
|
-
average: 80, // 70-80%
|
|
36
|
-
below_average: 90, // 80-90%
|
|
37
|
-
poor: 100 // >90%
|
|
38
|
-
},
|
|
39
|
-
throughput: {
|
|
40
|
-
excellent: 1000, // >1000 req/s
|
|
41
|
-
good: 500, // 500-1000 req/s
|
|
42
|
-
average: 100, // 100-500 req/s
|
|
43
|
-
below_average: 50, // 50-100 req/s
|
|
44
|
-
poor: 0 // <50 req/s
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Compare current metrics against benchmarks
|
|
49
|
-
*/
|
|
50
|
-
compareToBenchmarks(metrics) {
|
|
51
|
-
const comparisons = [];
|
|
52
|
-
// Response Time
|
|
53
|
-
if (metrics.requests?.averageResponseTime !== undefined) {
|
|
54
|
-
comparisons.push(this.createBenchmarkComparison('responseTime', 'Response Time', metrics.requests.averageResponseTime, false // Lower is better
|
|
55
|
-
));
|
|
56
|
-
}
|
|
57
|
-
// Cache Hit Rate
|
|
58
|
-
if (metrics.cache?.hitRate !== undefined) {
|
|
59
|
-
comparisons.push(this.createBenchmarkComparison('cacheHitRate', 'Cache Hit Rate', metrics.cache.hitRate, true // Higher is better
|
|
60
|
-
));
|
|
61
|
-
}
|
|
62
|
-
// Error Rate
|
|
63
|
-
if (metrics.requests?.total && metrics.requests.total > 0) {
|
|
64
|
-
const errorRate = metrics.requests.failed / metrics.requests.total;
|
|
65
|
-
comparisons.push(this.createBenchmarkComparison('errorRate', 'Error Rate', errorRate, false // Lower is better
|
|
66
|
-
));
|
|
67
|
-
}
|
|
68
|
-
// Memory Usage
|
|
69
|
-
if (metrics.system?.memoryUsage !== undefined) {
|
|
70
|
-
comparisons.push(this.createBenchmarkComparison('memoryUsage', 'Memory Usage', metrics.system.memoryUsage, false // Lower is better
|
|
71
|
-
));
|
|
72
|
-
}
|
|
73
|
-
// Throughput
|
|
74
|
-
if (metrics.requests?.requestsPerSecond !== undefined) {
|
|
75
|
-
comparisons.push(this.createBenchmarkComparison('throughput', 'Throughput', metrics.requests.requestsPerSecond, true // Higher is better
|
|
76
|
-
));
|
|
77
|
-
}
|
|
78
|
-
return comparisons;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Create a benchmark comparison for a specific metric
|
|
82
|
-
*/
|
|
83
|
-
createBenchmarkComparison(metricKey, category, currentValue, higherIsBetter) {
|
|
84
|
-
const thresholds = this.benchmarks[metricKey];
|
|
85
|
-
const status = this.determineStatus(currentValue, thresholds, higherIsBetter);
|
|
86
|
-
const percentile = this.calculatePercentile(currentValue, thresholds, higherIsBetter);
|
|
87
|
-
const benchmarkValue = this.getBenchmarkValue(status, thresholds);
|
|
88
|
-
const improvement = this.calculateImprovement(currentValue, status, thresholds, higherIsBetter);
|
|
89
|
-
return {
|
|
90
|
-
category,
|
|
91
|
-
currentValue,
|
|
92
|
-
benchmarkValue,
|
|
93
|
-
percentile,
|
|
94
|
-
status,
|
|
95
|
-
improvement
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Determine performance status based on thresholds
|
|
100
|
-
*/
|
|
101
|
-
determineStatus(value, thresholds, higherIsBetter) {
|
|
102
|
-
if (higherIsBetter) {
|
|
103
|
-
if (value >= thresholds.excellent)
|
|
104
|
-
return 'excellent';
|
|
105
|
-
if (value >= thresholds.good)
|
|
106
|
-
return 'good';
|
|
107
|
-
if (value >= thresholds.average)
|
|
108
|
-
return 'average';
|
|
109
|
-
if (value >= thresholds.below_average)
|
|
110
|
-
return 'below_average';
|
|
111
|
-
return 'poor';
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
if (value <= thresholds.excellent)
|
|
115
|
-
return 'excellent';
|
|
116
|
-
if (value <= thresholds.good)
|
|
117
|
-
return 'good';
|
|
118
|
-
if (value <= thresholds.average)
|
|
119
|
-
return 'average';
|
|
120
|
-
if (value <= thresholds.below_average)
|
|
121
|
-
return 'below_average';
|
|
122
|
-
return 'poor';
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Calculate percentile ranking
|
|
127
|
-
*/
|
|
128
|
-
calculatePercentile(value, thresholds, higherIsBetter) {
|
|
129
|
-
const values = [
|
|
130
|
-
thresholds.poor,
|
|
131
|
-
thresholds.below_average,
|
|
132
|
-
thresholds.average,
|
|
133
|
-
thresholds.good,
|
|
134
|
-
thresholds.excellent
|
|
135
|
-
];
|
|
136
|
-
if (higherIsBetter) {
|
|
137
|
-
values.reverse();
|
|
138
|
-
}
|
|
139
|
-
// Find position in sorted array
|
|
140
|
-
let position = 0;
|
|
141
|
-
for (let i = 0; i < values.length; i++) {
|
|
142
|
-
if (higherIsBetter ? value >= values[i] : value <= values[i]) {
|
|
143
|
-
position = i + 1;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return Math.round((position / values.length) * 100);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Get the benchmark value for a given status
|
|
150
|
-
*/
|
|
151
|
-
getBenchmarkValue(status, thresholds) {
|
|
152
|
-
switch (status) {
|
|
153
|
-
case 'excellent': return thresholds.excellent;
|
|
154
|
-
case 'good': return thresholds.good;
|
|
155
|
-
case 'average': return thresholds.average;
|
|
156
|
-
case 'below_average': return thresholds.below_average;
|
|
157
|
-
case 'poor': return thresholds.poor === Infinity ? thresholds.below_average * 2 : thresholds.poor;
|
|
158
|
-
default: return thresholds.average;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Calculate improvement needed to reach next tier
|
|
163
|
-
*/
|
|
164
|
-
calculateImprovement(currentValue, status, thresholds, higherIsBetter) {
|
|
165
|
-
let targetValue;
|
|
166
|
-
switch (status) {
|
|
167
|
-
case 'poor':
|
|
168
|
-
targetValue = thresholds.below_average;
|
|
169
|
-
break;
|
|
170
|
-
case 'below_average':
|
|
171
|
-
targetValue = thresholds.average;
|
|
172
|
-
break;
|
|
173
|
-
case 'average':
|
|
174
|
-
targetValue = thresholds.good;
|
|
175
|
-
break;
|
|
176
|
-
case 'good':
|
|
177
|
-
targetValue = thresholds.excellent;
|
|
178
|
-
break;
|
|
179
|
-
case 'excellent':
|
|
180
|
-
return 0; // Already at top tier
|
|
181
|
-
default:
|
|
182
|
-
targetValue = thresholds.good;
|
|
183
|
-
}
|
|
184
|
-
if (higherIsBetter) {
|
|
185
|
-
return Math.max(0, targetValue - currentValue);
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
return Math.max(0, currentValue - targetValue);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Generate benchmark report
|
|
193
|
-
*/
|
|
194
|
-
generateBenchmarkReport(comparisons) {
|
|
195
|
-
if (comparisons.length === 0) {
|
|
196
|
-
return 'No benchmark data available.';
|
|
197
|
-
}
|
|
198
|
-
const report = ['📊 Performance Benchmark Analysis\n'];
|
|
199
|
-
for (const comparison of comparisons) {
|
|
200
|
-
const statusEmoji = this.getStatusEmoji(comparison.status);
|
|
201
|
-
const improvementText = comparison.improvement > 0
|
|
202
|
-
? ` (${comparison.improvement.toFixed(2)} improvement needed)`
|
|
203
|
-
: ' (optimal)';
|
|
204
|
-
report.push(`${statusEmoji} ${comparison.category}: ${comparison.status.toUpperCase()}`, ` Current: ${comparison.currentValue.toFixed(2)}`, ` Benchmark: ${comparison.benchmarkValue.toFixed(2)}`, ` Percentile: ${comparison.percentile}th${improvementText}`, '');
|
|
205
|
-
}
|
|
206
|
-
// Add overall assessment
|
|
207
|
-
const excellentCount = comparisons.filter(c => c.status === 'excellent').length;
|
|
208
|
-
const goodCount = comparisons.filter(c => c.status === 'good').length;
|
|
209
|
-
const avgCount = comparisons.filter(c => c.status === 'average').length;
|
|
210
|
-
const belowCount = comparisons.filter(c => c.status === 'below_average').length;
|
|
211
|
-
const poorCount = comparisons.filter(c => c.status === 'poor').length;
|
|
212
|
-
let overallAssessment = '';
|
|
213
|
-
if (excellentCount + goodCount >= comparisons.length * 0.8) {
|
|
214
|
-
overallAssessment = '🎉 Overall Performance: EXCELLENT - Your system is performing very well!';
|
|
215
|
-
}
|
|
216
|
-
else if (excellentCount + goodCount + avgCount >= comparisons.length * 0.7) {
|
|
217
|
-
overallAssessment = '✅ Overall Performance: GOOD - Most metrics are performing adequately.';
|
|
218
|
-
}
|
|
219
|
-
else if (belowCount + poorCount >= comparisons.length * 0.5) {
|
|
220
|
-
overallAssessment = '⚠️ Overall Performance: NEEDS ATTENTION - Several metrics require optimization.';
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
overallAssessment = '🔧 Overall Performance: AVERAGE - Room for improvement in key areas.';
|
|
224
|
-
}
|
|
225
|
-
report.push(overallAssessment);
|
|
226
|
-
return report.join('\n');
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Get emoji for performance status
|
|
230
|
-
*/
|
|
231
|
-
getStatusEmoji(status) {
|
|
232
|
-
switch (status) {
|
|
233
|
-
case 'excellent': return '🟢';
|
|
234
|
-
case 'good': return '🔵';
|
|
235
|
-
case 'average': return '🟡';
|
|
236
|
-
case 'below_average': return '🟠';
|
|
237
|
-
case 'poor': return '🔴';
|
|
238
|
-
default: return '⚪';
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Get recommendations based on benchmark results
|
|
243
|
-
*/
|
|
244
|
-
getRecommendations(comparisons) {
|
|
245
|
-
const recommendations = [];
|
|
246
|
-
for (const comparison of comparisons) {
|
|
247
|
-
if (comparison.status === 'poor' || comparison.status === 'below_average') {
|
|
248
|
-
recommendations.push(...this.getMetricRecommendations(comparison));
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
return recommendations;
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Get specific recommendations for a metric
|
|
255
|
-
*/
|
|
256
|
-
getMetricRecommendations(comparison) {
|
|
257
|
-
const category = comparison.category.toLowerCase();
|
|
258
|
-
if (category.includes('response time')) {
|
|
259
|
-
return [
|
|
260
|
-
'Optimize database queries and add proper indexing',
|
|
261
|
-
'Implement or improve caching strategies',
|
|
262
|
-
'Consider using a CDN for static assets',
|
|
263
|
-
'Optimize WordPress plugins and themes'
|
|
264
|
-
];
|
|
265
|
-
}
|
|
266
|
-
if (category.includes('cache hit rate')) {
|
|
267
|
-
return [
|
|
268
|
-
'Review cache configuration and increase cache size',
|
|
269
|
-
'Implement better cache warming strategies',
|
|
270
|
-
'Optimize cache key design and expiration policies',
|
|
271
|
-
'Consider implementing multiple cache layers'
|
|
272
|
-
];
|
|
273
|
-
}
|
|
274
|
-
if (category.includes('error rate')) {
|
|
275
|
-
return [
|
|
276
|
-
'Review application logs and fix recurring errors',
|
|
277
|
-
'Implement better error handling and recovery',
|
|
278
|
-
'Monitor external service dependencies',
|
|
279
|
-
'Add health checks and monitoring alerts'
|
|
280
|
-
];
|
|
281
|
-
}
|
|
282
|
-
if (category.includes('memory usage')) {
|
|
283
|
-
return [
|
|
284
|
-
'Identify and fix memory leaks',
|
|
285
|
-
'Optimize data structures and algorithms',
|
|
286
|
-
'Implement proper garbage collection strategies',
|
|
287
|
-
'Consider increasing available memory resources'
|
|
288
|
-
];
|
|
289
|
-
}
|
|
290
|
-
if (category.includes('throughput')) {
|
|
291
|
-
return [
|
|
292
|
-
'Scale horizontally with load balancing',
|
|
293
|
-
'Optimize application performance and reduce overhead',
|
|
294
|
-
'Implement connection pooling and async processing',
|
|
295
|
-
'Consider upgrading hardware resources'
|
|
296
|
-
];
|
|
297
|
-
}
|
|
298
|
-
return ['Review and optimize this metric based on specific requirements'];
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
//# sourceMappingURL=BenchmarkAnalyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BenchmarkAnalyzer.js","sourceRoot":"","sources":["../../src/performance/BenchmarkAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Trend Analysis for Performance Metrics
|
|
3
|
-
* Analyzes performance trends and makes predictions
|
|
4
|
-
*/
|
|
5
|
-
import { PerformanceMetrics } from './PerformanceMonitor.js';
|
|
6
|
-
export interface PerformanceTrend {
|
|
7
|
-
metric: string;
|
|
8
|
-
direction: 'improving' | 'declining' | 'stable';
|
|
9
|
-
changeRate: number;
|
|
10
|
-
confidence: number;
|
|
11
|
-
prediction: {
|
|
12
|
-
nextValue: number;
|
|
13
|
-
timeframe: number;
|
|
14
|
-
confidence: number;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
export interface TrendAnalysisConfig {
|
|
18
|
-
enablePredictiveAnalysis: boolean;
|
|
19
|
-
lookbackPeriod: number;
|
|
20
|
-
predictionTimeframe: number;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Analyzes performance trends using linear regression and statistical analysis
|
|
24
|
-
*/
|
|
25
|
-
export declare class TrendAnalyzer {
|
|
26
|
-
private config;
|
|
27
|
-
constructor(config: TrendAnalysisConfig);
|
|
28
|
-
/**
|
|
29
|
-
* Analyze trends in historical performance data
|
|
30
|
-
*/
|
|
31
|
-
analyzeTrends(historicalData: PerformanceMetrics[]): PerformanceTrend[];
|
|
32
|
-
/**
|
|
33
|
-
* Analyze trend for a specific metric
|
|
34
|
-
*/
|
|
35
|
-
private analyzeMetricTrend;
|
|
36
|
-
/**
|
|
37
|
-
* Extract time series data for a specific metric
|
|
38
|
-
*/
|
|
39
|
-
private extractMetricTimeSeries;
|
|
40
|
-
/**
|
|
41
|
-
* Extract metric value from performance metrics object
|
|
42
|
-
*/
|
|
43
|
-
private extractMetricValue;
|
|
44
|
-
/**
|
|
45
|
-
* Calculate linear regression for trend analysis
|
|
46
|
-
*/
|
|
47
|
-
private calculateLinearRegression;
|
|
48
|
-
/**
|
|
49
|
-
* Determine trend direction based on slope and metric type
|
|
50
|
-
*/
|
|
51
|
-
private determineTrendDirection;
|
|
52
|
-
/**
|
|
53
|
-
* Calculate percentage change rate over the analysis period
|
|
54
|
-
*/
|
|
55
|
-
private calculateChangeRate;
|
|
56
|
-
/**
|
|
57
|
-
* Calculate confidence level based on R-squared and data consistency
|
|
58
|
-
*/
|
|
59
|
-
private calculateConfidence;
|
|
60
|
-
/**
|
|
61
|
-
* Make prediction for future metric value
|
|
62
|
-
*/
|
|
63
|
-
private makePrediction;
|
|
64
|
-
/**
|
|
65
|
-
* Generate trend summary for reporting
|
|
66
|
-
*/
|
|
67
|
-
generateTrendSummary(trends: PerformanceTrend[]): string;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=TrendAnalyzer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TrendAnalyzer.d.ts","sourceRoot":"","sources":["../../src/performance/TrendAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,wBAAwB,EAAE,OAAO,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIvC;;OAEG;IACI,aAAa,CAAC,cAAc,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,EAAE;IAwB9E;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAyBjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACI,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM;CAehE"}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Trend Analysis for Performance Metrics
|
|
3
|
-
* Analyzes performance trends and makes predictions
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Analyzes performance trends using linear regression and statistical analysis
|
|
7
|
-
*/
|
|
8
|
-
export class TrendAnalyzer {
|
|
9
|
-
config;
|
|
10
|
-
constructor(config) {
|
|
11
|
-
this.config = config;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Analyze trends in historical performance data
|
|
15
|
-
*/
|
|
16
|
-
analyzeTrends(historicalData) {
|
|
17
|
-
if (historicalData.length < 3) {
|
|
18
|
-
return []; // Need sufficient data for trend analysis
|
|
19
|
-
}
|
|
20
|
-
const trends = [];
|
|
21
|
-
const metricsToAnalyze = [
|
|
22
|
-
'responseTime',
|
|
23
|
-
'memoryUsage',
|
|
24
|
-
'cacheHitRate',
|
|
25
|
-
'errorRate',
|
|
26
|
-
'throughput'
|
|
27
|
-
];
|
|
28
|
-
for (const metricName of metricsToAnalyze) {
|
|
29
|
-
const trend = this.analyzeMetricTrend(metricName, historicalData);
|
|
30
|
-
if (trend) {
|
|
31
|
-
trends.push(trend);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return trends;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Analyze trend for a specific metric
|
|
38
|
-
*/
|
|
39
|
-
analyzeMetricTrend(metricName, historicalData) {
|
|
40
|
-
const dataPoints = this.extractMetricTimeSeries(metricName, historicalData);
|
|
41
|
-
if (dataPoints.length < 3)
|
|
42
|
-
return null;
|
|
43
|
-
const regression = this.calculateLinearRegression(dataPoints);
|
|
44
|
-
const direction = this.determineTrendDirection(regression.slope, metricName);
|
|
45
|
-
const changeRate = this.calculateChangeRate(dataPoints);
|
|
46
|
-
const confidence = this.calculateConfidence(dataPoints, regression);
|
|
47
|
-
let prediction = null;
|
|
48
|
-
if (this.config.enablePredictiveAnalysis) {
|
|
49
|
-
prediction = this.makePrediction(regression, dataPoints, this.config.predictionTimeframe);
|
|
50
|
-
}
|
|
51
|
-
return {
|
|
52
|
-
metric: metricName,
|
|
53
|
-
direction,
|
|
54
|
-
changeRate,
|
|
55
|
-
confidence,
|
|
56
|
-
prediction: prediction || {
|
|
57
|
-
nextValue: 0,
|
|
58
|
-
timeframe: 0,
|
|
59
|
-
confidence: 0
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Extract time series data for a specific metric
|
|
65
|
-
*/
|
|
66
|
-
extractMetricTimeSeries(metricName, data) {
|
|
67
|
-
return data
|
|
68
|
-
.map((metrics, index) => {
|
|
69
|
-
const value = this.extractMetricValue(metricName, metrics);
|
|
70
|
-
// Use index-based timestamp if timestamp not available
|
|
71
|
-
const timestamp = Date.now() - (data.length - index) * 60000; // 1 minute intervals
|
|
72
|
-
return value !== null ? { timestamp, value } : null;
|
|
73
|
-
})
|
|
74
|
-
.filter(point => point !== null);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Extract metric value from performance metrics object
|
|
78
|
-
*/
|
|
79
|
-
extractMetricValue(metricName, metrics) {
|
|
80
|
-
switch (metricName) {
|
|
81
|
-
case 'responseTime':
|
|
82
|
-
return metrics.requests?.averageResponseTime || null;
|
|
83
|
-
case 'memoryUsage':
|
|
84
|
-
return metrics.system?.memoryUsage || null;
|
|
85
|
-
case 'cacheHitRate':
|
|
86
|
-
return metrics.cache?.hitRate || null;
|
|
87
|
-
case 'errorRate':
|
|
88
|
-
return metrics.requests?.total > 0
|
|
89
|
-
? metrics.requests.failed / metrics.requests.total
|
|
90
|
-
: null;
|
|
91
|
-
case 'throughput':
|
|
92
|
-
return metrics.requests?.requestsPerSecond || null;
|
|
93
|
-
default:
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Calculate linear regression for trend analysis
|
|
99
|
-
*/
|
|
100
|
-
calculateLinearRegression(dataPoints) {
|
|
101
|
-
const n = dataPoints.length;
|
|
102
|
-
const sumX = dataPoints.reduce((sum, point) => sum + point.timestamp, 0);
|
|
103
|
-
const sumY = dataPoints.reduce((sum, point) => sum + point.value, 0);
|
|
104
|
-
const sumXY = dataPoints.reduce((sum, point) => sum + point.timestamp * point.value, 0);
|
|
105
|
-
const sumXX = dataPoints.reduce((sum, point) => sum + point.timestamp * point.timestamp, 0);
|
|
106
|
-
const sumYY = dataPoints.reduce((sum, point) => sum + point.value * point.value, 0);
|
|
107
|
-
const slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
|
|
108
|
-
const intercept = (sumY - slope * sumX) / n;
|
|
109
|
-
// Calculate R-squared
|
|
110
|
-
const meanY = sumY / n;
|
|
111
|
-
const ssTotal = dataPoints.reduce((sum, point) => sum + Math.pow(point.value - meanY, 2), 0);
|
|
112
|
-
const ssResidual = dataPoints.reduce((sum, point) => {
|
|
113
|
-
const predicted = slope * point.timestamp + intercept;
|
|
114
|
-
return sum + Math.pow(point.value - predicted, 2);
|
|
115
|
-
}, 0);
|
|
116
|
-
const rSquared = 1 - (ssResidual / ssTotal);
|
|
117
|
-
return { slope, intercept, rSquared };
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Determine trend direction based on slope and metric type
|
|
121
|
-
*/
|
|
122
|
-
determineTrendDirection(slope, metricName) {
|
|
123
|
-
const isPositiveGood = ['cacheHitRate', 'throughput'].includes(metricName);
|
|
124
|
-
const threshold = 0.001; // Minimal slope threshold
|
|
125
|
-
if (Math.abs(slope) < threshold) {
|
|
126
|
-
return 'stable';
|
|
127
|
-
}
|
|
128
|
-
if (isPositiveGood) {
|
|
129
|
-
return slope > 0 ? 'improving' : 'declining';
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
return slope > 0 ? 'declining' : 'improving';
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Calculate percentage change rate over the analysis period
|
|
137
|
-
*/
|
|
138
|
-
calculateChangeRate(dataPoints) {
|
|
139
|
-
if (dataPoints.length < 2)
|
|
140
|
-
return 0;
|
|
141
|
-
const firstValue = dataPoints[0].value;
|
|
142
|
-
const lastValue = dataPoints[dataPoints.length - 1].value;
|
|
143
|
-
if (firstValue === 0)
|
|
144
|
-
return 0;
|
|
145
|
-
return ((lastValue - firstValue) / firstValue) * 100;
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Calculate confidence level based on R-squared and data consistency
|
|
149
|
-
*/
|
|
150
|
-
calculateConfidence(dataPoints, regression) {
|
|
151
|
-
// Base confidence on R-squared value
|
|
152
|
-
let confidence = Math.max(0, Math.min(1, regression.rSquared));
|
|
153
|
-
// Adjust based on data points count
|
|
154
|
-
if (dataPoints.length < 5) {
|
|
155
|
-
confidence *= 0.7; // Reduce confidence for small datasets
|
|
156
|
-
}
|
|
157
|
-
else if (dataPoints.length > 20) {
|
|
158
|
-
confidence *= 1.1; // Slight boost for larger datasets
|
|
159
|
-
confidence = Math.min(1, confidence);
|
|
160
|
-
}
|
|
161
|
-
// Adjust based on data variance
|
|
162
|
-
const values = dataPoints.map(p => p.value);
|
|
163
|
-
const mean = values.reduce((sum, val) => sum + val, 0) / values.length;
|
|
164
|
-
const variance = values.reduce((sum, val) => sum + Math.pow(val - mean, 2), 0) / values.length;
|
|
165
|
-
const coefficientOfVariation = Math.sqrt(variance) / mean;
|
|
166
|
-
if (coefficientOfVariation > 0.5) {
|
|
167
|
-
confidence *= 0.8; // Reduce confidence for highly variable data
|
|
168
|
-
}
|
|
169
|
-
return Math.max(0, Math.min(1, confidence));
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Make prediction for future metric value
|
|
173
|
-
*/
|
|
174
|
-
makePrediction(regression, dataPoints, timeframe) {
|
|
175
|
-
const lastTimestamp = dataPoints[dataPoints.length - 1].timestamp;
|
|
176
|
-
const futureTimestamp = lastTimestamp + timeframe;
|
|
177
|
-
const predictedValue = regression.slope * futureTimestamp + regression.intercept;
|
|
178
|
-
// Calculate prediction confidence (decreases with distance)
|
|
179
|
-
const timeFactor = Math.exp(-timeframe / (7 * 24 * 60 * 60 * 1000)); // Decay over week
|
|
180
|
-
const confidence = Math.max(0.1, timeFactor);
|
|
181
|
-
return {
|
|
182
|
-
nextValue: Math.max(0, predictedValue), // Ensure non-negative predictions
|
|
183
|
-
timeframe,
|
|
184
|
-
confidence
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Generate trend summary for reporting
|
|
189
|
-
*/
|
|
190
|
-
generateTrendSummary(trends) {
|
|
191
|
-
if (trends.length === 0) {
|
|
192
|
-
return 'Insufficient data for trend analysis.';
|
|
193
|
-
}
|
|
194
|
-
const summary = trends.map(trend => {
|
|
195
|
-
const direction = trend.direction === 'improving' ? '📈' :
|
|
196
|
-
trend.direction === 'declining' ? '📉' : '➡️';
|
|
197
|
-
const confidence = Math.round(trend.confidence * 100);
|
|
198
|
-
return `${direction} ${trend.metric}: ${trend.direction} (${trend.changeRate.toFixed(1)}% change, ${confidence}% confidence)`;
|
|
199
|
-
}).join('\n');
|
|
200
|
-
return `Performance Trends:\n${summary}`;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=TrendAnalyzer.js.map
|