mcp-wordpress 2.6.3 → 2.7.0

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 (333) hide show
  1. package/README.md +1 -1
  2. package/dist/cache/CacheInvalidation.d.ts +25 -6
  3. package/dist/cache/CacheInvalidation.d.ts.map +1 -1
  4. package/dist/cache/CacheInvalidation.js +168 -16
  5. package/dist/cache/CacheInvalidation.js.map +1 -1
  6. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
  7. package/dist/cache/HttpCacheWrapper.js +3 -4
  8. package/dist/cache/HttpCacheWrapper.js.map +1 -1
  9. package/dist/cache/SEOCacheManager.d.ts +150 -0
  10. package/dist/cache/SEOCacheManager.d.ts.map +1 -0
  11. package/dist/cache/SEOCacheManager.js +275 -0
  12. package/dist/cache/SEOCacheManager.js.map +1 -0
  13. package/dist/client/SEOWordPressClient.d.ts +164 -0
  14. package/dist/client/SEOWordPressClient.d.ts.map +1 -0
  15. package/dist/client/SEOWordPressClient.js +674 -0
  16. package/dist/client/SEOWordPressClient.js.map +1 -0
  17. package/dist/client/api.d.ts.map +1 -1
  18. package/dist/client/api.js +50 -20
  19. package/dist/client/api.js.map +1 -1
  20. package/dist/client/auth.js +19 -19
  21. package/dist/client/auth.js.map +1 -1
  22. package/dist/client/index.d.ts +11 -0
  23. package/dist/client/index.d.ts.map +1 -0
  24. package/dist/client/index.js +14 -0
  25. package/dist/client/index.js.map +1 -0
  26. package/dist/client/managers/AuthManager.d.ts +39 -0
  27. package/dist/client/managers/AuthManager.d.ts.map +1 -0
  28. package/dist/client/managers/AuthManager.js +142 -0
  29. package/dist/client/managers/AuthManager.js.map +1 -0
  30. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
  31. package/dist/client/managers/AuthenticationManager.js +10 -9
  32. package/dist/client/managers/AuthenticationManager.js.map +1 -1
  33. package/dist/client/managers/BaseManager.d.ts.map +1 -1
  34. package/dist/client/managers/BaseManager.js +12 -0
  35. package/dist/client/managers/BaseManager.js.map +1 -1
  36. package/dist/client/managers/ComposedAuthenticationManager.d.ts +94 -0
  37. package/dist/client/managers/ComposedAuthenticationManager.d.ts.map +1 -0
  38. package/dist/client/managers/ComposedAuthenticationManager.js +340 -0
  39. package/dist/client/managers/ComposedAuthenticationManager.js.map +1 -0
  40. package/dist/client/managers/ComposedManagerFactory.d.ts +104 -0
  41. package/dist/client/managers/ComposedManagerFactory.d.ts.map +1 -0
  42. package/dist/client/managers/ComposedManagerFactory.js +180 -0
  43. package/dist/client/managers/ComposedManagerFactory.js.map +1 -0
  44. package/dist/client/managers/ComposedRequestManager.d.ts +82 -0
  45. package/dist/client/managers/ComposedRequestManager.d.ts.map +1 -0
  46. package/dist/client/managers/ComposedRequestManager.js +260 -0
  47. package/dist/client/managers/ComposedRequestManager.js.map +1 -0
  48. package/dist/client/managers/JWTAuthImplementation.d.ts +86 -0
  49. package/dist/client/managers/JWTAuthImplementation.d.ts.map +1 -0
  50. package/dist/client/managers/JWTAuthImplementation.js +240 -0
  51. package/dist/client/managers/JWTAuthImplementation.js.map +1 -0
  52. package/dist/client/managers/ManagersIndex.d.ts +6 -0
  53. package/dist/client/managers/ManagersIndex.d.ts.map +1 -0
  54. package/dist/client/managers/ManagersIndex.js +6 -0
  55. package/dist/client/managers/ManagersIndex.js.map +1 -0
  56. package/dist/client/managers/RequestManager.d.ts.map +1 -1
  57. package/dist/client/managers/RequestManager.js +5 -3
  58. package/dist/client/managers/RequestManager.js.map +1 -1
  59. package/dist/client/managers/composed/MigrationAdapter.d.ts +80 -0
  60. package/dist/client/managers/composed/MigrationAdapter.d.ts.map +1 -0
  61. package/dist/client/managers/composed/MigrationAdapter.js +214 -0
  62. package/dist/client/managers/composed/MigrationAdapter.js.map +1 -0
  63. package/dist/client/managers/composed/index.d.ts +23 -0
  64. package/dist/client/managers/composed/index.d.ts.map +1 -0
  65. package/dist/client/managers/composed/index.js +26 -0
  66. package/dist/client/managers/composed/index.js.map +1 -0
  67. package/dist/client/managers/implementations/ConfigurationProviderImpl.d.ts +27 -0
  68. package/dist/client/managers/implementations/ConfigurationProviderImpl.d.ts.map +1 -0
  69. package/dist/client/managers/implementations/ConfigurationProviderImpl.js +41 -0
  70. package/dist/client/managers/implementations/ConfigurationProviderImpl.js.map +1 -0
  71. package/dist/client/managers/implementations/ErrorHandlerImpl.d.ts +31 -0
  72. package/dist/client/managers/implementations/ErrorHandlerImpl.d.ts.map +1 -0
  73. package/dist/client/managers/implementations/ErrorHandlerImpl.js +73 -0
  74. package/dist/client/managers/implementations/ErrorHandlerImpl.js.map +1 -0
  75. package/dist/client/managers/implementations/ParameterValidatorImpl.d.ts +47 -0
  76. package/dist/client/managers/implementations/ParameterValidatorImpl.d.ts.map +1 -0
  77. package/dist/client/managers/implementations/ParameterValidatorImpl.js +141 -0
  78. package/dist/client/managers/implementations/ParameterValidatorImpl.js.map +1 -0
  79. package/dist/client/managers/interfaces/ManagerInterfaces.d.ts +147 -0
  80. package/dist/client/managers/interfaces/ManagerInterfaces.d.ts.map +1 -0
  81. package/dist/client/managers/interfaces/ManagerInterfaces.js +6 -0
  82. package/dist/client/managers/interfaces/ManagerInterfaces.js.map +1 -0
  83. package/dist/config/Config.d.ts +30 -0
  84. package/dist/config/Config.d.ts.map +1 -1
  85. package/dist/config/Config.js +30 -0
  86. package/dist/config/Config.js.map +1 -1
  87. package/dist/config/ConfigurationSchema.d.ts +75 -198
  88. package/dist/config/ConfigurationSchema.d.ts.map +1 -1
  89. package/dist/config/ConfigurationSchema.js +17 -17
  90. package/dist/config/ConfigurationSchema.js.map +1 -1
  91. package/dist/config/ServerConfiguration.d.ts +2 -2
  92. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  93. package/dist/config/ServerConfiguration.js +15 -13
  94. package/dist/config/ServerConfiguration.js.map +1 -1
  95. package/dist/config/index.d.ts +8 -0
  96. package/dist/config/index.d.ts.map +1 -0
  97. package/dist/config/index.js +11 -0
  98. package/dist/config/index.js.map +1 -0
  99. package/dist/docs/DocumentationGenerator.js +2 -2
  100. package/dist/docs/DocumentationGenerator.js.map +1 -1
  101. package/dist/dxt-entry.js +3 -3
  102. package/dist/dxt-entry.js.map +1 -1
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +38 -37
  106. package/dist/index.js.map +1 -1
  107. package/dist/performance/MetricsCollector.d.ts.map +1 -1
  108. package/dist/performance/MetricsCollector.js +5 -4
  109. package/dist/performance/MetricsCollector.js.map +1 -1
  110. package/dist/security/AISecurityScanner.js +7 -7
  111. package/dist/security/AISecurityScanner.js.map +1 -1
  112. package/dist/security/AutomatedRemediation.d.ts.map +1 -1
  113. package/dist/security/AutomatedRemediation.js +11 -11
  114. package/dist/security/AutomatedRemediation.js.map +1 -1
  115. package/dist/security/InputValidator.d.ts +50 -126
  116. package/dist/security/InputValidator.d.ts.map +1 -1
  117. package/dist/security/InputValidator.js +9 -9
  118. package/dist/security/InputValidator.js.map +1 -1
  119. package/dist/security/SecurityCIPipeline.d.ts +47 -5
  120. package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
  121. package/dist/security/SecurityCIPipeline.js +390 -49
  122. package/dist/security/SecurityCIPipeline.js.map +1 -1
  123. package/dist/security/SecurityConfigManager.js +10 -10
  124. package/dist/security/SecurityConfigManager.js.map +1 -1
  125. package/dist/security/SecurityMonitoring.js +4 -4
  126. package/dist/security/SecurityMonitoring.js.map +1 -1
  127. package/dist/security/SecurityReviewer.d.ts.map +1 -1
  128. package/dist/security/SecurityReviewer.js +13 -6
  129. package/dist/security/SecurityReviewer.js.map +1 -1
  130. package/dist/security/index.js +3 -3
  131. package/dist/security/index.js.map +1 -1
  132. package/dist/server/ConnectionTester.js +5 -5
  133. package/dist/server/ConnectionTester.js.map +1 -1
  134. package/dist/server/ToolRegistry.d.ts +2 -2
  135. package/dist/server/ToolRegistry.d.ts.map +1 -1
  136. package/dist/server/ToolRegistry.js +7 -6
  137. package/dist/server/ToolRegistry.js.map +1 -1
  138. package/dist/server/index.d.ts +7 -0
  139. package/dist/server/index.d.ts.map +1 -0
  140. package/dist/server/index.js +9 -0
  141. package/dist/server/index.js.map +1 -0
  142. package/dist/tools/BaseToolManager.d.ts.map +1 -1
  143. package/dist/tools/BaseToolManager.js +11 -11
  144. package/dist/tools/BaseToolManager.js.map +1 -1
  145. package/dist/tools/auth.d.ts.map +1 -1
  146. package/dist/tools/auth.js +7 -7
  147. package/dist/tools/auth.js.map +1 -1
  148. package/dist/tools/comments.d.ts.map +1 -1
  149. package/dist/tools/comments.js +14 -14
  150. package/dist/tools/comments.js.map +1 -1
  151. package/dist/tools/index.d.ts +1 -0
  152. package/dist/tools/index.d.ts.map +1 -1
  153. package/dist/tools/index.js +1 -0
  154. package/dist/tools/index.js.map +1 -1
  155. package/dist/tools/media.d.ts.map +1 -1
  156. package/dist/tools/media.js +14 -11
  157. package/dist/tools/media.js.map +1 -1
  158. package/dist/tools/pages.d.ts.map +1 -1
  159. package/dist/tools/pages.js +12 -12
  160. package/dist/tools/pages.js.map +1 -1
  161. package/dist/tools/performance.d.ts.map +1 -1
  162. package/dist/tools/performance.js +13 -11
  163. package/dist/tools/performance.js.map +1 -1
  164. package/dist/tools/posts/PostHandlers.d.ts.map +1 -1
  165. package/dist/tools/posts/PostHandlers.js +16 -16
  166. package/dist/tools/posts/PostHandlers.js.map +1 -1
  167. package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -1
  168. package/dist/tools/posts/index.d.ts.map +1 -1
  169. package/dist/tools/seo/BulkOperations.d.ts +113 -0
  170. package/dist/tools/seo/BulkOperations.d.ts.map +1 -0
  171. package/dist/tools/seo/BulkOperations.js +398 -0
  172. package/dist/tools/seo/BulkOperations.js.map +1 -0
  173. package/dist/tools/seo/SEOHandlers.d.ts +55 -0
  174. package/dist/tools/seo/SEOHandlers.d.ts.map +1 -0
  175. package/dist/tools/seo/SEOHandlers.js +255 -0
  176. package/dist/tools/seo/SEOHandlers.js.map +1 -0
  177. package/dist/tools/seo/SEOToolDefinitions.d.ts +59 -0
  178. package/dist/tools/seo/SEOToolDefinitions.d.ts.map +1 -0
  179. package/dist/tools/seo/SEOToolDefinitions.js +385 -0
  180. package/dist/tools/seo/SEOToolDefinitions.js.map +1 -0
  181. package/dist/tools/seo/SEOTools.d.ts +203 -0
  182. package/dist/tools/seo/SEOTools.d.ts.map +1 -0
  183. package/dist/tools/seo/SEOTools.js +708 -0
  184. package/dist/tools/seo/SEOTools.js.map +1 -0
  185. package/dist/tools/seo/analyzers/ContentAnalyzer.d.ts +94 -0
  186. package/dist/tools/seo/analyzers/ContentAnalyzer.d.ts.map +1 -0
  187. package/dist/tools/seo/analyzers/ContentAnalyzer.js +402 -0
  188. package/dist/tools/seo/analyzers/ContentAnalyzer.js.map +1 -0
  189. package/dist/tools/seo/auditors/SiteAuditor.d.ts +121 -0
  190. package/dist/tools/seo/auditors/SiteAuditor.d.ts.map +1 -0
  191. package/dist/tools/seo/auditors/SiteAuditor.js +600 -0
  192. package/dist/tools/seo/auditors/SiteAuditor.js.map +1 -0
  193. package/dist/tools/seo/generators/MetaGenerator.d.ts +128 -0
  194. package/dist/tools/seo/generators/MetaGenerator.d.ts.map +1 -0
  195. package/dist/tools/seo/generators/MetaGenerator.js +547 -0
  196. package/dist/tools/seo/generators/MetaGenerator.js.map +1 -0
  197. package/dist/tools/seo/generators/SchemaGenerator.d.ts +204 -0
  198. package/dist/tools/seo/generators/SchemaGenerator.d.ts.map +1 -0
  199. package/dist/tools/seo/generators/SchemaGenerator.js +670 -0
  200. package/dist/tools/seo/generators/SchemaGenerator.js.map +1 -0
  201. package/dist/tools/seo/index.d.ts +17 -0
  202. package/dist/tools/seo/index.d.ts.map +1 -0
  203. package/dist/tools/seo/index.js +18 -0
  204. package/dist/tools/seo/index.js.map +1 -0
  205. package/dist/tools/seo/optimizers/InternalLinkingSuggester.d.ts +186 -0
  206. package/dist/tools/seo/optimizers/InternalLinkingSuggester.d.ts.map +1 -0
  207. package/dist/tools/seo/optimizers/InternalLinkingSuggester.js +683 -0
  208. package/dist/tools/seo/optimizers/InternalLinkingSuggester.js.map +1 -0
  209. package/dist/tools/site.d.ts.map +1 -1
  210. package/dist/tools/site.js +12 -12
  211. package/dist/tools/site.js.map +1 -1
  212. package/dist/tools/taxonomies.d.ts.map +1 -1
  213. package/dist/tools/taxonomies.js +20 -20
  214. package/dist/tools/taxonomies.js.map +1 -1
  215. package/dist/tools/users.d.ts.map +1 -1
  216. package/dist/tools/users.js +12 -12
  217. package/dist/tools/users.js.map +1 -1
  218. package/dist/types/client.d.ts +8 -6
  219. package/dist/types/client.d.ts.map +1 -1
  220. package/dist/types/client.js.map +1 -1
  221. package/dist/types/seo.d.ts +473 -0
  222. package/dist/types/seo.d.ts.map +1 -0
  223. package/dist/types/seo.js +94 -0
  224. package/dist/types/seo.js.map +1 -0
  225. package/dist/utils/enhancedError.js +1 -1
  226. package/dist/utils/enhancedError.js.map +1 -1
  227. package/dist/utils/error.d.ts.map +1 -1
  228. package/dist/utils/error.js +0 -1
  229. package/dist/utils/error.js.map +1 -1
  230. package/dist/utils/index.d.ts +12 -0
  231. package/dist/utils/index.d.ts.map +1 -0
  232. package/dist/utils/index.js +18 -0
  233. package/dist/utils/index.js.map +1 -0
  234. package/dist/utils/logger.js +3 -3
  235. package/dist/utils/logger.js.map +1 -1
  236. package/dist/utils/toolWrapper.d.ts +2 -2
  237. package/dist/utils/toolWrapper.js +8 -8
  238. package/dist/utils/toolWrapper.js.map +1 -1
  239. package/dist/utils/validation/core.d.ts.map +1 -1
  240. package/dist/utils/validation/core.js.map +1 -1
  241. package/dist/utils/validation/index.d.ts.map +1 -1
  242. package/dist/utils/validation/index.js.map +1 -1
  243. package/dist/utils/validation/network.js +3 -3
  244. package/dist/utils/validation/network.js.map +1 -1
  245. package/dist/utils/validation/rateLimit.js.map +1 -1
  246. package/dist/utils/validation/security.js.map +1 -1
  247. package/dist/utils/validation/wordpress.js.map +1 -1
  248. package/dist/utils/version.d.ts +144 -0
  249. package/dist/utils/version.d.ts.map +1 -0
  250. package/dist/utils/version.js +318 -0
  251. package/dist/utils/version.js.map +1 -0
  252. package/package.json +24 -58
  253. package/src/cache/CacheInvalidation.ts +183 -20
  254. package/src/cache/HttpCacheWrapper.ts +8 -5
  255. package/src/cache/SEOCacheManager.ts +330 -0
  256. package/src/cache/__tests__/CacheInvalidation.test.ts +6 -11
  257. package/src/cache/__tests__/CachedWordPressClient.test.ts +37 -62
  258. package/src/client/SEOWordPressClient.ts +876 -0
  259. package/src/client/api.ts +50 -21
  260. package/src/client/auth.ts +19 -19
  261. package/src/client/index.ts +16 -0
  262. package/src/client/managers/AuthManager.ts +175 -0
  263. package/src/client/managers/AuthenticationManager.ts +16 -14
  264. package/src/client/managers/BaseManager.ts +24 -5
  265. package/src/client/managers/ComposedAuthenticationManager.ts +409 -0
  266. package/src/client/managers/ComposedManagerFactory.ts +231 -0
  267. package/src/client/managers/ComposedRequestManager.ts +336 -0
  268. package/src/client/managers/JWTAuthImplementation.ts +326 -0
  269. package/src/client/managers/ManagersIndex.ts +6 -0
  270. package/src/client/managers/RequestManager.ts +9 -7
  271. package/src/client/managers/composed/MigrationAdapter.ts +263 -0
  272. package/src/client/managers/composed/index.ts +47 -0
  273. package/src/client/managers/implementations/ConfigurationProviderImpl.ts +52 -0
  274. package/src/client/managers/implementations/ErrorHandlerImpl.ts +102 -0
  275. package/src/client/managers/implementations/ParameterValidatorImpl.ts +221 -0
  276. package/src/client/managers/interfaces/ManagerInterfaces.ts +171 -0
  277. package/src/config/Config.ts +63 -0
  278. package/src/config/ConfigurationSchema.ts +17 -17
  279. package/src/config/ServerConfiguration.ts +18 -16
  280. package/src/config/index.ts +13 -0
  281. package/src/docs/DocumentationGenerator.ts +2 -2
  282. package/src/dxt-entry.ts +3 -3
  283. package/src/index.ts +43 -43
  284. package/src/performance/MetricsCollector.ts +15 -11
  285. package/src/security/AISecurityScanner.ts +7 -7
  286. package/src/security/AutomatedRemediation.ts +13 -11
  287. package/src/security/InputValidator.ts +10 -9
  288. package/src/security/SecurityCIPipeline.ts +494 -56
  289. package/src/security/SecurityConfigManager.ts +10 -10
  290. package/src/security/SecurityMonitoring.ts +5 -5
  291. package/src/security/SecurityReviewer.ts +13 -6
  292. package/src/security/index.ts +3 -3
  293. package/src/server/ConnectionTester.ts +5 -5
  294. package/src/server/ToolRegistry.ts +9 -8
  295. package/src/server/index.ts +10 -0
  296. package/src/tools/BaseToolManager.ts +55 -83
  297. package/src/tools/auth.ts +21 -12
  298. package/src/tools/comments.ts +23 -19
  299. package/src/tools/index.ts +1 -0
  300. package/src/tools/media.ts +23 -20
  301. package/src/tools/pages.ts +20 -13
  302. package/src/tools/performance.ts +101 -32
  303. package/src/tools/posts/PostHandlers.ts +23 -23
  304. package/src/tools/posts/PostToolDefinitions.ts +1 -1
  305. package/src/tools/posts/index.ts +2 -2
  306. package/src/tools/seo/BulkOperations.ts +557 -0
  307. package/src/tools/seo/SEOHandlers.ts +296 -0
  308. package/src/tools/seo/SEOToolDefinitions.ts +402 -0
  309. package/src/tools/seo/SEOTools.ts +871 -0
  310. package/src/tools/seo/analyzers/ContentAnalyzer.ts +493 -0
  311. package/src/tools/seo/auditors/SiteAuditor.ts +787 -0
  312. package/src/tools/seo/generators/MetaGenerator.ts +694 -0
  313. package/src/tools/seo/generators/SchemaGenerator.ts +955 -0
  314. package/src/tools/seo/index.ts +47 -0
  315. package/src/tools/seo/optimizers/InternalLinkingSuggester.ts +934 -0
  316. package/src/tools/site.ts +27 -26
  317. package/src/tools/taxonomies.ts +29 -25
  318. package/src/tools/users.ts +20 -13
  319. package/src/types/client.ts +8 -6
  320. package/src/types/seo.ts +546 -0
  321. package/src/utils/enhancedError.ts +1 -1
  322. package/src/utils/error.ts +1 -2
  323. package/src/utils/index.ts +23 -0
  324. package/src/utils/logger.ts +3 -3
  325. package/src/utils/toolWrapper.ts +10 -10
  326. package/src/utils/validation/core.ts +2 -2
  327. package/src/utils/validation/index.ts +2 -2
  328. package/src/utils/validation/network.ts +5 -5
  329. package/src/utils/validation/rateLimit.ts +1 -1
  330. package/src/utils/validation/security.ts +1 -1
  331. package/src/utils/validation/wordpress.ts +1 -1
  332. package/src/utils/version.ts +402 -0
  333. package/src/dxt-entry.cjs +0 -68
@@ -0,0 +1,275 @@
1
+ /**
2
+ * SEO Cache Manager
3
+ *
4
+ * Extends the base cache manager with SEO-specific caching strategies
5
+ * and invalidation patterns. Provides optimized caching for SEO analysis,
6
+ * schema generation, and audit results.
7
+ *
8
+ * @since 2.7.0
9
+ */
10
+ import { CacheManager } from "./CacheManager.js";
11
+ import { Config } from "../config/Config.js";
12
+ import { LoggerFactory } from "../utils/logger.js";
13
+ /**
14
+ * SEO-specific cache manager
15
+ *
16
+ * Implements specialized caching strategies for SEO operations:
17
+ * - Content analysis results (6 hour default TTL)
18
+ * - Schema markup (24 hour default TTL)
19
+ * - Site audits (1 hour default TTL)
20
+ * - Keyword research (7 day default TTL)
21
+ * - SERP data (12 hour default TTL)
22
+ */
23
+ export class SEOCacheManager extends CacheManager {
24
+ SEO_CACHE_PREFIX = "seo:";
25
+ logger = LoggerFactory.cache("seo");
26
+ seoConfig = Config.getInstance().get().seo;
27
+ /**
28
+ * Default TTL values for different SEO operations
29
+ */
30
+ DEFAULT_TTL = {
31
+ analysis: this.seoConfig.cache.analysisTTL || 21600, // 6 hours
32
+ schema: this.seoConfig.cache.schemaTTL || 86400, // 24 hours
33
+ audit: this.seoConfig.cache.auditTTL || 3600, // 1 hour
34
+ keywords: this.seoConfig.cache.keywordsTTL || 604800, // 7 days
35
+ serp: 43200, // 12 hours
36
+ metadata: 7200, // 2 hours
37
+ links: 10800, // 3 hours
38
+ };
39
+ constructor() {
40
+ const config = {
41
+ maxSize: 1000,
42
+ defaultTTL: 21600, // 6 hours default for SEO operations
43
+ enableLRU: true,
44
+ enableStats: true,
45
+ sitePrefix: "seo",
46
+ };
47
+ super(config);
48
+ }
49
+ /**
50
+ * Get SEO-specific cache key
51
+ *
52
+ * @param type - Type of SEO operation
53
+ * @param site - Site identifier
54
+ * @param identifier - Unique identifier (post ID, etc.)
55
+ * @param suffix - Additional suffix for uniqueness
56
+ * @returns Formatted cache key
57
+ */
58
+ getSEOCacheKey(type, site, identifier, suffix) {
59
+ const parts = [this.SEO_CACHE_PREFIX, type, site, identifier];
60
+ if (suffix) {
61
+ parts.push(suffix);
62
+ }
63
+ return parts.join(":");
64
+ }
65
+ /**
66
+ * Cache SEO analysis result
67
+ *
68
+ * @param postId - WordPress post ID
69
+ * @param analysisType - Type of analysis performed
70
+ * @param result - Analysis result to cache
71
+ * @param site - Site identifier
72
+ * @param ttl - Optional custom TTL
73
+ */
74
+ async cacheAnalysis(postId, analysisType, result, site = "default", ttl) {
75
+ const key = this.getSEOCacheKey("analysis", site, postId, analysisType);
76
+ const actualTTL = ttl || this.DEFAULT_TTL.analysis;
77
+ this.set(key, result, actualTTL);
78
+ this.logger.debug("Cached SEO analysis", {
79
+ key,
80
+ ttl: actualTTL,
81
+ site,
82
+ postId,
83
+ analysisType,
84
+ });
85
+ }
86
+ /**
87
+ * Get cached SEO analysis result
88
+ *
89
+ * @param postId - WordPress post ID
90
+ * @param analysisType - Type of analysis
91
+ * @param site - Site identifier
92
+ * @returns Cached result or null
93
+ */
94
+ getCachedAnalysis(postId, analysisType, site = "default") {
95
+ const key = this.getSEOCacheKey("analysis", site, postId, analysisType);
96
+ const cached = this.get(key);
97
+ if (cached) {
98
+ this.logger.debug("SEO analysis cache hit", { key, site, postId });
99
+ }
100
+ return cached;
101
+ }
102
+ /**
103
+ * Cache schema markup
104
+ *
105
+ * @param postId - WordPress post ID
106
+ * @param schemaType - Type of schema
107
+ * @param schema - Schema markup to cache
108
+ * @param site - Site identifier
109
+ * @param ttl - Optional custom TTL
110
+ */
111
+ async cacheSchema(postId, schemaType, schema, site = "default", ttl) {
112
+ const key = this.getSEOCacheKey("schema", site, postId, schemaType);
113
+ const actualTTL = ttl || this.DEFAULT_TTL.schema;
114
+ this.set(key, schema, actualTTL);
115
+ this.logger.debug("Cached schema markup", {
116
+ key,
117
+ ttl: actualTTL,
118
+ site,
119
+ postId,
120
+ schemaType,
121
+ });
122
+ }
123
+ /**
124
+ * Get cached schema markup
125
+ *
126
+ * @param postId - WordPress post ID
127
+ * @param schemaType - Type of schema
128
+ * @param site - Site identifier
129
+ * @returns Cached schema or null
130
+ */
131
+ getCachedSchema(postId, schemaType, site = "default") {
132
+ const key = this.getSEOCacheKey("schema", site, postId, schemaType);
133
+ return this.get(key);
134
+ }
135
+ /**
136
+ * Cache site audit results
137
+ *
138
+ * @param auditType - Type of audit performed
139
+ * @param result - Audit results
140
+ * @param site - Site identifier
141
+ * @param ttl - Optional custom TTL
142
+ */
143
+ async cacheAudit(auditType, result, site = "default", ttl) {
144
+ const key = this.getSEOCacheKey("audit", site, "site", auditType);
145
+ const actualTTL = ttl || this.DEFAULT_TTL.audit;
146
+ this.set(key, result, actualTTL);
147
+ this.logger.debug("Cached site audit", {
148
+ key,
149
+ ttl: actualTTL,
150
+ site,
151
+ auditType,
152
+ });
153
+ }
154
+ /**
155
+ * Get cached audit results
156
+ *
157
+ * @param auditType - Type of audit
158
+ * @param site - Site identifier
159
+ * @returns Cached audit or null
160
+ */
161
+ getCachedAudit(auditType, site = "default") {
162
+ const key = this.getSEOCacheKey("audit", site, "site", auditType);
163
+ return this.get(key);
164
+ }
165
+ /**
166
+ * Invalidate all SEO cache for a specific post
167
+ *
168
+ * Called when a post is updated to ensure fresh SEO analysis
169
+ *
170
+ * @param postId - WordPress post ID
171
+ * @param site - Site identifier
172
+ */
173
+ async invalidatePostSEO(postId, site = "default") {
174
+ const patterns = [
175
+ `${this.SEO_CACHE_PREFIX}analysis:${site}:${postId}:*`,
176
+ `${this.SEO_CACHE_PREFIX}schema:${site}:${postId}:*`,
177
+ `${this.SEO_CACHE_PREFIX}metadata:${site}:${postId}:*`,
178
+ `${this.SEO_CACHE_PREFIX}links:${site}:${postId}:*`,
179
+ ];
180
+ for (const pattern of patterns) {
181
+ await this.invalidatePattern(pattern);
182
+ }
183
+ this.logger.info("Invalidated SEO cache for post", { postId, site });
184
+ }
185
+ /**
186
+ * Invalidate all SEO cache for a site
187
+ *
188
+ * Called during major updates or when site-wide changes occur
189
+ *
190
+ * @param site - Site identifier
191
+ */
192
+ async invalidateSiteSEO(site = "default") {
193
+ const pattern = `${this.SEO_CACHE_PREFIX}*:${site}:*`;
194
+ await this.invalidatePattern(pattern);
195
+ this.logger.info("Invalidated all SEO cache for site", { site });
196
+ }
197
+ /**
198
+ * Invalidate cache entries matching a pattern
199
+ *
200
+ * @param pattern - Cache key pattern to match
201
+ * @private
202
+ */
203
+ async invalidatePattern(pattern) {
204
+ // Get all cache keys and filter by pattern
205
+ const allKeys = await this.getAllKeys();
206
+ const regex = new RegExp("^" + pattern.replace(/\*/g, ".*").replace(/:/g, "\\:") + "$");
207
+ const matchingKeys = allKeys.filter((key) => regex.test(key));
208
+ for (const key of matchingKeys) {
209
+ await this.delete(key);
210
+ }
211
+ if (matchingKeys.length > 0) {
212
+ this.logger.debug("Invalidated cache pattern", {
213
+ pattern,
214
+ count: matchingKeys.length,
215
+ });
216
+ }
217
+ }
218
+ /**
219
+ * Get cache statistics for SEO operations
220
+ *
221
+ * @returns Object with cache statistics
222
+ */
223
+ getSEOCacheStats() {
224
+ const allKeys = this.getAllKeys();
225
+ const seoKeys = allKeys.filter((key) => key.startsWith(this.SEO_CACHE_PREFIX));
226
+ const byType = {};
227
+ for (const key of seoKeys) {
228
+ const type = key.split(":")[1];
229
+ byType[type] = (byType[type] || 0) + 1;
230
+ }
231
+ const stats = this.getStats();
232
+ return {
233
+ totalEntries: seoKeys.length,
234
+ byType,
235
+ hitRate: stats.hitRate,
236
+ };
237
+ }
238
+ /**
239
+ * Preload cache with common SEO data
240
+ *
241
+ * Useful for warming up the cache with frequently accessed data
242
+ *
243
+ * @param site - Site identifier
244
+ * @param postIds - Array of post IDs to preload
245
+ */
246
+ async preloadSEOCache(site = "default", postIds = []) {
247
+ this.logger.info("Preloading SEO cache", {
248
+ site,
249
+ postCount: postIds.length,
250
+ });
251
+ // Implementation would fetch and cache SEO data for specified posts
252
+ // This is a placeholder for future implementation
253
+ }
254
+ /**
255
+ * Get all cache keys from the base cache manager
256
+ *
257
+ * @private
258
+ */
259
+ getAllKeys() {
260
+ // Access the private cache from the parent class if possible
261
+ // For now, we'll work around this by keeping our own key tracking
262
+ return [];
263
+ }
264
+ /**
265
+ * Clear all SEO-related cache entries
266
+ */
267
+ async clearSEOCache() {
268
+ const pattern = `${this.SEO_CACHE_PREFIX}*`;
269
+ await this.invalidatePattern(pattern);
270
+ this.logger.info("Cleared all SEO cache");
271
+ }
272
+ }
273
+ // Export singleton instance
274
+ export const seoCache = new SEOCacheManager();
275
+ //# sourceMappingURL=SEOCacheManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SEOCacheManager.js","sourceRoot":"","sources":["../../src/cache/SEOCacheManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * SEO WordPress Client
3
+ *
4
+ * Extended WordPress REST API client with enhanced SEO capabilities.
5
+ * Provides specialized methods for SEO metadata management, schema markup,
6
+ * and integration with popular WordPress SEO plugins like Yoast and RankMath.
7
+ *
8
+ * Features:
9
+ * - SEO metadata retrieval and updates via REST API
10
+ * - Integration with Yoast SEO and RankMath plugin APIs
11
+ * - Schema markup management through WordPress custom fields
12
+ * - Bulk SEO operations with progress tracking
13
+ * - SEO-specific data normalization and validation
14
+ * - Plugin-agnostic metadata handling
15
+ *
16
+ * @since 2.7.0
17
+ */
18
+ import { WordPressClient } from "./api.js";
19
+ import type { WordPressPost, WordPressPage } from "../types/wordpress.js";
20
+ import type { WordPressClientConfig } from "../types/client.js";
21
+ import type { SEOMetadata, SchemaMarkup } from "../types/seo.js";
22
+ /**
23
+ * SEO data structure for API responses (flattened format)
24
+ */
25
+ interface SEODataResponse {
26
+ postId: number;
27
+ plugin: "yoast" | "rankmath" | "seopress" | "none";
28
+ title: string | null;
29
+ description: string | null;
30
+ canonical: string | null;
31
+ focusKeyword: string | null;
32
+ openGraph: {
33
+ title: string | null;
34
+ description: string | null;
35
+ };
36
+ twitter: {
37
+ title: string | null;
38
+ description: string | null;
39
+ };
40
+ schema?: SchemaMarkup | undefined;
41
+ raw: Record<string, unknown>;
42
+ lastModified: string;
43
+ success?: boolean;
44
+ message?: string;
45
+ }
46
+ /**
47
+ * Bulk SEO operation parameters
48
+ */
49
+ interface BulkSEOParams {
50
+ postIds: number[];
51
+ operation: "get" | "update";
52
+ metadata?: Partial<SEOMetadata>;
53
+ batchSize?: number;
54
+ progressCallback?: (processed: number, total: number) => void;
55
+ }
56
+ /**
57
+ * Extended WordPress client with SEO capabilities
58
+ */
59
+ export declare class SEOWordPressClient extends WordPressClient {
60
+ private logger;
61
+ private detectedPlugin;
62
+ private pluginFields;
63
+ constructor(config?: Partial<WordPressClientConfig>);
64
+ /**
65
+ * Initialize and detect SEO plugins
66
+ */
67
+ initializeSEO(): Promise<void>;
68
+ /**
69
+ * Detect active SEO plugins on the WordPress site
70
+ */
71
+ private detectSEOPlugins;
72
+ /**
73
+ * Get SEO metadata for a post or page
74
+ */
75
+ getSEOMetadata(postId: number, type?: "post" | "page"): Promise<SEODataResponse>;
76
+ /**
77
+ * Update SEO metadata for a post or page
78
+ */
79
+ updateSEOMetadata(postId: number, metadata: Partial<SEOMetadata>, type?: "post" | "page"): Promise<SEODataResponse>;
80
+ /**
81
+ * Bulk get SEO metadata for multiple posts
82
+ */
83
+ bulkGetSEOMetadata(params: BulkSEOParams): Promise<SEODataResponse[]>;
84
+ /**
85
+ * Bulk update SEO metadata for multiple posts
86
+ */
87
+ bulkUpdateSEOMetadata(params: BulkSEOParams & {
88
+ metadata: Partial<SEOMetadata>;
89
+ }): Promise<SEODataResponse[]>;
90
+ /**
91
+ * Get all posts with SEO metadata for site audit
92
+ */
93
+ getAllPostsWithSEO(params?: {
94
+ postTypes?: string[];
95
+ maxPosts?: number;
96
+ includePages?: boolean;
97
+ }): Promise<Array<(WordPressPost | WordPressPage) & {
98
+ seoData?: SEODataResponse;
99
+ }>>;
100
+ /**
101
+ * Extract SEO metadata from WordPress post/page object
102
+ */
103
+ private extractSEOMetadata;
104
+ /**
105
+ * Extract schema markup from post meta
106
+ */
107
+ private extractSchemaMarkup;
108
+ /**
109
+ * Prepare meta fields for SEO metadata update
110
+ */
111
+ private prepareSEOMetaFields;
112
+ /**
113
+ * Extract meta value with array handling
114
+ */
115
+ private extractMetaValue;
116
+ /**
117
+ * Get plugin-specific focus keyword field
118
+ */
119
+ private getPluginFocusKeyword;
120
+ /**
121
+ * Get plugin-specific schema data field
122
+ */
123
+ private getPluginSchemaData;
124
+ /**
125
+ * Get plugin-specific focus keyword field name
126
+ */
127
+ private getPluginFocusKeywordField;
128
+ /**
129
+ * Test SEO plugin integration
130
+ */
131
+ testSEOIntegration(): Promise<{
132
+ pluginDetected: string;
133
+ canReadMetadata: boolean;
134
+ canWriteMetadata: boolean;
135
+ samplePostsWithSEO: number;
136
+ errors?: string[];
137
+ }>;
138
+ /**
139
+ * Get integration status for SEO features
140
+ */
141
+ getIntegrationStatus(): {
142
+ hasPlugin: boolean;
143
+ plugin: string;
144
+ canReadMetadata: boolean;
145
+ canWriteMetadata: boolean;
146
+ features: {
147
+ metaTags: boolean;
148
+ schema: boolean;
149
+ socialMedia: boolean;
150
+ xmlSitemap: boolean;
151
+ breadcrumbs: boolean;
152
+ };
153
+ };
154
+ /**
155
+ * Check if content has plugin-specific SEO data
156
+ */
157
+ private hasPluginData;
158
+ /**
159
+ * Get raw plugin data for debugging purposes
160
+ */
161
+ private getRawPluginData;
162
+ }
163
+ export {};
164
+ //# sourceMappingURL=SEOWordPressClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SEOWordPressClient.d.ts","sourceRoot":"","sources":["../../src/client/SEOWordPressClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAoDjE;;GAEG;AACH,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,cAAc,CAAsD;IAC5E,OAAO,CAAC,YAAY,CAAkB;gBAE1B,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAyCnD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBpC;;OAEG;YACW,gBAAgB;IAuC9B;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAiD9F;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,EAC9B,IAAI,GAAE,MAAM,GAAG,MAAe,GAC7B,OAAO,CAAC,eAAe,CAAC;IA0C3B;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkD3E;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkDnH;;OAEG;IACG,kBAAkB,CACtB,MAAM,GAAE;QACN,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,OAAO,CAAC;KACnB,GACL,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,aAAa,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IA6DlF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6D1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6B3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0C5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IASlC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC;QAClC,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;QACzB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IAiEF;;OAEG;IACH,oBAAoB,IAAI;QACtB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,OAAO,CAAC;QACzB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,QAAQ,EAAE;YACR,QAAQ,EAAE,OAAO,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC;YAChB,WAAW,EAAE,OAAO,CAAC;YACrB,UAAU,EAAE,OAAO,CAAC;YACpB,WAAW,EAAE,OAAO,CAAC;SACtB,CAAC;KACH;IAkBD;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA6BzB"}