mcp-wordpress 2.4.2 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. package/README.md +124 -54
  2. package/bin/status.js +1 -1
  3. package/dist/cache/CacheInvalidation.d.ts +3 -1
  4. package/dist/cache/CacheInvalidation.d.ts.map +1 -1
  5. package/dist/cache/CacheInvalidation.js +10 -4
  6. package/dist/cache/CacheInvalidation.js.map +1 -1
  7. package/dist/cache/CacheManager.d.ts +3 -2
  8. package/dist/cache/CacheManager.d.ts.map +1 -1
  9. package/dist/cache/CacheManager.js +11 -3
  10. package/dist/cache/CacheManager.js.map +1 -1
  11. package/dist/cache/HttpCacheWrapper.d.ts +7 -6
  12. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
  13. package/dist/cache/HttpCacheWrapper.js +8 -5
  14. package/dist/cache/HttpCacheWrapper.js.map +1 -1
  15. package/dist/cache/index.d.ts +3 -3
  16. package/dist/cache/index.d.ts.map +1 -1
  17. package/dist/cache/index.js +1 -1
  18. package/dist/cache/index.js.map +1 -1
  19. package/dist/client/CachedWordPressClient.d.ts +23 -9
  20. package/dist/client/CachedWordPressClient.d.ts.map +1 -1
  21. package/dist/client/CachedWordPressClient.js +4 -1
  22. package/dist/client/CachedWordPressClient.js.map +1 -1
  23. package/dist/client/MockWordPressClient.d.ts +2 -1
  24. package/dist/client/MockWordPressClient.d.ts.map +1 -1
  25. package/dist/client/MockWordPressClient.js +3 -1
  26. package/dist/client/MockWordPressClient.js.map +1 -1
  27. package/dist/client/api.d.ts +17 -13
  28. package/dist/client/api.d.ts.map +1 -1
  29. package/dist/client/api.js +135 -30
  30. package/dist/client/api.js.map +1 -1
  31. package/dist/client/auth.d.ts.map +1 -1
  32. package/dist/client/auth.js +2 -3
  33. package/dist/client/auth.js.map +1 -1
  34. package/dist/client/managers/AuthenticationManager.d.ts +55 -2
  35. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
  36. package/dist/client/managers/AuthenticationManager.js +269 -71
  37. package/dist/client/managers/AuthenticationManager.js.map +1 -1
  38. package/dist/client/managers/BaseManager.d.ts +3 -3
  39. package/dist/client/managers/BaseManager.d.ts.map +1 -1
  40. package/dist/client/managers/BaseManager.js +11 -5
  41. package/dist/client/managers/BaseManager.js.map +1 -1
  42. package/dist/client/managers/RequestManager.d.ts +2 -2
  43. package/dist/client/managers/RequestManager.d.ts.map +1 -1
  44. package/dist/client/managers/RequestManager.js +25 -12
  45. package/dist/client/managers/RequestManager.js.map +1 -1
  46. package/dist/config/Config.d.ts +155 -0
  47. package/dist/config/Config.d.ts.map +1 -0
  48. package/dist/config/Config.js +215 -0
  49. package/dist/config/Config.js.map +1 -0
  50. package/dist/config/ConfigurationSchema.d.ts +21 -21
  51. package/dist/config/ConfigurationSchema.d.ts.map +1 -1
  52. package/dist/config/ConfigurationSchema.js +19 -2
  53. package/dist/config/ConfigurationSchema.js.map +1 -1
  54. package/dist/config/ServerConfiguration.d.ts +2 -1
  55. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  56. package/dist/config/ServerConfiguration.js +73 -43
  57. package/dist/config/ServerConfiguration.js.map +1 -1
  58. package/dist/docs/DocumentationGenerator.d.ts +9 -8
  59. package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
  60. package/dist/docs/DocumentationGenerator.js +10 -7
  61. package/dist/docs/DocumentationGenerator.js.map +1 -1
  62. package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
  63. package/dist/docs/MarkdownFormatter.js +3 -2
  64. package/dist/docs/MarkdownFormatter.js.map +1 -1
  65. package/dist/dxt-entry.js +15 -14
  66. package/dist/dxt-entry.js.map +1 -1
  67. package/dist/index.d.ts +3 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +37 -21
  70. package/dist/index.js.map +1 -1
  71. package/dist/performance/MetricsCollector.d.ts +13 -7
  72. package/dist/performance/MetricsCollector.d.ts.map +1 -1
  73. package/dist/performance/MetricsCollector.js +69 -27
  74. package/dist/performance/MetricsCollector.js.map +1 -1
  75. package/dist/performance/PerformanceAnalytics.d.ts +8 -2
  76. package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
  77. package/dist/performance/PerformanceAnalytics.js +17 -47
  78. package/dist/performance/PerformanceAnalytics.js.map +1 -1
  79. package/dist/performance/PerformanceMonitor.d.ts +2 -1
  80. package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
  81. package/dist/performance/PerformanceMonitor.js +12 -13
  82. package/dist/performance/PerformanceMonitor.js.map +1 -1
  83. package/dist/performance/index.d.ts +2 -2
  84. package/dist/performance/index.d.ts.map +1 -1
  85. package/dist/security/AISecurityScanner.d.ts +1 -0
  86. package/dist/security/AISecurityScanner.d.ts.map +1 -1
  87. package/dist/security/AISecurityScanner.js +22 -12
  88. package/dist/security/AISecurityScanner.js.map +1 -1
  89. package/dist/security/AutomatedRemediation.d.ts +4 -3
  90. package/dist/security/AutomatedRemediation.d.ts.map +1 -1
  91. package/dist/security/AutomatedRemediation.js +46 -15
  92. package/dist/security/AutomatedRemediation.js.map +1 -1
  93. package/dist/security/InputValidator.d.ts +13 -9
  94. package/dist/security/InputValidator.d.ts.map +1 -1
  95. package/dist/security/InputValidator.js +4 -2
  96. package/dist/security/InputValidator.js.map +1 -1
  97. package/dist/security/SecurityCIPipeline.d.ts +1 -1
  98. package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
  99. package/dist/security/SecurityCIPipeline.js +38 -29
  100. package/dist/security/SecurityCIPipeline.js.map +1 -1
  101. package/dist/security/SecurityConfig.d.ts +3 -3
  102. package/dist/security/SecurityConfig.d.ts.map +1 -1
  103. package/dist/security/SecurityConfig.js +13 -9
  104. package/dist/security/SecurityConfig.js.map +1 -1
  105. package/dist/security/SecurityConfigManager.d.ts +2 -2
  106. package/dist/security/SecurityConfigManager.d.ts.map +1 -1
  107. package/dist/security/SecurityConfigManager.js +20 -15
  108. package/dist/security/SecurityConfigManager.js.map +1 -1
  109. package/dist/security/SecurityMonitoring.d.ts +2 -2
  110. package/dist/security/SecurityMonitoring.d.ts.map +1 -1
  111. package/dist/security/SecurityMonitoring.js +19 -17
  112. package/dist/security/SecurityMonitoring.js.map +1 -1
  113. package/dist/security/SecurityReviewer.d.ts.map +1 -1
  114. package/dist/security/SecurityReviewer.js +10 -7
  115. package/dist/security/SecurityReviewer.js.map +1 -1
  116. package/dist/security/index.d.ts +24 -23
  117. package/dist/security/index.d.ts.map +1 -1
  118. package/dist/security/index.js +52 -23
  119. package/dist/security/index.js.map +1 -1
  120. package/dist/server/ConnectionTester.d.ts +12 -4
  121. package/dist/server/ConnectionTester.d.ts.map +1 -1
  122. package/dist/server/ConnectionTester.js +96 -22
  123. package/dist/server/ConnectionTester.js.map +1 -1
  124. package/dist/server/ToolRegistry.d.ts +2 -2
  125. package/dist/server/ToolRegistry.d.ts.map +1 -1
  126. package/dist/server/ToolRegistry.js +10 -5
  127. package/dist/server/ToolRegistry.js.map +1 -1
  128. package/dist/src/cache/CacheInvalidation.d.ts +120 -0
  129. package/dist/src/cache/CacheInvalidation.d.ts.map +1 -0
  130. package/dist/src/cache/CacheInvalidation.js +355 -0
  131. package/dist/src/cache/CacheInvalidation.js.map +1 -0
  132. package/dist/src/cache/CacheManager.d.ts +149 -0
  133. package/dist/src/cache/CacheManager.d.ts.map +1 -0
  134. package/dist/src/cache/CacheManager.js +326 -0
  135. package/dist/src/cache/CacheManager.js.map +1 -0
  136. package/dist/src/cache/HttpCacheWrapper.d.ts +122 -0
  137. package/dist/src/cache/HttpCacheWrapper.d.ts.map +1 -0
  138. package/dist/src/cache/HttpCacheWrapper.js +283 -0
  139. package/dist/src/cache/HttpCacheWrapper.js.map +1 -0
  140. package/dist/src/cache/index.d.ts +12 -0
  141. package/dist/src/cache/index.d.ts.map +1 -0
  142. package/dist/src/cache/index.js +9 -0
  143. package/dist/src/cache/index.js.map +1 -0
  144. package/dist/src/client/CachedWordPressClient.d.ts +174 -0
  145. package/dist/src/client/CachedWordPressClient.d.ts.map +1 -0
  146. package/dist/src/client/CachedWordPressClient.js +345 -0
  147. package/dist/src/client/CachedWordPressClient.js.map +1 -0
  148. package/dist/src/client/MockWordPressClient.d.ts +56 -0
  149. package/dist/src/client/MockWordPressClient.d.ts.map +1 -0
  150. package/dist/src/client/MockWordPressClient.js +371 -0
  151. package/dist/src/client/MockWordPressClient.js.map +1 -0
  152. package/dist/src/client/api.d.ts +235 -0
  153. package/dist/src/client/api.d.ts.map +1 -0
  154. package/dist/src/client/api.js +896 -0
  155. package/dist/src/client/api.js.map +1 -0
  156. package/dist/src/client/auth.d.ts +121 -0
  157. package/dist/src/client/auth.d.ts.map +1 -0
  158. package/dist/src/client/auth.js +429 -0
  159. package/dist/src/client/auth.js.map +1 -0
  160. package/dist/src/client/managers/AuthenticationManager.d.ts +92 -0
  161. package/dist/src/client/managers/AuthenticationManager.d.ts.map +1 -0
  162. package/dist/src/client/managers/AuthenticationManager.js +369 -0
  163. package/dist/src/client/managers/AuthenticationManager.js.map +1 -0
  164. package/dist/src/client/managers/BaseManager.d.ts +22 -0
  165. package/dist/src/client/managers/BaseManager.d.ts.map +1 -0
  166. package/dist/src/client/managers/BaseManager.js +53 -0
  167. package/dist/src/client/managers/BaseManager.js.map +1 -0
  168. package/dist/src/client/managers/RequestManager.d.ts +47 -0
  169. package/dist/src/client/managers/RequestManager.d.ts.map +1 -0
  170. package/dist/src/client/managers/RequestManager.js +193 -0
  171. package/dist/src/client/managers/RequestManager.js.map +1 -0
  172. package/dist/src/client/managers/index.d.ts +8 -0
  173. package/dist/src/client/managers/index.d.ts.map +1 -0
  174. package/dist/src/client/managers/index.js +8 -0
  175. package/dist/src/client/managers/index.js.map +1 -0
  176. package/dist/src/config/Config.d.ts +155 -0
  177. package/dist/src/config/Config.d.ts.map +1 -0
  178. package/dist/src/config/Config.js +215 -0
  179. package/dist/src/config/Config.js.map +1 -0
  180. package/dist/src/config/ConfigurationSchema.d.ts +281 -0
  181. package/dist/src/config/ConfigurationSchema.d.ts.map +1 -0
  182. package/dist/src/config/ConfigurationSchema.js +205 -0
  183. package/dist/src/config/ConfigurationSchema.js.map +1 -0
  184. package/dist/src/config/ServerConfiguration.d.ts +47 -0
  185. package/dist/src/config/ServerConfiguration.d.ts.map +1 -0
  186. package/dist/src/config/ServerConfiguration.js +255 -0
  187. package/dist/src/config/ServerConfiguration.js.map +1 -0
  188. package/dist/src/docs/DocumentationGenerator.d.ts +185 -0
  189. package/dist/src/docs/DocumentationGenerator.d.ts.map +1 -0
  190. package/dist/src/docs/DocumentationGenerator.js +777 -0
  191. package/dist/src/docs/DocumentationGenerator.js.map +1 -0
  192. package/dist/src/docs/MarkdownFormatter.d.ts +84 -0
  193. package/dist/src/docs/MarkdownFormatter.d.ts.map +1 -0
  194. package/dist/src/docs/MarkdownFormatter.js +458 -0
  195. package/dist/src/docs/MarkdownFormatter.js.map +1 -0
  196. package/dist/src/docs/index.d.ts +8 -0
  197. package/dist/src/docs/index.d.ts.map +1 -0
  198. package/dist/src/docs/index.js +7 -0
  199. package/dist/src/docs/index.js.map +1 -0
  200. package/dist/src/dxt-entry.d.ts +6 -0
  201. package/dist/src/dxt-entry.d.ts.map +1 -0
  202. package/dist/src/dxt-entry.js +39 -0
  203. package/dist/src/dxt-entry.js.map +1 -0
  204. package/dist/src/index.d.ts +18 -0
  205. package/dist/src/index.d.ts.map +1 -0
  206. package/dist/src/index.js +143 -0
  207. package/dist/src/index.js.map +1 -0
  208. package/dist/src/performance/MetricsCollector.d.ts +145 -0
  209. package/dist/src/performance/MetricsCollector.d.ts.map +1 -0
  210. package/dist/src/performance/MetricsCollector.js +368 -0
  211. package/dist/src/performance/MetricsCollector.js.map +1 -0
  212. package/dist/src/performance/PerformanceAnalytics.d.ts +168 -0
  213. package/dist/src/performance/PerformanceAnalytics.d.ts.map +1 -0
  214. package/dist/src/performance/PerformanceAnalytics.js +570 -0
  215. package/dist/src/performance/PerformanceAnalytics.js.map +1 -0
  216. package/dist/src/performance/PerformanceMonitor.d.ts +203 -0
  217. package/dist/src/performance/PerformanceMonitor.d.ts.map +1 -0
  218. package/dist/src/performance/PerformanceMonitor.js +478 -0
  219. package/dist/src/performance/PerformanceMonitor.js.map +1 -0
  220. package/dist/src/performance/index.d.ts +11 -0
  221. package/dist/src/performance/index.d.ts.map +1 -0
  222. package/dist/src/performance/index.js +8 -0
  223. package/dist/src/performance/index.js.map +1 -0
  224. package/dist/src/security/AISecurityScanner.d.ts +176 -0
  225. package/dist/src/security/AISecurityScanner.d.ts.map +1 -0
  226. package/dist/src/security/AISecurityScanner.js +655 -0
  227. package/dist/src/security/AISecurityScanner.js.map +1 -0
  228. package/dist/src/security/AutomatedRemediation.d.ts +146 -0
  229. package/dist/src/security/AutomatedRemediation.d.ts.map +1 -0
  230. package/dist/src/security/AutomatedRemediation.js +566 -0
  231. package/dist/src/security/AutomatedRemediation.js.map +1 -0
  232. package/dist/src/security/InputValidator.d.ts +219 -0
  233. package/dist/src/security/InputValidator.d.ts.map +1 -0
  234. package/dist/src/security/InputValidator.js +295 -0
  235. package/dist/src/security/InputValidator.js.map +1 -0
  236. package/dist/src/security/SecurityCIPipeline.d.ts +213 -0
  237. package/dist/src/security/SecurityCIPipeline.d.ts.map +1 -0
  238. package/dist/src/security/SecurityCIPipeline.js +693 -0
  239. package/dist/src/security/SecurityCIPipeline.js.map +1 -0
  240. package/dist/src/security/SecurityConfig.d.ts +129 -0
  241. package/dist/src/security/SecurityConfig.d.ts.map +1 -0
  242. package/dist/src/security/SecurityConfig.js +266 -0
  243. package/dist/src/security/SecurityConfig.js.map +1 -0
  244. package/dist/src/security/SecurityConfigManager.d.ts +294 -0
  245. package/dist/src/security/SecurityConfigManager.d.ts.map +1 -0
  246. package/dist/src/security/SecurityConfigManager.js +558 -0
  247. package/dist/src/security/SecurityConfigManager.js.map +1 -0
  248. package/dist/src/security/SecurityMonitoring.d.ts +245 -0
  249. package/dist/src/security/SecurityMonitoring.d.ts.map +1 -0
  250. package/dist/src/security/SecurityMonitoring.js +598 -0
  251. package/dist/src/security/SecurityMonitoring.js.map +1 -0
  252. package/dist/src/security/SecurityReviewer.d.ts +168 -0
  253. package/dist/src/security/SecurityReviewer.d.ts.map +1 -0
  254. package/dist/src/security/SecurityReviewer.js +686 -0
  255. package/dist/src/security/SecurityReviewer.js.map +1 -0
  256. package/dist/src/security/index.d.ts +183 -0
  257. package/dist/src/security/index.d.ts.map +1 -0
  258. package/dist/src/security/index.js +218 -0
  259. package/dist/src/security/index.js.map +1 -0
  260. package/dist/src/server/ConnectionTester.d.ts +32 -0
  261. package/dist/src/server/ConnectionTester.d.ts.map +1 -0
  262. package/dist/src/server/ConnectionTester.js +135 -0
  263. package/dist/src/server/ConnectionTester.js.map +1 -0
  264. package/dist/src/server/ToolRegistry.d.ts +50 -0
  265. package/dist/src/server/ToolRegistry.d.ts.map +1 -0
  266. package/dist/src/server/ToolRegistry.js +219 -0
  267. package/dist/src/server/ToolRegistry.js.map +1 -0
  268. package/dist/src/server.d.ts +7 -0
  269. package/dist/src/server.d.ts.map +1 -0
  270. package/dist/src/server.js +7 -0
  271. package/dist/src/server.js.map +1 -0
  272. package/dist/src/tools/BaseToolManager.d.ts +62 -0
  273. package/dist/src/tools/BaseToolManager.d.ts.map +1 -0
  274. package/dist/src/tools/BaseToolManager.js +195 -0
  275. package/dist/src/tools/BaseToolManager.js.map +1 -0
  276. package/dist/src/tools/auth.d.ts +50 -0
  277. package/dist/src/tools/auth.d.ts.map +1 -0
  278. package/dist/src/tools/auth.js +133 -0
  279. package/dist/src/tools/auth.js.map +1 -0
  280. package/dist/src/tools/cache.d.ts +260 -0
  281. package/dist/src/tools/cache.d.ts.map +1 -0
  282. package/dist/src/tools/cache.js +232 -0
  283. package/dist/src/tools/cache.js.map +1 -0
  284. package/dist/src/tools/comments.d.ts +33 -0
  285. package/dist/src/tools/comments.d.ts.map +1 -0
  286. package/dist/src/tools/comments.js +235 -0
  287. package/dist/src/tools/comments.js.map +1 -0
  288. package/dist/src/tools/index.d.ts +11 -0
  289. package/dist/src/tools/index.d.ts.map +1 -0
  290. package/dist/src/tools/index.js +11 -0
  291. package/dist/src/tools/index.js.map +1 -0
  292. package/dist/src/tools/media.d.ts +70 -0
  293. package/dist/src/tools/media.d.ts.map +1 -0
  294. package/dist/src/tools/media.js +248 -0
  295. package/dist/src/tools/media.js.map +1 -0
  296. package/dist/src/tools/pages.d.ts +32 -0
  297. package/dist/src/tools/pages.d.ts.map +1 -0
  298. package/dist/src/tools/pages.js +215 -0
  299. package/dist/src/tools/pages.js.map +1 -0
  300. package/dist/src/tools/performance.d.ts +73 -0
  301. package/dist/src/tools/performance.d.ts.map +1 -0
  302. package/dist/src/tools/performance.js +922 -0
  303. package/dist/src/tools/performance.js.map +1 -0
  304. package/dist/src/tools/posts/PostHandlers.d.ts +46 -0
  305. package/dist/src/tools/posts/PostHandlers.d.ts.map +1 -0
  306. package/dist/src/tools/posts/PostHandlers.js +400 -0
  307. package/dist/src/tools/posts/PostHandlers.js.map +1 -0
  308. package/dist/src/tools/posts/PostToolDefinitions.d.ts +37 -0
  309. package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +1 -0
  310. package/dist/src/tools/posts/PostToolDefinitions.js +236 -0
  311. package/dist/src/tools/posts/PostToolDefinitions.js.map +1 -0
  312. package/dist/src/tools/posts/index.d.ts +138 -0
  313. package/dist/src/tools/posts/index.d.ts.map +1 -0
  314. package/dist/src/tools/posts/index.js +163 -0
  315. package/dist/src/tools/posts/index.js.map +1 -0
  316. package/dist/src/tools/posts.d.ts +15 -0
  317. package/dist/src/tools/posts.d.ts.map +1 -0
  318. package/dist/src/tools/posts.js +16 -0
  319. package/dist/src/tools/posts.js.map +1 -0
  320. package/dist/src/tools/site.d.ts +32 -0
  321. package/dist/src/tools/site.d.ts.map +1 -0
  322. package/dist/src/tools/site.js +234 -0
  323. package/dist/src/tools/site.js.map +1 -0
  324. package/dist/src/tools/taxonomies.d.ts +36 -0
  325. package/dist/src/tools/taxonomies.d.ts.map +1 -0
  326. package/dist/src/tools/taxonomies.js +286 -0
  327. package/dist/src/tools/taxonomies.js.map +1 -0
  328. package/dist/src/tools/users.d.ts +33 -0
  329. package/dist/src/tools/users.d.ts.map +1 -0
  330. package/dist/src/tools/users.js +308 -0
  331. package/dist/src/tools/users.js.map +1 -0
  332. package/dist/src/types/client.d.ts +223 -0
  333. package/dist/src/types/client.d.ts.map +1 -0
  334. package/dist/src/types/client.js +97 -0
  335. package/dist/src/types/client.js.map +1 -0
  336. package/dist/src/types/enhanced.d.ts +237 -0
  337. package/dist/src/types/enhanced.d.ts.map +1 -0
  338. package/dist/src/types/enhanced.js +49 -0
  339. package/dist/src/types/enhanced.js.map +1 -0
  340. package/dist/src/types/index.d.ts +160 -0
  341. package/dist/src/types/index.d.ts.map +1 -0
  342. package/dist/src/types/index.js +14 -0
  343. package/dist/src/types/index.js.map +1 -0
  344. package/dist/src/types/mcp.d.ts +178 -0
  345. package/dist/src/types/mcp.d.ts.map +1 -0
  346. package/dist/src/types/mcp.js +7 -0
  347. package/dist/src/types/mcp.js.map +1 -0
  348. package/dist/src/types/requests.d.ts +322 -0
  349. package/dist/src/types/requests.d.ts.map +1 -0
  350. package/dist/src/types/requests.js +8 -0
  351. package/dist/src/types/requests.js.map +1 -0
  352. package/dist/src/types/tools.d.ts +506 -0
  353. package/dist/src/types/tools.d.ts.map +1 -0
  354. package/dist/src/types/tools.js +8 -0
  355. package/dist/src/types/tools.js.map +1 -0
  356. package/dist/src/types/wordpress.d.ts +471 -0
  357. package/dist/src/types/wordpress.d.ts.map +1 -0
  358. package/dist/src/types/wordpress.js +14 -0
  359. package/dist/src/types/wordpress.js.map +1 -0
  360. package/dist/src/utils/debug.d.ts +71 -0
  361. package/dist/src/utils/debug.d.ts.map +1 -0
  362. package/dist/src/utils/debug.js +235 -0
  363. package/dist/src/utils/debug.js.map +1 -0
  364. package/dist/src/utils/enhancedError.d.ts +61 -0
  365. package/dist/src/utils/enhancedError.d.ts.map +1 -0
  366. package/dist/src/utils/enhancedError.js +221 -0
  367. package/dist/src/utils/enhancedError.js.map +1 -0
  368. package/dist/src/utils/error.d.ts +17 -0
  369. package/dist/src/utils/error.d.ts.map +1 -0
  370. package/dist/src/utils/error.js +108 -0
  371. package/dist/src/utils/error.js.map +1 -0
  372. package/dist/src/utils/logger.d.ts +106 -0
  373. package/dist/src/utils/logger.d.ts.map +1 -0
  374. package/dist/src/utils/logger.js +280 -0
  375. package/dist/src/utils/logger.js.map +1 -0
  376. package/dist/src/utils/streaming.d.ts +104 -0
  377. package/dist/src/utils/streaming.d.ts.map +1 -0
  378. package/dist/src/utils/streaming.js +331 -0
  379. package/dist/src/utils/streaming.js.map +1 -0
  380. package/dist/src/utils/toolWrapper.d.ts +42 -0
  381. package/dist/src/utils/toolWrapper.d.ts.map +1 -0
  382. package/dist/src/utils/toolWrapper.js +101 -0
  383. package/dist/src/utils/toolWrapper.js.map +1 -0
  384. package/dist/src/utils/validation/core.d.ts +21 -0
  385. package/dist/src/utils/validation/core.d.ts.map +1 -0
  386. package/dist/src/utils/validation/core.js +71 -0
  387. package/dist/src/utils/validation/core.js.map +1 -0
  388. package/dist/src/utils/validation/index.d.ts +25 -0
  389. package/dist/src/utils/validation/index.d.ts.map +1 -0
  390. package/dist/src/utils/validation/index.js +29 -0
  391. package/dist/src/utils/validation/index.js.map +1 -0
  392. package/dist/src/utils/validation/network.d.ts +19 -0
  393. package/dist/src/utils/validation/network.d.ts.map +1 -0
  394. package/dist/src/utils/validation/network.js +93 -0
  395. package/dist/src/utils/validation/network.js.map +1 -0
  396. package/dist/src/utils/validation/rateLimit.d.ts +21 -0
  397. package/dist/src/utils/validation/rateLimit.d.ts.map +1 -0
  398. package/dist/src/utils/validation/rateLimit.js +43 -0
  399. package/dist/src/utils/validation/rateLimit.js.map +1 -0
  400. package/dist/src/utils/validation/security.d.ts +29 -0
  401. package/dist/src/utils/validation/security.d.ts.map +1 -0
  402. package/dist/src/utils/validation/security.js +327 -0
  403. package/dist/src/utils/validation/security.js.map +1 -0
  404. package/dist/src/utils/validation/wordpress.d.ts +31 -0
  405. package/dist/src/utils/validation/wordpress.d.ts.map +1 -0
  406. package/dist/src/utils/validation/wordpress.js +146 -0
  407. package/dist/src/utils/validation/wordpress.js.map +1 -0
  408. package/dist/src/utils/validation.d.ts +15 -0
  409. package/dist/src/utils/validation.d.ts.map +1 -0
  410. package/dist/src/utils/validation.js +27 -0
  411. package/dist/src/utils/validation.js.map +1 -0
  412. package/dist/tests/vitest.setup.d.ts +6 -0
  413. package/dist/tests/vitest.setup.d.ts.map +1 -0
  414. package/dist/tests/vitest.setup.js +39 -0
  415. package/dist/tests/vitest.setup.js.map +1 -0
  416. package/dist/tools/BaseToolManager.d.ts +47 -11
  417. package/dist/tools/BaseToolManager.d.ts.map +1 -1
  418. package/dist/tools/BaseToolManager.js +168 -29
  419. package/dist/tools/BaseToolManager.js.map +1 -1
  420. package/dist/tools/auth.d.ts +16 -10
  421. package/dist/tools/auth.d.ts.map +1 -1
  422. package/dist/tools/auth.js +3 -2
  423. package/dist/tools/auth.js.map +1 -1
  424. package/dist/tools/cache.d.ts +30 -30
  425. package/dist/tools/cache.d.ts.map +1 -1
  426. package/dist/tools/cache.js +1 -6
  427. package/dist/tools/cache.js.map +1 -1
  428. package/dist/tools/comments.d.ts +20 -20
  429. package/dist/tools/comments.d.ts.map +1 -1
  430. package/dist/tools/comments.js +16 -9
  431. package/dist/tools/comments.js.map +1 -1
  432. package/dist/tools/media.d.ts +18 -16
  433. package/dist/tools/media.d.ts.map +1 -1
  434. package/dist/tools/media.js +16 -15
  435. package/dist/tools/media.js.map +1 -1
  436. package/dist/tools/pages.d.ts +19 -17
  437. package/dist/tools/pages.d.ts.map +1 -1
  438. package/dist/tools/pages.js +16 -12
  439. package/dist/tools/pages.js.map +1 -1
  440. package/dist/tools/performance.d.ts +11 -1
  441. package/dist/tools/performance.d.ts.map +1 -1
  442. package/dist/tools/performance.js +67 -34
  443. package/dist/tools/performance.js.map +1 -1
  444. package/dist/tools/posts/PostHandlers.d.ts +46 -0
  445. package/dist/tools/posts/PostHandlers.d.ts.map +1 -0
  446. package/dist/tools/posts/PostHandlers.js +400 -0
  447. package/dist/tools/posts/PostHandlers.js.map +1 -0
  448. package/dist/tools/posts/PostToolDefinitions.d.ts +37 -0
  449. package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -0
  450. package/dist/tools/posts/PostToolDefinitions.js +236 -0
  451. package/dist/tools/posts/PostToolDefinitions.js.map +1 -0
  452. package/dist/tools/posts/index.d.ts +138 -0
  453. package/dist/tools/posts/index.d.ts.map +1 -0
  454. package/dist/tools/posts/index.js +163 -0
  455. package/dist/tools/posts/index.js.map +1 -0
  456. package/dist/tools/posts.d.ts +10 -246
  457. package/dist/tools/posts.d.ts.map +1 -1
  458. package/dist/tools/posts.js +11 -723
  459. package/dist/tools/posts.js.map +1 -1
  460. package/dist/tools/site.d.ts +19 -18
  461. package/dist/tools/site.d.ts.map +1 -1
  462. package/dist/tools/site.js +14 -10
  463. package/dist/tools/site.js.map +1 -1
  464. package/dist/tools/taxonomies.d.ts +23 -24
  465. package/dist/tools/taxonomies.d.ts.map +1 -1
  466. package/dist/tools/taxonomies.js +24 -18
  467. package/dist/tools/taxonomies.js.map +1 -1
  468. package/dist/tools/users.d.ts +20 -15
  469. package/dist/tools/users.d.ts.map +1 -1
  470. package/dist/tools/users.js +12 -8
  471. package/dist/tools/users.js.map +1 -1
  472. package/dist/types/client.d.ts +48 -41
  473. package/dist/types/client.d.ts.map +1 -1
  474. package/dist/types/client.js +30 -5
  475. package/dist/types/client.js.map +1 -1
  476. package/dist/types/enhanced.d.ts +237 -0
  477. package/dist/types/enhanced.d.ts.map +1 -0
  478. package/dist/types/enhanced.js +49 -0
  479. package/dist/types/enhanced.js.map +1 -0
  480. package/dist/types/index.d.ts +15 -12
  481. package/dist/types/index.d.ts.map +1 -1
  482. package/dist/types/index.js +2 -0
  483. package/dist/types/index.js.map +1 -1
  484. package/dist/types/mcp.d.ts +12 -12
  485. package/dist/types/mcp.d.ts.map +1 -1
  486. package/dist/types/requests.d.ts +322 -0
  487. package/dist/types/requests.d.ts.map +1 -0
  488. package/dist/types/requests.js +8 -0
  489. package/dist/types/requests.js.map +1 -0
  490. package/dist/types/tools.d.ts +506 -0
  491. package/dist/types/tools.d.ts.map +1 -0
  492. package/dist/types/tools.js +8 -0
  493. package/dist/types/tools.js.map +1 -0
  494. package/dist/types/wordpress.d.ts +43 -15
  495. package/dist/types/wordpress.d.ts.map +1 -1
  496. package/dist/types/wordpress.js +8 -1
  497. package/dist/types/wordpress.js.map +1 -1
  498. package/dist/utils/debug.d.ts +19 -11
  499. package/dist/utils/debug.d.ts.map +1 -1
  500. package/dist/utils/debug.js +46 -10
  501. package/dist/utils/debug.js.map +1 -1
  502. package/dist/utils/enhancedError.d.ts +8 -8
  503. package/dist/utils/enhancedError.d.ts.map +1 -1
  504. package/dist/utils/enhancedError.js.map +1 -1
  505. package/dist/utils/error.d.ts +2 -4
  506. package/dist/utils/error.d.ts.map +1 -1
  507. package/dist/utils/error.js +42 -5
  508. package/dist/utils/error.js.map +1 -1
  509. package/dist/utils/logger.d.ts +106 -0
  510. package/dist/utils/logger.d.ts.map +1 -0
  511. package/dist/utils/logger.js +280 -0
  512. package/dist/utils/logger.js.map +1 -0
  513. package/dist/utils/streaming.d.ts +9 -9
  514. package/dist/utils/streaming.d.ts.map +1 -1
  515. package/dist/utils/streaming.js +71 -52
  516. package/dist/utils/streaming.js.map +1 -1
  517. package/dist/utils/toolWrapper.d.ts +9 -7
  518. package/dist/utils/toolWrapper.d.ts.map +1 -1
  519. package/dist/utils/toolWrapper.js.map +1 -1
  520. package/dist/utils/validation/core.d.ts +21 -0
  521. package/dist/utils/validation/core.d.ts.map +1 -0
  522. package/dist/utils/validation/core.js +71 -0
  523. package/dist/utils/validation/core.js.map +1 -0
  524. package/dist/utils/validation/index.d.ts +25 -0
  525. package/dist/utils/validation/index.d.ts.map +1 -0
  526. package/dist/utils/validation/index.js +29 -0
  527. package/dist/utils/validation/index.js.map +1 -0
  528. package/dist/utils/validation/network.d.ts +19 -0
  529. package/dist/utils/validation/network.d.ts.map +1 -0
  530. package/dist/utils/validation/network.js +93 -0
  531. package/dist/utils/validation/network.js.map +1 -0
  532. package/dist/utils/validation/rateLimit.d.ts +21 -0
  533. package/dist/utils/validation/rateLimit.d.ts.map +1 -0
  534. package/dist/utils/validation/rateLimit.js +43 -0
  535. package/dist/utils/validation/rateLimit.js.map +1 -0
  536. package/dist/utils/validation/security.d.ts +29 -0
  537. package/dist/utils/validation/security.d.ts.map +1 -0
  538. package/dist/utils/validation/security.js +327 -0
  539. package/dist/utils/validation/security.js.map +1 -0
  540. package/dist/utils/validation/wordpress.d.ts +31 -0
  541. package/dist/utils/validation/wordpress.d.ts.map +1 -0
  542. package/dist/utils/validation/wordpress.js +146 -0
  543. package/dist/utils/validation/wordpress.js.map +1 -0
  544. package/dist/utils/validation.d.ts +13 -82
  545. package/dist/utils/validation.d.ts.map +1 -1
  546. package/dist/utils/validation.js +25 -343
  547. package/dist/utils/validation.js.map +1 -1
  548. package/docs/BADGE_UPDATES.md +132 -0
  549. package/docs/CI_CD_IMPROVEMENTS.md +191 -0
  550. package/docs/INCREMENTAL_COVERAGE.md +183 -0
  551. package/docs/INSTALLATION.md +4 -2
  552. package/docs/TROUBLESHOOTING.md +2 -1
  553. package/docs/api/README.md +3 -1
  554. package/docs/api/openapi.json +5 -1
  555. package/docs/api/summary.json +1 -1
  556. package/docs/api/tools/wp_create_post.md +12 -14
  557. package/docs/developer/TESTING.md +24 -19
  558. package/docs/examples/claude-desktop-config.md +1 -1
  559. package/docs/examples/docker-production.md +100 -93
  560. package/docs/examples/multi-site-setup.md +5 -4
  561. package/docs/examples/single-site-setup.md +3 -4
  562. package/docs/examples/use-case-workflows.md +4 -5
  563. package/docs/integrations/claude-desktop.md +39 -34
  564. package/docs/integrations/cline.md +4 -4
  565. package/docs/integrations/vs-code.md +9 -8
  566. package/docs/user-guides/DXT_INSTALLATION.md +2 -1
  567. package/docs/user-guides/SMITHERY_SETUP.md +10 -10
  568. package/package.json +57 -39
  569. package/src/cache/CacheInvalidation.ts +12 -5
  570. package/src/cache/CacheManager.ts +18 -15
  571. package/src/cache/HttpCacheWrapper.ts +30 -59
  572. package/src/cache/__tests__/HttpCacheWrapper.test.ts +6 -5
  573. package/src/cache/index.ts +3 -14
  574. package/src/client/CachedWordPressClient.ts +32 -30
  575. package/src/client/MockWordPressClient.ts +4 -2
  576. package/src/client/api.ts +186 -64
  577. package/src/client/auth.ts +15 -40
  578. package/src/client/managers/AuthenticationManager.ts +337 -77
  579. package/src/client/managers/BaseManager.ts +18 -30
  580. package/src/client/managers/RequestManager.ts +39 -44
  581. package/src/config/Config.ts +308 -0
  582. package/src/config/ConfigurationSchema.ts +23 -2
  583. package/src/config/ServerConfiguration.ts +73 -49
  584. package/src/docs/DocumentationGenerator.ts +50 -39
  585. package/src/docs/MarkdownFormatter.ts +19 -29
  586. package/src/dxt-entry.cjs +26 -16
  587. package/src/dxt-entry.ts +17 -27
  588. package/src/index.ts +42 -28
  589. package/src/performance/MetricsCollector.ts +108 -86
  590. package/src/performance/PerformanceAnalytics.ts +69 -164
  591. package/src/performance/PerformanceMonitor.ts +32 -47
  592. package/src/performance/index.ts +2 -10
  593. package/src/security/AISecurityScanner.ts +22 -12
  594. package/src/security/AutomatedRemediation.ts +49 -18
  595. package/src/security/InputValidator.ts +9 -6
  596. package/src/security/SecurityCIPipeline.ts +53 -37
  597. package/src/security/SecurityConfig.ts +22 -22
  598. package/src/security/SecurityConfigManager.ts +23 -19
  599. package/src/security/SecurityMonitoring.ts +24 -21
  600. package/src/security/SecurityReviewer.ts +10 -7
  601. package/src/security/index.ts +64 -29
  602. package/src/server/ConnectionTester.ts +120 -31
  603. package/src/server/ToolRegistry.ts +31 -21
  604. package/src/tools/BaseToolManager.ts +286 -33
  605. package/src/tools/auth.ts +20 -8
  606. package/src/tools/cache.ts +5 -15
  607. package/src/tools/comments.ts +34 -48
  608. package/src/tools/media.ts +41 -53
  609. package/src/tools/pages.ts +32 -54
  610. package/src/tools/performance.ts +141 -176
  611. package/src/tools/posts/PostHandlers.ts +474 -0
  612. package/src/tools/posts/PostToolDefinitions.ts +250 -0
  613. package/src/tools/posts/index.ts +192 -0
  614. package/src/tools/posts.ts +24 -780
  615. package/src/tools/site.ts +34 -19
  616. package/src/tools/taxonomies.ts +41 -57
  617. package/src/tools/users.ts +28 -16
  618. package/src/types/client.ts +114 -138
  619. package/src/types/enhanced.ts +318 -0
  620. package/src/types/index.ts +51 -30
  621. package/src/types/mcp.ts +20 -42
  622. package/src/types/requests.ts +378 -0
  623. package/src/types/tools.ts +608 -0
  624. package/src/types/wordpress.ts +56 -34
  625. package/src/utils/debug.ts +77 -59
  626. package/src/utils/enhancedError.ts +8 -8
  627. package/src/utils/error.ts +53 -31
  628. package/src/utils/logger.ts +351 -0
  629. package/src/utils/streaming.ts +86 -68
  630. package/src/utils/toolWrapper.ts +10 -12
  631. package/src/utils/validation/core.ts +108 -0
  632. package/src/utils/validation/index.ts +36 -0
  633. package/src/utils/validation/network.ts +132 -0
  634. package/src/utils/validation/rateLimit.ts +54 -0
  635. package/src/utils/validation/security.ts +361 -0
  636. package/src/utils/validation/wordpress.ts +180 -0
  637. package/src/utils/validation.ts +47 -470
  638. package/dist/cache/__tests__/CacheInvalidation.test.d.ts +0 -5
  639. package/dist/cache/__tests__/CacheInvalidation.test.d.ts.map +0 -1
  640. package/dist/cache/__tests__/CacheInvalidation.test.js +0 -238
  641. package/dist/cache/__tests__/CacheInvalidation.test.js.map +0 -1
  642. package/dist/cache/__tests__/CacheManager.test.d.ts +0 -5
  643. package/dist/cache/__tests__/CacheManager.test.d.ts.map +0 -1
  644. package/dist/cache/__tests__/CacheManager.test.js +0 -233
  645. package/dist/cache/__tests__/CacheManager.test.js.map +0 -1
  646. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts +0 -5
  647. package/dist/cache/__tests__/CachedWordPressClient.test.d.ts.map +0 -1
  648. package/dist/cache/__tests__/CachedWordPressClient.test.js +0 -231
  649. package/dist/cache/__tests__/CachedWordPressClient.test.js.map +0 -1
  650. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts +0 -5
  651. package/dist/cache/__tests__/HttpCacheWrapper.test.d.ts.map +0 -1
  652. package/dist/cache/__tests__/HttpCacheWrapper.test.js +0 -299
  653. package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +0 -1
@@ -3,122 +3,203 @@
3
3
  * Handles all authentication methods and token management
4
4
  */
5
5
 
6
- import type { AuthConfig, AuthMethod } from "../../types/client.js";
6
+ import type {
7
+ AuthConfig,
8
+ WordPressClientConfig,
9
+ AuthStatus,
10
+ AppPasswordCredentials,
11
+ JwtCredentials,
12
+ BasicCredentials,
13
+ ApiKeyCredentials,
14
+ } from "../../types/client.js";
7
15
  import { AuthenticationError } from "../../types/client.js";
16
+ import { AUTH_METHODS, type AuthMethod } from "../../types/wordpress.js";
17
+ import { config } from "../../config/Config.js";
8
18
  import { BaseManager } from "./BaseManager.js";
9
19
  import { debug } from "../../utils/debug.js";
10
20
 
21
+ interface AuthManagerConfig extends WordPressClientConfig {
22
+ siteUrl: string; // Required based on constructor validation
23
+ authMethod: AuthMethod; // Use proper AuthMethod type
24
+ username?: string;
25
+ appPassword?: string;
26
+ password?: string;
27
+ apiKey?: string;
28
+ jwtSecret?: string;
29
+ jwtToken?: string;
30
+ tokenExpiry?: number;
31
+ }
32
+
11
33
  export class AuthenticationManager extends BaseManager {
12
34
  private jwtToken: string | null = null;
13
35
  private authenticated: boolean = false;
36
+ private authConfig: AuthManagerConfig;
37
+ public config: AuthManagerConfig; // Expose for test compatibility
38
+
39
+ constructor(config: AuthManagerConfig) {
40
+ // Validate required config fields
41
+ if (!config.siteUrl || config.siteUrl.trim() === "") {
42
+ throw new AuthenticationError("Site URL is required", AUTH_METHODS.APP_PASSWORD);
43
+ }
44
+
45
+ // Validate site URL format
46
+ try {
47
+ new URL(config.siteUrl);
48
+ } catch {
49
+ throw new AuthenticationError("Invalid site URL", AUTH_METHODS.APP_PASSWORD);
50
+ }
51
+
52
+ // Validate auth method using centralized constants
53
+ const validMethods = Object.values(AUTH_METHODS);
54
+ if (config.authMethod && !validMethods.includes(config.authMethod)) {
55
+ throw new AuthenticationError("Invalid authentication method", config.authMethod);
56
+ }
57
+
58
+ // Transform config to match expected format
59
+ const transformedConfig: WordPressClientConfig = {
60
+ baseUrl: config.siteUrl,
61
+ timeout: config.timeout || 30000,
62
+ auth: {
63
+ method: config.authMethod || AUTH_METHODS.APP_PASSWORD,
64
+ ...(config.username && { username: config.username }),
65
+ ...(config.appPassword && { appPassword: config.appPassword }),
66
+ ...(config.password && { password: config.password }),
67
+ ...(config.apiKey && { apiKey: config.apiKey }),
68
+ ...(config.jwtSecret && { secret: config.jwtSecret }),
69
+ },
70
+ };
71
+
72
+ super(transformedConfig);
73
+
74
+ // Store private config
75
+ this.authConfig = config;
76
+ // Expose config for test compatibility
77
+ this.config = config;
78
+ }
79
+
80
+ /**
81
+ * Get config for testing purposes
82
+ */
83
+ getConfig(): AuthManagerConfig {
84
+ return { ...this.authConfig };
85
+ }
14
86
 
15
87
  /**
16
88
  * Get authentication from environment variables
17
89
  */
18
90
  static getAuthFromEnv(): AuthConfig {
19
- const method: AuthMethod = (process.env.WORDPRESS_AUTH_METHOD as AuthMethod) || "app-password";
91
+ const cfg = config();
92
+ const wp = cfg.wordpress;
93
+ const method: AuthMethod = (wp.authMethod as AuthMethod) || AUTH_METHODS.APP_PASSWORD;
20
94
 
21
95
  switch (method) {
22
- case "app-password":
96
+ case AUTH_METHODS.APP_PASSWORD:
23
97
  return {
24
- method: "app-password",
25
- username: process.env.WORDPRESS_USERNAME || "",
26
- appPassword: process.env.WORDPRESS_APP_PASSWORD || "",
98
+ method: AUTH_METHODS.APP_PASSWORD,
99
+ username: wp.username || "",
100
+ appPassword: wp.appPassword || "",
27
101
  };
28
102
 
29
- case "jwt":
103
+ case AUTH_METHODS.JWT:
30
104
  return {
31
- method: "jwt",
32
- username: process.env.WORDPRESS_USERNAME || "",
33
- password: process.env.WORDPRESS_JWT_PASSWORD || process.env.WORDPRESS_PASSWORD || "",
34
- secret: process.env.WORDPRESS_JWT_SECRET || "",
105
+ method: AUTH_METHODS.JWT,
106
+ username: wp.username || "",
107
+ password: wp.jwtPassword || wp.password || "",
108
+ secret: wp.jwtSecret || "",
35
109
  };
36
110
 
37
- case "basic":
111
+ case AUTH_METHODS.BASIC:
38
112
  return {
39
- method: "basic",
40
- username: process.env.WORDPRESS_USERNAME || "",
41
- password: process.env.WORDPRESS_PASSWORD || "",
113
+ method: AUTH_METHODS.BASIC,
114
+ username: wp.username || "",
115
+ password: wp.password || "",
42
116
  };
43
117
 
44
- case "api-key":
118
+ case AUTH_METHODS.API_KEY:
45
119
  return {
46
- method: "api-key",
47
- apiKey: process.env.WORDPRESS_API_KEY || "",
120
+ method: AUTH_METHODS.API_KEY,
121
+ apiKey: wp.apiKey || "",
48
122
  };
49
123
 
50
124
  default:
51
- throw new AuthenticationError(`Unsupported authentication method: ${method}`, method);
125
+ throw new AuthenticationError(`Unsupported authentication method: ${method}`, method as AuthMethod);
52
126
  }
53
127
  }
54
128
 
55
129
  /**
56
130
  * Get authentication headers for requests
131
+ *
132
+ * Note: This method is synchronous by design for test compatibility and simplicity.
133
+ * JWT token refresh should be handled externally before calling this method,
134
+ * as automatic refresh would require RequestManager integration.
57
135
  */
58
- async getAuthHeaders(): Promise<Record<string, string>> {
59
- const auth = this.config.auth;
60
-
61
- if (!auth) {
62
- // In test environments, return empty headers instead of throwing
63
- if (
64
- process.env.NODE_ENV === "test" ||
65
- process.env.CI === "true" ||
66
- (globalThis as any).__EXECUTION_CONTEXT__ === "jest"
67
- ) {
68
- debug.log("Warning: No authentication configuration in test environment, returning empty headers");
69
- return {};
70
- }
71
- throw new AuthenticationError("Authentication configuration is required", "app-password");
72
- }
136
+ getAuthHeaders(): Record<string, string> {
137
+ const method = this.authConfig.authMethod || AUTH_METHODS.APP_PASSWORD;
73
138
 
74
- switch (auth.method) {
75
- case "app-password":
76
- if (!auth.username || !auth.appPassword) {
77
- throw new AuthenticationError("Username and app password are required", auth.method);
139
+ switch (method) {
140
+ case AUTH_METHODS.APP_PASSWORD:
141
+ if (!this.authConfig.username || !this.authConfig.appPassword) {
142
+ throw new AuthenticationError("Username and app password are required", method);
78
143
  }
79
144
 
80
- const credentials = Buffer.from(`${auth.username}:${auth.appPassword}`).toString("base64");
145
+ const credentials = Buffer.from(`${this.authConfig.username}:${this.authConfig.appPassword}`).toString(
146
+ "base64",
147
+ );
81
148
  return { Authorization: `Basic ${credentials}` };
82
149
 
83
- case "jwt":
84
- if (!this.jwtToken) {
85
- await this.authenticateJWT();
150
+ case AUTH_METHODS.JWT:
151
+ if (!this.authConfig.jwtToken) {
152
+ throw new AuthenticationError("JWT token is required", method);
86
153
  }
87
- return { Authorization: `Bearer ${this.jwtToken}` };
154
+ return { Authorization: `Bearer ${this.authConfig.jwtToken}` };
88
155
 
89
- case "basic":
90
- if (!auth.username || !auth.password) {
91
- throw new AuthenticationError("Username and password are required", auth.method);
156
+ case AUTH_METHODS.BASIC:
157
+ if (!this.authConfig.username || !this.authConfig.password) {
158
+ throw new AuthenticationError("Username and password are required", method);
92
159
  }
93
160
 
94
- const basicCredentials = Buffer.from(`${auth.username}:${auth.password}`).toString("base64");
161
+ const basicCredentials = Buffer.from(`${this.authConfig.username}:${this.authConfig.password}`).toString(
162
+ "base64",
163
+ );
95
164
  return { Authorization: `Basic ${basicCredentials}` };
96
165
 
97
- case "api-key":
98
- if (!auth.apiKey) {
99
- throw new AuthenticationError("API key is required", auth.method);
166
+ case AUTH_METHODS.API_KEY:
167
+ if (!this.authConfig.apiKey) {
168
+ throw new AuthenticationError("API key is required", method);
100
169
  }
101
- return { "X-API-Key": auth.apiKey };
170
+ return { "X-API-Key": this.authConfig.apiKey };
171
+
172
+ case AUTH_METHODS.COOKIE:
173
+ // Cookie authentication typically handled by browser
174
+ return {};
102
175
 
103
176
  default:
104
- throw new AuthenticationError(`Unsupported authentication method: ${auth.method}`, auth.method);
177
+ throw new AuthenticationError(`Unsupported authentication method: ${method}`, method as AuthMethod);
105
178
  }
106
179
  }
107
180
 
108
181
  /**
109
182
  * Authenticate using JWT
183
+ *
184
+ * Note: This method is not fully implemented as it requires integration with
185
+ * the RequestManager to make HTTP requests to the WordPress JWT endpoint.
186
+ * JWT authentication requires the JWT Authentication for WP-API plugin.
187
+ *
188
+ * @throws {AuthenticationError} - JWT auth requires external dependency injection
110
189
  */
111
190
  private async authenticateJWT(): Promise<void> {
112
- const auth = this.config.auth;
113
-
114
- if (auth.method !== "jwt" || !auth.username || !auth.password) {
115
- throw new AuthenticationError("JWT authentication requires username and password", "jwt");
191
+ if (this.authConfig.authMethod !== AUTH_METHODS.JWT || !this.authConfig.username || !this.authConfig.password) {
192
+ throw new AuthenticationError("JWT authentication requires username and password", AUTH_METHODS.JWT);
116
193
  }
117
194
 
118
195
  try {
119
- // This would need the RequestManager instance to make the request
120
- // For now, we'll throw an error indicating this needs to be implemented
121
- throw new AuthenticationError("JWT authentication requires RequestManager integration", "jwt");
196
+ // TODO: Implement JWT authentication with RequestManager integration
197
+ // This would require making a POST request to /wp-json/jwt-auth/v1/token
198
+ // with username and password to obtain a JWT token
199
+ throw new AuthenticationError(
200
+ "JWT authentication requires RequestManager integration - not yet implemented",
201
+ AUTH_METHODS.JWT,
202
+ );
122
203
  } catch (error) {
123
204
  this.handleError(error, "JWT authentication");
124
205
  }
@@ -131,7 +212,7 @@ export class AuthenticationManager extends BaseManager {
131
212
  try {
132
213
  const _headers = await this.getAuthHeaders();
133
214
  debug.log("Authentication headers prepared", {
134
- method: this.config.auth.method,
215
+ method: this.authConfig.authMethod,
135
216
  });
136
217
 
137
218
  // This would need the RequestManager to actually test the connection
@@ -164,42 +245,221 @@ export class AuthenticationManager extends BaseManager {
164
245
  * Validate authentication configuration
165
246
  */
166
247
  validateAuthConfig(): void {
167
- const auth = this.config.auth;
248
+ const method = this.authConfig.authMethod;
168
249
 
169
- if (!auth.method) {
170
- throw new AuthenticationError("Authentication method is required", "app-password");
250
+ if (!method) {
251
+ throw new AuthenticationError("Authentication method is required", AUTH_METHODS.APP_PASSWORD);
171
252
  }
172
253
 
173
- switch (auth.method) {
174
- case "app-password":
175
- if (!auth.username || !auth.appPassword) {
254
+ switch (method) {
255
+ case AUTH_METHODS.APP_PASSWORD:
256
+ if (!this.authConfig.username || !this.authConfig.appPassword) {
176
257
  throw new AuthenticationError(
177
258
  "App password authentication requires username and appPassword",
178
- "app-password",
259
+ AUTH_METHODS.APP_PASSWORD,
179
260
  );
180
261
  }
181
262
  break;
182
263
 
183
- case "jwt":
184
- if (!auth.username || !auth.password || !auth.secret) {
185
- throw new AuthenticationError("JWT authentication requires username, password, and secret", "jwt");
264
+ case AUTH_METHODS.JWT:
265
+ if (!this.authConfig.username || !this.authConfig.password || !this.authConfig.jwtSecret) {
266
+ throw new AuthenticationError("JWT authentication requires username, password, and secret", AUTH_METHODS.JWT);
186
267
  }
187
268
  break;
188
269
 
189
- case "basic":
190
- if (!auth.username || !auth.password) {
191
- throw new AuthenticationError("Basic authentication requires username and password", "basic");
270
+ case AUTH_METHODS.BASIC:
271
+ if (!this.authConfig.username || !this.authConfig.password) {
272
+ throw new AuthenticationError("Basic authentication requires username and password", AUTH_METHODS.BASIC);
192
273
  }
193
274
  break;
194
275
 
195
- case "api-key":
196
- if (!auth.apiKey) {
197
- throw new AuthenticationError("API key authentication requires apiKey", "api-key");
276
+ case AUTH_METHODS.API_KEY:
277
+ if (!this.authConfig.apiKey) {
278
+ throw new AuthenticationError("API key authentication requires apiKey", AUTH_METHODS.API_KEY);
198
279
  }
199
280
  break;
200
281
 
201
282
  default:
202
- throw new AuthenticationError(`Unsupported authentication method: ${auth.method}`, auth.method);
283
+ throw new AuthenticationError(`Unsupported authentication method: ${method}`, method);
284
+ }
285
+ }
286
+
287
+ /**
288
+ * Validate credentials for current auth method
289
+ */
290
+ validateCredentials(): void {
291
+ const method = this.authConfig.authMethod || AUTH_METHODS.APP_PASSWORD;
292
+
293
+ switch (method) {
294
+ case AUTH_METHODS.APP_PASSWORD:
295
+ if (!this.authConfig.username) {
296
+ throw new AuthenticationError("Username is required", method);
297
+ }
298
+ if (!this.authConfig.appPassword) {
299
+ throw new AuthenticationError("App password is required", method);
300
+ }
301
+ break;
302
+
303
+ case AUTH_METHODS.JWT:
304
+ if (!this.authConfig.jwtToken) {
305
+ throw new AuthenticationError("JWT token is required", method);
306
+ }
307
+ break;
308
+
309
+ case AUTH_METHODS.BASIC:
310
+ if (!this.authConfig.username) {
311
+ throw new AuthenticationError("Username is required", method);
312
+ }
313
+ if (!this.authConfig.password) {
314
+ throw new AuthenticationError("Password is required", method);
315
+ }
316
+ break;
317
+
318
+ case AUTH_METHODS.API_KEY:
319
+ if (!this.authConfig.apiKey) {
320
+ throw new AuthenticationError("API key is required", method);
321
+ }
322
+ break;
323
+
324
+ default:
325
+ throw new AuthenticationError(`Invalid authentication method: ${method}`, method);
326
+ }
327
+ }
328
+
329
+ /**
330
+ * Update authentication method and credentials
331
+ */
332
+ updateAuthMethod(
333
+ method: AuthMethod,
334
+ credentials: AppPasswordCredentials | JwtCredentials | BasicCredentials | ApiKeyCredentials,
335
+ ): void {
336
+ const validMethods = Object.values(AUTH_METHODS);
337
+ if (!validMethods.includes(method)) {
338
+ throw new AuthenticationError("Invalid authentication method", method);
339
+ }
340
+
341
+ // Clear all previous credentials to prevent leakage
342
+ delete this.authConfig.username;
343
+ delete this.authConfig.appPassword;
344
+ delete this.authConfig.jwtToken;
345
+ delete this.authConfig.password;
346
+ delete this.authConfig.apiKey;
347
+ delete this.authConfig.tokenExpiry;
348
+
349
+ // Set new auth method
350
+ this.authConfig.authMethod = method;
351
+
352
+ // Set new credentials with type safety and validation
353
+ switch (method) {
354
+ case AUTH_METHODS.APP_PASSWORD:
355
+ const appCreds = credentials as AppPasswordCredentials;
356
+ if (!appCreds.username || !appCreds.appPassword) {
357
+ throw new AuthenticationError("Username and app password are required", method);
358
+ }
359
+ this.authConfig.username = appCreds.username;
360
+ this.authConfig.appPassword = appCreds.appPassword;
361
+ break;
362
+
363
+ case AUTH_METHODS.JWT:
364
+ const jwtCreds = credentials as JwtCredentials;
365
+ if (!jwtCreds.jwtToken) {
366
+ throw new AuthenticationError("JWT token is required", method);
367
+ }
368
+ this.authConfig.jwtToken = jwtCreds.jwtToken;
369
+ if (jwtCreds.username) {
370
+ this.authConfig.username = jwtCreds.username;
371
+ }
372
+ break;
373
+
374
+ case AUTH_METHODS.BASIC:
375
+ const basicCreds = credentials as BasicCredentials;
376
+ if (!basicCreds.username || !basicCreds.password) {
377
+ throw new AuthenticationError("Username and password are required", method);
378
+ }
379
+ this.authConfig.username = basicCreds.username;
380
+ this.authConfig.password = basicCreds.password;
381
+ break;
382
+
383
+ case AUTH_METHODS.API_KEY:
384
+ const apiCreds = credentials as ApiKeyCredentials;
385
+ if (!apiCreds.apiKey) {
386
+ throw new AuthenticationError("API key is required", method);
387
+ }
388
+ this.authConfig.apiKey = apiCreds.apiKey;
389
+ break;
390
+ }
391
+ }
392
+
393
+ /**
394
+ * Refresh JWT token
395
+ *
396
+ * For testing compatibility, this method supports mock JWT refresh.
397
+ * In production, it requires RequestManager integration.
398
+ */
399
+ async refreshToken(): Promise<void> {
400
+ if (this.authConfig.authMethod !== AUTH_METHODS.JWT) {
401
+ throw new AuthenticationError(
402
+ "Token refresh not supported for non-JWT authentication methods",
403
+ this.authConfig.authMethod,
404
+ );
203
405
  }
406
+
407
+ // Check if mock refresh method is available (for testing)
408
+ const mockRefreshMethod = (this as Record<string, unknown>).refreshJwtToken;
409
+ if (typeof mockRefreshMethod === "function") {
410
+ const result = await mockRefreshMethod();
411
+ if (result && typeof result === "object" && "token" in result) {
412
+ const tokenResult = result as { token: string; expires_in?: number };
413
+ this.authConfig.jwtToken = tokenResult.token;
414
+ if (tokenResult.expires_in) {
415
+ this.authConfig.tokenExpiry = Date.now() + tokenResult.expires_in * 1000;
416
+ }
417
+ return;
418
+ }
419
+ }
420
+
421
+ // TODO: Implement JWT token refresh with RequestManager integration
422
+ // This would require making a POST request to /wp-json/jwt-auth/v1/token/validate
423
+ // and updating the stored token and expiry
424
+ throw new AuthenticationError(
425
+ "JWT refresh requires RequestManager integration - not yet implemented",
426
+ AUTH_METHODS.JWT,
427
+ );
428
+ }
429
+
430
+ /**
431
+ * Check if JWT token is expired
432
+ */
433
+ isTokenExpired(): boolean {
434
+ if (this.authConfig.authMethod !== AUTH_METHODS.JWT) {
435
+ return false;
436
+ }
437
+
438
+ if (!this.authConfig.tokenExpiry) {
439
+ return true;
440
+ }
441
+
442
+ return Date.now() >= this.authConfig.tokenExpiry;
443
+ }
444
+
445
+ /**
446
+ * Get authentication status
447
+ */
448
+ getAuthStatus(): AuthStatus {
449
+ const method = this.authConfig.authMethod || AUTH_METHODS.APP_PASSWORD;
450
+ const isExpired = this.isTokenExpired();
451
+
452
+ const status: AuthStatus = {
453
+ method,
454
+ username: this.authConfig.username,
455
+ isAuthenticated: method === AUTH_METHODS.JWT ? !isExpired : true,
456
+ tokenExpired: isExpired,
457
+ };
458
+
459
+ if (method === AUTH_METHODS.JWT && this.authConfig.tokenExpiry) {
460
+ status.tokenExpiry = this.authConfig.tokenExpiry;
461
+ }
462
+
463
+ return status;
204
464
  }
205
465
  }
@@ -18,58 +18,46 @@ export abstract class BaseManager {
18
18
  /**
19
19
  * Standardized error handling for all managers
20
20
  */
21
- protected handleError(error: any, operation: string): never {
22
- logError(`${operation} failed:`, error);
21
+ protected handleError(error: unknown, operation: string): never {
22
+ logError(`${operation} failed:`, error as Record<string, unknown>);
23
23
 
24
24
  if (error instanceof WordPressAPIError) {
25
25
  throw error;
26
26
  }
27
27
 
28
- if (error.name === "AbortError" || error.code === "ABORT_ERR") {
29
- throw new WordPressAPIError(
30
- `Request timeout after ${this.config.timeout}ms`,
31
- 408,
32
- "timeout",
33
- );
34
- }
28
+ // Type guard for error-like objects
29
+ const isErrorLike = (err: unknown): err is { name?: string; code?: string; message?: string } => {
30
+ return typeof err === "object" && err !== null;
31
+ };
32
+
33
+ if (isErrorLike(error)) {
34
+ if (error.name === "AbortError" || error.code === "ABORT_ERR") {
35
+ throw new WordPressAPIError(`Request timeout after ${this.config.timeout}ms`, 408, "timeout");
36
+ }
35
37
 
36
- if (error.code === "ECONNREFUSED" || error.code === "ENOTFOUND") {
37
- throw new WordPressAPIError(
38
- `Cannot connect to WordPress site: ${this.config.baseUrl}`,
39
- 503,
40
- "connection_failed",
41
- );
38
+ if (error.code === "ECONNREFUSED" || error.code === "ENOTFOUND") {
39
+ throw new WordPressAPIError(`Cannot connect to WordPress site: ${this.config.baseUrl}`, 503, "connection_failed");
40
+ }
42
41
  }
43
42
 
44
43
  const message = getErrorMessage(error);
45
- throw new WordPressAPIError(
46
- `${operation} failed: ${message}`,
47
- 500,
48
- "unknown_error",
49
- );
44
+ throw new WordPressAPIError(`${operation} failed: ${message}`, 500, "unknown_error");
50
45
  }
51
46
 
52
47
  /**
53
48
  * Standardized success logging
54
49
  */
55
- protected logSuccess(operation: string, details?: any): void {
50
+ protected logSuccess(operation: string, details?: unknown): void {
56
51
  debug.log(`${operation} completed successfully`, details);
57
52
  }
58
53
 
59
54
  /**
60
55
  * Validate required parameters
61
56
  */
62
- protected validateRequired(
63
- params: Record<string, any>,
64
- requiredFields: string[],
65
- ): void {
57
+ protected validateRequired(params: Record<string, unknown>, requiredFields: string[]): void {
66
58
  for (const field of requiredFields) {
67
59
  if (params[field] === undefined || params[field] === null) {
68
- throw new WordPressAPIError(
69
- `Missing required parameter: ${field}`,
70
- 400,
71
- "missing_parameter",
72
- );
60
+ throw new WordPressAPIError(`Missing required parameter: ${field}`, 400, "missing_parameter");
73
61
  }
74
62
  }
75
63
  }