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
package/src/types/client.ts
CHANGED
|
@@ -32,15 +32,12 @@ import type {
|
|
|
32
32
|
UpdateTagRequest,
|
|
33
33
|
UploadMediaRequest,
|
|
34
34
|
UpdateMediaRequest,
|
|
35
|
+
AuthMethod,
|
|
35
36
|
} from "./wordpress.js";
|
|
36
37
|
|
|
37
38
|
// Authentication Configuration
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
| "jwt"
|
|
41
|
-
| "basic"
|
|
42
|
-
| "api-key"
|
|
43
|
-
| "cookie";
|
|
39
|
+
// AuthMethod is now imported from wordpress.js for consistency
|
|
40
|
+
export type { AuthMethod };
|
|
44
41
|
|
|
45
42
|
export interface AuthConfig {
|
|
46
43
|
method: AuthMethod;
|
|
@@ -54,6 +51,38 @@ export interface AuthConfig {
|
|
|
54
51
|
clientId?: string;
|
|
55
52
|
}
|
|
56
53
|
|
|
54
|
+
// Specific credential interfaces for type safety
|
|
55
|
+
export interface AppPasswordCredentials {
|
|
56
|
+
username: string;
|
|
57
|
+
appPassword: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface JwtCredentials {
|
|
61
|
+
jwtToken: string;
|
|
62
|
+
username?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface BasicCredentials {
|
|
66
|
+
username: string;
|
|
67
|
+
password: string;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface ApiKeyCredentials {
|
|
71
|
+
apiKey: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Union type for all credential types
|
|
75
|
+
export type AuthCredentials = AppPasswordCredentials | JwtCredentials | BasicCredentials | ApiKeyCredentials;
|
|
76
|
+
|
|
77
|
+
// Authentication status interface
|
|
78
|
+
export interface AuthStatus {
|
|
79
|
+
method: AuthMethod;
|
|
80
|
+
username?: string | undefined;
|
|
81
|
+
isAuthenticated: boolean;
|
|
82
|
+
tokenExpired: boolean;
|
|
83
|
+
tokenExpiry?: number;
|
|
84
|
+
}
|
|
85
|
+
|
|
57
86
|
// Client Configuration
|
|
58
87
|
export interface WordPressClientConfig {
|
|
59
88
|
baseUrl: string;
|
|
@@ -77,11 +106,11 @@ export interface RequestOptions {
|
|
|
77
106
|
timeout?: number;
|
|
78
107
|
retries?: number;
|
|
79
108
|
signal?: AbortSignal;
|
|
80
|
-
params?:
|
|
109
|
+
params?: Record<string, unknown>;
|
|
81
110
|
}
|
|
82
111
|
|
|
83
112
|
// API Response Wrapper
|
|
84
|
-
export interface APIResponse<T =
|
|
113
|
+
export interface APIResponse<T = unknown> {
|
|
85
114
|
data: T;
|
|
86
115
|
status: number;
|
|
87
116
|
statusText: string;
|
|
@@ -120,64 +149,32 @@ export interface IWordPressClient {
|
|
|
120
149
|
disconnect(): Promise<void>;
|
|
121
150
|
|
|
122
151
|
// Generic HTTP Methods
|
|
123
|
-
request<T =
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
): Promise<T>;
|
|
129
|
-
get<T = any>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
130
|
-
post<T = any>(
|
|
131
|
-
endpoint: string,
|
|
132
|
-
data?: any,
|
|
133
|
-
options?: RequestOptions,
|
|
134
|
-
): Promise<T>;
|
|
135
|
-
put<T = any>(
|
|
136
|
-
endpoint: string,
|
|
137
|
-
data?: any,
|
|
138
|
-
options?: RequestOptions,
|
|
139
|
-
): Promise<T>;
|
|
140
|
-
patch<T = any>(
|
|
141
|
-
endpoint: string,
|
|
142
|
-
data?: any,
|
|
143
|
-
options?: RequestOptions,
|
|
144
|
-
): Promise<T>;
|
|
145
|
-
delete<T = any>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
152
|
+
request<T = unknown>(method: HTTPMethod, endpoint: string, data?: unknown, options?: RequestOptions): Promise<T>;
|
|
153
|
+
get<T = unknown>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
154
|
+
post<T = unknown>(endpoint: string, data?: unknown, options?: RequestOptions): Promise<T>;
|
|
155
|
+
put<T = unknown>(endpoint: string, data?: unknown, options?: RequestOptions): Promise<T>;
|
|
156
|
+
patch<T = unknown>(endpoint: string, data?: unknown, options?: RequestOptions): Promise<T>;
|
|
157
|
+
delete<T = unknown>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
146
158
|
|
|
147
159
|
// Posts
|
|
148
160
|
getPosts(params?: PostQueryParams): Promise<WordPressPost[]>;
|
|
149
|
-
getPost(
|
|
150
|
-
id: number,
|
|
151
|
-
context?: "view" | "embed" | "edit",
|
|
152
|
-
): Promise<WordPressPost>;
|
|
161
|
+
getPost(id: number, context?: "view" | "embed" | "edit"): Promise<WordPressPost>;
|
|
153
162
|
createPost(data: CreatePostRequest): Promise<WordPressPost>;
|
|
154
163
|
updatePost(data: UpdatePostRequest): Promise<WordPressPost>;
|
|
155
|
-
deletePost(
|
|
156
|
-
id: number,
|
|
157
|
-
force?: boolean,
|
|
158
|
-
): Promise<{ deleted: boolean; previous?: WordPressPost }>;
|
|
164
|
+
deletePost(id: number, force?: boolean): Promise<{ deleted: boolean; previous?: WordPressPost }>;
|
|
159
165
|
getPostRevisions(id: number): Promise<WordPressPost[]>;
|
|
160
166
|
|
|
161
167
|
// Pages
|
|
162
168
|
getPages(params?: PostQueryParams): Promise<WordPressPage[]>;
|
|
163
|
-
getPage(
|
|
164
|
-
id: number,
|
|
165
|
-
context?: "view" | "embed" | "edit",
|
|
166
|
-
): Promise<WordPressPage>;
|
|
169
|
+
getPage(id: number, context?: "view" | "embed" | "edit"): Promise<WordPressPage>;
|
|
167
170
|
createPage(data: CreatePageRequest): Promise<WordPressPage>;
|
|
168
171
|
updatePage(data: UpdatePageRequest): Promise<WordPressPage>;
|
|
169
|
-
deletePage(
|
|
170
|
-
id: number,
|
|
171
|
-
force?: boolean,
|
|
172
|
-
): Promise<{ deleted: boolean; previous?: WordPressPage }>;
|
|
172
|
+
deletePage(id: number, force?: boolean): Promise<{ deleted: boolean; previous?: WordPressPage }>;
|
|
173
173
|
getPageRevisions(id: number): Promise<WordPressPage[]>;
|
|
174
174
|
|
|
175
175
|
// Media
|
|
176
176
|
getMedia(params?: MediaQueryParams): Promise<WordPressMedia[]>;
|
|
177
|
-
getMediaItem(
|
|
178
|
-
id: number,
|
|
179
|
-
context?: "view" | "embed" | "edit",
|
|
180
|
-
): Promise<WordPressMedia>;
|
|
177
|
+
getMediaItem(id: number, context?: "view" | "embed" | "edit"): Promise<WordPressMedia>;
|
|
181
178
|
uploadMedia(data: UploadMediaRequest): Promise<WordPressMedia>;
|
|
182
179
|
uploadFile(
|
|
183
180
|
fileData: Buffer,
|
|
@@ -187,37 +184,22 @@ export interface IWordPressClient {
|
|
|
187
184
|
options?: RequestOptions,
|
|
188
185
|
): Promise<WordPressMedia>;
|
|
189
186
|
updateMedia(data: UpdateMediaRequest): Promise<WordPressMedia>;
|
|
190
|
-
deleteMedia(
|
|
191
|
-
id: number,
|
|
192
|
-
force?: boolean,
|
|
193
|
-
): Promise<{ deleted: boolean; previous?: WordPressMedia }>;
|
|
187
|
+
deleteMedia(id: number, force?: boolean): Promise<{ deleted: boolean; previous?: WordPressMedia }>;
|
|
194
188
|
|
|
195
189
|
// Users
|
|
196
190
|
getUsers(params?: UserQueryParams): Promise<WordPressUser[]>;
|
|
197
|
-
getUser(
|
|
198
|
-
id: number | "me",
|
|
199
|
-
context?: "view" | "embed" | "edit",
|
|
200
|
-
): Promise<WordPressUser>;
|
|
191
|
+
getUser(id: number | "me", context?: "view" | "embed" | "edit"): Promise<WordPressUser>;
|
|
201
192
|
createUser(data: CreateUserRequest): Promise<WordPressUser>;
|
|
202
193
|
updateUser(data: UpdateUserRequest): Promise<WordPressUser>;
|
|
203
|
-
deleteUser(
|
|
204
|
-
id: number,
|
|
205
|
-
reassign?: number,
|
|
206
|
-
): Promise<{ deleted: boolean; previous?: WordPressUser }>;
|
|
194
|
+
deleteUser(id: number, reassign?: number): Promise<{ deleted: boolean; previous?: WordPressUser }>;
|
|
207
195
|
getCurrentUser(): Promise<WordPressUser>;
|
|
208
196
|
|
|
209
197
|
// Comments
|
|
210
198
|
getComments(params?: CommentQueryParams): Promise<WordPressComment[]>;
|
|
211
|
-
getComment(
|
|
212
|
-
id: number,
|
|
213
|
-
context?: "view" | "embed" | "edit",
|
|
214
|
-
): Promise<WordPressComment>;
|
|
199
|
+
getComment(id: number, context?: "view" | "embed" | "edit"): Promise<WordPressComment>;
|
|
215
200
|
createComment(data: CreateCommentRequest): Promise<WordPressComment>;
|
|
216
201
|
updateComment(data: UpdateCommentRequest): Promise<WordPressComment>;
|
|
217
|
-
deleteComment(
|
|
218
|
-
id: number,
|
|
219
|
-
force?: boolean,
|
|
220
|
-
): Promise<{ deleted: boolean; previous?: WordPressComment }>;
|
|
202
|
+
deleteComment(id: number, force?: boolean): Promise<{ deleted: boolean; previous?: WordPressComment }>;
|
|
221
203
|
approveComment(id: number): Promise<WordPressComment>;
|
|
222
204
|
rejectComment(id: number): Promise<WordPressComment>;
|
|
223
205
|
spamComment(id: number): Promise<WordPressComment>;
|
|
@@ -237,10 +219,7 @@ export interface IWordPressClient {
|
|
|
237
219
|
getCategory(id: number): Promise<WordPressCategory>;
|
|
238
220
|
createCategory(data: CreateCategoryRequest): Promise<WordPressCategory>;
|
|
239
221
|
updateCategory(data: UpdateCategoryRequest): Promise<WordPressCategory>;
|
|
240
|
-
deleteCategory(
|
|
241
|
-
id: number,
|
|
242
|
-
force?: boolean,
|
|
243
|
-
): Promise<{ deleted: boolean; previous?: WordPressCategory }>;
|
|
222
|
+
deleteCategory(id: number, force?: boolean): Promise<{ deleted: boolean; previous?: WordPressCategory }>;
|
|
244
223
|
|
|
245
224
|
getTags(params?: {
|
|
246
225
|
search?: string;
|
|
@@ -255,62 +234,26 @@ export interface IWordPressClient {
|
|
|
255
234
|
getTag(id: number): Promise<WordPressTag>;
|
|
256
235
|
createTag(data: CreateTagRequest): Promise<WordPressTag>;
|
|
257
236
|
updateTag(data: UpdateTagRequest): Promise<WordPressTag>;
|
|
258
|
-
deleteTag(
|
|
259
|
-
id: number,
|
|
260
|
-
force?: boolean,
|
|
261
|
-
): Promise<{ deleted: boolean; previous?: WordPressTag }>;
|
|
237
|
+
deleteTag(id: number, force?: boolean): Promise<{ deleted: boolean; previous?: WordPressTag }>;
|
|
262
238
|
|
|
263
239
|
// Site Management
|
|
264
240
|
getSiteSettings(): Promise<WordPressSiteSettings>;
|
|
265
|
-
updateSiteSettings(
|
|
266
|
-
|
|
267
|
-
): Promise<WordPressSiteSettings>;
|
|
268
|
-
getSiteInfo(): Promise<{
|
|
269
|
-
name: string;
|
|
270
|
-
description: string;
|
|
271
|
-
url: string;
|
|
272
|
-
home: string;
|
|
273
|
-
gmt_offset: number;
|
|
274
|
-
timezone_string: string;
|
|
275
|
-
namespaces: string[];
|
|
276
|
-
authentication: Record<string, any>;
|
|
277
|
-
routes: Record<string, any>;
|
|
278
|
-
}>;
|
|
241
|
+
updateSiteSettings(settings: Partial<WordPressSiteSettings>): Promise<WordPressSiteSettings>;
|
|
242
|
+
getSiteInfo(): Promise<import("./wordpress.js").WordPressSiteInfo>;
|
|
279
243
|
|
|
280
244
|
// Application Passwords
|
|
281
|
-
getApplicationPasswords(
|
|
282
|
-
|
|
283
|
-
): Promise<
|
|
284
|
-
createApplicationPassword(
|
|
285
|
-
userId: number | "me",
|
|
286
|
-
name: string,
|
|
287
|
-
appId?: string,
|
|
288
|
-
): Promise<WordPressApplicationPassword>;
|
|
289
|
-
deleteApplicationPassword(
|
|
290
|
-
userId: number | "me",
|
|
291
|
-
uuid: string,
|
|
292
|
-
): Promise<{ deleted: boolean }>;
|
|
245
|
+
getApplicationPasswords(userId?: number | "me"): Promise<WordPressApplicationPassword[]>;
|
|
246
|
+
createApplicationPassword(userId: number | "me", name: string, appId?: string): Promise<WordPressApplicationPassword>;
|
|
247
|
+
deleteApplicationPassword(userId: number | "me", uuid: string): Promise<{ deleted: boolean }>;
|
|
293
248
|
|
|
294
249
|
// Search
|
|
295
|
-
search(
|
|
296
|
-
query: string,
|
|
297
|
-
types?: string[],
|
|
298
|
-
subtype?: string,
|
|
299
|
-
): Promise<
|
|
300
|
-
Array<{
|
|
301
|
-
id: number;
|
|
302
|
-
title: string;
|
|
303
|
-
url: string;
|
|
304
|
-
type: string;
|
|
305
|
-
subtype: string;
|
|
306
|
-
}>
|
|
307
|
-
>;
|
|
250
|
+
search(query: string, types?: string[], subtype?: string): Promise<import("./wordpress.js").WordPressSearchResult[]>;
|
|
308
251
|
|
|
309
252
|
// Utility Methods
|
|
310
253
|
ping(): Promise<boolean>;
|
|
311
|
-
getServerInfo(): Promise<Record<string,
|
|
254
|
+
getServerInfo(): Promise<Record<string, unknown>>;
|
|
312
255
|
validateEndpoint(endpoint: string): boolean;
|
|
313
|
-
buildUrl(endpoint: string, params?: Record<string,
|
|
256
|
+
buildUrl(endpoint: string, params?: Record<string, unknown>): string;
|
|
314
257
|
}
|
|
315
258
|
|
|
316
259
|
// Authentication Provider Interface
|
|
@@ -326,9 +269,9 @@ export interface IAuthProvider {
|
|
|
326
269
|
export class WordPressAPIError extends Error {
|
|
327
270
|
public readonly statusCode?: number;
|
|
328
271
|
public readonly code?: string;
|
|
329
|
-
public data?:
|
|
272
|
+
public data?: unknown;
|
|
330
273
|
|
|
331
|
-
constructor(message: string, statusCode?: number, code?: string, data?:
|
|
274
|
+
constructor(message: string, statusCode?: number, code?: string, data?: unknown) {
|
|
332
275
|
super(message);
|
|
333
276
|
this.name = "WordPressAPIError";
|
|
334
277
|
if (statusCode !== undefined) this.statusCode = statusCode;
|
|
@@ -362,41 +305,74 @@ export class ValidationError extends WordPressAPIError {
|
|
|
362
305
|
}
|
|
363
306
|
|
|
364
307
|
// Type Guards
|
|
365
|
-
export function isWordPressAPIError(error:
|
|
308
|
+
export function isWordPressAPIError(error: unknown): error is WordPressAPIError {
|
|
366
309
|
return error instanceof WordPressAPIError;
|
|
367
310
|
}
|
|
368
311
|
|
|
369
|
-
export function isAuthenticationError(
|
|
370
|
-
error: any,
|
|
371
|
-
): error is AuthenticationError {
|
|
312
|
+
export function isAuthenticationError(error: unknown): error is AuthenticationError {
|
|
372
313
|
return error instanceof AuthenticationError;
|
|
373
314
|
}
|
|
374
315
|
|
|
375
|
-
export function isRateLimitError(error:
|
|
316
|
+
export function isRateLimitError(error: unknown): error is RateLimitError {
|
|
376
317
|
return error instanceof RateLimitError;
|
|
377
318
|
}
|
|
378
319
|
|
|
379
|
-
export function isValidationError(error:
|
|
320
|
+
export function isValidationError(error: unknown): error is ValidationError {
|
|
380
321
|
return error instanceof ValidationError;
|
|
381
322
|
}
|
|
382
323
|
|
|
383
324
|
// Response Type Guards
|
|
384
|
-
export function isWordPressPost(obj:
|
|
385
|
-
return
|
|
325
|
+
export function isWordPressPost(obj: unknown): obj is WordPressPost {
|
|
326
|
+
return (
|
|
327
|
+
obj !== null &&
|
|
328
|
+
typeof obj === "object" &&
|
|
329
|
+
"id" in obj &&
|
|
330
|
+
"type" in obj &&
|
|
331
|
+
typeof (obj as Record<string, unknown>).id === "number" &&
|
|
332
|
+
(obj as Record<string, unknown>).type === "post"
|
|
333
|
+
);
|
|
386
334
|
}
|
|
387
335
|
|
|
388
|
-
export function isWordPressPage(obj:
|
|
389
|
-
return
|
|
336
|
+
export function isWordPressPage(obj: unknown): obj is WordPressPage {
|
|
337
|
+
return (
|
|
338
|
+
obj !== null &&
|
|
339
|
+
typeof obj === "object" &&
|
|
340
|
+
"id" in obj &&
|
|
341
|
+
"type" in obj &&
|
|
342
|
+
typeof (obj as Record<string, unknown>).id === "number" &&
|
|
343
|
+
(obj as Record<string, unknown>).type === "page"
|
|
344
|
+
);
|
|
390
345
|
}
|
|
391
346
|
|
|
392
|
-
export function isWordPressMedia(obj:
|
|
393
|
-
return
|
|
347
|
+
export function isWordPressMedia(obj: unknown): obj is WordPressMedia {
|
|
348
|
+
return (
|
|
349
|
+
obj !== null &&
|
|
350
|
+
typeof obj === "object" &&
|
|
351
|
+
"id" in obj &&
|
|
352
|
+
"media_type" in obj &&
|
|
353
|
+
typeof (obj as Record<string, unknown>).id === "number" &&
|
|
354
|
+
Boolean((obj as Record<string, unknown>).media_type)
|
|
355
|
+
);
|
|
394
356
|
}
|
|
395
357
|
|
|
396
|
-
export function isWordPressUser(obj:
|
|
397
|
-
return
|
|
358
|
+
export function isWordPressUser(obj: unknown): obj is WordPressUser {
|
|
359
|
+
return (
|
|
360
|
+
obj !== null &&
|
|
361
|
+
typeof obj === "object" &&
|
|
362
|
+
"id" in obj &&
|
|
363
|
+
"username" in obj &&
|
|
364
|
+
typeof (obj as Record<string, unknown>).id === "number" &&
|
|
365
|
+
Boolean((obj as Record<string, unknown>).username)
|
|
366
|
+
);
|
|
398
367
|
}
|
|
399
368
|
|
|
400
|
-
export function isWordPressComment(obj:
|
|
401
|
-
return
|
|
369
|
+
export function isWordPressComment(obj: unknown): obj is WordPressComment {
|
|
370
|
+
return (
|
|
371
|
+
obj !== null &&
|
|
372
|
+
typeof obj === "object" &&
|
|
373
|
+
"id" in obj &&
|
|
374
|
+
"post" in obj &&
|
|
375
|
+
typeof (obj as Record<string, unknown>).id === "number" &&
|
|
376
|
+
typeof (obj as Record<string, unknown>).post === "number"
|
|
377
|
+
);
|
|
402
378
|
}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced TypeScript Types for MCP WordPress
|
|
3
|
+
*
|
|
4
|
+
* This file provides stronger typing, utility types, and generic constraints
|
|
5
|
+
* to improve type safety throughout the codebase.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// Utility Types for Better Type Safety
|
|
9
|
+
export type NonEmptyArray<T> = readonly [T, ...T[]];
|
|
10
|
+
export type Nullable<T> = T | null;
|
|
11
|
+
export type Optional<T> = T | undefined;
|
|
12
|
+
export type DeepReadonly<T> = {
|
|
13
|
+
readonly [P in keyof T]: T[P] extends (infer U)[]
|
|
14
|
+
? DeepReadonlyArray<U>
|
|
15
|
+
: T[P] extends readonly (infer U)[]
|
|
16
|
+
? DeepReadonlyArray<U>
|
|
17
|
+
: T[P] extends object
|
|
18
|
+
? DeepReadonly<T[P]>
|
|
19
|
+
: T[P];
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
interface DeepReadonlyArray<T> extends ReadonlyArray<DeepReadonly<T>> {}
|
|
23
|
+
|
|
24
|
+
// Branded Types for Domain-Specific Values
|
|
25
|
+
export type WordPressId = number & { readonly __brand: 'WordPressId' };
|
|
26
|
+
export type UserId = number & { readonly __brand: 'UserId' };
|
|
27
|
+
export type PostId = number & { readonly __brand: 'PostId' };
|
|
28
|
+
export type MediaId = number & { readonly __brand: 'MediaId' };
|
|
29
|
+
export type CommentId = number & { readonly __brand: 'CommentId' };
|
|
30
|
+
export type CategoryId = number & { readonly __brand: 'CategoryId' };
|
|
31
|
+
export type TagId = number & { readonly __brand: 'TagId' };
|
|
32
|
+
|
|
33
|
+
// Helper functions to create branded types
|
|
34
|
+
export const createWordPressId = (id: number): WordPressId => {
|
|
35
|
+
if (!Number.isInteger(id) || id <= 0) {
|
|
36
|
+
throw new Error(`Invalid WordPress ID: ${id}. Must be a positive integer.`);
|
|
37
|
+
}
|
|
38
|
+
return id as WordPressId;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export const createUserId = (id: number): UserId => id as UserId;
|
|
42
|
+
export const createPostId = (id: number): PostId => id as PostId;
|
|
43
|
+
export const createMediaId = (id: number): MediaId => id as MediaId;
|
|
44
|
+
export const createCommentId = (id: number): CommentId => id as CommentId;
|
|
45
|
+
export const createCategoryId = (id: number): CategoryId => id as CategoryId;
|
|
46
|
+
export const createTagId = (id: number): TagId => id as TagId;
|
|
47
|
+
|
|
48
|
+
// Strict URL type
|
|
49
|
+
export type WordPressURL = string & { readonly __brand: 'WordPressURL' };
|
|
50
|
+
export const createWordPressURL = (url: string): WordPressURL => {
|
|
51
|
+
try {
|
|
52
|
+
new URL(url);
|
|
53
|
+
return url as WordPressURL;
|
|
54
|
+
} catch {
|
|
55
|
+
throw new Error(`Invalid URL: ${url}`);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// Enhanced Error Types with Better Constraints
|
|
60
|
+
export interface TypedError<TCode extends string = string> extends Error {
|
|
61
|
+
readonly code: TCode;
|
|
62
|
+
readonly statusCode?: number;
|
|
63
|
+
readonly timestamp: Date;
|
|
64
|
+
readonly context?: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface ValidationError extends TypedError<'VALIDATION_ERROR'> {
|
|
68
|
+
readonly field: string;
|
|
69
|
+
readonly value: unknown;
|
|
70
|
+
readonly constraint: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface APIError extends TypedError<'API_ERROR'> {
|
|
74
|
+
readonly endpoint: string;
|
|
75
|
+
readonly method: string;
|
|
76
|
+
readonly statusCode: number;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Enhanced Request/Response Types with Generic Constraints
|
|
80
|
+
export interface BaseRequest {
|
|
81
|
+
readonly timestamp: Date;
|
|
82
|
+
readonly requestId: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface BaseResponse<TData = unknown> {
|
|
86
|
+
readonly success: boolean;
|
|
87
|
+
readonly data?: TData;
|
|
88
|
+
readonly error?: string;
|
|
89
|
+
readonly timestamp: Date;
|
|
90
|
+
readonly requestId: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface PaginatedResponse<TData> extends BaseResponse<TData[]> {
|
|
94
|
+
readonly pagination: {
|
|
95
|
+
readonly page: number;
|
|
96
|
+
readonly perPage: number;
|
|
97
|
+
readonly total: number;
|
|
98
|
+
readonly totalPages: number;
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Enhanced API Client Types
|
|
103
|
+
export interface RequestConfig {
|
|
104
|
+
readonly timeout?: number;
|
|
105
|
+
readonly retries?: number;
|
|
106
|
+
readonly headers?: DeepReadonly<Record<string, string>>;
|
|
107
|
+
readonly signal?: AbortSignal;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export interface HTTPRequestOptions extends RequestConfig {
|
|
111
|
+
readonly method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
112
|
+
readonly url: WordPressURL;
|
|
113
|
+
readonly data?: unknown;
|
|
114
|
+
readonly params?: DeepReadonly<Record<string, string | number | boolean>>;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Tool Handler Types with Enhanced Constraints
|
|
118
|
+
export interface ToolContext {
|
|
119
|
+
readonly toolName: string;
|
|
120
|
+
readonly executionId: string;
|
|
121
|
+
readonly startTime: Date;
|
|
122
|
+
readonly user?: {
|
|
123
|
+
readonly id: UserId;
|
|
124
|
+
readonly roles: NonEmptyArray<string>;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface ToolResult<TData = unknown> {
|
|
129
|
+
readonly success: boolean;
|
|
130
|
+
readonly data?: TData;
|
|
131
|
+
readonly error?: string;
|
|
132
|
+
readonly executionTime: number;
|
|
133
|
+
readonly warnings?: readonly string[];
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export type ToolHandler<TInput, TOutput> = (
|
|
137
|
+
input: DeepReadonly<TInput>,
|
|
138
|
+
context: DeepReadonly<ToolContext>
|
|
139
|
+
) => Promise<ToolResult<TOutput>>;
|
|
140
|
+
|
|
141
|
+
// Cache Types with Enhanced Type Safety
|
|
142
|
+
export interface CacheKey {
|
|
143
|
+
readonly namespace: string;
|
|
144
|
+
readonly operation: string;
|
|
145
|
+
readonly params: DeepReadonly<Record<string, string | number | boolean>>;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface CacheEntry<TData> {
|
|
149
|
+
readonly key: string;
|
|
150
|
+
readonly data: TData;
|
|
151
|
+
readonly createdAt: Date;
|
|
152
|
+
readonly expiresAt: Date;
|
|
153
|
+
readonly hits: number;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface CacheOptions {
|
|
157
|
+
readonly ttl: number;
|
|
158
|
+
readonly tags?: readonly string[];
|
|
159
|
+
readonly priority?: 'low' | 'medium' | 'high';
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Configuration Types with Better Validation
|
|
163
|
+
export interface StrictSiteConfig {
|
|
164
|
+
readonly id: string;
|
|
165
|
+
readonly name: string;
|
|
166
|
+
readonly url: WordPressURL;
|
|
167
|
+
readonly auth: DeepReadonly<{
|
|
168
|
+
readonly method: 'app-password' | 'jwt' | 'basic' | 'api-key';
|
|
169
|
+
readonly username: string;
|
|
170
|
+
readonly password: string;
|
|
171
|
+
}>;
|
|
172
|
+
readonly timeout?: number;
|
|
173
|
+
readonly rateLimit?: DeepReadonly<{
|
|
174
|
+
readonly requestsPerMinute: number;
|
|
175
|
+
readonly burstLimit: number;
|
|
176
|
+
}>;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Performance Monitoring Types
|
|
180
|
+
export interface PerformanceMetrics {
|
|
181
|
+
readonly requestCount: number;
|
|
182
|
+
readonly averageResponseTime: number;
|
|
183
|
+
readonly errorRate: number;
|
|
184
|
+
readonly cacheHitRate: number;
|
|
185
|
+
readonly lastUpdated: Date;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export interface PerformanceThresholds {
|
|
189
|
+
readonly maxResponseTime: number;
|
|
190
|
+
readonly maxErrorRate: number;
|
|
191
|
+
readonly minCacheHitRate: number;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Type Guards for Runtime Validation
|
|
195
|
+
export const isWordPressId = (value: unknown): value is WordPressId => {
|
|
196
|
+
return typeof value === 'number' && Number.isInteger(value) && value > 0;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export const isNonEmptyArray = <T>(value: unknown): value is NonEmptyArray<T> => {
|
|
200
|
+
return Array.isArray(value) && value.length > 0;
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
export const isValidURL = (value: unknown): value is WordPressURL => {
|
|
204
|
+
if (typeof value !== 'string') return false;
|
|
205
|
+
try {
|
|
206
|
+
new URL(value);
|
|
207
|
+
return true;
|
|
208
|
+
} catch {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
// Conditional Types for Enhanced API
|
|
214
|
+
export type RequiredFields<T, K extends keyof T> = T & Required<Pick<T, K>>;
|
|
215
|
+
export type OptionalFields<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
216
|
+
|
|
217
|
+
// JSON Schema Type Definitions
|
|
218
|
+
export interface JSONSchemaDefinition {
|
|
219
|
+
readonly type: 'string' | 'number' | 'boolean' | 'object' | 'array' | 'null';
|
|
220
|
+
readonly description?: string;
|
|
221
|
+
readonly required?: boolean;
|
|
222
|
+
readonly enum?: readonly (string | number)[];
|
|
223
|
+
readonly minimum?: number;
|
|
224
|
+
readonly maximum?: number;
|
|
225
|
+
readonly minLength?: number;
|
|
226
|
+
readonly maxLength?: number;
|
|
227
|
+
readonly pattern?: string;
|
|
228
|
+
readonly format?: 'email' | 'uri' | 'date-time' | 'date' | 'time';
|
|
229
|
+
readonly items?: JSONSchemaDefinition;
|
|
230
|
+
readonly properties?: DeepReadonly<Record<string, JSONSchemaDefinition>>;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Enhanced MCP Tool Schema
|
|
234
|
+
export interface StrictMCPToolSchema {
|
|
235
|
+
readonly type: 'object';
|
|
236
|
+
readonly properties: DeepReadonly<Record<string, JSONSchemaDefinition>>;
|
|
237
|
+
readonly required: readonly string[];
|
|
238
|
+
readonly additionalProperties: false;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Result Types for Better Error Handling
|
|
242
|
+
export type Result<TSuccess, TError = Error> =
|
|
243
|
+
| { readonly success: true; readonly data: TSuccess }
|
|
244
|
+
| { readonly success: false; readonly error: TError };
|
|
245
|
+
|
|
246
|
+
export const createSuccess = <T>(data: T): Result<T> => ({ success: true, data });
|
|
247
|
+
export const createError = <T>(error: Error): Result<T> => ({ success: false, error });
|
|
248
|
+
|
|
249
|
+
// Async Result Type
|
|
250
|
+
export type AsyncResult<T, E = Error> = Promise<Result<T, E>>;
|
|
251
|
+
|
|
252
|
+
// Database Types with Enhanced Constraints
|
|
253
|
+
export interface DatabaseEntity {
|
|
254
|
+
readonly id: WordPressId;
|
|
255
|
+
readonly createdAt: Date;
|
|
256
|
+
readonly updatedAt: Date;
|
|
257
|
+
readonly version: number;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export interface AuditableEntity extends DatabaseEntity {
|
|
261
|
+
readonly createdBy: UserId;
|
|
262
|
+
readonly updatedBy: UserId;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Validation Result Types
|
|
266
|
+
export interface ValidationResult<T> {
|
|
267
|
+
readonly success: boolean;
|
|
268
|
+
readonly data?: T;
|
|
269
|
+
readonly errors: readonly ValidationError[];
|
|
270
|
+
readonly warnings: readonly string[];
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export type Validator<T> = (value: unknown) => ValidationResult<T>;
|
|
274
|
+
|
|
275
|
+
// Enhanced Event Types for Monitoring
|
|
276
|
+
export interface DomainEvent<TType extends string = string, TPayload = unknown> {
|
|
277
|
+
readonly type: TType;
|
|
278
|
+
readonly payload: TPayload;
|
|
279
|
+
readonly timestamp: Date;
|
|
280
|
+
readonly source: string;
|
|
281
|
+
readonly correlationId: string;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export type EventHandler<TEvent extends DomainEvent> = (event: TEvent) => Promise<void>;
|
|
285
|
+
|
|
286
|
+
// Configuration Validation Types
|
|
287
|
+
export interface ConfigValidationRule<T> {
|
|
288
|
+
readonly key: keyof T;
|
|
289
|
+
readonly required: boolean;
|
|
290
|
+
readonly validator: (value: unknown) => boolean;
|
|
291
|
+
readonly errorMessage: string;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export interface ConfigValidationResult {
|
|
295
|
+
readonly valid: boolean;
|
|
296
|
+
readonly errors: readonly string[];
|
|
297
|
+
readonly warnings: readonly string[];
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Performance Monitoring Event Types
|
|
301
|
+
export type PerformanceEventType =
|
|
302
|
+
| 'request_started'
|
|
303
|
+
| 'request_completed'
|
|
304
|
+
| 'request_failed'
|
|
305
|
+
| 'cache_hit'
|
|
306
|
+
| 'cache_miss'
|
|
307
|
+
| 'auth_success'
|
|
308
|
+
| 'auth_failure';
|
|
309
|
+
|
|
310
|
+
export interface PerformanceEvent extends DomainEvent<PerformanceEventType> {
|
|
311
|
+
readonly payload: {
|
|
312
|
+
readonly duration?: number;
|
|
313
|
+
readonly endpoint?: string;
|
|
314
|
+
readonly statusCode?: number;
|
|
315
|
+
readonly cacheKey?: string;
|
|
316
|
+
readonly userId?: UserId;
|
|
317
|
+
};
|
|
318
|
+
}
|