mcp-wordpress 1.1.7 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/README.md +388 -66
  2. package/dist/cache/CacheInvalidation.d.ts +118 -0
  3. package/dist/cache/CacheInvalidation.d.ts.map +1 -0
  4. package/dist/cache/CacheInvalidation.js +349 -0
  5. package/dist/cache/CacheInvalidation.js.map +1 -0
  6. package/dist/cache/CacheManager.d.ts +143 -0
  7. package/dist/cache/CacheManager.d.ts.map +1 -0
  8. package/dist/cache/CacheManager.js +308 -0
  9. package/dist/cache/CacheManager.js.map +1 -0
  10. package/dist/cache/HttpCacheWrapper.d.ts +121 -0
  11. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -0
  12. package/dist/cache/HttpCacheWrapper.js +280 -0
  13. package/dist/cache/HttpCacheWrapper.js.map +1 -0
  14. package/dist/cache/__tests__/CacheInvalidation.test.d.ts +5 -0
  15. package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +1 -0
  16. package/dist/cache/__tests__/CacheInvalidation.test.js +236 -0
  17. package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -0
  18. package/dist/cache/__tests__/CacheManager.test.d.ts +5 -0
  19. package/dist/cache/__tests__/CacheManager.test.d.ts.map +1 -0
  20. package/dist/cache/__tests__/CacheManager.test.js +233 -0
  21. package/dist/cache/__tests__/CacheManager.test.js.map +1 -0
  22. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +5 -0
  23. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +1 -0
  24. package/dist/cache/__tests__/CachedWordPressClient.test.js +228 -0
  25. package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -0
  26. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +5 -0
  27. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +1 -0
  28. package/dist/cache/__tests__/HttpCacheWrapper.test.js +296 -0
  29. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -0
  30. package/dist/cache/index.d.ts +12 -0
  31. package/dist/cache/index.d.ts.map +1 -0
  32. package/dist/cache/index.js +9 -0
  33. package/dist/cache/index.js.map +1 -0
  34. package/dist/client/CachedWordPressClient.d.ts +160 -0
  35. package/dist/client/CachedWordPressClient.d.ts.map +1 -0
  36. package/dist/client/CachedWordPressClient.js +338 -0
  37. package/dist/client/CachedWordPressClient.js.map +1 -0
  38. package/dist/client/WordPressClient.d.ts +81 -0
  39. package/dist/client/WordPressClient.d.ts.map +1 -0
  40. package/dist/client/WordPressClient.js +354 -0
  41. package/dist/client/WordPressClient.js.map +1 -0
  42. package/dist/config/ConfigurationSchema.d.ts +281 -0
  43. package/dist/config/ConfigurationSchema.d.ts.map +1 -0
  44. package/dist/config/ConfigurationSchema.js +205 -0
  45. package/dist/config/ConfigurationSchema.js.map +1 -0
  46. package/dist/config/ServerConfiguration.d.ts +38 -0
  47. package/dist/config/ServerConfiguration.d.ts.map +1 -0
  48. package/dist/config/ServerConfiguration.js +158 -0
  49. package/dist/config/ServerConfiguration.js.map +1 -0
  50. package/dist/docs/DocumentationGenerator.d.ts +184 -0
  51. package/dist/docs/DocumentationGenerator.d.ts.map +1 -0
  52. package/dist/docs/DocumentationGenerator.js +735 -0
  53. package/dist/docs/DocumentationGenerator.js.map +1 -0
  54. package/dist/docs/MarkdownFormatter.d.ts +84 -0
  55. package/dist/docs/MarkdownFormatter.d.ts.map +1 -0
  56. package/dist/docs/MarkdownFormatter.js +448 -0
  57. package/dist/docs/MarkdownFormatter.js.map +1 -0
  58. package/dist/docs/index.d.ts +8 -0
  59. package/dist/docs/index.d.ts.map +1 -0
  60. package/dist/docs/index.js +7 -0
  61. package/dist/docs/index.js.map +1 -0
  62. package/dist/index.d.ts +1 -4
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +12 -212
  65. package/dist/index.js.map +1 -1
  66. package/dist/performance/AnomalyDetector.d.ts +63 -0
  67. package/dist/performance/AnomalyDetector.d.ts.map +1 -0
  68. package/dist/performance/AnomalyDetector.js +222 -0
  69. package/dist/performance/AnomalyDetector.js.map +1 -0
  70. package/dist/performance/BenchmarkAnalyzer.d.ts +67 -0
  71. package/dist/performance/BenchmarkAnalyzer.d.ts.map +1 -0
  72. package/dist/performance/BenchmarkAnalyzer.js +301 -0
  73. package/dist/performance/BenchmarkAnalyzer.js.map +1 -0
  74. package/dist/performance/MetricsCollector.d.ts +139 -0
  75. package/dist/performance/MetricsCollector.d.ts.map +1 -0
  76. package/dist/performance/MetricsCollector.js +320 -0
  77. package/dist/performance/MetricsCollector.js.map +1 -0
  78. package/dist/performance/PerformanceAnalytics.d.ts +162 -0
  79. package/dist/performance/PerformanceAnalytics.d.ts.map +1 -0
  80. package/dist/performance/PerformanceAnalytics.js +554 -0
  81. package/dist/performance/PerformanceAnalytics.js.map +1 -0
  82. package/dist/performance/PerformanceMonitor.d.ts +202 -0
  83. package/dist/performance/PerformanceMonitor.d.ts.map +1 -0
  84. package/dist/performance/PerformanceMonitor.js +478 -0
  85. package/dist/performance/PerformanceMonitor.js.map +1 -0
  86. package/dist/performance/TrendAnalyzer.d.ts +69 -0
  87. package/dist/performance/TrendAnalyzer.d.ts.map +1 -0
  88. package/dist/performance/TrendAnalyzer.js +203 -0
  89. package/dist/performance/TrendAnalyzer.js.map +1 -0
  90. package/dist/performance/index.d.ts +11 -0
  91. package/dist/performance/index.d.ts.map +1 -0
  92. package/dist/performance/index.js +8 -0
  93. package/dist/performance/index.js.map +1 -0
  94. package/dist/security/InputValidator.d.ts +215 -0
  95. package/dist/security/InputValidator.d.ts.map +1 -0
  96. package/dist/security/InputValidator.js +278 -0
  97. package/dist/security/InputValidator.js.map +1 -0
  98. package/dist/security/SecurityConfig.d.ts +129 -0
  99. package/dist/security/SecurityConfig.d.ts.map +1 -0
  100. package/dist/security/SecurityConfig.js +262 -0
  101. package/dist/security/SecurityConfig.js.map +1 -0
  102. package/dist/server/ConnectionTester.d.ts +24 -0
  103. package/dist/server/ConnectionTester.d.ts.map +1 -0
  104. package/dist/server/ConnectionTester.js +61 -0
  105. package/dist/server/ConnectionTester.js.map +1 -0
  106. package/dist/server/ToolRegistry.d.ts +46 -0
  107. package/dist/server/ToolRegistry.d.ts.map +1 -0
  108. package/dist/server/ToolRegistry.js +148 -0
  109. package/dist/server/ToolRegistry.js.map +1 -0
  110. package/dist/tools/BaseToolClass.d.ts +76 -0
  111. package/dist/tools/BaseToolClass.d.ts.map +1 -0
  112. package/dist/tools/BaseToolClass.js +104 -0
  113. package/dist/tools/BaseToolClass.js.map +1 -0
  114. package/dist/tools/BaseToolManager.d.ts +26 -0
  115. package/dist/tools/BaseToolManager.d.ts.map +1 -0
  116. package/dist/tools/BaseToolManager.js +56 -0
  117. package/dist/tools/BaseToolManager.js.map +1 -0
  118. package/dist/tools/base.d.ts +37 -0
  119. package/dist/tools/base.d.ts.map +1 -0
  120. package/dist/tools/base.js +60 -0
  121. package/dist/tools/base.js.map +1 -0
  122. package/dist/tools/cache.d.ts +260 -0
  123. package/dist/tools/cache.d.ts.map +1 -0
  124. package/dist/tools/cache.js +237 -0
  125. package/dist/tools/cache.js.map +1 -0
  126. package/dist/tools/index.d.ts +2 -0
  127. package/dist/tools/index.d.ts.map +1 -1
  128. package/dist/tools/index.js +2 -0
  129. package/dist/tools/index.js.map +1 -1
  130. package/dist/tools/performance.d.ts +63 -0
  131. package/dist/tools/performance.d.ts.map +1 -0
  132. package/dist/tools/performance.js +865 -0
  133. package/dist/tools/performance.js.map +1 -0
  134. package/dist/types/client.d.ts +1 -0
  135. package/dist/types/client.d.ts.map +1 -1
  136. package/dist/types/client.js.map +1 -1
  137. package/dist/utils/toolWrapper.d.ts +4 -0
  138. package/dist/utils/toolWrapper.d.ts.map +1 -1
  139. package/dist/utils/toolWrapper.js +11 -0
  140. package/dist/utils/toolWrapper.js.map +1 -1
  141. package/dist/utils/validation.d.ts +68 -0
  142. package/dist/utils/validation.d.ts.map +1 -0
  143. package/dist/utils/validation.js +185 -0
  144. package/dist/utils/validation.js.map +1 -0
  145. package/docs/CACHING.md +340 -0
  146. package/docs/DOCKER.md +451 -0
  147. package/docs/PERFORMANCE_MONITORING.md +471 -0
  148. package/docs/SECURITY_TESTING.md +393 -0
  149. package/docs/api/README.md +200 -0
  150. package/docs/api/categories/auth.md +40 -0
  151. package/docs/api/categories/cache.md +41 -0
  152. package/docs/api/categories/comment.md +44 -0
  153. package/docs/api/categories/media.md +43 -0
  154. package/docs/api/categories/page.md +43 -0
  155. package/docs/api/categories/performance.md +44 -0
  156. package/docs/api/categories/post.md +43 -0
  157. package/docs/api/categories/site.md +43 -0
  158. package/docs/api/categories/taxonomy.md +47 -0
  159. package/docs/api/categories/user.md +43 -0
  160. package/docs/api/openapi.json +3305 -0
  161. package/docs/api/summary.json +12 -0
  162. package/docs/api/tools/wp_approve_comment.md +98 -0
  163. package/docs/api/tools/wp_cache_clear.md +120 -0
  164. package/docs/api/tools/wp_cache_info.md +119 -0
  165. package/docs/api/tools/wp_cache_stats.md +119 -0
  166. package/docs/api/tools/wp_cache_warm.md +119 -0
  167. package/docs/api/tools/wp_create_application_password.md +102 -0
  168. package/docs/api/tools/wp_create_category.md +102 -0
  169. package/docs/api/tools/wp_create_comment.md +128 -0
  170. package/docs/api/tools/wp_create_page.md +135 -0
  171. package/docs/api/tools/wp_create_post.md +147 -0
  172. package/docs/api/tools/wp_create_tag.md +101 -0
  173. package/docs/api/tools/wp_create_user.md +135 -0
  174. package/docs/api/tools/wp_delete_application_password.md +101 -0
  175. package/docs/api/tools/wp_delete_category.md +100 -0
  176. package/docs/api/tools/wp_delete_comment.md +101 -0
  177. package/docs/api/tools/wp_delete_media.md +108 -0
  178. package/docs/api/tools/wp_delete_page.md +108 -0
  179. package/docs/api/tools/wp_delete_post.md +117 -0
  180. package/docs/api/tools/wp_delete_tag.md +100 -0
  181. package/docs/api/tools/wp_delete_user.md +108 -0
  182. package/docs/api/tools/wp_get_application_passwords.md +103 -0
  183. package/docs/api/tools/wp_get_auth_status.md +101 -0
  184. package/docs/api/tools/wp_get_category.md +103 -0
  185. package/docs/api/tools/wp_get_comment.md +103 -0
  186. package/docs/api/tools/wp_get_current_user.md +101 -0
  187. package/docs/api/tools/wp_get_media.md +103 -0
  188. package/docs/api/tools/wp_get_page.md +103 -0
  189. package/docs/api/tools/wp_get_page_revisions.md +103 -0
  190. package/docs/api/tools/wp_get_post.md +112 -0
  191. package/docs/api/tools/wp_get_post_revisions.md +103 -0
  192. package/docs/api/tools/wp_get_site_settings.md +108 -0
  193. package/docs/api/tools/wp_get_tag.md +103 -0
  194. package/docs/api/tools/wp_get_user.md +103 -0
  195. package/docs/api/tools/wp_list_categories.md +111 -0
  196. package/docs/api/tools/wp_list_comments.md +111 -0
  197. package/docs/api/tools/wp_list_media.md +145 -0
  198. package/docs/api/tools/wp_list_pages.md +145 -0
  199. package/docs/api/tools/wp_list_posts.md +156 -0
  200. package/docs/api/tools/wp_list_tags.md +110 -0
  201. package/docs/api/tools/wp_list_users.md +111 -0
  202. package/docs/api/tools/wp_performance_alerts.md +162 -0
  203. package/docs/api/tools/wp_performance_benchmark.md +160 -0
  204. package/docs/api/tools/wp_performance_export.md +162 -0
  205. package/docs/api/tools/wp_performance_history.md +161 -0
  206. package/docs/api/tools/wp_performance_optimize.md +162 -0
  207. package/docs/api/tools/wp_performance_stats.md +160 -0
  208. package/docs/api/tools/wp_search_site.md +99 -0
  209. package/docs/api/tools/wp_spam_comment.md +98 -0
  210. package/docs/api/tools/wp_switch_auth_method.md +122 -0
  211. package/docs/api/tools/wp_test_auth.md +96 -0
  212. package/docs/api/tools/wp_update_category.md +102 -0
  213. package/docs/api/tools/wp_update_comment.md +127 -0
  214. package/docs/api/tools/wp_update_media.md +129 -0
  215. package/docs/api/tools/wp_update_page.md +135 -0
  216. package/docs/api/tools/wp_update_post.md +144 -0
  217. package/docs/api/tools/wp_update_site_settings.md +127 -0
  218. package/docs/api/tools/wp_update_tag.md +102 -0
  219. package/docs/api/tools/wp_update_user.md +134 -0
  220. package/docs/api/tools/wp_upload_media.md +131 -0
  221. package/docs/api/types/WordPressPost.md +39 -0
  222. package/docs/contract-testing.md +183 -0
  223. package/docs/developer/NPM_AUTH_SETUP.md +3 -3
  224. package/docs/wordpress-rest-api-authentication-troubleshooting.md +218 -0
  225. package/package.json +84 -64
  226. package/src/cache/CacheInvalidation.ts +421 -0
  227. package/src/cache/CacheManager.ts +391 -0
  228. package/src/cache/HttpCacheWrapper.ts +372 -0
  229. package/src/cache/__tests__/CacheInvalidation.test.ts +299 -0
  230. package/src/cache/__tests__/CacheManager.test.ts +300 -0
  231. package/src/cache/__tests__/CachedWordPressClient.test.ts +304 -0
  232. package/src/cache/__tests__/HttpCacheWrapper.test.ts +359 -0
  233. package/src/cache/index.ts +26 -0
  234. package/src/client/CachedWordPressClient.ts +442 -0
  235. package/src/config/ConfigurationSchema.ts +246 -0
  236. package/src/config/ServerConfiguration.ts +215 -0
  237. package/src/docs/DocumentationGenerator.ts +952 -0
  238. package/src/docs/MarkdownFormatter.ts +494 -0
  239. package/src/docs/index.ts +21 -0
  240. package/src/index.ts +14 -274
  241. package/src/performance/MetricsCollector.ts +447 -0
  242. package/src/performance/PerformanceAnalytics.ts +762 -0
  243. package/src/performance/PerformanceMonitor.ts +649 -0
  244. package/src/performance/index.ts +28 -0
  245. package/src/security/InputValidator.ts +319 -0
  246. package/src/security/SecurityConfig.ts +301 -0
  247. package/src/server/ConnectionTester.ts +74 -0
  248. package/src/server/ToolRegistry.ts +194 -0
  249. package/src/tools/BaseToolManager.ts +66 -0
  250. package/src/tools/cache.ts +259 -0
  251. package/src/tools/index.ts +2 -0
  252. package/src/tools/performance.ts +948 -0
  253. package/src/types/client.ts +1 -0
  254. package/src/utils/toolWrapper.ts +11 -0
  255. package/src/utils/validation.ts +259 -0
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Intelligent cache invalidation strategies for WordPress MCP Server
3
+ * Implements event-based and pattern-based invalidation
4
+ */
5
+ import { HttpCacheWrapper } from './HttpCacheWrapper.js';
6
+ export interface InvalidationRule {
7
+ trigger: string;
8
+ patterns: string[];
9
+ immediate?: boolean;
10
+ cascade?: boolean;
11
+ }
12
+ export interface InvalidationEvent {
13
+ type: 'create' | 'update' | 'delete';
14
+ resource: string;
15
+ id?: number | undefined;
16
+ siteId: string;
17
+ timestamp: number;
18
+ data?: any;
19
+ }
20
+ /**
21
+ * Cache invalidation manager that handles intelligent cache clearing
22
+ */
23
+ export declare class CacheInvalidation {
24
+ private httpCache;
25
+ private invalidationRules;
26
+ private eventQueue;
27
+ private processing;
28
+ constructor(httpCache: HttpCacheWrapper);
29
+ /**
30
+ * Register invalidation rule
31
+ */
32
+ registerRule(resource: string, rule: InvalidationRule): void;
33
+ /**
34
+ * Trigger invalidation event
35
+ */
36
+ trigger(event: InvalidationEvent): Promise<void>;
37
+ /**
38
+ * Invalidate cache for specific resource
39
+ */
40
+ invalidateResource(resource: string, id?: number, type?: 'create' | 'update' | 'delete'): Promise<void>;
41
+ /**
42
+ * Setup default invalidation rules
43
+ */
44
+ private setupDefaultRules;
45
+ /**
46
+ * Process invalidation event queue
47
+ */
48
+ private processQueue;
49
+ /**
50
+ * Process single invalidation event
51
+ */
52
+ private processEvent;
53
+ /**
54
+ * Apply invalidation rule to cache
55
+ */
56
+ private applyInvalidationRule;
57
+ /**
58
+ * Get invalidation statistics
59
+ */
60
+ getStats(): {
61
+ queueSize: number;
62
+ rulesCount: number;
63
+ processing: boolean;
64
+ };
65
+ /**
66
+ * Clear all invalidation rules
67
+ */
68
+ clearRules(): void;
69
+ /**
70
+ * Get all registered rules
71
+ */
72
+ getRules(): Record<string, InvalidationRule[]>;
73
+ }
74
+ /**
75
+ * Cache invalidation patterns for common WordPress operations
76
+ */
77
+ export declare class WordPressCachePatterns {
78
+ /**
79
+ * Invalidate all content-related caches
80
+ */
81
+ static invalidateContent(cache: HttpCacheWrapper): number;
82
+ /**
83
+ * Invalidate all taxonomy-related caches
84
+ */
85
+ static invalidateTaxonomies(cache: HttpCacheWrapper): number;
86
+ /**
87
+ * Invalidate all user-related caches
88
+ */
89
+ static invalidateUsers(cache: HttpCacheWrapper): number;
90
+ /**
91
+ * Invalidate search-related caches
92
+ */
93
+ static invalidateSearch(cache: HttpCacheWrapper): number;
94
+ /**
95
+ * Invalidate all caches (nuclear option)
96
+ */
97
+ static invalidateAll(cache: HttpCacheWrapper): number;
98
+ }
99
+ /**
100
+ * Cache warming strategies for common WordPress data
101
+ */
102
+ export declare class CacheWarmer {
103
+ private httpCache;
104
+ constructor(httpCache: HttpCacheWrapper);
105
+ /**
106
+ * Warm cache with essential WordPress data
107
+ */
108
+ warmEssentials(): Promise<void>;
109
+ /**
110
+ * Warm cache with taxonomy data
111
+ */
112
+ warmTaxonomies(): Promise<void>;
113
+ /**
114
+ * Warm cache with user data
115
+ */
116
+ warmUsers(): Promise<void>;
117
+ }
118
+ //# sourceMappingURL=CacheInvalidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheInvalidation.d.ts","sourceRoot":"","sources":["../../src/cache/CacheInvalidation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAKhB,OAAO,CAAC,SAAS;IAJ7B,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,UAAU,CAAS;gBAEP,SAAS,EAAE,gBAAgB;IAI/C;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAO5D;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,MAAM,EACX,IAAI,GAAE,QAAQ,GAAG,QAAQ,GAAG,QAAmB,GAC9C,OAAO,CAAC,IAAI,CAAC;IAYhB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuLzB;;OAEG;YACW,YAAY;IAiB1B;;OAEG;YACW,YAAY;IAU1B;;OAEG;YACW,qBAAqB;IAqBnC;;OAEG;IACH,QAAQ,IAAI;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;KACnB;IAQH;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAO/C;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAIzD;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAI5D;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAIvD;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAIxD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;CAGtD;AAED;;GAEG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,gBAAgB;IAE/C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAGjC"}
@@ -0,0 +1,349 @@
1
+ /**
2
+ * Intelligent cache invalidation strategies for WordPress MCP Server
3
+ * Implements event-based and pattern-based invalidation
4
+ */
5
+ /**
6
+ * Cache invalidation manager that handles intelligent cache clearing
7
+ */
8
+ export class CacheInvalidation {
9
+ httpCache;
10
+ invalidationRules = new Map();
11
+ eventQueue = [];
12
+ processing = false;
13
+ constructor(httpCache) {
14
+ this.httpCache = httpCache;
15
+ this.setupDefaultRules();
16
+ }
17
+ /**
18
+ * Register invalidation rule
19
+ */
20
+ registerRule(resource, rule) {
21
+ if (!this.invalidationRules.has(resource)) {
22
+ this.invalidationRules.set(resource, []);
23
+ }
24
+ this.invalidationRules.get(resource).push(rule);
25
+ }
26
+ /**
27
+ * Trigger invalidation event
28
+ */
29
+ async trigger(event) {
30
+ this.eventQueue.push(event);
31
+ if (!this.processing) {
32
+ await this.processQueue();
33
+ }
34
+ }
35
+ /**
36
+ * Invalidate cache for specific resource
37
+ */
38
+ async invalidateResource(resource, id, type = 'update') {
39
+ const event = {
40
+ type,
41
+ resource,
42
+ id,
43
+ siteId: this.httpCache['siteId'], // Access private property
44
+ timestamp: Date.now()
45
+ };
46
+ await this.trigger(event);
47
+ }
48
+ /**
49
+ * Setup default invalidation rules
50
+ */
51
+ setupDefaultRules() {
52
+ // Post invalidation rules
53
+ this.registerRule('posts', {
54
+ trigger: 'create',
55
+ patterns: [
56
+ 'posts', // All posts listings
57
+ 'posts/\\d+', // Specific post
58
+ 'categories', // Category listings (if post has categories)
59
+ 'tags', // Tag listings (if post has tags)
60
+ 'search' // Search results
61
+ ],
62
+ immediate: true,
63
+ cascade: true
64
+ });
65
+ this.registerRule('posts', {
66
+ trigger: 'update',
67
+ patterns: [
68
+ 'posts/\\d+', // Specific post
69
+ 'posts.*', // All posts with parameters
70
+ 'search' // Search results
71
+ ],
72
+ immediate: true
73
+ });
74
+ this.registerRule('posts', {
75
+ trigger: 'delete',
76
+ patterns: [
77
+ 'posts', // All posts listings
78
+ 'posts/\\d+', // Specific post
79
+ 'categories', // Category counts might change
80
+ 'tags', // Tag counts might change
81
+ 'search' // Search results
82
+ ],
83
+ immediate: true,
84
+ cascade: true
85
+ });
86
+ // Page invalidation rules
87
+ this.registerRule('pages', {
88
+ trigger: 'create',
89
+ patterns: ['pages', 'pages/\\d+'],
90
+ immediate: true
91
+ });
92
+ this.registerRule('pages', {
93
+ trigger: 'update',
94
+ patterns: ['pages/\\d+', 'pages.*'],
95
+ immediate: true
96
+ });
97
+ this.registerRule('pages', {
98
+ trigger: 'delete',
99
+ patterns: ['pages', 'pages/\\d+'],
100
+ immediate: true
101
+ });
102
+ // Comment invalidation rules
103
+ this.registerRule('comments', {
104
+ trigger: 'create',
105
+ patterns: [
106
+ 'comments',
107
+ 'comments.*',
108
+ 'posts/\\d+.*' // Parent post cache
109
+ ],
110
+ immediate: true
111
+ });
112
+ this.registerRule('comments', {
113
+ trigger: 'update',
114
+ patterns: [
115
+ 'comments/\\d+',
116
+ 'comments.*',
117
+ 'posts/\\d+.*' // Parent post cache
118
+ ],
119
+ immediate: true
120
+ });
121
+ this.registerRule('comments', {
122
+ trigger: 'delete',
123
+ patterns: [
124
+ 'comments',
125
+ 'comments/\\d+',
126
+ 'posts/\\d+.*' // Parent post cache
127
+ ],
128
+ immediate: true
129
+ });
130
+ // Media invalidation rules
131
+ this.registerRule('media', {
132
+ trigger: 'create',
133
+ patterns: ['media', 'media.*'],
134
+ immediate: true
135
+ });
136
+ this.registerRule('media', {
137
+ trigger: 'update',
138
+ patterns: ['media/\\d+', 'media.*'],
139
+ immediate: true
140
+ });
141
+ this.registerRule('media', {
142
+ trigger: 'delete',
143
+ patterns: ['media', 'media/\\d+'],
144
+ immediate: true
145
+ });
146
+ // User invalidation rules
147
+ this.registerRule('users', {
148
+ trigger: 'create',
149
+ patterns: ['users', 'users.*'],
150
+ immediate: true
151
+ });
152
+ this.registerRule('users', {
153
+ trigger: 'update',
154
+ patterns: [
155
+ 'users/\\d+',
156
+ 'users.*',
157
+ 'users/me' // Current user info
158
+ ],
159
+ immediate: true
160
+ });
161
+ this.registerRule('users', {
162
+ trigger: 'delete',
163
+ patterns: ['users', 'users/\\d+'],
164
+ immediate: true
165
+ });
166
+ // Category invalidation rules
167
+ this.registerRule('categories', {
168
+ trigger: 'create',
169
+ patterns: ['categories', 'categories.*', 'posts.*'],
170
+ immediate: true,
171
+ cascade: true
172
+ });
173
+ this.registerRule('categories', {
174
+ trigger: 'update',
175
+ patterns: ['categories/\\d+', 'categories.*', 'posts.*'],
176
+ immediate: true,
177
+ cascade: true
178
+ });
179
+ this.registerRule('categories', {
180
+ trigger: 'delete',
181
+ patterns: ['categories', 'categories/\\d+', 'posts.*'],
182
+ immediate: true,
183
+ cascade: true
184
+ });
185
+ // Tag invalidation rules
186
+ this.registerRule('tags', {
187
+ trigger: 'create',
188
+ patterns: ['tags', 'tags.*', 'posts.*'],
189
+ immediate: true,
190
+ cascade: true
191
+ });
192
+ this.registerRule('tags', {
193
+ trigger: 'update',
194
+ patterns: ['tags/\\d+', 'tags.*', 'posts.*'],
195
+ immediate: true,
196
+ cascade: true
197
+ });
198
+ this.registerRule('tags', {
199
+ trigger: 'delete',
200
+ patterns: ['tags', 'tags/\\d+', 'posts.*'],
201
+ immediate: true,
202
+ cascade: true
203
+ });
204
+ // Settings invalidation rules (rarely change)
205
+ this.registerRule('settings', {
206
+ trigger: 'update',
207
+ patterns: ['settings.*'],
208
+ immediate: true,
209
+ cascade: false
210
+ });
211
+ }
212
+ /**
213
+ * Process invalidation event queue
214
+ */
215
+ async processQueue() {
216
+ if (this.processing || this.eventQueue.length === 0) {
217
+ return;
218
+ }
219
+ this.processing = true;
220
+ try {
221
+ while (this.eventQueue.length > 0) {
222
+ const event = this.eventQueue.shift();
223
+ await this.processEvent(event);
224
+ }
225
+ }
226
+ finally {
227
+ this.processing = false;
228
+ }
229
+ }
230
+ /**
231
+ * Process single invalidation event
232
+ */
233
+ async processEvent(event) {
234
+ const rules = this.invalidationRules.get(event.resource) || [];
235
+ for (const rule of rules) {
236
+ if (rule.trigger === event.type || rule.trigger === '*') {
237
+ await this.applyInvalidationRule(event, rule);
238
+ }
239
+ }
240
+ }
241
+ /**
242
+ * Apply invalidation rule to cache
243
+ */
244
+ async applyInvalidationRule(event, rule) {
245
+ for (const pattern of rule.patterns) {
246
+ let invalidationPattern = pattern;
247
+ // Replace placeholders with actual values
248
+ if (event.id) {
249
+ invalidationPattern = invalidationPattern.replace('\\d+', event.id.toString());
250
+ }
251
+ // Invalidate matching cache entries
252
+ const invalidated = this.httpCache.invalidatePattern(invalidationPattern);
253
+ if (invalidated > 0) {
254
+ console.log(`Invalidated ${invalidated} cache entries for pattern: ${invalidationPattern}`);
255
+ }
256
+ }
257
+ }
258
+ /**
259
+ * Get invalidation statistics
260
+ */
261
+ getStats() {
262
+ return {
263
+ queueSize: this.eventQueue.length,
264
+ rulesCount: Array.from(this.invalidationRules.values()).reduce((acc, rules) => acc + rules.length, 0),
265
+ processing: this.processing
266
+ };
267
+ }
268
+ /**
269
+ * Clear all invalidation rules
270
+ */
271
+ clearRules() {
272
+ this.invalidationRules.clear();
273
+ }
274
+ /**
275
+ * Get all registered rules
276
+ */
277
+ getRules() {
278
+ const rules = {};
279
+ for (const [resource, ruleList] of this.invalidationRules.entries()) {
280
+ rules[resource] = [...ruleList];
281
+ }
282
+ return rules;
283
+ }
284
+ }
285
+ /**
286
+ * Cache invalidation patterns for common WordPress operations
287
+ */
288
+ export class WordPressCachePatterns {
289
+ /**
290
+ * Invalidate all content-related caches
291
+ */
292
+ static invalidateContent(cache) {
293
+ return cache.invalidatePattern('(posts|pages|comments|media)');
294
+ }
295
+ /**
296
+ * Invalidate all taxonomy-related caches
297
+ */
298
+ static invalidateTaxonomies(cache) {
299
+ return cache.invalidatePattern('(categories|tags|taxonomies)');
300
+ }
301
+ /**
302
+ * Invalidate all user-related caches
303
+ */
304
+ static invalidateUsers(cache) {
305
+ return cache.invalidatePattern('users');
306
+ }
307
+ /**
308
+ * Invalidate search-related caches
309
+ */
310
+ static invalidateSearch(cache) {
311
+ return cache.invalidatePattern('search');
312
+ }
313
+ /**
314
+ * Invalidate all caches (nuclear option)
315
+ */
316
+ static invalidateAll(cache) {
317
+ return cache.invalidateAll();
318
+ }
319
+ }
320
+ /**
321
+ * Cache warming strategies for common WordPress data
322
+ */
323
+ export class CacheWarmer {
324
+ httpCache;
325
+ constructor(httpCache) {
326
+ this.httpCache = httpCache;
327
+ }
328
+ /**
329
+ * Warm cache with essential WordPress data
330
+ */
331
+ async warmEssentials() {
332
+ // Implementation would depend on your specific WordPress client
333
+ // This is a placeholder for the structure
334
+ console.log('Warming essential caches...');
335
+ }
336
+ /**
337
+ * Warm cache with taxonomy data
338
+ */
339
+ async warmTaxonomies() {
340
+ console.log('Warming taxonomy caches...');
341
+ }
342
+ /**
343
+ * Warm cache with user data
344
+ */
345
+ async warmUsers() {
346
+ console.log('Warming user caches...');
347
+ }
348
+ }
349
+ //# sourceMappingURL=CacheInvalidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheInvalidation.js","sourceRoot":"","sources":["../../src/cache/CacheInvalidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Intelligent caching system for WordPress MCP Server
3
+ * Implements multi-layer caching with TTL, LRU eviction, and site-specific keys
4
+ */
5
+ export interface CacheEntry<T = any> {
6
+ value: T;
7
+ timestamp: number;
8
+ ttl: number;
9
+ etag?: string | undefined;
10
+ lastModified?: string | undefined;
11
+ accessCount: number;
12
+ lastAccessed: number;
13
+ }
14
+ export interface CacheStats {
15
+ hits: number;
16
+ misses: number;
17
+ evictions: number;
18
+ totalSize: number;
19
+ hitRate: number;
20
+ }
21
+ export interface CacheConfig {
22
+ maxSize: number;
23
+ defaultTTL: number;
24
+ enableLRU: boolean;
25
+ enableStats: boolean;
26
+ sitePrefix?: string;
27
+ }
28
+ /**
29
+ * High-performance in-memory cache with TTL and LRU eviction
30
+ */
31
+ export declare class CacheManager {
32
+ private config;
33
+ private cache;
34
+ private accessOrder;
35
+ private stats;
36
+ constructor(config: CacheConfig);
37
+ /**
38
+ * Generate cache key with site prefix and parameter hash
39
+ */
40
+ generateKey(siteId: string, endpoint: string, params?: any): string;
41
+ /**
42
+ * Get value from cache if not expired
43
+ */
44
+ get<T>(key: string): T | null;
45
+ /**
46
+ * Set value in cache with TTL
47
+ */
48
+ set<T>(key: string, value: T, ttl?: number, etag?: string, lastModified?: string): void;
49
+ /**
50
+ * Check if cache entry exists and is valid
51
+ */
52
+ has(key: string): boolean;
53
+ /**
54
+ * Delete specific cache entry
55
+ */
56
+ delete(key: string): boolean;
57
+ /**
58
+ * Clear all cache entries
59
+ */
60
+ clear(): void;
61
+ /**
62
+ * Clear cache entries for specific site
63
+ */
64
+ clearSite(siteId: string): number;
65
+ /**
66
+ * Clear cache entries matching pattern
67
+ */
68
+ clearPattern(pattern: RegExp): number;
69
+ /**
70
+ * Get cache statistics
71
+ */
72
+ getStats(): CacheStats;
73
+ /**
74
+ * Get cache entry with metadata
75
+ */
76
+ getEntry(key: string): CacheEntry | null;
77
+ /**
78
+ * Check if entry supports conditional requests
79
+ */
80
+ supportsConditionalRequest(key: string): boolean;
81
+ /**
82
+ * Get conditional request headers
83
+ */
84
+ getConditionalHeaders(key: string): Record<string, string>;
85
+ /**
86
+ * Check if entry is expired
87
+ */
88
+ private isExpired;
89
+ /**
90
+ * Evict least recently used entry
91
+ */
92
+ private evictLRU;
93
+ /**
94
+ * Update access order for LRU tracking
95
+ */
96
+ private updateAccessOrder;
97
+ /**
98
+ * Remove key from access order
99
+ */
100
+ private removeFromAccessOrder;
101
+ /**
102
+ * Normalize parameters for consistent hashing
103
+ */
104
+ private normalizeParams;
105
+ /**
106
+ * Update hit rate calculation
107
+ */
108
+ private updateHitRate;
109
+ /**
110
+ * Start periodic cleanup of expired entries
111
+ */
112
+ private startCleanupInterval;
113
+ /**
114
+ * Remove expired entries
115
+ */
116
+ private cleanupExpired;
117
+ }
118
+ /**
119
+ * Cache configuration presets for different data types
120
+ */
121
+ export declare const CachePresets: {
122
+ STATIC: {
123
+ ttl: number;
124
+ cacheControl: string;
125
+ };
126
+ SEMI_STATIC: {
127
+ ttl: number;
128
+ cacheControl: string;
129
+ };
130
+ DYNAMIC: {
131
+ ttl: number;
132
+ cacheControl: string;
133
+ };
134
+ SESSION: {
135
+ ttl: number;
136
+ cacheControl: string;
137
+ };
138
+ REALTIME: {
139
+ ttl: number;
140
+ cacheControl: string;
141
+ };
142
+ };
143
+ //# sourceMappingURL=CacheManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/CacheManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,YAAY;IAWX,OAAO,CAAC,MAAM;IAV1B,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,KAAK,CAMX;gBAEkB,MAAM,EAAE,WAAW;IAKvC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,MAAM;IAiBnE;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IA6B7B;;OAEG;IACH,GAAG,CAAC,CAAC,EACH,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,GAAG,GAAE,MAA+B,EACpC,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI;IA0BP;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAS5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAkBjC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAkBrC;;OAEG;IACH,QAAQ,IAAI,UAAU;IAItB;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQxC;;OAEG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKhD;;OAEG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAiB1D;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,cAAc;CAiBvB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;CA8BxB,CAAC"}