mcp-wordpress 2.5.1 → 2.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/package.json +1 -1
  2. package/dist/src/cache/CacheInvalidation.d.ts +0 -120
  3. package/dist/src/cache/CacheInvalidation.d.ts.map +0 -1
  4. package/dist/src/cache/CacheInvalidation.js +0 -355
  5. package/dist/src/cache/CacheInvalidation.js.map +0 -1
  6. package/dist/src/cache/CacheManager.d.ts +0 -149
  7. package/dist/src/cache/CacheManager.d.ts.map +0 -1
  8. package/dist/src/cache/CacheManager.js +0 -326
  9. package/dist/src/cache/CacheManager.js.map +0 -1
  10. package/dist/src/cache/HttpCacheWrapper.d.ts +0 -122
  11. package/dist/src/cache/HttpCacheWrapper.d.ts.map +0 -1
  12. package/dist/src/cache/HttpCacheWrapper.js +0 -283
  13. package/dist/src/cache/HttpCacheWrapper.js.map +0 -1
  14. package/dist/src/cache/index.d.ts +0 -12
  15. package/dist/src/cache/index.d.ts.map +0 -1
  16. package/dist/src/cache/index.js +0 -9
  17. package/dist/src/cache/index.js.map +0 -1
  18. package/dist/src/client/CachedWordPressClient.d.ts +0 -174
  19. package/dist/src/client/CachedWordPressClient.d.ts.map +0 -1
  20. package/dist/src/client/CachedWordPressClient.js +0 -345
  21. package/dist/src/client/CachedWordPressClient.js.map +0 -1
  22. package/dist/src/client/MockWordPressClient.d.ts +0 -56
  23. package/dist/src/client/MockWordPressClient.d.ts.map +0 -1
  24. package/dist/src/client/MockWordPressClient.js +0 -371
  25. package/dist/src/client/MockWordPressClient.js.map +0 -1
  26. package/dist/src/client/api.d.ts +0 -235
  27. package/dist/src/client/api.d.ts.map +0 -1
  28. package/dist/src/client/api.js +0 -896
  29. package/dist/src/client/api.js.map +0 -1
  30. package/dist/src/client/auth.d.ts +0 -121
  31. package/dist/src/client/auth.d.ts.map +0 -1
  32. package/dist/src/client/auth.js +0 -429
  33. package/dist/src/client/auth.js.map +0 -1
  34. package/dist/src/client/managers/AuthenticationManager.d.ts +0 -92
  35. package/dist/src/client/managers/AuthenticationManager.d.ts.map +0 -1
  36. package/dist/src/client/managers/AuthenticationManager.js +0 -369
  37. package/dist/src/client/managers/AuthenticationManager.js.map +0 -1
  38. package/dist/src/client/managers/BaseManager.d.ts +0 -22
  39. package/dist/src/client/managers/BaseManager.d.ts.map +0 -1
  40. package/dist/src/client/managers/BaseManager.js +0 -53
  41. package/dist/src/client/managers/BaseManager.js.map +0 -1
  42. package/dist/src/client/managers/RequestManager.d.ts +0 -47
  43. package/dist/src/client/managers/RequestManager.d.ts.map +0 -1
  44. package/dist/src/client/managers/RequestManager.js +0 -193
  45. package/dist/src/client/managers/RequestManager.js.map +0 -1
  46. package/dist/src/client/managers/index.d.ts +0 -8
  47. package/dist/src/client/managers/index.d.ts.map +0 -1
  48. package/dist/src/client/managers/index.js +0 -8
  49. package/dist/src/client/managers/index.js.map +0 -1
  50. package/dist/src/config/Config.d.ts +0 -155
  51. package/dist/src/config/Config.d.ts.map +0 -1
  52. package/dist/src/config/Config.js +0 -215
  53. package/dist/src/config/Config.js.map +0 -1
  54. package/dist/src/config/ConfigurationSchema.d.ts +0 -281
  55. package/dist/src/config/ConfigurationSchema.d.ts.map +0 -1
  56. package/dist/src/config/ConfigurationSchema.js +0 -205
  57. package/dist/src/config/ConfigurationSchema.js.map +0 -1
  58. package/dist/src/config/ServerConfiguration.d.ts +0 -47
  59. package/dist/src/config/ServerConfiguration.d.ts.map +0 -1
  60. package/dist/src/config/ServerConfiguration.js +0 -255
  61. package/dist/src/config/ServerConfiguration.js.map +0 -1
  62. package/dist/src/docs/DocumentationGenerator.d.ts +0 -185
  63. package/dist/src/docs/DocumentationGenerator.d.ts.map +0 -1
  64. package/dist/src/docs/DocumentationGenerator.js +0 -777
  65. package/dist/src/docs/DocumentationGenerator.js.map +0 -1
  66. package/dist/src/docs/MarkdownFormatter.d.ts +0 -84
  67. package/dist/src/docs/MarkdownFormatter.d.ts.map +0 -1
  68. package/dist/src/docs/MarkdownFormatter.js +0 -458
  69. package/dist/src/docs/MarkdownFormatter.js.map +0 -1
  70. package/dist/src/docs/index.d.ts +0 -8
  71. package/dist/src/docs/index.d.ts.map +0 -1
  72. package/dist/src/docs/index.js +0 -7
  73. package/dist/src/docs/index.js.map +0 -1
  74. package/dist/src/dxt-entry.d.ts +0 -6
  75. package/dist/src/dxt-entry.d.ts.map +0 -1
  76. package/dist/src/dxt-entry.js +0 -39
  77. package/dist/src/dxt-entry.js.map +0 -1
  78. package/dist/src/index.d.ts +0 -18
  79. package/dist/src/index.d.ts.map +0 -1
  80. package/dist/src/index.js +0 -143
  81. package/dist/src/index.js.map +0 -1
  82. package/dist/src/performance/MetricsCollector.d.ts +0 -145
  83. package/dist/src/performance/MetricsCollector.d.ts.map +0 -1
  84. package/dist/src/performance/MetricsCollector.js +0 -368
  85. package/dist/src/performance/MetricsCollector.js.map +0 -1
  86. package/dist/src/performance/PerformanceAnalytics.d.ts +0 -168
  87. package/dist/src/performance/PerformanceAnalytics.d.ts.map +0 -1
  88. package/dist/src/performance/PerformanceAnalytics.js +0 -570
  89. package/dist/src/performance/PerformanceAnalytics.js.map +0 -1
  90. package/dist/src/performance/PerformanceMonitor.d.ts +0 -203
  91. package/dist/src/performance/PerformanceMonitor.d.ts.map +0 -1
  92. package/dist/src/performance/PerformanceMonitor.js +0 -478
  93. package/dist/src/performance/PerformanceMonitor.js.map +0 -1
  94. package/dist/src/performance/index.d.ts +0 -11
  95. package/dist/src/performance/index.d.ts.map +0 -1
  96. package/dist/src/performance/index.js +0 -8
  97. package/dist/src/performance/index.js.map +0 -1
  98. package/dist/src/security/AISecurityScanner.d.ts +0 -176
  99. package/dist/src/security/AISecurityScanner.d.ts.map +0 -1
  100. package/dist/src/security/AISecurityScanner.js +0 -655
  101. package/dist/src/security/AISecurityScanner.js.map +0 -1
  102. package/dist/src/security/AutomatedRemediation.d.ts +0 -146
  103. package/dist/src/security/AutomatedRemediation.d.ts.map +0 -1
  104. package/dist/src/security/AutomatedRemediation.js +0 -566
  105. package/dist/src/security/AutomatedRemediation.js.map +0 -1
  106. package/dist/src/security/InputValidator.d.ts +0 -219
  107. package/dist/src/security/InputValidator.d.ts.map +0 -1
  108. package/dist/src/security/InputValidator.js +0 -295
  109. package/dist/src/security/InputValidator.js.map +0 -1
  110. package/dist/src/security/SecurityCIPipeline.d.ts +0 -213
  111. package/dist/src/security/SecurityCIPipeline.d.ts.map +0 -1
  112. package/dist/src/security/SecurityCIPipeline.js +0 -693
  113. package/dist/src/security/SecurityCIPipeline.js.map +0 -1
  114. package/dist/src/security/SecurityConfig.d.ts +0 -129
  115. package/dist/src/security/SecurityConfig.d.ts.map +0 -1
  116. package/dist/src/security/SecurityConfig.js +0 -266
  117. package/dist/src/security/SecurityConfig.js.map +0 -1
  118. package/dist/src/security/SecurityConfigManager.d.ts +0 -294
  119. package/dist/src/security/SecurityConfigManager.d.ts.map +0 -1
  120. package/dist/src/security/SecurityConfigManager.js +0 -558
  121. package/dist/src/security/SecurityConfigManager.js.map +0 -1
  122. package/dist/src/security/SecurityMonitoring.d.ts +0 -245
  123. package/dist/src/security/SecurityMonitoring.d.ts.map +0 -1
  124. package/dist/src/security/SecurityMonitoring.js +0 -598
  125. package/dist/src/security/SecurityMonitoring.js.map +0 -1
  126. package/dist/src/security/SecurityReviewer.d.ts +0 -168
  127. package/dist/src/security/SecurityReviewer.d.ts.map +0 -1
  128. package/dist/src/security/SecurityReviewer.js +0 -686
  129. package/dist/src/security/SecurityReviewer.js.map +0 -1
  130. package/dist/src/security/index.d.ts +0 -183
  131. package/dist/src/security/index.d.ts.map +0 -1
  132. package/dist/src/security/index.js +0 -218
  133. package/dist/src/security/index.js.map +0 -1
  134. package/dist/src/server/ConnectionTester.d.ts +0 -32
  135. package/dist/src/server/ConnectionTester.d.ts.map +0 -1
  136. package/dist/src/server/ConnectionTester.js +0 -135
  137. package/dist/src/server/ConnectionTester.js.map +0 -1
  138. package/dist/src/server/ToolRegistry.d.ts +0 -50
  139. package/dist/src/server/ToolRegistry.d.ts.map +0 -1
  140. package/dist/src/server/ToolRegistry.js +0 -219
  141. package/dist/src/server/ToolRegistry.js.map +0 -1
  142. package/dist/src/server.d.ts +0 -7
  143. package/dist/src/server.d.ts.map +0 -1
  144. package/dist/src/server.js +0 -7
  145. package/dist/src/server.js.map +0 -1
  146. package/dist/src/tools/BaseToolManager.d.ts +0 -62
  147. package/dist/src/tools/BaseToolManager.d.ts.map +0 -1
  148. package/dist/src/tools/BaseToolManager.js +0 -195
  149. package/dist/src/tools/BaseToolManager.js.map +0 -1
  150. package/dist/src/tools/auth.d.ts +0 -50
  151. package/dist/src/tools/auth.d.ts.map +0 -1
  152. package/dist/src/tools/auth.js +0 -133
  153. package/dist/src/tools/auth.js.map +0 -1
  154. package/dist/src/tools/cache.d.ts +0 -260
  155. package/dist/src/tools/cache.d.ts.map +0 -1
  156. package/dist/src/tools/cache.js +0 -232
  157. package/dist/src/tools/cache.js.map +0 -1
  158. package/dist/src/tools/comments.d.ts +0 -33
  159. package/dist/src/tools/comments.d.ts.map +0 -1
  160. package/dist/src/tools/comments.js +0 -235
  161. package/dist/src/tools/comments.js.map +0 -1
  162. package/dist/src/tools/index.d.ts +0 -11
  163. package/dist/src/tools/index.d.ts.map +0 -1
  164. package/dist/src/tools/index.js +0 -11
  165. package/dist/src/tools/index.js.map +0 -1
  166. package/dist/src/tools/media.d.ts +0 -70
  167. package/dist/src/tools/media.d.ts.map +0 -1
  168. package/dist/src/tools/media.js +0 -248
  169. package/dist/src/tools/media.js.map +0 -1
  170. package/dist/src/tools/pages.d.ts +0 -32
  171. package/dist/src/tools/pages.d.ts.map +0 -1
  172. package/dist/src/tools/pages.js +0 -215
  173. package/dist/src/tools/pages.js.map +0 -1
  174. package/dist/src/tools/performance.d.ts +0 -73
  175. package/dist/src/tools/performance.d.ts.map +0 -1
  176. package/dist/src/tools/performance.js +0 -922
  177. package/dist/src/tools/performance.js.map +0 -1
  178. package/dist/src/tools/posts/PostHandlers.d.ts +0 -46
  179. package/dist/src/tools/posts/PostHandlers.d.ts.map +0 -1
  180. package/dist/src/tools/posts/PostHandlers.js +0 -400
  181. package/dist/src/tools/posts/PostHandlers.js.map +0 -1
  182. package/dist/src/tools/posts/PostToolDefinitions.d.ts +0 -37
  183. package/dist/src/tools/posts/PostToolDefinitions.d.ts.map +0 -1
  184. package/dist/src/tools/posts/PostToolDefinitions.js +0 -236
  185. package/dist/src/tools/posts/PostToolDefinitions.js.map +0 -1
  186. package/dist/src/tools/posts/index.d.ts +0 -138
  187. package/dist/src/tools/posts/index.d.ts.map +0 -1
  188. package/dist/src/tools/posts/index.js +0 -163
  189. package/dist/src/tools/posts/index.js.map +0 -1
  190. package/dist/src/tools/posts.d.ts +0 -15
  191. package/dist/src/tools/posts.d.ts.map +0 -1
  192. package/dist/src/tools/posts.js +0 -16
  193. package/dist/src/tools/posts.js.map +0 -1
  194. package/dist/src/tools/site.d.ts +0 -32
  195. package/dist/src/tools/site.d.ts.map +0 -1
  196. package/dist/src/tools/site.js +0 -234
  197. package/dist/src/tools/site.js.map +0 -1
  198. package/dist/src/tools/taxonomies.d.ts +0 -36
  199. package/dist/src/tools/taxonomies.d.ts.map +0 -1
  200. package/dist/src/tools/taxonomies.js +0 -286
  201. package/dist/src/tools/taxonomies.js.map +0 -1
  202. package/dist/src/tools/users.d.ts +0 -33
  203. package/dist/src/tools/users.d.ts.map +0 -1
  204. package/dist/src/tools/users.js +0 -308
  205. package/dist/src/tools/users.js.map +0 -1
  206. package/dist/src/types/client.d.ts +0 -223
  207. package/dist/src/types/client.d.ts.map +0 -1
  208. package/dist/src/types/client.js +0 -97
  209. package/dist/src/types/client.js.map +0 -1
  210. package/dist/src/types/enhanced.d.ts +0 -237
  211. package/dist/src/types/enhanced.d.ts.map +0 -1
  212. package/dist/src/types/enhanced.js +0 -49
  213. package/dist/src/types/enhanced.js.map +0 -1
  214. package/dist/src/types/index.d.ts +0 -160
  215. package/dist/src/types/index.d.ts.map +0 -1
  216. package/dist/src/types/index.js +0 -14
  217. package/dist/src/types/index.js.map +0 -1
  218. package/dist/src/types/mcp.d.ts +0 -178
  219. package/dist/src/types/mcp.d.ts.map +0 -1
  220. package/dist/src/types/mcp.js +0 -7
  221. package/dist/src/types/mcp.js.map +0 -1
  222. package/dist/src/types/requests.d.ts +0 -322
  223. package/dist/src/types/requests.d.ts.map +0 -1
  224. package/dist/src/types/requests.js +0 -8
  225. package/dist/src/types/requests.js.map +0 -1
  226. package/dist/src/types/tools.d.ts +0 -506
  227. package/dist/src/types/tools.d.ts.map +0 -1
  228. package/dist/src/types/tools.js +0 -8
  229. package/dist/src/types/tools.js.map +0 -1
  230. package/dist/src/types/wordpress.d.ts +0 -471
  231. package/dist/src/types/wordpress.d.ts.map +0 -1
  232. package/dist/src/types/wordpress.js +0 -14
  233. package/dist/src/types/wordpress.js.map +0 -1
  234. package/dist/src/utils/debug.d.ts +0 -71
  235. package/dist/src/utils/debug.d.ts.map +0 -1
  236. package/dist/src/utils/debug.js +0 -235
  237. package/dist/src/utils/debug.js.map +0 -1
  238. package/dist/src/utils/enhancedError.d.ts +0 -61
  239. package/dist/src/utils/enhancedError.d.ts.map +0 -1
  240. package/dist/src/utils/enhancedError.js +0 -221
  241. package/dist/src/utils/enhancedError.js.map +0 -1
  242. package/dist/src/utils/error.d.ts +0 -17
  243. package/dist/src/utils/error.d.ts.map +0 -1
  244. package/dist/src/utils/error.js +0 -108
  245. package/dist/src/utils/error.js.map +0 -1
  246. package/dist/src/utils/logger.d.ts +0 -106
  247. package/dist/src/utils/logger.d.ts.map +0 -1
  248. package/dist/src/utils/logger.js +0 -280
  249. package/dist/src/utils/logger.js.map +0 -1
  250. package/dist/src/utils/streaming.d.ts +0 -104
  251. package/dist/src/utils/streaming.d.ts.map +0 -1
  252. package/dist/src/utils/streaming.js +0 -331
  253. package/dist/src/utils/streaming.js.map +0 -1
  254. package/dist/src/utils/toolWrapper.d.ts +0 -42
  255. package/dist/src/utils/toolWrapper.d.ts.map +0 -1
  256. package/dist/src/utils/toolWrapper.js +0 -101
  257. package/dist/src/utils/toolWrapper.js.map +0 -1
  258. package/dist/src/utils/validation/core.d.ts +0 -21
  259. package/dist/src/utils/validation/core.d.ts.map +0 -1
  260. package/dist/src/utils/validation/core.js +0 -71
  261. package/dist/src/utils/validation/core.js.map +0 -1
  262. package/dist/src/utils/validation/index.d.ts +0 -25
  263. package/dist/src/utils/validation/index.d.ts.map +0 -1
  264. package/dist/src/utils/validation/index.js +0 -29
  265. package/dist/src/utils/validation/index.js.map +0 -1
  266. package/dist/src/utils/validation/network.d.ts +0 -19
  267. package/dist/src/utils/validation/network.d.ts.map +0 -1
  268. package/dist/src/utils/validation/network.js +0 -93
  269. package/dist/src/utils/validation/network.js.map +0 -1
  270. package/dist/src/utils/validation/rateLimit.d.ts +0 -21
  271. package/dist/src/utils/validation/rateLimit.d.ts.map +0 -1
  272. package/dist/src/utils/validation/rateLimit.js +0 -43
  273. package/dist/src/utils/validation/rateLimit.js.map +0 -1
  274. package/dist/src/utils/validation/security.d.ts +0 -29
  275. package/dist/src/utils/validation/security.d.ts.map +0 -1
  276. package/dist/src/utils/validation/security.js +0 -327
  277. package/dist/src/utils/validation/security.js.map +0 -1
  278. package/dist/src/utils/validation/wordpress.d.ts +0 -31
  279. package/dist/src/utils/validation/wordpress.d.ts.map +0 -1
  280. package/dist/src/utils/validation/wordpress.js +0 -146
  281. package/dist/src/utils/validation/wordpress.js.map +0 -1
  282. package/dist/src/utils/validation.d.ts +0 -15
  283. package/dist/src/utils/validation.d.ts.map +0 -1
  284. package/dist/src/utils/validation.js +0 -27
  285. package/dist/src/utils/validation.js.map +0 -1
  286. package/dist/tests/vitest.setup.d.ts +0 -6
  287. package/dist/tests/vitest.setup.d.ts.map +0 -1
  288. package/dist/tests/vitest.setup.js +0 -39
  289. package/dist/tests/vitest.setup.js.map +0 -1
@@ -1,193 +0,0 @@
1
- /**
2
- * HTTP Request Manager
3
- * Handles all HTTP operations, rate limiting, and retries
4
- */
5
- import { WordPressAPIError, RateLimitError } from "../../types/client.js";
6
- import { config } from "../../config/Config.js";
7
- import { BaseManager } from "./BaseManager.js";
8
- import { debug, startTimer } from "../../utils/debug.js";
9
- export class RequestManager extends BaseManager {
10
- stats;
11
- lastRequestTime = 0;
12
- requestInterval;
13
- authManager;
14
- constructor(clientConfig, authManager) {
15
- super(clientConfig);
16
- this.authManager = authManager;
17
- this.requestInterval = 60000 / config().security.rateLimit;
18
- this.stats = {
19
- totalRequests: 0,
20
- successfulRequests: 0,
21
- failedRequests: 0,
22
- averageResponseTime: 0,
23
- rateLimitHits: 0,
24
- authFailures: 0,
25
- };
26
- }
27
- /**
28
- * Make HTTP request with retry logic and rate limiting
29
- */
30
- async request(method, endpoint, data, options = {}) {
31
- const timer = startTimer();
32
- try {
33
- await this.enforceRateLimit();
34
- const response = await this.makeRequestWithRetry(method, endpoint, data, options);
35
- this.stats.successfulRequests++;
36
- this.updateAverageResponseTime(timer.end());
37
- return response;
38
- }
39
- catch (error) {
40
- this.stats.failedRequests++;
41
- this.handleError(error, `${method} ${endpoint}`);
42
- }
43
- finally {
44
- this.stats.totalRequests++;
45
- }
46
- }
47
- /**
48
- * Make request with retry logic
49
- */
50
- async makeRequestWithRetry(method, endpoint, data, options = {}) {
51
- let lastError;
52
- const maxRetries = options.retries ?? this.config.maxRetries ?? 3;
53
- for (let attempt = 1; attempt <= maxRetries; attempt++) {
54
- try {
55
- return await this.makeRequest(method, endpoint, data, options);
56
- }
57
- catch (error) {
58
- lastError = error;
59
- // Type guard for error-like objects
60
- const isErrorLike = (err) => {
61
- return typeof err === "object" && err !== null;
62
- };
63
- // Don't retry on authentication errors or client errors
64
- if ((isErrorLike(error) && error.statusCode && error.statusCode < 500) || attempt === maxRetries) {
65
- throw error;
66
- }
67
- const errorMessage = isErrorLike(error) && error.message ? error.message : String(error);
68
- debug.log(`Request failed (attempt ${attempt}/${maxRetries}):`, errorMessage);
69
- // Exponential backoff
70
- const delay = Math.min(1000 * Math.pow(2, attempt - 1), 5000);
71
- await new Promise((resolve) => setTimeout(resolve, delay));
72
- }
73
- }
74
- throw lastError;
75
- }
76
- /**
77
- * Make single HTTP request
78
- */
79
- async makeRequest(method, endpoint, data, options = {}) {
80
- const url = this.buildUrl(endpoint);
81
- const timeout = options.timeout ?? this.config.timeout ?? 30000;
82
- const controller = new AbortController();
83
- const timeoutId = setTimeout(() => controller.abort(), timeout);
84
- try {
85
- // Get authentication headers
86
- const authHeaders = await this.authManager.getAuthHeaders();
87
- const fetchOptions = {
88
- method,
89
- headers: {
90
- "Content-Type": "application/json",
91
- "User-Agent": "MCP-WordPress/1.1.1",
92
- ...authHeaders, // Add auth headers before custom headers
93
- ...options.headers,
94
- },
95
- signal: controller.signal,
96
- };
97
- if (data && method !== "GET") {
98
- if (data instanceof FormData ||
99
- (typeof data === "object" && data && "append" in data && typeof data.append === "function")) {
100
- // For FormData, don't set Content-Type (let fetch set it with boundary)
101
- if (fetchOptions.headers &&
102
- typeof fetchOptions.headers === "object" &&
103
- "Content-Type" in fetchOptions.headers) {
104
- delete fetchOptions.headers["Content-Type"];
105
- }
106
- fetchOptions.body = data;
107
- }
108
- else if (Buffer.isBuffer(data)) {
109
- // For Buffer data, keep Content-Type from headers
110
- fetchOptions.body = data;
111
- }
112
- else if (typeof data === "string") {
113
- fetchOptions.body = data;
114
- }
115
- else {
116
- fetchOptions.body = JSON.stringify(data);
117
- }
118
- }
119
- debug.log(`API Request: ${method} ${url}`);
120
- const response = await fetch(url, fetchOptions);
121
- if (!response.ok) {
122
- await this.handleErrorResponse(response);
123
- }
124
- const responseData = await response.json();
125
- return responseData;
126
- }
127
- finally {
128
- clearTimeout(timeoutId);
129
- }
130
- }
131
- /**
132
- * Handle HTTP error responses
133
- */
134
- async handleErrorResponse(response) {
135
- let errorData = {};
136
- try {
137
- const jsonData = await response.json();
138
- if (typeof jsonData === "object" && jsonData !== null) {
139
- errorData = jsonData;
140
- }
141
- }
142
- catch {
143
- // Ignore JSON parsing errors
144
- }
145
- const message = (typeof errorData.message === "string" ? errorData.message : undefined) ||
146
- `HTTP ${response.status}: ${response.statusText}`;
147
- const code = (typeof errorData.code === "string" ? errorData.code : undefined) || "http_error";
148
- if (response.status === 429) {
149
- this.stats.rateLimitHits++;
150
- throw new RateLimitError(message, Date.now() + 60000); // Retry after 1 minute
151
- }
152
- if (response.status === 401 || response.status === 403) {
153
- this.stats.authFailures++;
154
- }
155
- throw new WordPressAPIError(message, response.status, code, errorData);
156
- }
157
- /**
158
- * Build full URL from endpoint
159
- */
160
- buildUrl(endpoint) {
161
- const baseUrl = this.config.baseUrl.replace(/\/$/, "");
162
- const apiBase = "/wp-json/wp/v2";
163
- const cleanEndpoint = endpoint.startsWith("/") ? endpoint : `/${endpoint}`;
164
- return `${baseUrl}${apiBase}${cleanEndpoint}`;
165
- }
166
- /**
167
- * Enforce rate limiting
168
- */
169
- async enforceRateLimit() {
170
- const now = Date.now();
171
- const timeSinceLastRequest = now - this.lastRequestTime;
172
- if (timeSinceLastRequest < this.requestInterval) {
173
- const delay = this.requestInterval - timeSinceLastRequest;
174
- await new Promise((resolve) => setTimeout(resolve, delay));
175
- }
176
- this.lastRequestTime = Date.now();
177
- }
178
- /**
179
- * Update average response time
180
- */
181
- updateAverageResponseTime(responseTime) {
182
- const totalRequests = this.stats.successfulRequests;
183
- const currentAverage = this.stats.averageResponseTime;
184
- this.stats.averageResponseTime = (currentAverage * (totalRequests - 1) + responseTime) / totalRequests;
185
- }
186
- /**
187
- * Get request statistics
188
- */
189
- getStats() {
190
- return { ...this.stats };
191
- }
192
- }
193
- //# sourceMappingURL=RequestManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RequestManager.js","sourceRoot":"","sources":["../../../../src/client/managers/RequestManager.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Client Managers Index
3
- * Exports all manager classes for the WordPress client
4
- */
5
- export { BaseManager } from "./BaseManager.js";
6
- export { AuthenticationManager } from "./AuthenticationManager.js";
7
- export { RequestManager } from "./RequestManager.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/managers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Client Managers Index
3
- * Exports all manager classes for the WordPress client
4
- */
5
- export { BaseManager } from "./BaseManager.js";
6
- export { AuthenticationManager } from "./AuthenticationManager.js";
7
- export { RequestManager } from "./RequestManager.js";
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/client/managers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,155 +0,0 @@
1
- /**
2
- * Centralized Configuration Management
3
- *
4
- * Provides typed access to all environment variables and configuration options.
5
- * Centralizes configuration logic and eliminates scattered process.env access.
6
- */
7
- export interface AppConfig {
8
- readonly wordpress: {
9
- readonly siteUrl: string | undefined;
10
- readonly username: string | undefined;
11
- readonly appPassword: string | undefined;
12
- readonly password: string | undefined;
13
- readonly authMethod: string;
14
- readonly timeout: number;
15
- readonly maxRetries: number;
16
- readonly jwtSecret: string | undefined;
17
- readonly apiKey: string | undefined;
18
- readonly cookieNonce: string | undefined;
19
- readonly jwtPassword: string | undefined;
20
- };
21
- readonly app: {
22
- readonly nodeEnv: string;
23
- readonly isDevelopment: boolean;
24
- readonly isProduction: boolean;
25
- readonly isTest: boolean;
26
- readonly isDXT: boolean;
27
- readonly isCI: boolean;
28
- };
29
- readonly debug: {
30
- readonly enabled: boolean;
31
- readonly logLevel: string;
32
- };
33
- readonly cache: {
34
- readonly disabled: boolean;
35
- readonly ttl: number;
36
- readonly maxItems: number;
37
- readonly maxMemoryMB: number;
38
- };
39
- readonly security: {
40
- readonly rateLimitEnabled: boolean;
41
- readonly rateLimitRequests: number;
42
- readonly rateLimitWindow: number;
43
- readonly rateLimit: number;
44
- readonly strictMode: boolean;
45
- };
46
- readonly error: {
47
- readonly legacyLogsEnabled: boolean;
48
- };
49
- readonly testing: {
50
- readonly coverageTolerance: number;
51
- readonly skipPactTests: boolean;
52
- readonly performanceTest: boolean;
53
- };
54
- readonly ci: {
55
- readonly isCI: boolean;
56
- readonly provider: string | null;
57
- readonly isGitHubActions: boolean;
58
- readonly isTravis: boolean;
59
- readonly isCircleCI: boolean;
60
- };
61
- }
62
- /**
63
- * Centralized Configuration Class
64
- *
65
- * Singleton that provides type-safe access to all configuration values.
66
- * Replaces scattered process.env access throughout the codebase.
67
- */
68
- export declare class Config {
69
- private static instance;
70
- private readonly config;
71
- private constructor();
72
- /**
73
- * Get singleton instance
74
- */
75
- static getInstance(): Config;
76
- /**
77
- * Get configuration object (read-only)
78
- */
79
- get(): AppConfig;
80
- /**
81
- * Load and validate all configuration from environment
82
- */
83
- private loadConfiguration;
84
- /**
85
- * Check if a string value should be considered truthy
86
- * Accepts common truthy string representations
87
- */
88
- private isTruthy;
89
- /**
90
- * Detect if running in CI environment
91
- */
92
- private detectCIEnvironment;
93
- /**
94
- * Detect CI provider
95
- */
96
- private detectCIProvider;
97
- /**
98
- * Should log debug information?
99
- */
100
- shouldDebug(): boolean;
101
- /**
102
- * Should use caching?
103
- */
104
- shouldUseCache(): boolean;
105
- /**
106
- * Should log info messages? (not in test or DXT mode)
107
- */
108
- shouldLogInfo(): boolean;
109
- /**
110
- * Is WordPress configuration complete?
111
- */
112
- hasWordPressConfig(): boolean;
113
- /**
114
- * Get environment-appropriate timeout for operations
115
- */
116
- getOperationTimeout(): number;
117
- /**
118
- * Reset singleton (for testing)
119
- */
120
- static reset(): void;
121
- }
122
- /**
123
- * Global configuration instance getter
124
- * Use this throughout the application instead of process.env
125
- */
126
- export declare const config: () => AppConfig;
127
- /**
128
- * Configuration helper utilities
129
- */
130
- export declare const ConfigHelpers: {
131
- /**
132
- * Get config instance
133
- */
134
- get: () => Config;
135
- /**
136
- * Quick environment checks
137
- */
138
- isDev: () => boolean;
139
- isProd: () => boolean;
140
- isTest: () => boolean;
141
- isDXT: () => boolean;
142
- isCI: () => boolean;
143
- /**
144
- * Quick feature flags
145
- */
146
- shouldDebug: () => boolean;
147
- shouldUseCache: () => boolean;
148
- shouldLogInfo: () => boolean;
149
- hasWordPressConfig: () => boolean;
150
- /**
151
- * Get timeout for different operation types
152
- */
153
- getTimeout: (type?: "operation" | "upload" | "test") => number;
154
- };
155
- //# sourceMappingURL=Config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/config/Config.ts"],"names":[],"mappings":"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"}
@@ -1,215 +0,0 @@
1
- /**
2
- * Centralized Configuration Management
3
- *
4
- * Provides typed access to all environment variables and configuration options.
5
- * Centralizes configuration logic and eliminates scattered process.env access.
6
- */
7
- /**
8
- * Centralized Configuration Class
9
- *
10
- * Singleton that provides type-safe access to all configuration values.
11
- * Replaces scattered process.env access throughout the codebase.
12
- */
13
- export class Config {
14
- static instance = null;
15
- config;
16
- constructor() {
17
- this.config = this.loadConfiguration();
18
- }
19
- /**
20
- * Get singleton instance
21
- */
22
- static getInstance() {
23
- if (!Config.instance) {
24
- Config.instance = new Config();
25
- }
26
- return Config.instance;
27
- }
28
- /**
29
- * Get configuration object (read-only)
30
- */
31
- get() {
32
- return this.config;
33
- }
34
- /**
35
- * Load and validate all configuration from environment
36
- */
37
- loadConfiguration() {
38
- const nodeEnv = process.env.NODE_ENV || "development";
39
- return {
40
- wordpress: {
41
- siteUrl: process.env.WORDPRESS_SITE_URL,
42
- username: process.env.WORDPRESS_USERNAME,
43
- appPassword: process.env.WORDPRESS_APP_PASSWORD,
44
- password: process.env.WORDPRESS_PASSWORD,
45
- authMethod: process.env.WORDPRESS_AUTH_METHOD || "app-password",
46
- timeout: parseInt(process.env.WORDPRESS_TIMEOUT || "30000", 10),
47
- maxRetries: parseInt(process.env.WORDPRESS_MAX_RETRIES || "3", 10),
48
- jwtSecret: process.env.WORDPRESS_JWT_SECRET,
49
- apiKey: process.env.WORDPRESS_API_KEY,
50
- cookieNonce: process.env.WORDPRESS_COOKIE_NONCE,
51
- jwtPassword: process.env.WORDPRESS_JWT_PASSWORD,
52
- },
53
- app: {
54
- nodeEnv,
55
- isDevelopment: nodeEnv === "development",
56
- isProduction: nodeEnv === "production",
57
- isTest: nodeEnv === "test",
58
- isDXT: nodeEnv === "dxt",
59
- isCI: this.detectCIEnvironment(),
60
- },
61
- debug: {
62
- enabled: process.env.DEBUG === "true",
63
- logLevel: process.env.LOG_LEVEL || "info",
64
- },
65
- cache: {
66
- disabled: this.isTruthy(process.env.CACHE_DISABLED) || this.isTruthy(process.env.DISABLE_CACHE),
67
- ttl: parseInt(process.env.CACHE_TTL || "300", 10), // 5 minutes default
68
- maxItems: parseInt(process.env.CACHE_MAX_ITEMS || "1000", 10),
69
- maxMemoryMB: parseInt(process.env.CACHE_MAX_MEMORY_MB || "50", 10),
70
- },
71
- security: {
72
- rateLimitEnabled: process.env.RATE_LIMIT_ENABLED !== "false",
73
- rateLimitRequests: parseInt(process.env.RATE_LIMIT_REQUESTS || "100", 10),
74
- rateLimitWindow: parseInt(process.env.RATE_LIMIT_WINDOW || "60000", 10), // 1 minute
75
- rateLimit: parseInt(process.env.RATE_LIMIT || "60", 10),
76
- strictMode: process.env.SECURITY_STRICT_MODE === "true",
77
- },
78
- error: {
79
- legacyLogsEnabled: process.env.LEGACY_ERROR_LOGS !== "0",
80
- },
81
- testing: {
82
- coverageTolerance: parseFloat(process.env.COVERAGE_TOLERANCE || "1.0"),
83
- skipPactTests: process.env.SKIP_PACT_TESTS === "true",
84
- performanceTest: process.env.PERFORMANCE_TEST === "true",
85
- },
86
- ci: {
87
- isCI: this.detectCIEnvironment(),
88
- provider: this.detectCIProvider(),
89
- isGitHubActions: process.env.GITHUB_ACTIONS === "true",
90
- isTravis: process.env.TRAVIS === "true",
91
- isCircleCI: process.env.CIRCLECI === "true",
92
- },
93
- };
94
- }
95
- /**
96
- * Check if a string value should be considered truthy
97
- * Accepts common truthy string representations
98
- */
99
- isTruthy(value) {
100
- if (!value)
101
- return false;
102
- const lowerValue = value.trim().toLowerCase();
103
- return ["true", "1", "yes", "on", "enable", "enabled"].includes(lowerValue);
104
- }
105
- /**
106
- * Detect if running in CI environment
107
- */
108
- detectCIEnvironment() {
109
- return (process.env.CI === "true" ||
110
- process.env.NODE_ENV === "ci" ||
111
- process.env.GITHUB_ACTIONS === "true" ||
112
- process.env.TRAVIS === "true" ||
113
- process.env.CIRCLECI === "true");
114
- }
115
- /**
116
- * Detect CI provider
117
- */
118
- detectCIProvider() {
119
- if (process.env.GITHUB_ACTIONS === "true")
120
- return "github-actions";
121
- if (process.env.TRAVIS === "true")
122
- return "travis";
123
- if (process.env.CIRCLECI === "true")
124
- return "circleci";
125
- if (process.env.CI === "true")
126
- return "generic";
127
- return null;
128
- }
129
- // Convenience methods for common checks
130
- /**
131
- * Should log debug information?
132
- */
133
- shouldDebug() {
134
- return this.config.debug.enabled && !this.config.app.isDXT;
135
- }
136
- /**
137
- * Should use caching?
138
- */
139
- shouldUseCache() {
140
- return !this.config.cache.disabled;
141
- }
142
- /**
143
- * Should log info messages? (not in test or DXT mode)
144
- */
145
- shouldLogInfo() {
146
- return !this.config.app.isTest && !this.config.app.isDXT;
147
- }
148
- /**
149
- * Is WordPress configuration complete?
150
- */
151
- hasWordPressConfig() {
152
- const wp = this.config.wordpress;
153
- return !!(wp.siteUrl && wp.username && wp.appPassword);
154
- }
155
- /**
156
- * Get environment-appropriate timeout for operations
157
- */
158
- getOperationTimeout() {
159
- if (this.config.app.isTest)
160
- return 5000; // 5 seconds in tests
161
- if (this.config.app.isCI)
162
- return 30000; // 30 seconds in CI
163
- return 60000; // 1 minute in development/production
164
- }
165
- /**
166
- * Reset singleton (for testing)
167
- */
168
- static reset() {
169
- Config.instance = null;
170
- }
171
- }
172
- /**
173
- * Global configuration instance getter
174
- * Use this throughout the application instead of process.env
175
- */
176
- export const config = () => Config.getInstance().get();
177
- /**
178
- * Configuration helper utilities
179
- */
180
- export const ConfigHelpers = {
181
- /**
182
- * Get config instance
183
- */
184
- get: () => Config.getInstance(),
185
- /**
186
- * Quick environment checks
187
- */
188
- isDev: () => config().app.isDevelopment,
189
- isProd: () => config().app.isProduction,
190
- isTest: () => config().app.isTest,
191
- isDXT: () => config().app.isDXT,
192
- isCI: () => config().app.isCI,
193
- /**
194
- * Quick feature flags
195
- */
196
- shouldDebug: () => Config.getInstance().shouldDebug(),
197
- shouldUseCache: () => Config.getInstance().shouldUseCache(),
198
- shouldLogInfo: () => Config.getInstance().shouldLogInfo(),
199
- hasWordPressConfig: () => Config.getInstance().hasWordPressConfig(),
200
- /**
201
- * Get timeout for different operation types
202
- */
203
- getTimeout: (type = "operation") => {
204
- const instance = Config.getInstance();
205
- switch (type) {
206
- case "upload":
207
- return instance.getOperationTimeout() * 5; // 5x longer for uploads
208
- case "test":
209
- return config().app.isCI ? 30000 : 10000;
210
- default:
211
- return instance.getOperationTimeout();
212
- }
213
- },
214
- };
215
- //# sourceMappingURL=Config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/config/Config.ts"],"names":[],"mappings":"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"}