mcp-wordpress 2.6.4 → 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 (332) 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 +21 -55
  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
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Composed Request Manager
3
+ * Uses composition instead of inheritance for better testability and flexibility
4
+ */
5
+ import type { HTTPMethod, RequestOptions, ClientStats, WordPressClientConfig } from "../../types/client.js";
6
+ import type { ConfigurationProvider, ErrorHandler, ParameterValidator, AuthenticationProvider, RequestHandler } from "./interfaces/ManagerInterfaces.js";
7
+ interface ComposedRequestManagerDependencies {
8
+ configProvider: ConfigurationProvider;
9
+ errorHandler: ErrorHandler;
10
+ validator: ParameterValidator;
11
+ authProvider: AuthenticationProvider;
12
+ }
13
+ export declare class ComposedRequestManager implements RequestHandler {
14
+ private dependencies;
15
+ private stats;
16
+ private lastRequestTime;
17
+ private requestInterval;
18
+ private initialized;
19
+ constructor(dependencies: ComposedRequestManagerDependencies);
20
+ /**
21
+ * Factory method to create ComposedRequestManager with default implementations
22
+ */
23
+ static create(clientConfig: WordPressClientConfig, authProvider: AuthenticationProvider): ComposedRequestManager;
24
+ /**
25
+ * Initialize the manager
26
+ */
27
+ initialize(): Promise<void>;
28
+ /**
29
+ * Make HTTP request with retry logic and rate limiting
30
+ */
31
+ request<T>(method: HTTPMethod, endpoint: string, data?: unknown, options?: RequestOptions): Promise<T>;
32
+ /**
33
+ * Get request statistics
34
+ */
35
+ getStats(): ClientStats;
36
+ /**
37
+ * Reset statistics
38
+ */
39
+ resetStats(): void;
40
+ /**
41
+ * Enforce rate limiting
42
+ */
43
+ private enforceRateLimit;
44
+ /**
45
+ * Make request with retry logic
46
+ */
47
+ private makeRequestWithRetry;
48
+ /**
49
+ * Make actual HTTP request
50
+ */
51
+ private makeRequest;
52
+ /**
53
+ * Build full URL for request
54
+ */
55
+ private buildUrl;
56
+ /**
57
+ * Build request options with authentication
58
+ */
59
+ private buildRequestOptions;
60
+ /**
61
+ * Handle HTTP error responses
62
+ */
63
+ private handleHttpError;
64
+ /**
65
+ * Determine if error is retryable
66
+ */
67
+ private shouldRetry;
68
+ /**
69
+ * Update average response time with new measurement
70
+ */
71
+ private updateAverageResponseTime;
72
+ /**
73
+ * Ensure manager is initialized before operations
74
+ */
75
+ private ensureInitialized;
76
+ /**
77
+ * Cleanup resources
78
+ */
79
+ dispose(): void;
80
+ }
81
+ export {};
82
+ //# sourceMappingURL=ComposedRequestManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposedRequestManager.d.ts","sourceRoot":"","sources":["../../../src/client/managers/ComposedRequestManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAMxG,OAAO,KAAK,EACV,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACf,MAAM,mCAAmC,CAAC;AAM3C,UAAU,kCAAkC;IAC1C,cAAc,EAAE,qBAAqB,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,YAAY,EAAE,sBAAsB,CAAC;CACtC;AAED,qBAAa,sBAAuB,YAAW,cAAc;IAM/C,OAAO,CAAC,YAAY;IALhC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAkB;gBAEjB,YAAY,EAAE,kCAAkC;IAapE;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,sBAAsB,GAAG,sBAAsB;IAahH;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAiChH;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,UAAU,IAAI,IAAI;IAYlB;;OAEG;YACW,gBAAgB;IAY9B;;OAEG;YACW,oBAAoB;IAqBlC;;OAEG;YACW,WAAW;IAwBzB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;YACW,mBAAmB;IA6BjC;;OAEG;YACW,eAAe;IAoC7B;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAKjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Composed Request Manager
3
+ * Uses composition instead of inheritance for better testability and flexibility
4
+ */
5
+ import { WordPressAPIError, RateLimitError } from "../../types/client.js";
6
+ import { config } from "../../config/Config.js";
7
+ import { startTimer } from "../../utils/debug.js";
8
+ import { getUserAgent } from "../../utils/version.js";
9
+ import { ConfigurationProviderImpl } from "./implementations/ConfigurationProviderImpl.js";
10
+ import { ErrorHandlerImpl } from "./implementations/ErrorHandlerImpl.js";
11
+ import { ParameterValidatorImpl } from "./implementations/ParameterValidatorImpl.js";
12
+ export class ComposedRequestManager {
13
+ dependencies;
14
+ stats;
15
+ lastRequestTime = 0;
16
+ requestInterval;
17
+ initialized = false;
18
+ constructor(dependencies) {
19
+ this.dependencies = dependencies;
20
+ this.requestInterval = 60000 / config().security.rateLimit;
21
+ this.stats = {
22
+ totalRequests: 0,
23
+ successfulRequests: 0,
24
+ failedRequests: 0,
25
+ averageResponseTime: 0,
26
+ rateLimitHits: 0,
27
+ authFailures: 0,
28
+ errors: 0,
29
+ };
30
+ }
31
+ /**
32
+ * Factory method to create ComposedRequestManager with default implementations
33
+ */
34
+ static create(clientConfig, authProvider) {
35
+ const configProvider = new ConfigurationProviderImpl(clientConfig);
36
+ const errorHandler = new ErrorHandlerImpl(configProvider);
37
+ const validator = new ParameterValidatorImpl();
38
+ return new ComposedRequestManager({
39
+ configProvider,
40
+ errorHandler,
41
+ validator,
42
+ authProvider,
43
+ });
44
+ }
45
+ /**
46
+ * Initialize the manager
47
+ */
48
+ async initialize() {
49
+ if (this.initialized) {
50
+ return;
51
+ }
52
+ try {
53
+ // Validate configuration
54
+ if (!this.dependencies.configProvider.config.baseUrl) {
55
+ throw new Error("Base URL is required");
56
+ }
57
+ // Ensure authentication is ready
58
+ await this.dependencies.authProvider.authenticate();
59
+ this.initialized = true;
60
+ }
61
+ catch (error) {
62
+ this.dependencies.errorHandler.handleError(error, "initialize request manager");
63
+ }
64
+ }
65
+ /**
66
+ * Make HTTP request with retry logic and rate limiting
67
+ */
68
+ async request(method, endpoint, data, options = {}) {
69
+ this.ensureInitialized();
70
+ const timer = startTimer();
71
+ this.stats.totalRequests++;
72
+ try {
73
+ // Validate inputs
74
+ this.dependencies.validator.validateString(method, "method", { required: true });
75
+ this.dependencies.validator.validateString(endpoint, "endpoint", { required: true });
76
+ await this.enforceRateLimit();
77
+ const response = await this.makeRequestWithRetry(method, endpoint, data, options);
78
+ this.stats.successfulRequests++;
79
+ this.updateAverageResponseTime(timer.end());
80
+ this.dependencies.errorHandler.logSuccess(`${method} ${endpoint}`, { responseTime: timer.end() });
81
+ return response;
82
+ }
83
+ catch (error) {
84
+ this.stats.failedRequests++;
85
+ this.stats.errors++;
86
+ if (error instanceof RateLimitError) {
87
+ this.stats.rateLimitHits++;
88
+ }
89
+ this.dependencies.errorHandler.handleError(error, `${method} ${endpoint}`);
90
+ }
91
+ }
92
+ /**
93
+ * Get request statistics
94
+ */
95
+ getStats() {
96
+ return { ...this.stats };
97
+ }
98
+ /**
99
+ * Reset statistics
100
+ */
101
+ resetStats() {
102
+ this.stats = {
103
+ totalRequests: 0,
104
+ successfulRequests: 0,
105
+ failedRequests: 0,
106
+ averageResponseTime: 0,
107
+ rateLimitHits: 0,
108
+ authFailures: 0,
109
+ errors: 0,
110
+ };
111
+ }
112
+ /**
113
+ * Enforce rate limiting
114
+ */
115
+ async enforceRateLimit() {
116
+ const now = Date.now();
117
+ const timeSinceLastRequest = now - this.lastRequestTime;
118
+ if (timeSinceLastRequest < this.requestInterval) {
119
+ const delay = this.requestInterval - timeSinceLastRequest;
120
+ await new Promise((resolve) => setTimeout(resolve, delay));
121
+ }
122
+ this.lastRequestTime = Date.now();
123
+ }
124
+ /**
125
+ * Make request with retry logic
126
+ */
127
+ async makeRequestWithRetry(method, endpoint, data, options = {}, attempt = 1) {
128
+ const maxRetries = 3; // Use default retries for composed manager
129
+ try {
130
+ return await this.makeRequest(method, endpoint, data, options);
131
+ }
132
+ catch (error) {
133
+ if (attempt <= maxRetries && this.shouldRetry(error)) {
134
+ const delay = Math.pow(2, attempt) * 1000; // Exponential backoff
135
+ await new Promise((resolve) => setTimeout(resolve, delay));
136
+ return this.makeRequestWithRetry(method, endpoint, data, options, attempt + 1);
137
+ }
138
+ throw error;
139
+ }
140
+ }
141
+ /**
142
+ * Make actual HTTP request
143
+ */
144
+ async makeRequest(method, endpoint, data, options = {}) {
145
+ const url = this.buildUrl(endpoint);
146
+ const requestOptions = await this.buildRequestOptions(method, data, options);
147
+ const response = await fetch(url, requestOptions);
148
+ if (!response.ok) {
149
+ await this.handleHttpError(response);
150
+ }
151
+ const contentType = response.headers.get("content-type");
152
+ if (contentType && contentType.includes("application/json")) {
153
+ return (await response.json());
154
+ }
155
+ return (await response.text());
156
+ }
157
+ /**
158
+ * Build full URL for request
159
+ */
160
+ buildUrl(endpoint) {
161
+ const baseUrl = this.dependencies.configProvider.config.baseUrl;
162
+ const cleanBase = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
163
+ const cleanEndpoint = endpoint.startsWith("/") ? endpoint : `/${endpoint}`;
164
+ return `${cleanBase}/wp-json${cleanEndpoint}`;
165
+ }
166
+ /**
167
+ * Build request options with authentication
168
+ */
169
+ async buildRequestOptions(method, data, options = {}) {
170
+ const authHeaders = this.dependencies.authProvider.getAuthHeaders();
171
+ const timeout = this.dependencies.configProvider.config.timeout || 30000;
172
+ const headers = {
173
+ "Content-Type": "application/json",
174
+ Accept: "application/json",
175
+ "User-Agent": getUserAgent(),
176
+ ...authHeaders,
177
+ ...options.headers,
178
+ };
179
+ const requestOptions = {
180
+ method,
181
+ headers,
182
+ signal: typeof AbortSignal !== "undefined" && AbortSignal.timeout ? AbortSignal.timeout(timeout) : null,
183
+ };
184
+ if (data && (method === "POST" || method === "PUT" || method === "PATCH")) {
185
+ requestOptions.body = JSON.stringify(data);
186
+ }
187
+ return requestOptions;
188
+ }
189
+ /**
190
+ * Handle HTTP error responses
191
+ */
192
+ async handleHttpError(response) {
193
+ const statusCode = response.status;
194
+ if (statusCode === 401) {
195
+ this.stats.authFailures++;
196
+ // Try to refresh authentication
197
+ try {
198
+ await this.dependencies.authProvider.handleAuthFailure(new Error(`HTTP ${statusCode}`));
199
+ // If refresh succeeds, the caller should retry
200
+ throw new WordPressAPIError("Authentication refreshed, retry needed", 401, "auth_refreshed");
201
+ }
202
+ catch (_authError) {
203
+ throw new WordPressAPIError("Authentication failed", 401, "auth_failed");
204
+ }
205
+ }
206
+ if (statusCode === 429) {
207
+ const retryAfter = response.headers.get("retry-after");
208
+ const delay = retryAfter ? parseInt(retryAfter, 10) : 60;
209
+ throw new RateLimitError("Rate limit exceeded", delay);
210
+ }
211
+ let errorMessage = `HTTP ${statusCode}: ${response.statusText}`;
212
+ try {
213
+ const errorBody = (await response.json());
214
+ if (errorBody.message) {
215
+ errorMessage = errorBody.message;
216
+ }
217
+ }
218
+ catch {
219
+ // Ignore JSON parsing errors for non-JSON error responses
220
+ }
221
+ throw new WordPressAPIError(errorMessage, statusCode, "http_error");
222
+ }
223
+ /**
224
+ * Determine if error is retryable
225
+ */
226
+ shouldRetry(error) {
227
+ if (error instanceof WordPressAPIError) {
228
+ const nonRetryableCodes = [400, 401, 403, 404];
229
+ return !nonRetryableCodes.includes(error.statusCode || 500);
230
+ }
231
+ if (error instanceof Error) {
232
+ const retryableErrors = ["ECONNRESET", "ETIMEDOUT", "ENOTFOUND", "EAI_AGAIN"];
233
+ return retryableErrors.some((code) => error.message.includes(code));
234
+ }
235
+ return false;
236
+ }
237
+ /**
238
+ * Update average response time with new measurement
239
+ */
240
+ updateAverageResponseTime(newTime) {
241
+ const total = this.stats.averageResponseTime * (this.stats.successfulRequests - 1) + newTime;
242
+ this.stats.averageResponseTime = Math.round(total / this.stats.successfulRequests);
243
+ }
244
+ /**
245
+ * Ensure manager is initialized before operations
246
+ */
247
+ ensureInitialized() {
248
+ if (!this.initialized) {
249
+ throw new Error("ComposedRequestManager not initialized. Call initialize() first.");
250
+ }
251
+ }
252
+ /**
253
+ * Cleanup resources
254
+ */
255
+ dispose() {
256
+ // Cleanup any resources, timers, etc.
257
+ this.initialized = false;
258
+ }
259
+ }
260
+ //# sourceMappingURL=ComposedRequestManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposedRequestManager.js","sourceRoot":"","sources":["../../../src/client/managers/ComposedRequestManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * JWT Authentication Implementation
3
+ * Complete JWT authentication with token refresh and RequestManager integration
4
+ */
5
+ import type { AuthConfig } from "../../types/client.js";
6
+ import type { RequestManager } from "./RequestManager.js";
7
+ export interface JWTTokenResponse {
8
+ token: string;
9
+ user_email: string;
10
+ user_nicename: string;
11
+ user_display_name: string;
12
+ expires_in?: number;
13
+ }
14
+ export interface JWTValidateResponse {
15
+ code: string;
16
+ data: {
17
+ status: number;
18
+ };
19
+ }
20
+ export interface JWTRefreshResponse {
21
+ token: string;
22
+ expires_in?: number;
23
+ }
24
+ export declare class JWTAuthImplementation {
25
+ private requestManager;
26
+ private authConfig;
27
+ private logger;
28
+ private jwtToken;
29
+ private tokenExpiry;
30
+ private refreshTokenValue;
31
+ constructor(requestManager: RequestManager, authConfig: AuthConfig);
32
+ /**
33
+ * Complete JWT authentication implementation
34
+ */
35
+ authenticateJWT(): Promise<void>;
36
+ /**
37
+ * Validate JWT token
38
+ */
39
+ validateToken(): Promise<boolean>;
40
+ /**
41
+ * Refresh JWT token
42
+ */
43
+ refreshToken(): Promise<void>;
44
+ /**
45
+ * Check if JWT token is expired
46
+ */
47
+ isTokenExpired(): boolean;
48
+ /**
49
+ * Get current JWT token
50
+ */
51
+ getToken(): string | null;
52
+ /**
53
+ * Get token expiry timestamp
54
+ */
55
+ getTokenExpiry(): number | null;
56
+ /**
57
+ * Clear JWT token and expiry
58
+ */
59
+ clearToken(): void;
60
+ /**
61
+ * Get JWT auth headers
62
+ */
63
+ getAuthHeaders(): Record<string, string>;
64
+ /**
65
+ * Check if we have a valid JWT token
66
+ */
67
+ hasValidToken(): boolean;
68
+ /**
69
+ * Automatic token refresh if needed
70
+ */
71
+ ensureValidToken(): Promise<void>;
72
+ /**
73
+ * Logout and invalidate token
74
+ */
75
+ logout(): Promise<void>;
76
+ /**
77
+ * Get token information
78
+ */
79
+ getTokenInfo(): {
80
+ hasToken: boolean;
81
+ isExpired: boolean;
82
+ expiresAt: string | null;
83
+ expiresIn: number | null;
84
+ };
85
+ }
86
+ //# sourceMappingURL=JWTAuthImplementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JWTAuthImplementation.d.ts","sourceRoot":"","sources":["../../../src/client/managers/JWTAuthImplementation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,mBAAmB,CAAC;AAIpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,qBAAqB;IAO9B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAPpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAAuB;gBAGtC,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU;IAGhC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAyDtC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAoCvC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DnC;;OAEG;IACH,cAAc,IAAI,OAAO;IAUzB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUxC;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBvC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B7B;;OAEG;IACH,YAAY,IAAI;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;CAQF"}