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,296 @@
1
+ /**
2
+ * Tests for HttpCacheWrapper
3
+ */
4
+ import { CacheManager } from '../CacheManager.js';
5
+ import { HttpCacheWrapper } from '../HttpCacheWrapper.js';
6
+ describe('HttpCacheWrapper', () => {
7
+ let cacheManager;
8
+ let httpCache;
9
+ let mockRequestFn;
10
+ beforeEach(() => {
11
+ cacheManager = new CacheManager({
12
+ maxSize: 100,
13
+ defaultTTL: 1000,
14
+ enableLRU: true,
15
+ enableStats: true
16
+ });
17
+ httpCache = new HttpCacheWrapper(cacheManager, 'test-site');
18
+ mockRequestFn = jest.fn();
19
+ });
20
+ afterEach(() => {
21
+ cacheManager.clear();
22
+ jest.clearAllMocks();
23
+ });
24
+ describe('Request Caching', () => {
25
+ test('should cache GET requests', async () => {
26
+ const mockResponse = {
27
+ data: { id: 1, title: 'Test Post' },
28
+ status: 200,
29
+ headers: {}
30
+ };
31
+ mockRequestFn.mockResolvedValue(mockResponse);
32
+ const requestOptions = {
33
+ method: 'GET',
34
+ url: 'https://example.com/wp-json/wp/v2/posts',
35
+ headers: {},
36
+ params: {}
37
+ };
38
+ // First request should hit the API
39
+ const result1 = await httpCache.request(mockRequestFn, requestOptions);
40
+ expect(mockRequestFn).toHaveBeenCalledTimes(1);
41
+ expect(result1.data).toEqual(mockResponse.data);
42
+ expect(result1.cached).toBe(false);
43
+ // Second request should use cache
44
+ const result2 = await httpCache.request(mockRequestFn, requestOptions);
45
+ expect(mockRequestFn).toHaveBeenCalledTimes(1); // No additional call
46
+ expect(result2.data).toEqual(mockResponse.data);
47
+ expect(result2.cached).toBe(true);
48
+ });
49
+ test('should not cache non-GET requests', async () => {
50
+ const mockResponse = {
51
+ data: { id: 1, title: 'Test Post' },
52
+ status: 201,
53
+ headers: {}
54
+ };
55
+ mockRequestFn.mockResolvedValue(mockResponse);
56
+ const requestOptions = {
57
+ method: 'POST',
58
+ url: 'https://example.com/wp-json/wp/v2/posts',
59
+ headers: {},
60
+ params: {},
61
+ data: { title: 'New Post' }
62
+ };
63
+ // Both requests should hit the API
64
+ const result1 = await httpCache.request(mockRequestFn, requestOptions);
65
+ const result2 = await httpCache.request(mockRequestFn, requestOptions);
66
+ expect(mockRequestFn).toHaveBeenCalledTimes(2);
67
+ expect(result1.cached).toBeUndefined();
68
+ expect(result2.cached).toBeUndefined();
69
+ });
70
+ test('should not cache error responses', async () => {
71
+ const errorResponse = {
72
+ data: { error: 'Not found' },
73
+ status: 404,
74
+ headers: {}
75
+ };
76
+ mockRequestFn.mockResolvedValue(errorResponse);
77
+ const requestOptions = {
78
+ method: 'GET',
79
+ url: 'https://example.com/wp-json/wp/v2/posts/999',
80
+ headers: {},
81
+ params: {}
82
+ };
83
+ // Both requests should hit the API (no caching of 404)
84
+ await httpCache.request(mockRequestFn, requestOptions);
85
+ await httpCache.request(mockRequestFn, requestOptions);
86
+ expect(mockRequestFn).toHaveBeenCalledTimes(2);
87
+ });
88
+ test('should generate ETags for responses', async () => {
89
+ const mockResponse = {
90
+ data: { id: 1, title: 'Test Post' },
91
+ status: 200,
92
+ headers: {}
93
+ };
94
+ mockRequestFn.mockResolvedValue(mockResponse);
95
+ const requestOptions = {
96
+ method: 'GET',
97
+ url: 'https://example.com/wp-json/wp/v2/posts/1',
98
+ headers: {},
99
+ params: {}
100
+ };
101
+ const result = await httpCache.request(mockRequestFn, requestOptions);
102
+ expect(result.headers.etag).toBeDefined();
103
+ expect(result.headers.etag).toMatch(/^"[a-f0-9]{32}"$/);
104
+ expect(result.headers['last-modified']).toBeDefined();
105
+ expect(result.headers['cache-control']).toBeDefined();
106
+ });
107
+ });
108
+ describe('Cache Invalidation', () => {
109
+ test('should invalidate specific endpoint', async () => {
110
+ // Cache a response
111
+ const mockResponse = {
112
+ data: { id: 1, title: 'Test Post' },
113
+ status: 200,
114
+ headers: {}
115
+ };
116
+ mockRequestFn.mockResolvedValue(mockResponse);
117
+ const requestOptions = {
118
+ method: 'GET',
119
+ url: 'https://example.com/wp-json/wp/v2/posts/1',
120
+ headers: {},
121
+ params: {}
122
+ };
123
+ await httpCache.request(mockRequestFn, requestOptions);
124
+ expect(mockRequestFn).toHaveBeenCalledTimes(1);
125
+ // Verify cache hit
126
+ await httpCache.request(mockRequestFn, requestOptions);
127
+ expect(mockRequestFn).toHaveBeenCalledTimes(1);
128
+ // Invalidate cache
129
+ httpCache.invalidate('posts/1');
130
+ // Should hit API again
131
+ await httpCache.request(mockRequestFn, requestOptions);
132
+ expect(mockRequestFn).toHaveBeenCalledTimes(2);
133
+ });
134
+ test('should invalidate by pattern', async () => {
135
+ // Cache multiple responses
136
+ const responses = [
137
+ { url: 'posts', data: [{ id: 1 }, { id: 2 }] },
138
+ { url: 'posts/1', data: { id: 1 } },
139
+ { url: 'pages/1', data: { id: 1 } }
140
+ ];
141
+ for (const response of responses) {
142
+ mockRequestFn.mockResolvedValueOnce({
143
+ data: response.data,
144
+ status: 200,
145
+ headers: {}
146
+ });
147
+ await httpCache.request(mockRequestFn, {
148
+ method: 'GET',
149
+ url: `https://example.com/wp-json/wp/v2/${response.url}`,
150
+ headers: {},
151
+ params: {}
152
+ });
153
+ }
154
+ expect(mockRequestFn).toHaveBeenCalledTimes(3);
155
+ // Invalidate all posts
156
+ const invalidated = httpCache.invalidatePattern('posts');
157
+ expect(invalidated).toBe(2); // Should invalidate 2 post-related entries
158
+ // Verify pages cache still works
159
+ await httpCache.request(mockRequestFn, {
160
+ method: 'GET',
161
+ url: 'https://example.com/wp-json/wp/v2/pages/1',
162
+ headers: {},
163
+ params: {}
164
+ });
165
+ expect(mockRequestFn).toHaveBeenCalledTimes(3); // No new call for pages
166
+ });
167
+ test('should invalidate all cache for site', async () => {
168
+ // Cache some responses
169
+ const mockResponse = {
170
+ data: { id: 1 },
171
+ status: 200,
172
+ headers: {}
173
+ };
174
+ mockRequestFn.mockResolvedValue(mockResponse);
175
+ await httpCache.request(mockRequestFn, {
176
+ method: 'GET',
177
+ url: 'https://example.com/wp-json/wp/v2/posts',
178
+ headers: {},
179
+ params: {}
180
+ });
181
+ await httpCache.request(mockRequestFn, {
182
+ method: 'GET',
183
+ url: 'https://example.com/wp-json/wp/v2/pages',
184
+ headers: {},
185
+ params: {}
186
+ });
187
+ expect(mockRequestFn).toHaveBeenCalledTimes(2);
188
+ // Clear all cache
189
+ const invalidated = httpCache.invalidateAll();
190
+ expect(invalidated).toBeGreaterThan(0);
191
+ // Verify cache is cleared
192
+ await httpCache.request(mockRequestFn, {
193
+ method: 'GET',
194
+ url: 'https://example.com/wp-json/wp/v2/posts',
195
+ headers: {},
196
+ params: {}
197
+ });
198
+ expect(mockRequestFn).toHaveBeenCalledTimes(3);
199
+ });
200
+ });
201
+ describe('Cache Warming', () => {
202
+ test('should pre-warm cache with data', () => {
203
+ const endpoint = 'posts';
204
+ const data = [{ id: 1, title: 'Post 1' }, { id: 2, title: 'Post 2' }];
205
+ const params = { per_page: 10 };
206
+ httpCache.warm(endpoint, data, params);
207
+ // Verify cache entry exists
208
+ const cacheKey = cacheManager.generateKey('test-site', endpoint, params);
209
+ const cached = cacheManager.get(cacheKey);
210
+ expect(cached).toBeDefined();
211
+ if (cached && typeof cached === 'object' && 'data' in cached) {
212
+ expect(cached.data).toEqual(data);
213
+ expect(cached.etag).toBeDefined();
214
+ expect(cached.lastModified).toBeDefined();
215
+ }
216
+ });
217
+ test('should use warmed cache for requests', async () => {
218
+ const endpoint = 'posts';
219
+ const data = [{ id: 1, title: 'Post 1' }];
220
+ httpCache.warm(endpoint, data);
221
+ const result = await httpCache.request(mockRequestFn, {
222
+ method: 'GET',
223
+ url: 'https://example.com/wp-json/wp/v2/posts',
224
+ headers: {},
225
+ params: {}
226
+ });
227
+ expect(mockRequestFn).not.toHaveBeenCalled();
228
+ expect(result.data).toEqual(data);
229
+ expect(result.cached).toBe(true);
230
+ });
231
+ });
232
+ describe('Cache Statistics', () => {
233
+ test('should return cache statistics', async () => {
234
+ const mockResponse = {
235
+ data: { id: 1 },
236
+ status: 200,
237
+ headers: {}
238
+ };
239
+ mockRequestFn.mockResolvedValue(mockResponse);
240
+ // Generate some cache activity
241
+ await httpCache.request(mockRequestFn, {
242
+ method: 'GET',
243
+ url: 'https://example.com/wp-json/wp/v2/posts/1',
244
+ headers: {},
245
+ params: {}
246
+ });
247
+ await httpCache.request(mockRequestFn, {
248
+ method: 'GET',
249
+ url: 'https://example.com/wp-json/wp/v2/posts/1',
250
+ headers: {},
251
+ params: {}
252
+ });
253
+ const stats = httpCache.getStats();
254
+ expect(stats.hits).toBe(1);
255
+ expect(stats.misses).toBe(1);
256
+ expect(stats.totalSize).toBe(1);
257
+ expect(stats.hitRate).toBe(0.5);
258
+ });
259
+ });
260
+ describe('URL and Endpoint Extraction', () => {
261
+ test('should extract endpoint from WordPress API URLs', async () => {
262
+ const testCases = [
263
+ {
264
+ url: 'https://example.com/wp-json/wp/v2/posts',
265
+ expectedEndpoint: 'posts'
266
+ },
267
+ {
268
+ url: 'https://example.com/wp-json/wp/v2/posts/123',
269
+ expectedEndpoint: 'posts/123'
270
+ },
271
+ {
272
+ url: 'https://example.com/wp-json/wp/v2/categories?per_page=10',
273
+ expectedEndpoint: 'categories'
274
+ }
275
+ ];
276
+ const mockResponse = {
277
+ data: {},
278
+ status: 200,
279
+ headers: {}
280
+ };
281
+ mockRequestFn.mockResolvedValue(mockResponse);
282
+ for (const testCase of testCases) {
283
+ await httpCache.request(mockRequestFn, {
284
+ method: 'GET',
285
+ url: testCase.url,
286
+ headers: {},
287
+ params: {}
288
+ });
289
+ // Verify cache key contains the correct endpoint
290
+ const stats = httpCache.getStats();
291
+ expect(stats.totalSize).toBeGreaterThan(0);
292
+ }
293
+ });
294
+ });
295
+ });
296
+ //# sourceMappingURL=HttpCacheWrapper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpCacheWrapper.test.js","sourceRoot":"","sources":["../../../src/cache/__tests__/HttpCacheWrapper.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Cache system exports
3
+ * Provides centralized access to all caching components
4
+ */
5
+ export { CacheManager, CachePresets } from './CacheManager.js';
6
+ export { HttpCacheWrapper } from './HttpCacheWrapper.js';
7
+ export { CacheInvalidation, WordPressCachePatterns, CacheWarmer } from './CacheInvalidation.js';
8
+ export { CachedWordPressClient } from '../client/CachedWordPressClient.js';
9
+ export type { CacheEntry, CacheStats, CacheConfig } from './CacheManager.js';
10
+ export type { HttpCacheOptions, CachedResponse, RequestOptions } from './HttpCacheWrapper.js';
11
+ export type { InvalidationRule, InvalidationEvent } from './CacheInvalidation.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,YAAY,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cache system exports
3
+ * Provides centralized access to all caching components
4
+ */
5
+ export { CacheManager, CachePresets } from './CacheManager.js';
6
+ export { HttpCacheWrapper } from './HttpCacheWrapper.js';
7
+ export { CacheInvalidation, WordPressCachePatterns, CacheWarmer } from './CacheInvalidation.js';
8
+ export { CachedWordPressClient } from '../client/CachedWordPressClient.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Cached WordPress API Client
3
+ * Extends the base WordPress client with intelligent caching capabilities and performance monitoring
4
+ */
5
+ import { WordPressClient } from './api.js';
6
+ import { CacheManager } from '../cache/CacheManager.js';
7
+ import type { WordPressClientConfig, HTTPMethod, RequestOptions } from '../types/client.js';
8
+ import type { WordPressPost, WordPressUser, WordPressCategory, WordPressTag, WordPressSiteSettings, PostQueryParams, CreatePostRequest, UpdatePostRequest } from '../types/wordpress.js';
9
+ /**
10
+ * WordPress client with intelligent caching
11
+ */
12
+ export declare class CachedWordPressClient extends WordPressClient {
13
+ private cacheManager;
14
+ private httpCache;
15
+ private cacheInvalidation;
16
+ private siteId;
17
+ constructor(config: WordPressClientConfig, siteId?: string);
18
+ /**
19
+ * Override request method to add caching
20
+ */
21
+ request<T = any>(method: HTTPMethod, endpoint: string, data?: any, options?: RequestOptions): Promise<T>;
22
+ /**
23
+ * Enhanced methods with caching optimization
24
+ */
25
+ /**
26
+ * Get posts with intelligent caching
27
+ */
28
+ getPosts(params?: PostQueryParams): Promise<WordPressPost[]>;
29
+ /**
30
+ * Get single post with caching
31
+ */
32
+ getPost(id: number): Promise<WordPressPost>;
33
+ /**
34
+ * Create post with cache invalidation
35
+ */
36
+ createPost(data: CreatePostRequest): Promise<WordPressPost>;
37
+ /**
38
+ * Update post with cache invalidation
39
+ */
40
+ updatePost(data: UpdatePostRequest): Promise<WordPressPost>;
41
+ /**
42
+ * Delete post with cache invalidation
43
+ */
44
+ deletePost(id: number, force?: boolean): Promise<{
45
+ deleted: boolean;
46
+ previous?: WordPressPost;
47
+ }>;
48
+ /**
49
+ * Get current user with session caching
50
+ */
51
+ getCurrentUser(): Promise<WordPressUser>;
52
+ /**
53
+ * Get categories with semi-static caching
54
+ */
55
+ getCategories(params?: any): Promise<WordPressCategory[]>;
56
+ /**
57
+ * Get tags with semi-static caching
58
+ */
59
+ getTags(params?: any): Promise<WordPressTag[]>;
60
+ /**
61
+ * Get site settings with static caching
62
+ */
63
+ getSiteSettings(): Promise<WordPressSiteSettings>;
64
+ /**
65
+ * Cache management methods
66
+ */
67
+ /**
68
+ * Private helper methods
69
+ */
70
+ private extractEndpoint;
71
+ /**
72
+ * Get cache options based on endpoint
73
+ */
74
+ private getCacheOptions;
75
+ /**
76
+ * Handle cache invalidation for write operations
77
+ */
78
+ private handleCacheInvalidation;
79
+ /**
80
+ * Extract resource type from endpoint
81
+ */
82
+ private extractResourceFromEndpoint;
83
+ /**
84
+ * Extract ID from endpoint
85
+ */
86
+ private extractIdFromEndpoint;
87
+ /**
88
+ * Check if endpoint contains static data
89
+ */
90
+ private isStaticEndpoint;
91
+ /**
92
+ * Check if endpoint contains semi-static data
93
+ */
94
+ private isSemiStaticEndpoint;
95
+ /**
96
+ * Check if endpoint is session-related
97
+ */
98
+ private isSessionEndpoint;
99
+ /**
100
+ * Performance monitoring and cache management methods
101
+ */
102
+ /**
103
+ * Get cache statistics for performance monitoring
104
+ */
105
+ getCacheStats(): any;
106
+ /**
107
+ * Get cache manager instance (for performance monitoring integration)
108
+ */
109
+ getCacheManager(): CacheManager;
110
+ /**
111
+ * Clear cache entries (for cache management tools)
112
+ */
113
+ clearCache(): number;
114
+ /**
115
+ * Clear cache entries matching pattern
116
+ */
117
+ clearCachePattern(pattern: string): number;
118
+ /**
119
+ * Warm cache with essential data
120
+ */
121
+ warmCache(): Promise<void>;
122
+ /**
123
+ * Get cache efficiency metrics
124
+ */
125
+ getCacheEfficiency(): {
126
+ hitRate: number;
127
+ missRate: number;
128
+ efficiency: string;
129
+ memoryUsage: number;
130
+ totalEntries: number;
131
+ };
132
+ /**
133
+ * Get cache configuration info
134
+ */
135
+ getCacheInfo(): {
136
+ enabled: boolean;
137
+ siteId: string;
138
+ maxSize: number;
139
+ defaultTTL: number;
140
+ currentSize: number;
141
+ ttlPresets: any;
142
+ };
143
+ /**
144
+ * Estimate memory usage of cache (in MB)
145
+ */
146
+ private estimateMemoryUsage;
147
+ /**
148
+ * Get detailed cache performance metrics
149
+ */
150
+ getDetailedCacheMetrics(): {
151
+ statistics: any;
152
+ efficiency: any;
153
+ configuration: any;
154
+ siteInfo: {
155
+ siteId: string;
156
+ baseUrl: string;
157
+ };
158
+ };
159
+ }
160
+ //# sourceMappingURL=CachedWordPressClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CachedWordPressClient.d.ts","sourceRoot":"","sources":["../../src/client/CachedWordPressClient.ts"],"names":[],"mappings":"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"}