mcp-wordpress 2.4.2 → 2.5.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.
- package/README.md +124 -54
- package/bin/status.js +1 -1
- package/dist/cache/CacheInvalidation.d.ts +3 -1
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +10 -4
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/cache/CacheManager.d.ts +3 -2
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.js +11 -3
- package/dist/cache/CacheManager.js.map +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts +7 -6
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
- package/dist/cache/HttpCacheWrapper.js +8 -5
- package/dist/cache/HttpCacheWrapper.js.map +1 -1
- package/dist/cache/index.d.ts +3 -3
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +1 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/client/CachedWordPressClient.d.ts +23 -9
- package/dist/client/CachedWordPressClient.d.ts.map +1 -1
- package/dist/client/CachedWordPressClient.js +4 -1
- package/dist/client/CachedWordPressClient.js.map +1 -1
- package/dist/client/MockWordPressClient.d.ts +2 -1
- package/dist/client/MockWordPressClient.d.ts.map +1 -1
- package/dist/client/MockWordPressClient.js +3 -1
- package/dist/client/MockWordPressClient.js.map +1 -1
- package/dist/client/api.d.ts +17 -13
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +135 -30
- package/dist/client/api.js.map +1 -1
- package/dist/client/auth.d.ts.map +1 -1
- package/dist/client/auth.js +2 -3
- package/dist/client/auth.js.map +1 -1
- package/dist/client/managers/AuthenticationManager.d.ts +55 -2
- package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
- package/dist/client/managers/AuthenticationManager.js +269 -71
- package/dist/client/managers/AuthenticationManager.js.map +1 -1
- package/dist/client/managers/BaseManager.d.ts +3 -3
- package/dist/client/managers/BaseManager.d.ts.map +1 -1
- package/dist/client/managers/BaseManager.js +11 -5
- package/dist/client/managers/BaseManager.js.map +1 -1
- package/dist/client/managers/RequestManager.d.ts +2 -2
- package/dist/client/managers/RequestManager.d.ts.map +1 -1
- package/dist/client/managers/RequestManager.js +25 -12
- package/dist/client/managers/RequestManager.js.map +1 -1
- package/dist/config/Config.d.ts +155 -0
- package/dist/config/Config.d.ts.map +1 -0
- package/dist/config/Config.js +215 -0
- package/dist/config/Config.js.map +1 -0
- package/dist/config/ConfigurationSchema.d.ts +21 -21
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +19 -2
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +2 -1
- package/dist/config/ServerConfiguration.d.ts.map +1 -1
- package/dist/config/ServerConfiguration.js +73 -43
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/DocumentationGenerator.d.ts +9 -8
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
- package/dist/docs/DocumentationGenerator.js +10 -7
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
- package/dist/docs/MarkdownFormatter.js +3 -2
- package/dist/docs/MarkdownFormatter.js.map +1 -1
- package/dist/dxt-entry.js +15 -14
- package/dist/dxt-entry.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -21
- package/dist/index.js.map +1 -1
- package/dist/performance/MetricsCollector.d.ts +13 -7
- package/dist/performance/MetricsCollector.d.ts.map +1 -1
- package/dist/performance/MetricsCollector.js +69 -27
- package/dist/performance/MetricsCollector.js.map +1 -1
- package/dist/performance/PerformanceAnalytics.d.ts +8 -2
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
- package/dist/performance/PerformanceAnalytics.js +17 -47
- package/dist/performance/PerformanceAnalytics.js.map +1 -1
- package/dist/performance/PerformanceMonitor.d.ts +2 -1
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
- package/dist/performance/PerformanceMonitor.js +12 -13
- package/dist/performance/PerformanceMonitor.js.map +1 -1
- package/dist/performance/index.d.ts +2 -2
- package/dist/performance/index.d.ts.map +1 -1
- package/dist/security/AISecurityScanner.d.ts +1 -0
- package/dist/security/AISecurityScanner.d.ts.map +1 -1
- package/dist/security/AISecurityScanner.js +22 -12
- package/dist/security/AISecurityScanner.js.map +1 -1
- package/dist/security/AutomatedRemediation.d.ts +4 -3
- package/dist/security/AutomatedRemediation.d.ts.map +1 -1
- package/dist/security/AutomatedRemediation.js +46 -15
- package/dist/security/AutomatedRemediation.js.map +1 -1
- package/dist/security/InputValidator.d.ts +13 -9
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +4 -2
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/security/SecurityCIPipeline.d.ts +1 -1
- package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
- package/dist/security/SecurityCIPipeline.js +38 -29
- package/dist/security/SecurityCIPipeline.js.map +1 -1
- package/dist/security/SecurityConfig.d.ts +3 -3
- package/dist/security/SecurityConfig.d.ts.map +1 -1
- package/dist/security/SecurityConfig.js +13 -9
- package/dist/security/SecurityConfig.js.map +1 -1
- package/dist/security/SecurityConfigManager.d.ts +2 -2
- package/dist/security/SecurityConfigManager.d.ts.map +1 -1
- package/dist/security/SecurityConfigManager.js +20 -15
- package/dist/security/SecurityConfigManager.js.map +1 -1
- package/dist/security/SecurityMonitoring.d.ts +2 -2
- package/dist/security/SecurityMonitoring.d.ts.map +1 -1
- package/dist/security/SecurityMonitoring.js +19 -17
- package/dist/security/SecurityMonitoring.js.map +1 -1
- package/dist/security/SecurityReviewer.d.ts.map +1 -1
- package/dist/security/SecurityReviewer.js +10 -7
- package/dist/security/SecurityReviewer.js.map +1 -1
- package/dist/security/index.d.ts +24 -23
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +52 -23
- package/dist/security/index.js.map +1 -1
- package/dist/server/ConnectionTester.d.ts +12 -4
- package/dist/server/ConnectionTester.d.ts.map +1 -1
- package/dist/server/ConnectionTester.js +96 -22
- 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 +10 -5
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/src/cache/CacheInvalidation.d.ts +120 -0
- package/dist/src/cache/CacheInvalidation.d.ts.map +1 -0
- package/dist/src/cache/CacheInvalidation.js +355 -0
- package/dist/src/cache/CacheInvalidation.js.map +1 -0
- package/dist/src/cache/CacheManager.d.ts +149 -0
- package/dist/src/cache/CacheManager.d.ts.map +1 -0
- package/dist/src/cache/CacheManager.js +326 -0
- package/dist/src/cache/CacheManager.js.map +1 -0
- package/dist/src/cache/HttpCacheWrapper.d.ts +122 -0
- package/dist/src/cache/HttpCacheWrapper.d.ts.map +1 -0
- package/dist/src/cache/HttpCacheWrapper.js +283 -0
- package/dist/src/cache/HttpCacheWrapper.js.map +1 -0
- package/dist/src/cache/index.d.ts +12 -0
- package/dist/src/cache/index.d.ts.map +1 -0
- package/dist/src/cache/index.js +9 -0
- package/dist/src/cache/index.js.map +1 -0
- package/dist/src/client/CachedWordPressClient.d.ts +174 -0
- package/dist/src/client/CachedWordPressClient.d.ts.map +1 -0
- package/dist/src/client/CachedWordPressClient.js +345 -0
- package/dist/src/client/CachedWordPressClient.js.map +1 -0
- package/dist/src/client/MockWordPressClient.d.ts +56 -0
- package/dist/src/client/MockWordPressClient.d.ts.map +1 -0
- package/dist/src/client/MockWordPressClient.js +371 -0
- package/dist/src/client/MockWordPressClient.js.map +1 -0
- package/dist/src/client/api.d.ts +235 -0
- package/dist/src/client/api.d.ts.map +1 -0
- package/dist/src/client/api.js +896 -0
- package/dist/src/client/api.js.map +1 -0
- package/dist/src/client/auth.d.ts +121 -0
- package/dist/src/client/auth.d.ts.map +1 -0
- package/dist/src/client/auth.js +429 -0
- package/dist/src/client/auth.js.map +1 -0
- package/dist/src/client/managers/AuthenticationManager.d.ts +92 -0
- package/dist/src/client/managers/AuthenticationManager.d.ts.map +1 -0
- package/dist/src/client/managers/AuthenticationManager.js +369 -0
- package/dist/src/client/managers/AuthenticationManager.js.map +1 -0
- package/dist/src/client/managers/BaseManager.d.ts +22 -0
- package/dist/src/client/managers/BaseManager.d.ts.map +1 -0
- package/dist/src/client/managers/BaseManager.js +53 -0
- package/dist/src/client/managers/BaseManager.js.map +1 -0
- package/dist/src/client/managers/RequestManager.d.ts +47 -0
- package/dist/src/client/managers/RequestManager.d.ts.map +1 -0
- package/dist/src/client/managers/RequestManager.js +193 -0
- package/dist/src/client/managers/RequestManager.js.map +1 -0
- package/dist/src/client/managers/index.d.ts +8 -0
- package/dist/src/client/managers/index.d.ts.map +1 -0
- package/dist/src/client/managers/index.js +8 -0
- package/dist/src/client/managers/index.js.map +1 -0
- package/dist/src/config/Config.d.ts +155 -0
- package/dist/src/config/Config.d.ts.map +1 -0
- package/dist/src/config/Config.js +215 -0
- package/dist/src/config/Config.js.map +1 -0
- package/dist/src/config/ConfigurationSchema.d.ts +281 -0
- package/dist/src/config/ConfigurationSchema.d.ts.map +1 -0
- package/dist/src/config/ConfigurationSchema.js +205 -0
- package/dist/src/config/ConfigurationSchema.js.map +1 -0
- package/dist/src/config/ServerConfiguration.d.ts +47 -0
- package/dist/src/config/ServerConfiguration.d.ts.map +1 -0
- package/dist/src/config/ServerConfiguration.js +255 -0
- package/dist/src/config/ServerConfiguration.js.map +1 -0
- package/dist/src/docs/DocumentationGenerator.d.ts +185 -0
- package/dist/src/docs/DocumentationGenerator.d.ts.map +1 -0
- package/dist/src/docs/DocumentationGenerator.js +777 -0
- package/dist/src/docs/DocumentationGenerator.js.map +1 -0
- package/dist/src/docs/MarkdownFormatter.d.ts +84 -0
- package/dist/src/docs/MarkdownFormatter.d.ts.map +1 -0
- package/dist/src/docs/MarkdownFormatter.js +458 -0
- package/dist/src/docs/MarkdownFormatter.js.map +1 -0
- package/dist/src/docs/index.d.ts +8 -0
- package/dist/src/docs/index.d.ts.map +1 -0
- package/dist/src/docs/index.js +7 -0
- package/dist/src/docs/index.js.map +1 -0
- package/dist/src/dxt-entry.d.ts +6 -0
- package/dist/src/dxt-entry.d.ts.map +1 -0
- package/dist/src/dxt-entry.js +39 -0
- package/dist/src/dxt-entry.js.map +1 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +143 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/performance/MetricsCollector.d.ts +145 -0
- package/dist/src/performance/MetricsCollector.d.ts.map +1 -0
- package/dist/src/performance/MetricsCollector.js +368 -0
- package/dist/src/performance/MetricsCollector.js.map +1 -0
- package/dist/src/performance/PerformanceAnalytics.d.ts +168 -0
- package/dist/src/performance/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/src/performance/PerformanceAnalytics.js +570 -0
- package/dist/src/performance/PerformanceAnalytics.js.map +1 -0
- package/dist/src/performance/PerformanceMonitor.d.ts +203 -0
- package/dist/src/performance/PerformanceMonitor.d.ts.map +1 -0
- package/dist/src/performance/PerformanceMonitor.js +478 -0
- package/dist/src/performance/PerformanceMonitor.js.map +1 -0
- package/dist/src/performance/index.d.ts +11 -0
- package/dist/src/performance/index.d.ts.map +1 -0
- package/dist/src/performance/index.js +8 -0
- package/dist/src/performance/index.js.map +1 -0
- package/dist/src/security/AISecurityScanner.d.ts +176 -0
- package/dist/src/security/AISecurityScanner.d.ts.map +1 -0
- package/dist/src/security/AISecurityScanner.js +655 -0
- package/dist/src/security/AISecurityScanner.js.map +1 -0
- package/dist/src/security/AutomatedRemediation.d.ts +146 -0
- package/dist/src/security/AutomatedRemediation.d.ts.map +1 -0
- package/dist/src/security/AutomatedRemediation.js +566 -0
- package/dist/src/security/AutomatedRemediation.js.map +1 -0
- package/dist/src/security/InputValidator.d.ts +219 -0
- package/dist/src/security/InputValidator.d.ts.map +1 -0
- package/dist/src/security/InputValidator.js +295 -0
- package/dist/src/security/InputValidator.js.map +1 -0
- package/dist/src/security/SecurityCIPipeline.d.ts +213 -0
- package/dist/src/security/SecurityCIPipeline.d.ts.map +1 -0
- package/dist/src/security/SecurityCIPipeline.js +693 -0
- package/dist/src/security/SecurityCIPipeline.js.map +1 -0
- package/dist/src/security/SecurityConfig.d.ts +129 -0
- package/dist/src/security/SecurityConfig.d.ts.map +1 -0
- package/dist/src/security/SecurityConfig.js +266 -0
- package/dist/src/security/SecurityConfig.js.map +1 -0
- package/dist/src/security/SecurityConfigManager.d.ts +294 -0
- package/dist/src/security/SecurityConfigManager.d.ts.map +1 -0
- package/dist/src/security/SecurityConfigManager.js +558 -0
- package/dist/src/security/SecurityConfigManager.js.map +1 -0
- package/dist/src/security/SecurityMonitoring.d.ts +245 -0
- package/dist/src/security/SecurityMonitoring.d.ts.map +1 -0
- package/dist/src/security/SecurityMonitoring.js +598 -0
- package/dist/src/security/SecurityMonitoring.js.map +1 -0
- package/dist/src/security/SecurityReviewer.d.ts +168 -0
- package/dist/src/security/SecurityReviewer.d.ts.map +1 -0
- package/dist/src/security/SecurityReviewer.js +686 -0
- package/dist/src/security/SecurityReviewer.js.map +1 -0
- package/dist/src/security/index.d.ts +183 -0
- package/dist/src/security/index.d.ts.map +1 -0
- package/dist/src/security/index.js +218 -0
- package/dist/src/security/index.js.map +1 -0
- package/dist/src/server/ConnectionTester.d.ts +32 -0
- package/dist/src/server/ConnectionTester.d.ts.map +1 -0
- package/dist/src/server/ConnectionTester.js +135 -0
- package/dist/src/server/ConnectionTester.js.map +1 -0
- package/dist/src/server/ToolRegistry.d.ts +50 -0
- package/dist/src/server/ToolRegistry.d.ts.map +1 -0
- package/dist/src/server/ToolRegistry.js +219 -0
- package/dist/src/server/ToolRegistry.js.map +1 -0
- package/dist/src/server.d.ts +7 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +7 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/tools/BaseToolManager.d.ts +62 -0
- package/dist/src/tools/BaseToolManager.d.ts.map +1 -0
- package/dist/src/tools/BaseToolManager.js +195 -0
- package/dist/src/tools/BaseToolManager.js.map +1 -0
- package/dist/src/tools/auth.d.ts +50 -0
- package/dist/src/tools/auth.d.ts.map +1 -0
- package/dist/src/tools/auth.js +133 -0
- package/dist/src/tools/auth.js.map +1 -0
- package/dist/src/tools/cache.d.ts +260 -0
- package/dist/src/tools/cache.d.ts.map +1 -0
- package/dist/src/tools/cache.js +232 -0
- package/dist/src/tools/cache.js.map +1 -0
- package/dist/src/tools/comments.d.ts +33 -0
- package/dist/src/tools/comments.d.ts.map +1 -0
- package/dist/src/tools/comments.js +235 -0
- package/dist/src/tools/comments.js.map +1 -0
- package/dist/src/tools/index.d.ts +11 -0
- package/dist/src/tools/index.d.ts.map +1 -0
- package/dist/src/tools/index.js +11 -0
- package/dist/src/tools/index.js.map +1 -0
- package/dist/src/tools/media.d.ts +70 -0
- package/dist/src/tools/media.d.ts.map +1 -0
- package/dist/src/tools/media.js +248 -0
- package/dist/src/tools/media.js.map +1 -0
- package/dist/src/tools/pages.d.ts +32 -0
- package/dist/src/tools/pages.d.ts.map +1 -0
- package/dist/src/tools/pages.js +215 -0
- package/dist/src/tools/pages.js.map +1 -0
- package/dist/src/tools/performance.d.ts +73 -0
- package/dist/src/tools/performance.d.ts.map +1 -0
- package/dist/src/tools/performance.js +922 -0
- package/dist/src/tools/performance.js.map +1 -0
- package/dist/src/tools/posts/PostHandlers.d.ts +46 -0
- package/dist/src/tools/posts/PostHandlers.d.ts.map +1 -0
- package/dist/src/tools/posts/PostHandlers.js +400 -0
- package/dist/src/tools/posts/PostHandlers.js.map +1 -0
- package/dist/src/tools/posts/PostToolDefinitions.d.ts +37 -0
- package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +1 -0
- package/dist/src/tools/posts/PostToolDefinitions.js +236 -0
- package/dist/src/tools/posts/PostToolDefinitions.js.map +1 -0
- package/dist/src/tools/posts/index.d.ts +138 -0
- package/dist/src/tools/posts/index.d.ts.map +1 -0
- package/dist/src/tools/posts/index.js +163 -0
- package/dist/src/tools/posts/index.js.map +1 -0
- package/dist/src/tools/posts.d.ts +15 -0
- package/dist/src/tools/posts.d.ts.map +1 -0
- package/dist/src/tools/posts.js +16 -0
- package/dist/src/tools/posts.js.map +1 -0
- package/dist/src/tools/site.d.ts +32 -0
- package/dist/src/tools/site.d.ts.map +1 -0
- package/dist/src/tools/site.js +234 -0
- package/dist/src/tools/site.js.map +1 -0
- package/dist/src/tools/taxonomies.d.ts +36 -0
- package/dist/src/tools/taxonomies.d.ts.map +1 -0
- package/dist/src/tools/taxonomies.js +286 -0
- package/dist/src/tools/taxonomies.js.map +1 -0
- package/dist/src/tools/users.d.ts +33 -0
- package/dist/src/tools/users.d.ts.map +1 -0
- package/dist/src/tools/users.js +308 -0
- package/dist/src/tools/users.js.map +1 -0
- package/dist/src/types/client.d.ts +223 -0
- package/dist/src/types/client.d.ts.map +1 -0
- package/dist/src/types/client.js +97 -0
- package/dist/src/types/client.js.map +1 -0
- package/dist/src/types/enhanced.d.ts +237 -0
- package/dist/src/types/enhanced.d.ts.map +1 -0
- package/dist/src/types/enhanced.js +49 -0
- package/dist/src/types/enhanced.js.map +1 -0
- package/dist/src/types/index.d.ts +160 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +14 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/mcp.d.ts +178 -0
- package/dist/src/types/mcp.d.ts.map +1 -0
- package/dist/src/types/mcp.js +7 -0
- package/dist/src/types/mcp.js.map +1 -0
- package/dist/src/types/requests.d.ts +322 -0
- package/dist/src/types/requests.d.ts.map +1 -0
- package/dist/src/types/requests.js +8 -0
- package/dist/src/types/requests.js.map +1 -0
- package/dist/src/types/tools.d.ts +506 -0
- package/dist/src/types/tools.d.ts.map +1 -0
- package/dist/src/types/tools.js +8 -0
- package/dist/src/types/tools.js.map +1 -0
- package/dist/src/types/wordpress.d.ts +471 -0
- package/dist/src/types/wordpress.d.ts.map +1 -0
- package/dist/src/types/wordpress.js +14 -0
- package/dist/src/types/wordpress.js.map +1 -0
- package/dist/src/utils/debug.d.ts +71 -0
- package/dist/src/utils/debug.d.ts.map +1 -0
- package/dist/src/utils/debug.js +235 -0
- package/dist/src/utils/debug.js.map +1 -0
- package/dist/src/utils/enhancedError.d.ts +61 -0
- package/dist/src/utils/enhancedError.d.ts.map +1 -0
- package/dist/src/utils/enhancedError.js +221 -0
- package/dist/src/utils/enhancedError.js.map +1 -0
- package/dist/src/utils/error.d.ts +17 -0
- package/dist/src/utils/error.d.ts.map +1 -0
- package/dist/src/utils/error.js +108 -0
- package/dist/src/utils/error.js.map +1 -0
- package/dist/src/utils/logger.d.ts +106 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +280 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/streaming.d.ts +104 -0
- package/dist/src/utils/streaming.d.ts.map +1 -0
- package/dist/src/utils/streaming.js +331 -0
- package/dist/src/utils/streaming.js.map +1 -0
- package/dist/src/utils/toolWrapper.d.ts +42 -0
- package/dist/src/utils/toolWrapper.d.ts.map +1 -0
- package/dist/src/utils/toolWrapper.js +101 -0
- package/dist/src/utils/toolWrapper.js.map +1 -0
- package/dist/src/utils/validation/core.d.ts +21 -0
- package/dist/src/utils/validation/core.d.ts.map +1 -0
- package/dist/src/utils/validation/core.js +71 -0
- package/dist/src/utils/validation/core.js.map +1 -0
- package/dist/src/utils/validation/index.d.ts +25 -0
- package/dist/src/utils/validation/index.d.ts.map +1 -0
- package/dist/src/utils/validation/index.js +29 -0
- package/dist/src/utils/validation/index.js.map +1 -0
- package/dist/src/utils/validation/network.d.ts +19 -0
- package/dist/src/utils/validation/network.d.ts.map +1 -0
- package/dist/src/utils/validation/network.js +93 -0
- package/dist/src/utils/validation/network.js.map +1 -0
- package/dist/src/utils/validation/rateLimit.d.ts +21 -0
- package/dist/src/utils/validation/rateLimit.d.ts.map +1 -0
- package/dist/src/utils/validation/rateLimit.js +43 -0
- package/dist/src/utils/validation/rateLimit.js.map +1 -0
- package/dist/src/utils/validation/security.d.ts +29 -0
- package/dist/src/utils/validation/security.d.ts.map +1 -0
- package/dist/src/utils/validation/security.js +327 -0
- package/dist/src/utils/validation/security.js.map +1 -0
- package/dist/src/utils/validation/wordpress.d.ts +31 -0
- package/dist/src/utils/validation/wordpress.d.ts.map +1 -0
- package/dist/src/utils/validation/wordpress.js +146 -0
- package/dist/src/utils/validation/wordpress.js.map +1 -0
- package/dist/src/utils/validation.d.ts +15 -0
- package/dist/src/utils/validation.d.ts.map +1 -0
- package/dist/src/utils/validation.js +27 -0
- package/dist/src/utils/validation.js.map +1 -0
- package/dist/tests/vitest.setup.d.ts +6 -0
- package/dist/tests/vitest.setup.d.ts.map +1 -0
- package/dist/tests/vitest.setup.js +39 -0
- package/dist/tests/vitest.setup.js.map +1 -0
- package/dist/tools/BaseToolManager.d.ts +47 -11
- package/dist/tools/BaseToolManager.d.ts.map +1 -1
- package/dist/tools/BaseToolManager.js +168 -29
- package/dist/tools/BaseToolManager.js.map +1 -1
- package/dist/tools/auth.d.ts +16 -10
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +3 -2
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/cache.d.ts +30 -30
- package/dist/tools/cache.d.ts.map +1 -1
- package/dist/tools/cache.js +1 -6
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/comments.d.ts +20 -20
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +16 -9
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/media.d.ts +18 -16
- package/dist/tools/media.d.ts.map +1 -1
- package/dist/tools/media.js +16 -15
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/pages.d.ts +19 -17
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +16 -12
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/performance.d.ts +11 -1
- package/dist/tools/performance.d.ts.map +1 -1
- package/dist/tools/performance.js +67 -34
- package/dist/tools/performance.js.map +1 -1
- package/dist/tools/posts/PostHandlers.d.ts +46 -0
- package/dist/tools/posts/PostHandlers.d.ts.map +1 -0
- package/dist/tools/posts/PostHandlers.js +400 -0
- package/dist/tools/posts/PostHandlers.js.map +1 -0
- package/dist/tools/posts/PostToolDefinitions.d.ts +37 -0
- package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -0
- package/dist/tools/posts/PostToolDefinitions.js +236 -0
- package/dist/tools/posts/PostToolDefinitions.js.map +1 -0
- package/dist/tools/posts/index.d.ts +138 -0
- package/dist/tools/posts/index.d.ts.map +1 -0
- package/dist/tools/posts/index.js +163 -0
- package/dist/tools/posts/index.js.map +1 -0
- package/dist/tools/posts.d.ts +10 -246
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +11 -723
- package/dist/tools/posts.js.map +1 -1
- package/dist/tools/site.d.ts +19 -18
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +14 -10
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/taxonomies.d.ts +23 -24
- package/dist/tools/taxonomies.d.ts.map +1 -1
- package/dist/tools/taxonomies.js +24 -18
- package/dist/tools/taxonomies.js.map +1 -1
- package/dist/tools/users.d.ts +20 -15
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +12 -8
- package/dist/tools/users.js.map +1 -1
- package/dist/types/client.d.ts +48 -41
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js +30 -5
- package/dist/types/client.js.map +1 -1
- package/dist/types/enhanced.d.ts +237 -0
- package/dist/types/enhanced.d.ts.map +1 -0
- package/dist/types/enhanced.js +49 -0
- package/dist/types/enhanced.js.map +1 -0
- package/dist/types/index.d.ts +15 -12
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/mcp.d.ts +12 -12
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/requests.d.ts +322 -0
- package/dist/types/requests.d.ts.map +1 -0
- package/dist/types/requests.js +8 -0
- package/dist/types/requests.js.map +1 -0
- package/dist/types/tools.d.ts +506 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +8 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/wordpress.d.ts +43 -15
- package/dist/types/wordpress.d.ts.map +1 -1
- package/dist/types/wordpress.js +8 -1
- package/dist/types/wordpress.js.map +1 -1
- package/dist/utils/debug.d.ts +19 -11
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +46 -10
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/enhancedError.d.ts +8 -8
- package/dist/utils/enhancedError.d.ts.map +1 -1
- package/dist/utils/enhancedError.js.map +1 -1
- package/dist/utils/error.d.ts +2 -4
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.js +42 -5
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/logger.d.ts +106 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +280 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/streaming.d.ts +9 -9
- package/dist/utils/streaming.d.ts.map +1 -1
- package/dist/utils/streaming.js +71 -52
- package/dist/utils/streaming.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts +9 -7
- package/dist/utils/toolWrapper.d.ts.map +1 -1
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation/core.d.ts +21 -0
- package/dist/utils/validation/core.d.ts.map +1 -0
- package/dist/utils/validation/core.js +71 -0
- package/dist/utils/validation/core.js.map +1 -0
- package/dist/utils/validation/index.d.ts +25 -0
- package/dist/utils/validation/index.d.ts.map +1 -0
- package/dist/utils/validation/index.js +29 -0
- package/dist/utils/validation/index.js.map +1 -0
- package/dist/utils/validation/network.d.ts +19 -0
- package/dist/utils/validation/network.d.ts.map +1 -0
- package/dist/utils/validation/network.js +93 -0
- package/dist/utils/validation/network.js.map +1 -0
- package/dist/utils/validation/rateLimit.d.ts +21 -0
- package/dist/utils/validation/rateLimit.d.ts.map +1 -0
- package/dist/utils/validation/rateLimit.js +43 -0
- package/dist/utils/validation/rateLimit.js.map +1 -0
- package/dist/utils/validation/security.d.ts +29 -0
- package/dist/utils/validation/security.d.ts.map +1 -0
- package/dist/utils/validation/security.js +327 -0
- package/dist/utils/validation/security.js.map +1 -0
- package/dist/utils/validation/wordpress.d.ts +31 -0
- package/dist/utils/validation/wordpress.d.ts.map +1 -0
- package/dist/utils/validation/wordpress.js +146 -0
- package/dist/utils/validation/wordpress.js.map +1 -0
- package/dist/utils/validation.d.ts +13 -82
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +25 -343
- package/dist/utils/validation.js.map +1 -1
- package/docs/BADGE_UPDATES.md +132 -0
- package/docs/CI_CD_IMPROVEMENTS.md +191 -0
- package/docs/INCREMENTAL_COVERAGE.md +183 -0
- package/docs/INSTALLATION.md +4 -2
- package/docs/TROUBLESHOOTING.md +2 -1
- package/docs/api/README.md +3 -1
- package/docs/api/openapi.json +5 -1
- package/docs/api/summary.json +1 -1
- package/docs/api/tools/wp_create_post.md +12 -14
- package/docs/developer/TESTING.md +24 -19
- package/docs/examples/claude-desktop-config.md +1 -1
- package/docs/examples/docker-production.md +100 -93
- package/docs/examples/multi-site-setup.md +5 -4
- package/docs/examples/single-site-setup.md +3 -4
- package/docs/examples/use-case-workflows.md +4 -5
- package/docs/integrations/claude-desktop.md +39 -34
- package/docs/integrations/cline.md +4 -4
- package/docs/integrations/vs-code.md +9 -8
- package/docs/user-guides/DXT_INSTALLATION.md +2 -1
- package/docs/user-guides/SMITHERY_SETUP.md +10 -10
- package/package.json +57 -39
- package/src/cache/CacheInvalidation.ts +12 -5
- package/src/cache/CacheManager.ts +18 -15
- package/src/cache/HttpCacheWrapper.ts +30 -59
- package/src/cache/__tests__/HttpCacheWrapper.test.ts +6 -5
- package/src/cache/index.ts +3 -14
- package/src/client/CachedWordPressClient.ts +32 -30
- package/src/client/MockWordPressClient.ts +4 -2
- package/src/client/api.ts +186 -64
- package/src/client/auth.ts +15 -40
- package/src/client/managers/AuthenticationManager.ts +337 -77
- package/src/client/managers/BaseManager.ts +18 -30
- package/src/client/managers/RequestManager.ts +39 -44
- package/src/config/Config.ts +308 -0
- package/src/config/ConfigurationSchema.ts +23 -2
- package/src/config/ServerConfiguration.ts +73 -49
- package/src/docs/DocumentationGenerator.ts +50 -39
- package/src/docs/MarkdownFormatter.ts +19 -29
- package/src/dxt-entry.cjs +26 -16
- package/src/dxt-entry.ts +17 -27
- package/src/index.ts +42 -28
- package/src/performance/MetricsCollector.ts +108 -86
- package/src/performance/PerformanceAnalytics.ts +69 -164
- package/src/performance/PerformanceMonitor.ts +32 -47
- package/src/performance/index.ts +2 -10
- package/src/security/AISecurityScanner.ts +22 -12
- package/src/security/AutomatedRemediation.ts +49 -18
- package/src/security/InputValidator.ts +9 -6
- package/src/security/SecurityCIPipeline.ts +53 -37
- package/src/security/SecurityConfig.ts +22 -22
- package/src/security/SecurityConfigManager.ts +23 -19
- package/src/security/SecurityMonitoring.ts +24 -21
- package/src/security/SecurityReviewer.ts +10 -7
- package/src/security/index.ts +64 -29
- package/src/server/ConnectionTester.ts +120 -31
- package/src/server/ToolRegistry.ts +31 -21
- package/src/tools/BaseToolManager.ts +286 -33
- package/src/tools/auth.ts +20 -8
- package/src/tools/cache.ts +5 -15
- package/src/tools/comments.ts +34 -48
- package/src/tools/media.ts +41 -53
- package/src/tools/pages.ts +32 -54
- package/src/tools/performance.ts +141 -176
- package/src/tools/posts/PostHandlers.ts +474 -0
- package/src/tools/posts/PostToolDefinitions.ts +250 -0
- package/src/tools/posts/index.ts +192 -0
- package/src/tools/posts.ts +24 -780
- package/src/tools/site.ts +34 -19
- package/src/tools/taxonomies.ts +41 -57
- package/src/tools/users.ts +28 -16
- package/src/types/client.ts +114 -138
- package/src/types/enhanced.ts +318 -0
- package/src/types/index.ts +51 -30
- package/src/types/mcp.ts +20 -42
- package/src/types/requests.ts +378 -0
- package/src/types/tools.ts +608 -0
- package/src/types/wordpress.ts +56 -34
- package/src/utils/debug.ts +77 -59
- package/src/utils/enhancedError.ts +8 -8
- package/src/utils/error.ts +53 -31
- package/src/utils/logger.ts +351 -0
- package/src/utils/streaming.ts +86 -68
- package/src/utils/toolWrapper.ts +10 -12
- package/src/utils/validation/core.ts +108 -0
- package/src/utils/validation/index.ts +36 -0
- package/src/utils/validation/network.ts +132 -0
- package/src/utils/validation/rateLimit.ts +54 -0
- package/src/utils/validation/security.ts +361 -0
- package/src/utils/validation/wordpress.ts +180 -0
- package/src/utils/validation.ts +47 -470
- package/dist/cache/__tests__/CacheInvalidation.test.d.ts +0 -5
- package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +0 -1
- package/dist/cache/__tests__/CacheInvalidation.test.js +0 -238
- package/dist/cache/__tests__/CacheInvalidation.test.js.map +0 -1
- package/dist/cache/__tests__/CacheManager.test.d.ts +0 -5
- package/dist/cache/__tests__/CacheManager.test.d.ts.map +0 -1
- package/dist/cache/__tests__/CacheManager.test.js +0 -233
- package/dist/cache/__tests__/CacheManager.test.js.map +0 -1
- package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +0 -5
- package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +0 -1
- package/dist/cache/__tests__/CachedWordPressClient.test.js +0 -231
- package/dist/cache/__tests__/CachedWordPressClient.test.js.map +0 -1
- package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +0 -5
- package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +0 -1
- package/dist/cache/__tests__/HttpCacheWrapper.test.js +0 -299
- package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Utility for MCP Server
|
|
3
|
+
*
|
|
4
|
+
* This module provides debug logging that only outputs when DEBUG mode is enabled.
|
|
5
|
+
* This prevents console.log from interfering with MCP STDIO communication.
|
|
6
|
+
*/
|
|
7
|
+
import { config } from "../config/Config.js";
|
|
8
|
+
import { ConfigHelpers } from "../config/Config.js";
|
|
9
|
+
// Check if debug mode is enabled
|
|
10
|
+
const isDebugMode = () => ConfigHelpers.shouldDebug();
|
|
11
|
+
// Get current timestamp
|
|
12
|
+
const getTimestamp = () => new Date().toISOString();
|
|
13
|
+
// Format log message with timestamp and level
|
|
14
|
+
const formatMessage = (level, args) => {
|
|
15
|
+
const timestamp = getTimestamp();
|
|
16
|
+
const prefix = `[${timestamp}] [${level.toUpperCase()}]`;
|
|
17
|
+
return `${prefix} ${args
|
|
18
|
+
.map((arg) => (typeof arg === "object" ? JSON.stringify(arg, null, 2) : String(arg)))
|
|
19
|
+
.join(" ")}`;
|
|
20
|
+
};
|
|
21
|
+
// Handle circular references in objects
|
|
22
|
+
const safeStringify = (obj) => {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.stringify(obj, (key, value) => {
|
|
25
|
+
if (value instanceof Error) {
|
|
26
|
+
return {
|
|
27
|
+
name: value.name,
|
|
28
|
+
message: value.message,
|
|
29
|
+
stack: value.stack,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}, 2);
|
|
34
|
+
}
|
|
35
|
+
catch (_error) {
|
|
36
|
+
return "[Object with circular reference]";
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Debug logger that only outputs in debug mode
|
|
41
|
+
*/
|
|
42
|
+
export const debug = {
|
|
43
|
+
log: (...args) => {
|
|
44
|
+
if (isDebugMode()) {
|
|
45
|
+
console.error(formatMessage("debug", args)); // Use stderr for debug to avoid STDIO interference
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
info: (...args) => {
|
|
49
|
+
if (isDebugMode()) {
|
|
50
|
+
console.error(formatMessage("info", args));
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
warn: (...args) => {
|
|
54
|
+
if (isDebugMode()) {
|
|
55
|
+
console.error(formatMessage("warn", args));
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
error: (...args) => {
|
|
59
|
+
if (isDebugMode()) {
|
|
60
|
+
console.error(formatMessage("error", args));
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Silent logger for production use
|
|
66
|
+
*/
|
|
67
|
+
export const silent = {
|
|
68
|
+
log: () => { },
|
|
69
|
+
warn: () => { },
|
|
70
|
+
error: () => { },
|
|
71
|
+
info: () => { },
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Enhanced structured logger
|
|
75
|
+
*/
|
|
76
|
+
class StructuredLoggerImpl {
|
|
77
|
+
context;
|
|
78
|
+
enabled;
|
|
79
|
+
constructor(context = {}, enabled = isDebugMode()) {
|
|
80
|
+
this.context = context;
|
|
81
|
+
this.enabled = enabled;
|
|
82
|
+
}
|
|
83
|
+
output(level, args) {
|
|
84
|
+
if (!this.enabled)
|
|
85
|
+
return;
|
|
86
|
+
const debugInfo = {
|
|
87
|
+
timestamp: Date.now(),
|
|
88
|
+
level,
|
|
89
|
+
message: args.map((arg) => (typeof arg === "object" ? safeStringify(arg) : String(arg))).join(" "),
|
|
90
|
+
...(Object.keys(this.context).length > 0 && { context: this.context }),
|
|
91
|
+
};
|
|
92
|
+
console.error(safeStringify(debugInfo));
|
|
93
|
+
}
|
|
94
|
+
log(...args) {
|
|
95
|
+
this.output("debug", args);
|
|
96
|
+
}
|
|
97
|
+
info(...args) {
|
|
98
|
+
this.output("info", args);
|
|
99
|
+
}
|
|
100
|
+
warn(...args) {
|
|
101
|
+
this.output("warn", args);
|
|
102
|
+
}
|
|
103
|
+
error(...args) {
|
|
104
|
+
this.output("error", args);
|
|
105
|
+
}
|
|
106
|
+
logStructured(info) {
|
|
107
|
+
if (!this.enabled)
|
|
108
|
+
return;
|
|
109
|
+
const enhancedInfo = {
|
|
110
|
+
...info,
|
|
111
|
+
context: { ...this.context, ...info.context },
|
|
112
|
+
};
|
|
113
|
+
console.error(safeStringify(enhancedInfo));
|
|
114
|
+
}
|
|
115
|
+
child(context) {
|
|
116
|
+
return new StructuredLoggerImpl({ ...this.context, ...context }, this.enabled);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create a structured logger instance
|
|
121
|
+
*/
|
|
122
|
+
export const createStructuredLogger = (context = {}) => {
|
|
123
|
+
return new StructuredLoggerImpl(context);
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Default logger instance
|
|
127
|
+
*/
|
|
128
|
+
export const logger = debug;
|
|
129
|
+
/**
|
|
130
|
+
* Create a logger with context
|
|
131
|
+
*/
|
|
132
|
+
export const createLogger = (context = {}) => {
|
|
133
|
+
return createStructuredLogger(context);
|
|
134
|
+
};
|
|
135
|
+
export const startTimer = (label) => {
|
|
136
|
+
const start = Date.now();
|
|
137
|
+
return {
|
|
138
|
+
end() {
|
|
139
|
+
return Date.now() - start;
|
|
140
|
+
},
|
|
141
|
+
endWithLog(message = "Operation") {
|
|
142
|
+
const duration = Date.now() - start;
|
|
143
|
+
debug.info(`${message} completed in ${duration}ms${label ? ` [${label}]` : ""}`);
|
|
144
|
+
return duration;
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Log error with stack trace
|
|
150
|
+
*/
|
|
151
|
+
export const logError = (error, context) => {
|
|
152
|
+
if (typeof error === "string") {
|
|
153
|
+
debug.error(error, context);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
debug.error(`${error.name}: ${error.message}`, {
|
|
157
|
+
stack: error.stack,
|
|
158
|
+
...context,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Conditional logging
|
|
164
|
+
*/
|
|
165
|
+
export const logIf = (condition, level = "debug") => {
|
|
166
|
+
if (!condition)
|
|
167
|
+
return silent;
|
|
168
|
+
const loggers = {
|
|
169
|
+
log: debug.log,
|
|
170
|
+
info: debug.info,
|
|
171
|
+
warn: debug.warn,
|
|
172
|
+
error: debug.error,
|
|
173
|
+
};
|
|
174
|
+
return loggers[level] || debug.log;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* Type-safe environment variable getter with security logging
|
|
178
|
+
*/
|
|
179
|
+
export const getEnvVar = (key, defaultValue) => {
|
|
180
|
+
const value = process.env[key];
|
|
181
|
+
if (value === undefined && defaultValue !== undefined) {
|
|
182
|
+
// Don't log sensitive environment variable names in production
|
|
183
|
+
const isSecretVar = /password|secret|token|key|auth/i.test(key);
|
|
184
|
+
if (!isSecretVar || !config().app.isProduction) {
|
|
185
|
+
debug.warn(`Environment variable ${key} not found, using default`);
|
|
186
|
+
}
|
|
187
|
+
return defaultValue;
|
|
188
|
+
}
|
|
189
|
+
return value;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Validate required environment variables with secure error messages
|
|
193
|
+
*/
|
|
194
|
+
export const validateEnvVars = (required) => {
|
|
195
|
+
const missing = required.filter((key) => !process.env[key]);
|
|
196
|
+
if (missing.length > 0) {
|
|
197
|
+
// In production, don't expose which specific env vars are missing
|
|
198
|
+
const errorMessage = config().app.isProduction
|
|
199
|
+
? `Missing ${missing.length} required environment variable(s)`
|
|
200
|
+
: `Missing required environment variables: ${missing.join(", ")}`;
|
|
201
|
+
const error = new Error(errorMessage);
|
|
202
|
+
logError(error);
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Sanitize environment variable for logging
|
|
208
|
+
*/
|
|
209
|
+
export const sanitizeEnvValue = (key, value) => {
|
|
210
|
+
const sensitiveKeys = /password|secret|token|key|auth|credential/i;
|
|
211
|
+
if (sensitiveKeys.test(key)) {
|
|
212
|
+
if (!value || value.length === 0) {
|
|
213
|
+
return "[EMPTY]";
|
|
214
|
+
}
|
|
215
|
+
return `[REDACTED:${value.length}chars]`;
|
|
216
|
+
}
|
|
217
|
+
return value;
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Get sanitized environment summary for debugging
|
|
221
|
+
*/
|
|
222
|
+
export const getEnvSummary = (keys) => {
|
|
223
|
+
const summary = {};
|
|
224
|
+
for (const key of keys) {
|
|
225
|
+
const value = process.env[key];
|
|
226
|
+
if (value !== undefined) {
|
|
227
|
+
summary[key] = sanitizeEnvValue(key, value);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
summary[key] = "[NOT_SET]";
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return summary;
|
|
234
|
+
};
|
|
235
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/utils/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export interface ErrorContext {
|
|
2
|
+
operation: string;
|
|
3
|
+
parameters?: Record<string, unknown>;
|
|
4
|
+
suggestions?: string[];
|
|
5
|
+
troubleshooting?: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Enhanced error handling with helpful messages and suggestions
|
|
9
|
+
*/
|
|
10
|
+
export declare class EnhancedError extends Error {
|
|
11
|
+
suggestions: string[];
|
|
12
|
+
troubleshooting: string[];
|
|
13
|
+
context: ErrorContext;
|
|
14
|
+
constructor(message: string, context: ErrorContext);
|
|
15
|
+
/**
|
|
16
|
+
* Format error message with suggestions
|
|
17
|
+
*/
|
|
18
|
+
toString(): string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Common error handlers with context-aware suggestions
|
|
22
|
+
*/
|
|
23
|
+
export declare class ErrorHandlers {
|
|
24
|
+
/**
|
|
25
|
+
* Handle post not found errors
|
|
26
|
+
*/
|
|
27
|
+
static postNotFound(postId: number, originalError: unknown): EnhancedError;
|
|
28
|
+
/**
|
|
29
|
+
* Handle authentication errors
|
|
30
|
+
*/
|
|
31
|
+
static authenticationFailed(originalError: unknown): EnhancedError;
|
|
32
|
+
/**
|
|
33
|
+
* Handle site parameter missing errors
|
|
34
|
+
*/
|
|
35
|
+
static siteParameterMissing(availableSites: string[]): EnhancedError;
|
|
36
|
+
/**
|
|
37
|
+
* Handle site not found errors
|
|
38
|
+
*/
|
|
39
|
+
static siteNotFound(siteId: string, availableSites: string[]): EnhancedError;
|
|
40
|
+
/**
|
|
41
|
+
* Handle permission errors
|
|
42
|
+
*/
|
|
43
|
+
static permissionDenied(operation: string, originalError: unknown): EnhancedError;
|
|
44
|
+
/**
|
|
45
|
+
* Handle network/connection errors
|
|
46
|
+
*/
|
|
47
|
+
static connectionError(originalError: unknown): EnhancedError;
|
|
48
|
+
/**
|
|
49
|
+
* Handle validation errors
|
|
50
|
+
*/
|
|
51
|
+
static validationError(field: string, value: unknown, expectedType: string): EnhancedError;
|
|
52
|
+
/**
|
|
53
|
+
* Handle rate limiting errors
|
|
54
|
+
*/
|
|
55
|
+
static rateLimitExceeded(originalError: unknown): EnhancedError;
|
|
56
|
+
/**
|
|
57
|
+
* Generic error handler with basic suggestions
|
|
58
|
+
*/
|
|
59
|
+
static generic(operation: string, originalError: unknown): EnhancedError;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=enhancedError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhancedError.d.ts","sourceRoot":"","sources":["../../../src/utils/enhancedError.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAQlD;;OAEG;IACH,QAAQ,IAAI,MAAM;CAmBnB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,aAAa;IAqB1E;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa;IAqBlE;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,aAAa;IAgBpE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,aAAa;IAiB5E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,aAAa;IAmBjF;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa;IAmB7D;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa;IAiB1F;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,OAAO,GAAG,aAAa;IAmB/D;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,aAAa;CAkBzE"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { getErrorMessage } from "./error.js";
|
|
2
|
+
/**
|
|
3
|
+
* Enhanced error handling with helpful messages and suggestions
|
|
4
|
+
*/
|
|
5
|
+
export class EnhancedError extends Error {
|
|
6
|
+
suggestions;
|
|
7
|
+
troubleshooting;
|
|
8
|
+
context;
|
|
9
|
+
constructor(message, context) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "EnhancedError";
|
|
12
|
+
this.context = context;
|
|
13
|
+
this.suggestions = context.suggestions || [];
|
|
14
|
+
this.troubleshooting = context.troubleshooting || [];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Format error message with suggestions
|
|
18
|
+
*/
|
|
19
|
+
toString() {
|
|
20
|
+
let message = `❌ ${this.message}`;
|
|
21
|
+
if (this.suggestions.length > 0) {
|
|
22
|
+
message += `\n\n💡 **Suggestions:**\n`;
|
|
23
|
+
this.suggestions.forEach((suggestion) => {
|
|
24
|
+
message += `• ${suggestion}\n`;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (this.troubleshooting.length > 0) {
|
|
28
|
+
message += `\n🔧 **Troubleshooting:**\n`;
|
|
29
|
+
this.troubleshooting.forEach((step) => {
|
|
30
|
+
message += `• ${step}\n`;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return message;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Common error handlers with context-aware suggestions
|
|
38
|
+
*/
|
|
39
|
+
export class ErrorHandlers {
|
|
40
|
+
/**
|
|
41
|
+
* Handle post not found errors
|
|
42
|
+
*/
|
|
43
|
+
static postNotFound(postId, originalError) {
|
|
44
|
+
const errorMessage = getErrorMessage(originalError);
|
|
45
|
+
return new EnhancedError(`Post with ID ${postId} not found`, {
|
|
46
|
+
operation: "get_post",
|
|
47
|
+
parameters: { postId },
|
|
48
|
+
suggestions: [
|
|
49
|
+
"Check if the post ID is correct",
|
|
50
|
+
"Verify the post exists and is published",
|
|
51
|
+
"Try listing posts first with wp_list_posts to see available posts",
|
|
52
|
+
"Check if you have permission to view this post",
|
|
53
|
+
],
|
|
54
|
+
troubleshooting: [
|
|
55
|
+
"Use wp_list_posts to see all available posts",
|
|
56
|
+
"Check the post status - it might be draft, private, or trashed",
|
|
57
|
+
"Verify your user permissions for viewing posts",
|
|
58
|
+
`Original error: ${errorMessage}`,
|
|
59
|
+
],
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Handle authentication errors
|
|
64
|
+
*/
|
|
65
|
+
static authenticationFailed(originalError) {
|
|
66
|
+
const errorMessage = getErrorMessage(originalError);
|
|
67
|
+
return new EnhancedError("Authentication failed", {
|
|
68
|
+
operation: "authenticate",
|
|
69
|
+
suggestions: [
|
|
70
|
+
"Check your WordPress credentials (username and app password)",
|
|
71
|
+
"Verify the WordPress site URL is correct",
|
|
72
|
+
"Ensure application passwords are enabled on your WordPress site",
|
|
73
|
+
"Try regenerating your application password",
|
|
74
|
+
],
|
|
75
|
+
troubleshooting: [
|
|
76
|
+
"Go to your WordPress admin → Users → Profile → Application Passwords",
|
|
77
|
+
"Create a new application password with a descriptive name",
|
|
78
|
+
"Make sure the WordPress site URL ends with wp-json/wp/v2",
|
|
79
|
+
"Check if your site has any security plugins blocking REST API",
|
|
80
|
+
`Original error: ${errorMessage}`,
|
|
81
|
+
],
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Handle site parameter missing errors
|
|
86
|
+
*/
|
|
87
|
+
static siteParameterMissing(availableSites) {
|
|
88
|
+
return new EnhancedError("Multiple sites configured - site parameter required", {
|
|
89
|
+
operation: "site_selection",
|
|
90
|
+
suggestions: [
|
|
91
|
+
"Add --site parameter to specify which site to use",
|
|
92
|
+
`Available sites: ${availableSites.join(", ")}`,
|
|
93
|
+
'Example: wp_list_posts --site="your-site-id"',
|
|
94
|
+
],
|
|
95
|
+
troubleshooting: [
|
|
96
|
+
"Check your mcp-wordpress.config.json for configured sites",
|
|
97
|
+
"Use the site ID from your configuration file",
|
|
98
|
+
"Site IDs are defined in the 'id' field of each site config",
|
|
99
|
+
],
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Handle site not found errors
|
|
104
|
+
*/
|
|
105
|
+
static siteNotFound(siteId, availableSites) {
|
|
106
|
+
return new EnhancedError(`Site with ID '${siteId}' not found`, {
|
|
107
|
+
operation: "site_selection",
|
|
108
|
+
parameters: { siteId },
|
|
109
|
+
suggestions: [
|
|
110
|
+
`Available sites: ${availableSites.join(", ")}`,
|
|
111
|
+
"Check the spelling of the site ID",
|
|
112
|
+
"Verify the site is configured in mcp-wordpress.config.json",
|
|
113
|
+
],
|
|
114
|
+
troubleshooting: [
|
|
115
|
+
"Open mcp-wordpress.config.json to see configured sites",
|
|
116
|
+
"Check the 'id' field for each site configuration",
|
|
117
|
+
"Ensure the site ID matches exactly (case-sensitive)",
|
|
118
|
+
],
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Handle permission errors
|
|
123
|
+
*/
|
|
124
|
+
static permissionDenied(operation, originalError) {
|
|
125
|
+
const errorMessage = getErrorMessage(originalError);
|
|
126
|
+
return new EnhancedError(`Permission denied for ${operation}`, {
|
|
127
|
+
operation,
|
|
128
|
+
suggestions: [
|
|
129
|
+
"Check if your user has the required permissions",
|
|
130
|
+
"Verify you're logged in with the correct user account",
|
|
131
|
+
"Contact your WordPress administrator for permission changes",
|
|
132
|
+
],
|
|
133
|
+
troubleshooting: [
|
|
134
|
+
"Check your user role in WordPress admin → Users",
|
|
135
|
+
"Verify the required capabilities for this operation",
|
|
136
|
+
"Try using an administrator account",
|
|
137
|
+
`Original error: ${errorMessage}`,
|
|
138
|
+
],
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Handle network/connection errors
|
|
143
|
+
*/
|
|
144
|
+
static connectionError(originalError) {
|
|
145
|
+
const errorMessage = getErrorMessage(originalError);
|
|
146
|
+
return new EnhancedError("Failed to connect to WordPress site", {
|
|
147
|
+
operation: "connection",
|
|
148
|
+
suggestions: [
|
|
149
|
+
"Check your internet connection",
|
|
150
|
+
"Verify the WordPress site URL is correct and accessible",
|
|
151
|
+
"Check if the site is temporarily down",
|
|
152
|
+
],
|
|
153
|
+
troubleshooting: [
|
|
154
|
+
"Try accessing the site in your browser",
|
|
155
|
+
"Check if the REST API is enabled: visit yoursite.com/wp-json/",
|
|
156
|
+
"Verify there are no firewall or security plugins blocking access",
|
|
157
|
+
`Original error: ${errorMessage}`,
|
|
158
|
+
],
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Handle validation errors
|
|
163
|
+
*/
|
|
164
|
+
static validationError(field, value, expectedType) {
|
|
165
|
+
return new EnhancedError(`Invalid ${field}: expected ${expectedType}, got ${typeof value}`, {
|
|
166
|
+
operation: "validation",
|
|
167
|
+
parameters: { field, value, expectedType },
|
|
168
|
+
suggestions: [
|
|
169
|
+
`Provide a valid ${expectedType} for ${field}`,
|
|
170
|
+
"Check the parameter format and type",
|
|
171
|
+
"Refer to the tool documentation for correct parameter format",
|
|
172
|
+
],
|
|
173
|
+
troubleshooting: [
|
|
174
|
+
"Review the tool's parameter requirements",
|
|
175
|
+
"Check for typos in parameter names",
|
|
176
|
+
"Ensure parameter values match the expected type",
|
|
177
|
+
],
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Handle rate limiting errors
|
|
182
|
+
*/
|
|
183
|
+
static rateLimitExceeded(originalError) {
|
|
184
|
+
const errorMessage = getErrorMessage(originalError);
|
|
185
|
+
return new EnhancedError("Rate limit exceeded", {
|
|
186
|
+
operation: "rate_limit",
|
|
187
|
+
suggestions: [
|
|
188
|
+
"Wait a few minutes before trying again",
|
|
189
|
+
"Reduce the frequency of requests",
|
|
190
|
+
"Use pagination for large operations",
|
|
191
|
+
],
|
|
192
|
+
troubleshooting: [
|
|
193
|
+
"Check your WordPress hosting plan limits",
|
|
194
|
+
"Consider upgrading your hosting plan for higher limits",
|
|
195
|
+
"Implement delays between requests",
|
|
196
|
+
`Original error: ${errorMessage}`,
|
|
197
|
+
],
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Generic error handler with basic suggestions
|
|
202
|
+
*/
|
|
203
|
+
static generic(operation, originalError) {
|
|
204
|
+
const errorMessage = getErrorMessage(originalError);
|
|
205
|
+
return new EnhancedError(`Failed to ${operation}`, {
|
|
206
|
+
operation,
|
|
207
|
+
suggestions: [
|
|
208
|
+
"Check your WordPress credentials and permissions",
|
|
209
|
+
"Verify the site is accessible and functioning",
|
|
210
|
+
"Try the operation again after a brief wait",
|
|
211
|
+
],
|
|
212
|
+
troubleshooting: [
|
|
213
|
+
"Test your connection with a simpler operation first",
|
|
214
|
+
"Check WordPress admin for any issues",
|
|
215
|
+
"Review the WordPress error logs",
|
|
216
|
+
`Original error: ${errorMessage}`,
|
|
217
|
+
],
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=enhancedError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhancedError.js","sourceRoot":"","sources":["../../../src/utils/enhancedError.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const __errorUtilsLogger: import("./logger.js").Logger;
|
|
2
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
3
|
+
export declare function isError(error: unknown): error is Error;
|
|
4
|
+
export declare function logAndReturn<T>(error: unknown, defaultValue: T): T;
|
|
5
|
+
/**
|
|
6
|
+
* Enhanced error handler for consistent tool error handling
|
|
7
|
+
*/
|
|
8
|
+
export declare function handleToolError(error: unknown, operation: string, context?: Record<string, unknown>): never;
|
|
9
|
+
/**
|
|
10
|
+
* Validates required parameters
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateRequired(params: Record<string, unknown> | unknown, required: string[]): void;
|
|
13
|
+
/**
|
|
14
|
+
* Validates site parameter for multi-site configurations
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateSite(site: string | undefined, availableSites: string[]): string;
|
|
17
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/utils/error.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,kBAAkB,8BAAS,CAAC;AAEzC,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CActD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAEtD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAQlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAqC3G;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAWpG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,CAevF"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error handling utilities
|
|
3
|
+
*/
|
|
4
|
+
import { LoggerFactory } from "./logger.js";
|
|
5
|
+
import { config } from "../config/Config.js";
|
|
6
|
+
const logger = LoggerFactory.server().child({ component: "ErrorUtils" });
|
|
7
|
+
// Environment flag to control legacy console logging noise. Default enabled to preserve
|
|
8
|
+
// backward compatibility and existing test expectations. Set LEGACY_ERROR_LOGS=0 to disable
|
|
9
|
+
// the direct console.error side-channel (structured logger still emits).
|
|
10
|
+
const LEGACY_ERROR_LOGS_ENABLED = config().error.legacyLogsEnabled;
|
|
11
|
+
// Internal helper to avoid sprinkling conditionals
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
function legacyConsoleError(...args) {
|
|
14
|
+
if (LEGACY_ERROR_LOGS_ENABLED) {
|
|
15
|
+
console.error(...args);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Test hook: exported only for instrumentation in unit tests (tree-shakeable)
|
|
19
|
+
// @__PURE__ This constant has no side effects and can be dropped in production builds
|
|
20
|
+
export const __errorUtilsLogger = logger;
|
|
21
|
+
export function getErrorMessage(error) {
|
|
22
|
+
if (error instanceof Error) {
|
|
23
|
+
return error.message;
|
|
24
|
+
}
|
|
25
|
+
if (typeof error === "string") {
|
|
26
|
+
return error;
|
|
27
|
+
}
|
|
28
|
+
if (error && typeof error === "object" && "message" in error) {
|
|
29
|
+
return String(error.message);
|
|
30
|
+
}
|
|
31
|
+
return "Unknown error occurred";
|
|
32
|
+
}
|
|
33
|
+
export function isError(error) {
|
|
34
|
+
return error instanceof Error;
|
|
35
|
+
}
|
|
36
|
+
export function logAndReturn(error, defaultValue) {
|
|
37
|
+
const message = getErrorMessage(error);
|
|
38
|
+
// Legacy console logging (can be disabled via LEGACY_ERROR_LOGS=0)
|
|
39
|
+
legacyConsoleError("Error occurred:", message);
|
|
40
|
+
logger.warn("Error occurred - returning default value", {
|
|
41
|
+
error: message,
|
|
42
|
+
});
|
|
43
|
+
return defaultValue;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Enhanced error handler for consistent tool error handling
|
|
47
|
+
*/
|
|
48
|
+
export function handleToolError(error, operation, context) {
|
|
49
|
+
const message = getErrorMessage(error);
|
|
50
|
+
const errObj = error instanceof Error ? error : new Error(message);
|
|
51
|
+
// Legacy console logging (can be disabled via LEGACY_ERROR_LOGS=0)
|
|
52
|
+
legacyConsoleError(`Error in ${operation}:`, errObj);
|
|
53
|
+
if (context) {
|
|
54
|
+
legacyConsoleError("Context:", context);
|
|
55
|
+
}
|
|
56
|
+
logger.error(`Error in ${operation}`, {
|
|
57
|
+
error: message,
|
|
58
|
+
...(context && { context }),
|
|
59
|
+
});
|
|
60
|
+
if (error instanceof Error && error.stack) {
|
|
61
|
+
logger.debug("Error stack trace", { stack: error.stack });
|
|
62
|
+
}
|
|
63
|
+
// Provide more specific error messages based on error content
|
|
64
|
+
if (message.includes("ECONNREFUSED") || message.includes("ENOTFOUND")) {
|
|
65
|
+
throw new Error(`Connection failed during ${operation}. Please check your WordPress site URL and network connection.`);
|
|
66
|
+
}
|
|
67
|
+
if (message.includes("401") || message.includes("Unauthorized")) {
|
|
68
|
+
throw new Error(`Authentication failed during ${operation}. Please check your WordPress credentials.`);
|
|
69
|
+
}
|
|
70
|
+
if (message.includes("403") || message.includes("Forbidden")) {
|
|
71
|
+
throw new Error(`Permission denied during ${operation}. Please check your user permissions.`);
|
|
72
|
+
}
|
|
73
|
+
if (message.includes("429") || message.includes("Too Many Requests")) {
|
|
74
|
+
throw new Error(`Rate limit exceeded during ${operation}. Please try again later.`);
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`Failed to ${operation}: ${message}`);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validates required parameters
|
|
80
|
+
*/
|
|
81
|
+
export function validateRequired(params, required) {
|
|
82
|
+
// Runtime guard: ensure params is a non-null object (tests expect throw on invalid input)
|
|
83
|
+
if (params === null || typeof params !== "object") {
|
|
84
|
+
throw new Error("Parameters must be an object");
|
|
85
|
+
}
|
|
86
|
+
// Only treat undefined or null as missing; accept legitimate falsy values: 0, false, ""
|
|
87
|
+
const obj = params;
|
|
88
|
+
const missing = required.filter((key) => obj[key] === undefined || obj[key] === null);
|
|
89
|
+
if (missing.length > 0) {
|
|
90
|
+
throw new Error(`Missing required parameters: ${missing.join(", ")}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Validates site parameter for multi-site configurations
|
|
95
|
+
*/
|
|
96
|
+
export function validateSite(site, availableSites) {
|
|
97
|
+
if (!site) {
|
|
98
|
+
if (availableSites.length === 1) {
|
|
99
|
+
return availableSites[0];
|
|
100
|
+
}
|
|
101
|
+
throw new Error(`Site parameter is required when multiple sites are configured. Available sites: ${availableSites.join(", ")}`);
|
|
102
|
+
}
|
|
103
|
+
if (!availableSites.includes(site)) {
|
|
104
|
+
throw new Error(`Site '${site}' not found. Available sites: ${availableSites.join(", ")}`);
|
|
105
|
+
}
|
|
106
|
+
return site;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=error.js.map
|