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,340 @@
1
+ /**
2
+ * Composed Authentication Manager
3
+ * Uses composition instead of inheritance for better flexibility and testability
4
+ */
5
+ import { AuthenticationError } from "../../types/client.js";
6
+ import { AUTH_METHODS } from "../../types/wordpress.js";
7
+ import { debug } from "../../utils/debug.js";
8
+ import { ConfigurationProviderImpl } from "./implementations/ConfigurationProviderImpl.js";
9
+ import { ErrorHandlerImpl } from "./implementations/ErrorHandlerImpl.js";
10
+ import { ParameterValidatorImpl } from "./implementations/ParameterValidatorImpl.js";
11
+ export class ComposedAuthenticationManager {
12
+ dependencies;
13
+ isAuth = false;
14
+ authToken = null;
15
+ tokenExpiry = null;
16
+ lastAuthAttempt = null;
17
+ authMethod;
18
+ constructor(dependencies) {
19
+ this.dependencies = dependencies;
20
+ this.authMethod = this.getAuthMethodFromConfig();
21
+ this.validateAuthConfiguration();
22
+ }
23
+ /**
24
+ * Factory method to create ComposedAuthenticationManager with default implementations
25
+ */
26
+ static create(clientConfig) {
27
+ const configProvider = new ConfigurationProviderImpl(clientConfig);
28
+ const errorHandler = new ErrorHandlerImpl(configProvider);
29
+ const validator = new ParameterValidatorImpl();
30
+ return new ComposedAuthenticationManager({
31
+ configProvider,
32
+ errorHandler,
33
+ validator,
34
+ });
35
+ }
36
+ /**
37
+ * Authenticate with the configured method
38
+ */
39
+ async authenticate() {
40
+ try {
41
+ this.lastAuthAttempt = new Date();
42
+ switch (this.authMethod) {
43
+ case "app-password":
44
+ return await this.authenticateAppPassword();
45
+ case "jwt":
46
+ return await this.authenticateJWT();
47
+ case "basic":
48
+ return await this.authenticateBasic();
49
+ case "api-key":
50
+ return await this.authenticateApiKey();
51
+ default:
52
+ throw new AuthenticationError(`Unsupported authentication method: ${this.authMethod}`, this.authMethod);
53
+ }
54
+ }
55
+ catch (error) {
56
+ this.isAuth = false;
57
+ this.authToken = null;
58
+ this.dependencies.errorHandler.handleError(error, "authentication");
59
+ }
60
+ }
61
+ /**
62
+ * Check if currently authenticated
63
+ */
64
+ isAuthenticated() {
65
+ if (!this.isAuth) {
66
+ return false;
67
+ }
68
+ // Check token expiry for JWT
69
+ if (this.authMethod === "jwt" && this.tokenExpiry) {
70
+ if (new Date() > this.tokenExpiry) {
71
+ this.isAuth = false;
72
+ this.authToken = null;
73
+ return false;
74
+ }
75
+ }
76
+ return true;
77
+ }
78
+ /**
79
+ * Get authentication headers for requests
80
+ */
81
+ getAuthHeaders() {
82
+ const headers = {};
83
+ switch (this.authMethod) {
84
+ case "app-password":
85
+ case "basic":
86
+ headers.Authorization = this.getBasicAuthHeader();
87
+ break;
88
+ case "jwt":
89
+ if (this.authToken) {
90
+ headers.Authorization = `Bearer ${this.authToken}`;
91
+ }
92
+ break;
93
+ case "api-key":
94
+ const apiKey = this.getApiKeyFromConfig();
95
+ if (apiKey) {
96
+ headers["X-API-Key"] = apiKey;
97
+ }
98
+ break;
99
+ }
100
+ return headers;
101
+ }
102
+ /**
103
+ * Handle authentication failure
104
+ */
105
+ async handleAuthFailure(error) {
106
+ debug.log("Handling authentication failure", { error: String(error), method: this.authMethod });
107
+ this.isAuth = false;
108
+ this.authToken = null;
109
+ // For JWT, try to refresh token
110
+ if (this.authMethod === "jwt") {
111
+ try {
112
+ return await this.refreshJWTToken();
113
+ }
114
+ catch (_refreshError) {
115
+ // If refresh fails, try full re-authentication
116
+ return await this.authenticate();
117
+ }
118
+ }
119
+ // For other methods, try full re-authentication
120
+ return await this.authenticate();
121
+ }
122
+ /**
123
+ * Get authentication status
124
+ */
125
+ getAuthStatus() {
126
+ return {
127
+ isAuthenticated: this.isAuthenticated(),
128
+ method: this.authMethod,
129
+ lastAuthAttempt: this.lastAuthAttempt,
130
+ tokenExpiry: this.tokenExpiry,
131
+ };
132
+ }
133
+ /**
134
+ * App Password authentication
135
+ */
136
+ async authenticateAppPassword() {
137
+ const credentials = this.getAppPasswordCredentials();
138
+ // App passwords are stateless - just validate credentials format
139
+ this.dependencies.validator.validateString(credentials.username, "username", { required: true });
140
+ this.dependencies.validator.validateString(credentials.appPassword, "appPassword", { required: true });
141
+ this.isAuth = true;
142
+ debug.log("App password authentication configured");
143
+ return true;
144
+ }
145
+ /**
146
+ * JWT authentication
147
+ */
148
+ async authenticateJWT() {
149
+ const credentials = this.getJWTCredentials();
150
+ const tokenEndpoint = "/jwt-auth/v1/token";
151
+ try {
152
+ const response = await fetch(`${this.dependencies.configProvider.config.baseUrl}/wp-json${tokenEndpoint}`, {
153
+ method: "POST",
154
+ headers: {
155
+ "Content-Type": "application/json",
156
+ },
157
+ body: JSON.stringify({
158
+ username: credentials.username,
159
+ password: credentials.password,
160
+ }),
161
+ });
162
+ if (!response.ok) {
163
+ throw new AuthenticationError(`JWT authentication failed: ${response.statusText}`, "jwt");
164
+ }
165
+ const data = (await response.json());
166
+ if (!data.token) {
167
+ throw new AuthenticationError("No token received from JWT authentication", "jwt");
168
+ }
169
+ this.authToken = data.token;
170
+ this.isAuth = true;
171
+ // Set token expiry (default to 24 hours if not provided)
172
+ const expiresIn = data.expires_in || 86400; // 24 hours in seconds
173
+ this.tokenExpiry = new Date(Date.now() + expiresIn * 1000);
174
+ debug.log("JWT authentication successful", {
175
+ expiresIn,
176
+ expiry: this.tokenExpiry.toISOString(),
177
+ });
178
+ return true;
179
+ }
180
+ catch (error) {
181
+ throw new AuthenticationError(`JWT authentication failed: ${String(error)}`, "jwt");
182
+ }
183
+ }
184
+ /**
185
+ * Basic authentication
186
+ */
187
+ async authenticateBasic() {
188
+ const credentials = this.getBasicCredentials();
189
+ this.dependencies.validator.validateString(credentials.username, "username", { required: true });
190
+ this.dependencies.validator.validateString(credentials.password, "password", { required: true });
191
+ this.isAuth = true;
192
+ debug.log("Basic authentication configured");
193
+ return true;
194
+ }
195
+ /**
196
+ * API Key authentication
197
+ */
198
+ async authenticateApiKey() {
199
+ const apiKey = this.getApiKeyFromConfig();
200
+ this.dependencies.validator.validateString(apiKey, "apiKey", { required: true });
201
+ this.isAuth = true;
202
+ debug.log("API key authentication configured");
203
+ return true;
204
+ }
205
+ /**
206
+ * Refresh JWT token
207
+ */
208
+ async refreshJWTToken() {
209
+ if (!this.authToken) {
210
+ throw new AuthenticationError("No token to refresh", "jwt");
211
+ }
212
+ const refreshEndpoint = "/jwt-auth/v1/token/validate";
213
+ try {
214
+ const response = await fetch(`${this.dependencies.configProvider.config.baseUrl}/wp-json${refreshEndpoint}`, {
215
+ method: "POST",
216
+ headers: {
217
+ Authorization: `Bearer ${this.authToken}`,
218
+ "Content-Type": "application/json",
219
+ },
220
+ });
221
+ if (response.ok) {
222
+ // Token is still valid
223
+ debug.log("JWT token validated successfully");
224
+ return true;
225
+ }
226
+ // Token invalid, need to re-authenticate
227
+ this.authToken = null;
228
+ return await this.authenticateJWT();
229
+ }
230
+ catch (error) {
231
+ throw new AuthenticationError(`JWT token refresh failed: ${String(error)}`, "jwt");
232
+ }
233
+ }
234
+ /**
235
+ * Get Basic auth header
236
+ */
237
+ getBasicAuthHeader() {
238
+ let credentials;
239
+ if (this.authMethod === "app-password") {
240
+ credentials = this.getAppPasswordCredentials();
241
+ const auth = `${credentials.username}:${credentials.appPassword}`;
242
+ return `Basic ${Buffer.from(auth).toString("base64")}`;
243
+ }
244
+ else {
245
+ credentials = this.getBasicCredentials();
246
+ const auth = `${credentials.username}:${credentials.password}`;
247
+ return `Basic ${Buffer.from(auth).toString("base64")}`;
248
+ }
249
+ }
250
+ /**
251
+ * Extract auth method from configuration
252
+ */
253
+ getAuthMethodFromConfig() {
254
+ const authConfig = this.dependencies.configProvider.config.auth;
255
+ if (authConfig.method && Object.values(AUTH_METHODS).includes(authConfig.method)) {
256
+ return authConfig.method;
257
+ }
258
+ // Auto-detect based on available credentials
259
+ if (authConfig.appPassword)
260
+ return "app-password";
261
+ if (authConfig.secret || authConfig.password)
262
+ return "jwt";
263
+ if (authConfig.apiKey)
264
+ return "api-key";
265
+ return "basic"; // fallback
266
+ }
267
+ /**
268
+ * Validate authentication configuration
269
+ */
270
+ validateAuthConfiguration() {
271
+ const authConfig = this.dependencies.configProvider.config.auth;
272
+ if (!authConfig) {
273
+ throw new AuthenticationError("No authentication configuration provided", this.authMethod);
274
+ }
275
+ switch (this.authMethod) {
276
+ case "app-password":
277
+ if (!authConfig.username || !authConfig.appPassword) {
278
+ throw new AuthenticationError("App password authentication requires username and appPassword", this.authMethod);
279
+ }
280
+ break;
281
+ case "jwt":
282
+ if (!authConfig.username || !authConfig.password) {
283
+ throw new AuthenticationError("JWT authentication requires username and password", this.authMethod);
284
+ }
285
+ break;
286
+ case "basic":
287
+ if (!authConfig.username || !authConfig.password) {
288
+ throw new AuthenticationError("Basic authentication requires username and password", this.authMethod);
289
+ }
290
+ break;
291
+ case "api-key":
292
+ if (!authConfig.apiKey) {
293
+ throw new AuthenticationError("API key authentication requires apiKey", this.authMethod);
294
+ }
295
+ break;
296
+ }
297
+ }
298
+ /**
299
+ * Get app password credentials from config
300
+ */
301
+ getAppPasswordCredentials() {
302
+ const authConfig = this.dependencies.configProvider.config.auth;
303
+ return {
304
+ username: authConfig.username,
305
+ appPassword: authConfig.appPassword,
306
+ };
307
+ }
308
+ /**
309
+ * Get JWT credentials from config
310
+ */
311
+ getJWTCredentials() {
312
+ const authConfig = this.dependencies.configProvider.config.auth;
313
+ const credentials = {
314
+ username: authConfig.username,
315
+ password: authConfig.password,
316
+ };
317
+ if (authConfig.secret) {
318
+ credentials.jwtSecret = authConfig.secret;
319
+ }
320
+ return credentials;
321
+ }
322
+ /**
323
+ * Get basic credentials from config
324
+ */
325
+ getBasicCredentials() {
326
+ const authConfig = this.dependencies.configProvider.config.auth;
327
+ return {
328
+ username: authConfig.username,
329
+ password: authConfig.password,
330
+ };
331
+ }
332
+ /**
333
+ * Get API key from config
334
+ */
335
+ getApiKeyFromConfig() {
336
+ const authConfig = this.dependencies.configProvider.config.auth;
337
+ return authConfig.apiKey || "";
338
+ }
339
+ }
340
+ //# sourceMappingURL=ComposedAuthenticationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposedAuthenticationManager.js","sourceRoot":"","sources":["../../../src/client/managers/ComposedAuthenticationManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Composed Manager Factory
3
+ * Factory for creating managers using composition instead of inheritance
4
+ */
5
+ import type { WordPressClientConfig } from "../../types/client.js";
6
+ import type { ManagerFactory, ConfigurationProvider, ErrorHandler, ParameterValidator, AuthenticationProvider, RequestHandler, ManagerCompositionConfig } from "./interfaces/ManagerInterfaces.js";
7
+ export declare class ComposedManagerFactory implements ManagerFactory {
8
+ /**
9
+ * Create configuration provider
10
+ */
11
+ createConfigurationProvider(config: WordPressClientConfig): ConfigurationProvider;
12
+ /**
13
+ * Create error handler
14
+ */
15
+ createErrorHandler(config: WordPressClientConfig): ErrorHandler;
16
+ /**
17
+ * Create parameter validator
18
+ */
19
+ createParameterValidator(): ParameterValidator;
20
+ /**
21
+ * Create authentication provider
22
+ */
23
+ createAuthenticationProvider(config: WordPressClientConfig): AuthenticationProvider;
24
+ /**
25
+ * Create request handler
26
+ */
27
+ createRequestHandler(config: WordPressClientConfig, authProvider: AuthenticationProvider): RequestHandler;
28
+ /**
29
+ * Create a complete composed client with all managers
30
+ */
31
+ createComposedClient(config: ManagerCompositionConfig): Promise<ComposedWordPressClient>;
32
+ }
33
+ /**
34
+ * Complete Composed WordPress Client
35
+ * Demonstrates how to combine all composed managers
36
+ */
37
+ export interface ComposedWordPressClientDependencies {
38
+ configProvider: ConfigurationProvider;
39
+ errorHandler: ErrorHandler;
40
+ validator: ParameterValidator;
41
+ authProvider: AuthenticationProvider;
42
+ requestHandler: RequestHandler;
43
+ }
44
+ export declare class ComposedWordPressClient {
45
+ private dependencies;
46
+ private initialized;
47
+ constructor(dependencies: ComposedWordPressClientDependencies);
48
+ /**
49
+ * Initialize the client
50
+ */
51
+ initialize(): Promise<void>;
52
+ /**
53
+ * Make HTTP requests (delegates to request manager)
54
+ */
55
+ request<T>(method: string, endpoint: string, data?: unknown, options?: unknown): Promise<T>;
56
+ /**
57
+ * Get client configuration
58
+ */
59
+ get config(): WordPressClientConfig;
60
+ /**
61
+ * Check authentication status
62
+ */
63
+ isAuthenticated(): boolean;
64
+ /**
65
+ * Get request statistics
66
+ */
67
+ getStats(): unknown;
68
+ /**
69
+ * WordPress-specific convenience methods
70
+ */
71
+ /**
72
+ * Get posts
73
+ */
74
+ getPosts(params?: unknown): Promise<unknown[]>;
75
+ /**
76
+ * Get single post
77
+ */
78
+ getPost(id: number): Promise<unknown>;
79
+ /**
80
+ * Create post
81
+ */
82
+ createPost(postData: unknown): Promise<unknown>;
83
+ /**
84
+ * Update post
85
+ */
86
+ updatePost(id: number, postData: unknown): Promise<unknown>;
87
+ /**
88
+ * Delete post
89
+ */
90
+ deletePost(id: number, force?: boolean): Promise<unknown>;
91
+ /**
92
+ * Cleanup resources
93
+ */
94
+ dispose(): void;
95
+ /**
96
+ * Ensure client is initialized
97
+ */
98
+ private ensureInitialized;
99
+ }
100
+ /**
101
+ * Convenience factory function
102
+ */
103
+ export declare function createComposedWordPressClient(config: WordPressClientConfig): Promise<ComposedWordPressClient>;
104
+ //# sourceMappingURL=ComposedManagerFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposedManagerFactory.d.ts","sourceRoot":"","sources":["../../../src/client/managers/ComposedManagerFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,wBAAwB,EACzB,MAAM,mCAAmC,CAAC;AAQ3C,qBAAa,sBAAuB,YAAW,cAAc;IAC3D;;OAEG;IACH,2BAA2B,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB;IAIjF;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,YAAY;IAK/D;;OAEG;IACH,wBAAwB,IAAI,kBAAkB;IAI9C;;OAEG;IACH,4BAA4B,CAAC,MAAM,EAAE,qBAAqB,GAAG,sBAAsB;IAInF;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,EAAE,YAAY,EAAE,sBAAsB,GAAG,cAAc;IAIzG;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAmB/F;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,cAAc,EAAE,qBAAqB,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,YAAY,EAAE,sBAAsB,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,qBAAa,uBAAuB;IAGtB,OAAO,CAAC,YAAY;IAFhC,OAAO,CAAC,WAAW,CAAkB;gBAEjB,YAAY,EAAE,mCAAmC;IAErE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAKjG;;OAEG;IACH,IAAI,MAAM,IAAI,qBAAqB,CAElC;IAED;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IAEH;;OAEG;IACG,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIpD;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3C;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtE;;OAEG;IACH,OAAO,IAAI,IAAI;IAUf;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAK1B;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAKnH"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Composed Manager Factory
3
+ * Factory for creating managers using composition instead of inheritance
4
+ */
5
+ import { ConfigurationProviderImpl } from "./implementations/ConfigurationProviderImpl.js";
6
+ import { ErrorHandlerImpl } from "./implementations/ErrorHandlerImpl.js";
7
+ import { ParameterValidatorImpl } from "./implementations/ParameterValidatorImpl.js";
8
+ import { ComposedAuthenticationManager } from "./ComposedAuthenticationManager.js";
9
+ import { ComposedRequestManager } from "./ComposedRequestManager.js";
10
+ export class ComposedManagerFactory {
11
+ /**
12
+ * Create configuration provider
13
+ */
14
+ createConfigurationProvider(config) {
15
+ return new ConfigurationProviderImpl(config);
16
+ }
17
+ /**
18
+ * Create error handler
19
+ */
20
+ createErrorHandler(config) {
21
+ const configProvider = this.createConfigurationProvider(config);
22
+ return new ErrorHandlerImpl(configProvider);
23
+ }
24
+ /**
25
+ * Create parameter validator
26
+ */
27
+ createParameterValidator() {
28
+ return new ParameterValidatorImpl();
29
+ }
30
+ /**
31
+ * Create authentication provider
32
+ */
33
+ createAuthenticationProvider(config) {
34
+ return ComposedAuthenticationManager.create(config);
35
+ }
36
+ /**
37
+ * Create request handler
38
+ */
39
+ createRequestHandler(config, authProvider) {
40
+ return ComposedRequestManager.create(config, authProvider);
41
+ }
42
+ /**
43
+ * Create a complete composed client with all managers
44
+ */
45
+ async createComposedClient(config) {
46
+ const configProvider = this.createConfigurationProvider(config.clientConfig);
47
+ const errorHandler = config.customErrorHandler || this.createErrorHandler(config.clientConfig);
48
+ const validator = config.customValidator || this.createParameterValidator();
49
+ const authProvider = config.customAuthProvider || this.createAuthenticationProvider(config.clientConfig);
50
+ // Initialize authentication
51
+ await authProvider.authenticate();
52
+ const requestHandler = this.createRequestHandler(config.clientConfig, authProvider);
53
+ return new ComposedWordPressClient({
54
+ configProvider,
55
+ errorHandler,
56
+ validator,
57
+ authProvider,
58
+ requestHandler,
59
+ });
60
+ }
61
+ }
62
+ export class ComposedWordPressClient {
63
+ dependencies;
64
+ initialized = false;
65
+ constructor(dependencies) {
66
+ this.dependencies = dependencies;
67
+ }
68
+ /**
69
+ * Initialize the client
70
+ */
71
+ async initialize() {
72
+ if (this.initialized) {
73
+ return;
74
+ }
75
+ try {
76
+ // Initialize all components
77
+ await this.dependencies.authProvider.authenticate();
78
+ if ("initialize" in this.dependencies.requestHandler &&
79
+ typeof this.dependencies.requestHandler.initialize === "function") {
80
+ await this.dependencies.requestHandler.initialize();
81
+ }
82
+ this.initialized = true;
83
+ this.dependencies.errorHandler.logSuccess("client initialization");
84
+ }
85
+ catch (error) {
86
+ this.dependencies.errorHandler.handleError(error, "client initialization");
87
+ }
88
+ }
89
+ /**
90
+ * Make HTTP requests (delegates to request manager)
91
+ */
92
+ async request(method, endpoint, data, options) {
93
+ this.ensureInitialized();
94
+ return this.dependencies.requestHandler.request(method, endpoint, data, options);
95
+ }
96
+ /**
97
+ * Get client configuration
98
+ */
99
+ get config() {
100
+ return this.dependencies.configProvider.config;
101
+ }
102
+ /**
103
+ * Check authentication status
104
+ */
105
+ isAuthenticated() {
106
+ return this.dependencies.authProvider.isAuthenticated();
107
+ }
108
+ /**
109
+ * Get request statistics
110
+ */
111
+ getStats() {
112
+ return this.dependencies.requestHandler.getStats();
113
+ }
114
+ /**
115
+ * WordPress-specific convenience methods
116
+ */
117
+ /**
118
+ * Get posts
119
+ */
120
+ async getPosts(params) {
121
+ return this.request("GET", "/wp/v2/posts", params);
122
+ }
123
+ /**
124
+ * Get single post
125
+ */
126
+ async getPost(id) {
127
+ this.dependencies.validator.validateWordPressId(id, "post ID");
128
+ return this.request("GET", `/wp/v2/posts/${id}`);
129
+ }
130
+ /**
131
+ * Create post
132
+ */
133
+ async createPost(postData) {
134
+ this.dependencies.validator.validateRequired(postData, ["title", "content"]);
135
+ return this.request("POST", "/wp/v2/posts", postData);
136
+ }
137
+ /**
138
+ * Update post
139
+ */
140
+ async updatePost(id, postData) {
141
+ this.dependencies.validator.validateWordPressId(id, "post ID");
142
+ return this.request("PUT", `/wp/v2/posts/${id}`, postData);
143
+ }
144
+ /**
145
+ * Delete post
146
+ */
147
+ async deletePost(id, force = false) {
148
+ this.dependencies.validator.validateWordPressId(id, "post ID");
149
+ const params = force ? { force: true } : {};
150
+ return this.request("DELETE", `/wp/v2/posts/${id}`, params);
151
+ }
152
+ /**
153
+ * Cleanup resources
154
+ */
155
+ dispose() {
156
+ if ("dispose" in this.dependencies.requestHandler &&
157
+ typeof this.dependencies.requestHandler.dispose === "function") {
158
+ this.dependencies.requestHandler.dispose();
159
+ }
160
+ this.initialized = false;
161
+ }
162
+ /**
163
+ * Ensure client is initialized
164
+ */
165
+ ensureInitialized() {
166
+ if (!this.initialized) {
167
+ throw new Error("ComposedWordPressClient not initialized. Call initialize() first.");
168
+ }
169
+ }
170
+ }
171
+ /**
172
+ * Convenience factory function
173
+ */
174
+ export async function createComposedWordPressClient(config) {
175
+ const factory = new ComposedManagerFactory();
176
+ const client = await factory.createComposedClient({ clientConfig: config });
177
+ await client.initialize();
178
+ return client;
179
+ }
180
+ //# sourceMappingURL=ComposedManagerFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposedManagerFactory.js","sourceRoot":"","sources":["../../../src/client/managers/ComposedManagerFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,OAAO,sBAAsB;IACjC;;OAEG;IACH,2BAA2B,CAAC,MAA6B;QACvD,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAA6B;QAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,OAAO,IAAI,sBAAsB,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,4BAA4B,CAAC,MAA6B;QACxD,OAAO,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAA6B,EAAE,YAAoC;QACtF,OAAO,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAgC;QACzD,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/F,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC5E,MAAM,YAAY,GAAG,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEzG,4BAA4B;QAC5B,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QAElC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAEpF,OAAO,IAAI,uBAAuB,CAAC;YACjC,cAAc;YACd,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,cAAc;SACf,CAAC,CAAC;IACL,CAAC;CACF;AAcD,MAAM,OAAO,uBAAuB;IAGd;IAFZ,WAAW,GAAY,KAAK,CAAC;IAErC,YAAoB,YAAiD;QAAjD,iBAAY,GAAZ,YAAY,CAAqC;IAAG,CAAC;IAEzE;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YAEpD,IACE,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc;gBAChD,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,KAAK,UAAU,EACjE,CAAC;gBACD,MAAO,IAAI,CAAC,YAAY,CAAC,cAAsD,CAAC,UAAU,EAAE,CAAC;YAC/F,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,QAAgB,EAAE,IAAc,EAAE,OAAiB;QAClF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAI,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IAEH;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAgB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAiB;QAChC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAmC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,QAAiB;QAC5C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,QAAiB,KAAK;QACjD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IACE,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc;YAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,KAAK,UAAU,EAC9D,CAAC;YACA,IAAI,CAAC,YAAY,CAAC,cAA0C,CAAC,OAAO,EAAE,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,MAA6B;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC"}