mcp-wordpress 2.5.0 → 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.
Files changed (318) hide show
  1. package/README.md +19 -15
  2. package/bin/status.js +1 -1
  3. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  4. package/dist/config/ServerConfiguration.js +23 -2
  5. package/dist/config/ServerConfiguration.js.map +1 -1
  6. package/dist/src/cache/CacheInvalidation.d.ts +120 -0
  7. package/dist/src/cache/CacheInvalidation.d.ts.map +1 -0
  8. package/dist/src/cache/CacheInvalidation.js +355 -0
  9. package/dist/src/cache/CacheInvalidation.js.map +1 -0
  10. package/dist/src/cache/CacheManager.d.ts +149 -0
  11. package/dist/src/cache/CacheManager.d.ts.map +1 -0
  12. package/dist/src/cache/CacheManager.js +326 -0
  13. package/dist/src/cache/CacheManager.js.map +1 -0
  14. package/dist/src/cache/HttpCacheWrapper.d.ts +122 -0
  15. package/dist/src/cache/HttpCacheWrapper.d.ts.map +1 -0
  16. package/dist/src/cache/HttpCacheWrapper.js +283 -0
  17. package/dist/src/cache/HttpCacheWrapper.js.map +1 -0
  18. package/dist/src/cache/index.d.ts +12 -0
  19. package/dist/src/cache/index.d.ts.map +1 -0
  20. package/dist/src/cache/index.js +9 -0
  21. package/dist/src/cache/index.js.map +1 -0
  22. package/dist/src/client/CachedWordPressClient.d.ts +174 -0
  23. package/dist/src/client/CachedWordPressClient.d.ts.map +1 -0
  24. package/dist/src/client/CachedWordPressClient.js +345 -0
  25. package/dist/src/client/CachedWordPressClient.js.map +1 -0
  26. package/dist/src/client/MockWordPressClient.d.ts +56 -0
  27. package/dist/src/client/MockWordPressClient.d.ts.map +1 -0
  28. package/dist/src/client/MockWordPressClient.js +371 -0
  29. package/dist/src/client/MockWordPressClient.js.map +1 -0
  30. package/dist/src/client/api.d.ts +235 -0
  31. package/dist/src/client/api.d.ts.map +1 -0
  32. package/dist/src/client/api.js +896 -0
  33. package/dist/src/client/api.js.map +1 -0
  34. package/dist/src/client/auth.d.ts +121 -0
  35. package/dist/src/client/auth.d.ts.map +1 -0
  36. package/dist/src/client/auth.js +429 -0
  37. package/dist/src/client/auth.js.map +1 -0
  38. package/dist/src/client/managers/AuthenticationManager.d.ts +92 -0
  39. package/dist/src/client/managers/AuthenticationManager.d.ts.map +1 -0
  40. package/dist/src/client/managers/AuthenticationManager.js +369 -0
  41. package/dist/src/client/managers/AuthenticationManager.js.map +1 -0
  42. package/dist/src/client/managers/BaseManager.d.ts +22 -0
  43. package/dist/src/client/managers/BaseManager.d.ts.map +1 -0
  44. package/dist/src/client/managers/BaseManager.js +53 -0
  45. package/dist/src/client/managers/BaseManager.js.map +1 -0
  46. package/dist/src/client/managers/RequestManager.d.ts +47 -0
  47. package/dist/src/client/managers/RequestManager.d.ts.map +1 -0
  48. package/dist/src/client/managers/RequestManager.js +193 -0
  49. package/dist/src/client/managers/RequestManager.js.map +1 -0
  50. package/dist/src/client/managers/index.d.ts +8 -0
  51. package/dist/src/client/managers/index.d.ts.map +1 -0
  52. package/dist/src/client/managers/index.js +8 -0
  53. package/dist/src/client/managers/index.js.map +1 -0
  54. package/dist/src/config/Config.d.ts +155 -0
  55. package/dist/src/config/Config.d.ts.map +1 -0
  56. package/dist/src/config/Config.js +215 -0
  57. package/dist/src/config/Config.js.map +1 -0
  58. package/dist/src/config/ConfigurationSchema.d.ts +281 -0
  59. package/dist/src/config/ConfigurationSchema.d.ts.map +1 -0
  60. package/dist/src/config/ConfigurationSchema.js +205 -0
  61. package/dist/src/config/ConfigurationSchema.js.map +1 -0
  62. package/dist/src/config/ServerConfiguration.d.ts +47 -0
  63. package/dist/src/config/ServerConfiguration.d.ts.map +1 -0
  64. package/dist/src/config/ServerConfiguration.js +255 -0
  65. package/dist/src/config/ServerConfiguration.js.map +1 -0
  66. package/dist/src/docs/DocumentationGenerator.d.ts +185 -0
  67. package/dist/src/docs/DocumentationGenerator.d.ts.map +1 -0
  68. package/dist/src/docs/DocumentationGenerator.js +777 -0
  69. package/dist/src/docs/DocumentationGenerator.js.map +1 -0
  70. package/dist/src/docs/MarkdownFormatter.d.ts +84 -0
  71. package/dist/src/docs/MarkdownFormatter.d.ts.map +1 -0
  72. package/dist/src/docs/MarkdownFormatter.js +458 -0
  73. package/dist/src/docs/MarkdownFormatter.js.map +1 -0
  74. package/dist/src/docs/index.d.ts +8 -0
  75. package/dist/src/docs/index.d.ts.map +1 -0
  76. package/dist/src/docs/index.js +7 -0
  77. package/dist/src/docs/index.js.map +1 -0
  78. package/dist/src/dxt-entry.d.ts +6 -0
  79. package/dist/src/dxt-entry.d.ts.map +1 -0
  80. package/dist/src/dxt-entry.js +39 -0
  81. package/dist/src/dxt-entry.js.map +1 -0
  82. package/dist/src/index.d.ts +18 -0
  83. package/dist/src/index.d.ts.map +1 -0
  84. package/dist/src/index.js +143 -0
  85. package/dist/src/index.js.map +1 -0
  86. package/dist/src/performance/MetricsCollector.d.ts +145 -0
  87. package/dist/src/performance/MetricsCollector.d.ts.map +1 -0
  88. package/dist/src/performance/MetricsCollector.js +368 -0
  89. package/dist/src/performance/MetricsCollector.js.map +1 -0
  90. package/dist/src/performance/PerformanceAnalytics.d.ts +168 -0
  91. package/dist/src/performance/PerformanceAnalytics.d.ts.map +1 -0
  92. package/dist/src/performance/PerformanceAnalytics.js +570 -0
  93. package/dist/src/performance/PerformanceAnalytics.js.map +1 -0
  94. package/dist/src/performance/PerformanceMonitor.d.ts +203 -0
  95. package/dist/src/performance/PerformanceMonitor.d.ts.map +1 -0
  96. package/dist/src/performance/PerformanceMonitor.js +478 -0
  97. package/dist/src/performance/PerformanceMonitor.js.map +1 -0
  98. package/dist/src/performance/index.d.ts +11 -0
  99. package/dist/src/performance/index.d.ts.map +1 -0
  100. package/dist/src/performance/index.js +8 -0
  101. package/dist/src/performance/index.js.map +1 -0
  102. package/dist/src/security/AISecurityScanner.d.ts +176 -0
  103. package/dist/src/security/AISecurityScanner.d.ts.map +1 -0
  104. package/dist/src/security/AISecurityScanner.js +655 -0
  105. package/dist/src/security/AISecurityScanner.js.map +1 -0
  106. package/dist/src/security/AutomatedRemediation.d.ts +146 -0
  107. package/dist/src/security/AutomatedRemediation.d.ts.map +1 -0
  108. package/dist/src/security/AutomatedRemediation.js +566 -0
  109. package/dist/src/security/AutomatedRemediation.js.map +1 -0
  110. package/dist/src/security/InputValidator.d.ts +219 -0
  111. package/dist/src/security/InputValidator.d.ts.map +1 -0
  112. package/dist/src/security/InputValidator.js +295 -0
  113. package/dist/src/security/InputValidator.js.map +1 -0
  114. package/dist/src/security/SecurityCIPipeline.d.ts +213 -0
  115. package/dist/src/security/SecurityCIPipeline.d.ts.map +1 -0
  116. package/dist/src/security/SecurityCIPipeline.js +693 -0
  117. package/dist/src/security/SecurityCIPipeline.js.map +1 -0
  118. package/dist/src/security/SecurityConfig.d.ts +129 -0
  119. package/dist/src/security/SecurityConfig.d.ts.map +1 -0
  120. package/dist/src/security/SecurityConfig.js +266 -0
  121. package/dist/src/security/SecurityConfig.js.map +1 -0
  122. package/dist/src/security/SecurityConfigManager.d.ts +294 -0
  123. package/dist/src/security/SecurityConfigManager.d.ts.map +1 -0
  124. package/dist/src/security/SecurityConfigManager.js +558 -0
  125. package/dist/src/security/SecurityConfigManager.js.map +1 -0
  126. package/dist/src/security/SecurityMonitoring.d.ts +245 -0
  127. package/dist/src/security/SecurityMonitoring.d.ts.map +1 -0
  128. package/dist/src/security/SecurityMonitoring.js +598 -0
  129. package/dist/src/security/SecurityMonitoring.js.map +1 -0
  130. package/dist/src/security/SecurityReviewer.d.ts +168 -0
  131. package/dist/src/security/SecurityReviewer.d.ts.map +1 -0
  132. package/dist/src/security/SecurityReviewer.js +686 -0
  133. package/dist/src/security/SecurityReviewer.js.map +1 -0
  134. package/dist/src/security/index.d.ts +183 -0
  135. package/dist/src/security/index.d.ts.map +1 -0
  136. package/dist/src/security/index.js +218 -0
  137. package/dist/src/security/index.js.map +1 -0
  138. package/dist/src/server/ConnectionTester.d.ts +32 -0
  139. package/dist/src/server/ConnectionTester.d.ts.map +1 -0
  140. package/dist/src/server/ConnectionTester.js +135 -0
  141. package/dist/src/server/ConnectionTester.js.map +1 -0
  142. package/dist/src/server/ToolRegistry.d.ts +50 -0
  143. package/dist/src/server/ToolRegistry.d.ts.map +1 -0
  144. package/dist/src/server/ToolRegistry.js +219 -0
  145. package/dist/src/server/ToolRegistry.js.map +1 -0
  146. package/dist/src/server.d.ts +7 -0
  147. package/dist/src/server.d.ts.map +1 -0
  148. package/dist/src/server.js +7 -0
  149. package/dist/src/server.js.map +1 -0
  150. package/dist/src/tools/BaseToolManager.d.ts +62 -0
  151. package/dist/src/tools/BaseToolManager.d.ts.map +1 -0
  152. package/dist/src/tools/BaseToolManager.js +195 -0
  153. package/dist/src/tools/BaseToolManager.js.map +1 -0
  154. package/dist/src/tools/auth.d.ts +50 -0
  155. package/dist/src/tools/auth.d.ts.map +1 -0
  156. package/dist/src/tools/auth.js +133 -0
  157. package/dist/src/tools/auth.js.map +1 -0
  158. package/dist/src/tools/cache.d.ts +260 -0
  159. package/dist/src/tools/cache.d.ts.map +1 -0
  160. package/dist/src/tools/cache.js +232 -0
  161. package/dist/src/tools/cache.js.map +1 -0
  162. package/dist/src/tools/comments.d.ts +33 -0
  163. package/dist/src/tools/comments.d.ts.map +1 -0
  164. package/dist/src/tools/comments.js +235 -0
  165. package/dist/src/tools/comments.js.map +1 -0
  166. package/dist/src/tools/index.d.ts +11 -0
  167. package/dist/src/tools/index.d.ts.map +1 -0
  168. package/dist/src/tools/index.js +11 -0
  169. package/dist/src/tools/index.js.map +1 -0
  170. package/dist/src/tools/media.d.ts +70 -0
  171. package/dist/src/tools/media.d.ts.map +1 -0
  172. package/dist/src/tools/media.js +248 -0
  173. package/dist/src/tools/media.js.map +1 -0
  174. package/dist/src/tools/pages.d.ts +32 -0
  175. package/dist/src/tools/pages.d.ts.map +1 -0
  176. package/dist/src/tools/pages.js +215 -0
  177. package/dist/src/tools/pages.js.map +1 -0
  178. package/dist/src/tools/performance.d.ts +73 -0
  179. package/dist/src/tools/performance.d.ts.map +1 -0
  180. package/dist/src/tools/performance.js +922 -0
  181. package/dist/src/tools/performance.js.map +1 -0
  182. package/dist/src/tools/posts/PostHandlers.d.ts +46 -0
  183. package/dist/src/tools/posts/PostHandlers.d.ts.map +1 -0
  184. package/dist/src/tools/posts/PostHandlers.js +400 -0
  185. package/dist/src/tools/posts/PostHandlers.js.map +1 -0
  186. package/dist/src/tools/posts/PostToolDefinitions.d.ts +37 -0
  187. package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +1 -0
  188. package/dist/src/tools/posts/PostToolDefinitions.js +236 -0
  189. package/dist/src/tools/posts/PostToolDefinitions.js.map +1 -0
  190. package/dist/src/tools/posts/index.d.ts +138 -0
  191. package/dist/src/tools/posts/index.d.ts.map +1 -0
  192. package/dist/src/tools/posts/index.js +163 -0
  193. package/dist/src/tools/posts/index.js.map +1 -0
  194. package/dist/src/tools/posts.d.ts +15 -0
  195. package/dist/src/tools/posts.d.ts.map +1 -0
  196. package/dist/src/tools/posts.js +16 -0
  197. package/dist/src/tools/posts.js.map +1 -0
  198. package/dist/src/tools/site.d.ts +32 -0
  199. package/dist/src/tools/site.d.ts.map +1 -0
  200. package/dist/src/tools/site.js +234 -0
  201. package/dist/src/tools/site.js.map +1 -0
  202. package/dist/src/tools/taxonomies.d.ts +36 -0
  203. package/dist/src/tools/taxonomies.d.ts.map +1 -0
  204. package/dist/src/tools/taxonomies.js +286 -0
  205. package/dist/src/tools/taxonomies.js.map +1 -0
  206. package/dist/src/tools/users.d.ts +33 -0
  207. package/dist/src/tools/users.d.ts.map +1 -0
  208. package/dist/src/tools/users.js +308 -0
  209. package/dist/src/tools/users.js.map +1 -0
  210. package/dist/src/types/client.d.ts +223 -0
  211. package/dist/src/types/client.d.ts.map +1 -0
  212. package/dist/src/types/client.js +97 -0
  213. package/dist/src/types/client.js.map +1 -0
  214. package/dist/src/types/enhanced.d.ts +237 -0
  215. package/dist/src/types/enhanced.d.ts.map +1 -0
  216. package/dist/src/types/enhanced.js +49 -0
  217. package/dist/src/types/enhanced.js.map +1 -0
  218. package/dist/src/types/index.d.ts +160 -0
  219. package/dist/src/types/index.d.ts.map +1 -0
  220. package/dist/src/types/index.js +14 -0
  221. package/dist/src/types/index.js.map +1 -0
  222. package/dist/src/types/mcp.d.ts +178 -0
  223. package/dist/src/types/mcp.d.ts.map +1 -0
  224. package/dist/src/types/mcp.js +7 -0
  225. package/dist/src/types/mcp.js.map +1 -0
  226. package/dist/src/types/requests.d.ts +322 -0
  227. package/dist/src/types/requests.d.ts.map +1 -0
  228. package/dist/src/types/requests.js +8 -0
  229. package/dist/src/types/requests.js.map +1 -0
  230. package/dist/src/types/tools.d.ts +506 -0
  231. package/dist/src/types/tools.d.ts.map +1 -0
  232. package/dist/src/types/tools.js +8 -0
  233. package/dist/src/types/tools.js.map +1 -0
  234. package/dist/src/types/wordpress.d.ts +471 -0
  235. package/dist/src/types/wordpress.d.ts.map +1 -0
  236. package/dist/src/types/wordpress.js +14 -0
  237. package/dist/src/types/wordpress.js.map +1 -0
  238. package/dist/src/utils/debug.d.ts +71 -0
  239. package/dist/src/utils/debug.d.ts.map +1 -0
  240. package/dist/src/utils/debug.js +235 -0
  241. package/dist/src/utils/debug.js.map +1 -0
  242. package/dist/src/utils/enhancedError.d.ts +61 -0
  243. package/dist/src/utils/enhancedError.d.ts.map +1 -0
  244. package/dist/src/utils/enhancedError.js +221 -0
  245. package/dist/src/utils/enhancedError.js.map +1 -0
  246. package/dist/src/utils/error.d.ts +17 -0
  247. package/dist/src/utils/error.d.ts.map +1 -0
  248. package/dist/src/utils/error.js +108 -0
  249. package/dist/src/utils/error.js.map +1 -0
  250. package/dist/src/utils/logger.d.ts +106 -0
  251. package/dist/src/utils/logger.d.ts.map +1 -0
  252. package/dist/src/utils/logger.js +280 -0
  253. package/dist/src/utils/logger.js.map +1 -0
  254. package/dist/src/utils/streaming.d.ts +104 -0
  255. package/dist/src/utils/streaming.d.ts.map +1 -0
  256. package/dist/src/utils/streaming.js +331 -0
  257. package/dist/src/utils/streaming.js.map +1 -0
  258. package/dist/src/utils/toolWrapper.d.ts +42 -0
  259. package/dist/src/utils/toolWrapper.d.ts.map +1 -0
  260. package/dist/src/utils/toolWrapper.js +101 -0
  261. package/dist/src/utils/toolWrapper.js.map +1 -0
  262. package/dist/src/utils/validation/core.d.ts +21 -0
  263. package/dist/src/utils/validation/core.d.ts.map +1 -0
  264. package/dist/src/utils/validation/core.js +71 -0
  265. package/dist/src/utils/validation/core.js.map +1 -0
  266. package/dist/src/utils/validation/index.d.ts +25 -0
  267. package/dist/src/utils/validation/index.d.ts.map +1 -0
  268. package/dist/src/utils/validation/index.js +29 -0
  269. package/dist/src/utils/validation/index.js.map +1 -0
  270. package/dist/src/utils/validation/network.d.ts +19 -0
  271. package/dist/src/utils/validation/network.d.ts.map +1 -0
  272. package/dist/src/utils/validation/network.js +93 -0
  273. package/dist/src/utils/validation/network.js.map +1 -0
  274. package/dist/src/utils/validation/rateLimit.d.ts +21 -0
  275. package/dist/src/utils/validation/rateLimit.d.ts.map +1 -0
  276. package/dist/src/utils/validation/rateLimit.js +43 -0
  277. package/dist/src/utils/validation/rateLimit.js.map +1 -0
  278. package/dist/src/utils/validation/security.d.ts +29 -0
  279. package/dist/src/utils/validation/security.d.ts.map +1 -0
  280. package/dist/src/utils/validation/security.js +327 -0
  281. package/dist/src/utils/validation/security.js.map +1 -0
  282. package/dist/src/utils/validation/wordpress.d.ts +31 -0
  283. package/dist/src/utils/validation/wordpress.d.ts.map +1 -0
  284. package/dist/src/utils/validation/wordpress.js +146 -0
  285. package/dist/src/utils/validation/wordpress.js.map +1 -0
  286. package/dist/src/utils/validation.d.ts +15 -0
  287. package/dist/src/utils/validation.d.ts.map +1 -0
  288. package/dist/src/utils/validation.js +27 -0
  289. package/dist/src/utils/validation.js.map +1 -0
  290. package/dist/tests/vitest.setup.d.ts +6 -0
  291. package/dist/tests/vitest.setup.d.ts.map +1 -0
  292. package/dist/tests/vitest.setup.js +39 -0
  293. package/dist/tests/vitest.setup.js.map +1 -0
  294. package/docs/INSTALLATION.md +4 -2
  295. package/docs/TROUBLESHOOTING.md +2 -1
  296. package/docs/developer/TESTING.md +24 -19
  297. package/docs/integrations/claude-desktop.md +9 -4
  298. package/docs/user-guides/DXT_INSTALLATION.md +2 -1
  299. package/package.json +28 -29
  300. package/src/config/ServerConfiguration.ts +22 -2
  301. package/dist/ajv-patch.js +0 -34
  302. package/dist/cache/__tests__/CacheInvalidation.test.d.ts +0 -5
  303. package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +0 -1
  304. package/dist/cache/__tests__/CacheInvalidation.test.js +0 -238
  305. package/dist/cache/__tests__/CacheInvalidation.test.js.map +0 -1
  306. package/dist/cache/__tests__/CacheManager.test.d.ts +0 -5
  307. package/dist/cache/__tests__/CacheManager.test.d.ts.map +0 -1
  308. package/dist/cache/__tests__/CacheManager.test.js +0 -233
  309. package/dist/cache/__tests__/CacheManager.test.js.map +0 -1
  310. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +0 -5
  311. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +0 -1
  312. package/dist/cache/__tests__/CachedWordPressClient.test.js +0 -231
  313. package/dist/cache/__tests__/CachedWordPressClient.test.js.map +0 -1
  314. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +0 -5
  315. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +0 -1
  316. package/dist/cache/__tests__/HttpCacheWrapper.test.js +0 -300
  317. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +0 -1
  318. package/dist/dxt-entry.cjs +0 -81
@@ -0,0 +1,283 @@
1
+ /**
2
+ * HTTP-level caching wrapper with ETags and Cache-Control headers
3
+ * Implements WordPress REST API caching best practices
4
+ */
5
+ import { CachePresets } from "./CacheManager.js";
6
+ import * as crypto from "crypto";
7
+ import { LoggerFactory } from "../utils/logger.js";
8
+ /**
9
+ * HTTP caching wrapper that adds intelligent caching to HTTP requests
10
+ */
11
+ export class HttpCacheWrapper {
12
+ cacheManager;
13
+ siteId;
14
+ logger = LoggerFactory.cache();
15
+ constructor(cacheManager, siteId) {
16
+ this.cacheManager = cacheManager;
17
+ this.siteId = siteId;
18
+ }
19
+ /**
20
+ * Execute request with intelligent caching
21
+ */
22
+ async request(requestFn, options, cacheOptions) {
23
+ // Only cache GET requests
24
+ if (options.method.toUpperCase() !== "GET") {
25
+ return await requestFn();
26
+ }
27
+ const cacheKey = this.generateCacheKey(options);
28
+ const cachedEntry = this.cacheManager.getEntry(cacheKey);
29
+ // Check for conditional request support
30
+ if (cachedEntry && this.cacheManager.supportsConditionalRequest(cacheKey)) {
31
+ const conditionalHeaders = this.cacheManager.getConditionalHeaders(cacheKey);
32
+ // Add conditional headers to request
33
+ const requestWithHeaders = {
34
+ ...options,
35
+ headers: {
36
+ ...options.headers,
37
+ ...conditionalHeaders,
38
+ },
39
+ };
40
+ try {
41
+ const response = await this.executeRequestWithHeaders(requestFn, requestWithHeaders);
42
+ // 304 Not Modified - return cached data
43
+ if (response.status === 304) {
44
+ return {
45
+ data: cachedEntry.value.data,
46
+ status: 200,
47
+ headers: cachedEntry.value.headers,
48
+ cached: true,
49
+ };
50
+ }
51
+ // Content changed - update cache
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ return await this.cacheAndReturn(response, cacheKey, cacheOptions);
54
+ }
55
+ catch (error) {
56
+ // If conditional request fails, try without conditions
57
+ this.logger.warn("Conditional request failed, falling back to regular request", {
58
+ error: error instanceof Error ? error.message : String(error),
59
+ siteId: this.siteId
60
+ });
61
+ }
62
+ }
63
+ // Check for valid cached response
64
+ const cached = this.cacheManager.get(cacheKey);
65
+ if (cached) {
66
+ return {
67
+ data: cached.data,
68
+ status: cached.status,
69
+ headers: cached.headers,
70
+ cached: true,
71
+ };
72
+ }
73
+ // Execute fresh request
74
+ const response = await requestFn();
75
+ return await this.cacheAndReturn(response, cacheKey, cacheOptions);
76
+ }
77
+ /**
78
+ * Invalidate cache for specific endpoint
79
+ */
80
+ invalidate(endpoint, params) {
81
+ const cacheKey = this.cacheManager.generateKey(this.siteId, endpoint, params);
82
+ this.cacheManager.delete(cacheKey);
83
+ }
84
+ /**
85
+ * Invalidate cache entries matching pattern
86
+ */
87
+ invalidatePattern(pattern) {
88
+ const regex = new RegExp(`${this.siteId}:${pattern}`);
89
+ return this.cacheManager.clearPattern(regex);
90
+ }
91
+ /**
92
+ * Invalidate all cache for this site
93
+ */
94
+ invalidateAll() {
95
+ return this.cacheManager.clearSite(this.siteId);
96
+ }
97
+ /**
98
+ * Pre-warm cache with data
99
+ */
100
+ warm(endpoint, data, params, cacheOptions) {
101
+ const cacheKey = this.cacheManager.generateKey(this.siteId, endpoint, params);
102
+ const ttl = cacheOptions?.ttl || this.getDefaultTTL(endpoint);
103
+ const cachedResponse = {
104
+ data,
105
+ status: 200,
106
+ headers: this.generateCacheHeaders(cacheOptions, endpoint),
107
+ etag: this.generateETag(data),
108
+ lastModified: new Date().toUTCString(),
109
+ cacheControl: cacheOptions?.cacheControl || this.getDefaultCacheControl(endpoint),
110
+ };
111
+ this.cacheManager.set(cacheKey, cachedResponse, ttl, cachedResponse.etag, cachedResponse.lastModified);
112
+ }
113
+ /**
114
+ * Get cache statistics for this site
115
+ */
116
+ getStats() {
117
+ return this.cacheManager.getStats();
118
+ }
119
+ /**
120
+ * Generate cache key for request
121
+ */
122
+ generateCacheKey(options) {
123
+ const endpoint = this.extractEndpoint(options.url);
124
+ return this.cacheManager.generateKey(this.siteId, endpoint, {
125
+ ...options.params,
126
+ // Include relevant headers that affect response
127
+ ...this.extractCacheableHeaders(options.headers),
128
+ });
129
+ }
130
+ /**
131
+ * Extract endpoint from full URL
132
+ */
133
+ extractEndpoint(url) {
134
+ // Extract the path after /wp-json/wp/v2/
135
+ const match = url.match(/\/wp-json\/wp\/v2\/(.+?)(?:\?|$)/);
136
+ return match ? match[1] : url;
137
+ }
138
+ /**
139
+ * Extract headers that affect caching
140
+ */
141
+ extractCacheableHeaders(headers) {
142
+ if (!headers)
143
+ return {};
144
+ const cacheableHeaders = {};
145
+ const relevantHeaders = ["accept", "accept-language", "authorization"];
146
+ for (const header of relevantHeaders) {
147
+ if (headers[header]) {
148
+ cacheableHeaders[header] = headers[header];
149
+ }
150
+ }
151
+ return cacheableHeaders;
152
+ }
153
+ /**
154
+ * Execute request with modified headers
155
+ */
156
+ async executeRequestWithHeaders(requestFn, options) {
157
+ // This is a simplified approach - in practice, you'd need to modify the actual request
158
+ // The actual implementation would depend on your HTTP client (axios, fetch, etc.)
159
+ return await requestFn();
160
+ }
161
+ /**
162
+ * Cache response and return with cache metadata
163
+ */
164
+ async cacheAndReturn(response, cacheKey, cacheOptions) {
165
+ // Don't cache error responses (unless specifically configured)
166
+ if (response.status >= 400) {
167
+ return response;
168
+ }
169
+ const endpoint = this.extractEndpointFromKey(cacheKey);
170
+ const ttl = cacheOptions?.ttl || this.getDefaultTTL(endpoint);
171
+ // Generate ETags and cache headers
172
+ const etag = this.generateETag(response.data);
173
+ const lastModified = new Date().toUTCString();
174
+ const cacheControl = cacheOptions?.cacheControl || this.getDefaultCacheControl(endpoint);
175
+ const cachedResponse = {
176
+ data: response.data,
177
+ status: response.status,
178
+ headers: {
179
+ ...response.headers,
180
+ etag: etag,
181
+ "last-modified": lastModified,
182
+ "cache-control": cacheControl,
183
+ },
184
+ etag,
185
+ lastModified,
186
+ cacheControl,
187
+ };
188
+ // Store in cache
189
+ this.cacheManager.set(cacheKey, cachedResponse, ttl, etag, lastModified);
190
+ return {
191
+ data: response.data,
192
+ status: response.status,
193
+ headers: cachedResponse.headers,
194
+ cached: false,
195
+ };
196
+ }
197
+ /**
198
+ * Generate ETag for response data
199
+ */
200
+ generateETag(data) {
201
+ const hash = crypto.createHash("md5").update(JSON.stringify(data)).digest("hex");
202
+ return `"${hash}"`;
203
+ }
204
+ /**
205
+ * Get default TTL based on endpoint type
206
+ */
207
+ getDefaultTTL(endpoint) {
208
+ // Static data endpoints
209
+ if (this.isStaticEndpoint(endpoint)) {
210
+ return CachePresets.STATIC.ttl;
211
+ }
212
+ // Semi-static data endpoints
213
+ if (this.isSemiStaticEndpoint(endpoint)) {
214
+ return CachePresets.SEMI_STATIC.ttl;
215
+ }
216
+ // Session/auth endpoints
217
+ if (this.isSessionEndpoint(endpoint)) {
218
+ return CachePresets.SESSION.ttl;
219
+ }
220
+ // Default to dynamic for posts, comments, etc.
221
+ return CachePresets.DYNAMIC.ttl;
222
+ }
223
+ /**
224
+ * Get default Cache-Control header based on endpoint
225
+ */
226
+ getDefaultCacheControl(endpoint) {
227
+ if (this.isStaticEndpoint(endpoint)) {
228
+ return CachePresets.STATIC.cacheControl;
229
+ }
230
+ if (this.isSemiStaticEndpoint(endpoint)) {
231
+ return CachePresets.SEMI_STATIC.cacheControl;
232
+ }
233
+ if (this.isSessionEndpoint(endpoint)) {
234
+ return CachePresets.SESSION.cacheControl;
235
+ }
236
+ return CachePresets.DYNAMIC.cacheControl;
237
+ }
238
+ /**
239
+ * Generate cache headers
240
+ */
241
+ generateCacheHeaders(options, endpoint) {
242
+ const headers = {};
243
+ if (options?.cacheControl) {
244
+ headers["cache-control"] = options.cacheControl;
245
+ }
246
+ else if (endpoint) {
247
+ headers["cache-control"] = this.getDefaultCacheControl(endpoint);
248
+ }
249
+ if (options?.varyHeaders?.length) {
250
+ headers["vary"] = options.varyHeaders.join(", ");
251
+ }
252
+ return headers;
253
+ }
254
+ /**
255
+ * Check if endpoint contains static data
256
+ */
257
+ isStaticEndpoint(endpoint) {
258
+ const staticEndpoints = ["settings", "types", "statuses"];
259
+ return staticEndpoints.some((pattern) => endpoint.includes(pattern));
260
+ }
261
+ /**
262
+ * Check if endpoint contains semi-static data
263
+ */
264
+ isSemiStaticEndpoint(endpoint) {
265
+ const semiStaticEndpoints = ["categories", "tags", "users", "taxonomies"];
266
+ return semiStaticEndpoints.some((pattern) => endpoint.includes(pattern));
267
+ }
268
+ /**
269
+ * Check if endpoint is session-related
270
+ */
271
+ isSessionEndpoint(endpoint) {
272
+ const sessionEndpoints = ["users/me", "application-passwords"];
273
+ return sessionEndpoints.some((pattern) => endpoint.includes(pattern));
274
+ }
275
+ /**
276
+ * Extract endpoint from cache key
277
+ */
278
+ extractEndpointFromKey(cacheKey) {
279
+ const parts = cacheKey.split(":");
280
+ return parts[1] || "";
281
+ }
282
+ }
283
+ //# sourceMappingURL=HttpCacheWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpCacheWrapper.js","sourceRoot":"","sources":["../../../src/cache/HttpCacheWrapper.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,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7E,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE9F,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,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,174 @@
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, type CacheStats } 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 = unknown>(method: HTTPMethod, endpoint: string, data?: unknown, 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?: Record<string, unknown>): Promise<WordPressCategory[]>;
56
+ /**
57
+ * Get tags with semi-static caching
58
+ */
59
+ getTags(params?: Record<string, unknown>): 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(): {
106
+ cache: CacheStats;
107
+ invalidation: {
108
+ queueSize: number;
109
+ rulesCount: number;
110
+ processing: boolean;
111
+ };
112
+ };
113
+ /**
114
+ * Get cache manager instance (for performance monitoring integration)
115
+ */
116
+ getCacheManager(): CacheManager;
117
+ /**
118
+ * Clear cache entries (for cache management tools)
119
+ */
120
+ clearCache(): number;
121
+ /**
122
+ * Clear cache entries matching pattern
123
+ */
124
+ clearCachePattern(pattern: string): number;
125
+ /**
126
+ * Warm cache with essential data
127
+ */
128
+ warmCache(): Promise<void>;
129
+ /**
130
+ * Get cache efficiency metrics
131
+ */
132
+ getCacheEfficiency(): {
133
+ hitRate: number;
134
+ missRate: number;
135
+ efficiency: string;
136
+ memoryUsage: number;
137
+ totalEntries: number;
138
+ };
139
+ /**
140
+ * Get cache configuration info
141
+ */
142
+ getCacheInfo(): {
143
+ enabled: boolean;
144
+ siteId: string;
145
+ maxSize: number;
146
+ defaultTTL: number;
147
+ currentSize: number;
148
+ ttlPresets: Record<string, unknown>;
149
+ };
150
+ /**
151
+ * Estimate memory usage of cache (in MB)
152
+ */
153
+ private estimateMemoryUsage;
154
+ /**
155
+ * Get detailed cache performance metrics
156
+ */
157
+ getDetailedCacheMetrics(): {
158
+ statistics: {
159
+ cache: CacheStats;
160
+ invalidation: {
161
+ queueSize: number;
162
+ rulesCount: number;
163
+ processing: boolean;
164
+ };
165
+ };
166
+ efficiency: Record<string, unknown>;
167
+ configuration: Record<string, unknown>;
168
+ siteInfo: {
169
+ siteId: string;
170
+ baseUrl: string;
171
+ };
172
+ };
173
+ }
174
+ //# 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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"}