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.
- package/README.md +1 -1
- package/dist/cache/CacheInvalidation.d.ts +25 -6
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +168 -16
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
- package/dist/cache/HttpCacheWrapper.js +3 -4
- package/dist/cache/HttpCacheWrapper.js.map +1 -1
- package/dist/cache/SEOCacheManager.d.ts +150 -0
- package/dist/cache/SEOCacheManager.d.ts.map +1 -0
- package/dist/cache/SEOCacheManager.js +275 -0
- package/dist/cache/SEOCacheManager.js.map +1 -0
- package/dist/client/SEOWordPressClient.d.ts +164 -0
- package/dist/client/SEOWordPressClient.d.ts.map +1 -0
- package/dist/client/SEOWordPressClient.js +674 -0
- package/dist/client/SEOWordPressClient.js.map +1 -0
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +50 -20
- package/dist/client/api.js.map +1 -1
- package/dist/client/auth.js +19 -19
- package/dist/client/auth.js.map +1 -1
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +14 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/managers/AuthManager.d.ts +39 -0
- package/dist/client/managers/AuthManager.d.ts.map +1 -0
- package/dist/client/managers/AuthManager.js +142 -0
- package/dist/client/managers/AuthManager.js.map +1 -0
- package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
- package/dist/client/managers/AuthenticationManager.js +10 -9
- package/dist/client/managers/AuthenticationManager.js.map +1 -1
- package/dist/client/managers/BaseManager.d.ts.map +1 -1
- package/dist/client/managers/BaseManager.js +12 -0
- package/dist/client/managers/BaseManager.js.map +1 -1
- package/dist/client/managers/ComposedAuthenticationManager.d.ts +94 -0
- package/dist/client/managers/ComposedAuthenticationManager.d.ts.map +1 -0
- package/dist/client/managers/ComposedAuthenticationManager.js +340 -0
- package/dist/client/managers/ComposedAuthenticationManager.js.map +1 -0
- package/dist/client/managers/ComposedManagerFactory.d.ts +104 -0
- package/dist/client/managers/ComposedManagerFactory.d.ts.map +1 -0
- package/dist/client/managers/ComposedManagerFactory.js +180 -0
- package/dist/client/managers/ComposedManagerFactory.js.map +1 -0
- package/dist/client/managers/ComposedRequestManager.d.ts +82 -0
- package/dist/client/managers/ComposedRequestManager.d.ts.map +1 -0
- package/dist/client/managers/ComposedRequestManager.js +260 -0
- package/dist/client/managers/ComposedRequestManager.js.map +1 -0
- package/dist/client/managers/JWTAuthImplementation.d.ts +86 -0
- package/dist/client/managers/JWTAuthImplementation.d.ts.map +1 -0
- package/dist/client/managers/JWTAuthImplementation.js +240 -0
- package/dist/client/managers/JWTAuthImplementation.js.map +1 -0
- package/dist/client/managers/ManagersIndex.d.ts +6 -0
- package/dist/client/managers/ManagersIndex.d.ts.map +1 -0
- package/dist/client/managers/ManagersIndex.js +6 -0
- package/dist/client/managers/ManagersIndex.js.map +1 -0
- package/dist/client/managers/RequestManager.d.ts.map +1 -1
- package/dist/client/managers/RequestManager.js +5 -3
- package/dist/client/managers/RequestManager.js.map +1 -1
- package/dist/client/managers/composed/MigrationAdapter.d.ts +80 -0
- package/dist/client/managers/composed/MigrationAdapter.d.ts.map +1 -0
- package/dist/client/managers/composed/MigrationAdapter.js +214 -0
- package/dist/client/managers/composed/MigrationAdapter.js.map +1 -0
- package/dist/client/managers/composed/index.d.ts +23 -0
- package/dist/client/managers/composed/index.d.ts.map +1 -0
- package/dist/client/managers/composed/index.js +26 -0
- package/dist/client/managers/composed/index.js.map +1 -0
- package/dist/client/managers/implementations/ConfigurationProviderImpl.d.ts +27 -0
- package/dist/client/managers/implementations/ConfigurationProviderImpl.d.ts.map +1 -0
- package/dist/client/managers/implementations/ConfigurationProviderImpl.js +41 -0
- package/dist/client/managers/implementations/ConfigurationProviderImpl.js.map +1 -0
- package/dist/client/managers/implementations/ErrorHandlerImpl.d.ts +31 -0
- package/dist/client/managers/implementations/ErrorHandlerImpl.d.ts.map +1 -0
- package/dist/client/managers/implementations/ErrorHandlerImpl.js +73 -0
- package/dist/client/managers/implementations/ErrorHandlerImpl.js.map +1 -0
- package/dist/client/managers/implementations/ParameterValidatorImpl.d.ts +47 -0
- package/dist/client/managers/implementations/ParameterValidatorImpl.d.ts.map +1 -0
- package/dist/client/managers/implementations/ParameterValidatorImpl.js +141 -0
- package/dist/client/managers/implementations/ParameterValidatorImpl.js.map +1 -0
- package/dist/client/managers/interfaces/ManagerInterfaces.d.ts +147 -0
- package/dist/client/managers/interfaces/ManagerInterfaces.d.ts.map +1 -0
- package/dist/client/managers/interfaces/ManagerInterfaces.js +6 -0
- package/dist/client/managers/interfaces/ManagerInterfaces.js.map +1 -0
- package/dist/config/Config.d.ts +30 -0
- package/dist/config/Config.d.ts.map +1 -1
- package/dist/config/Config.js +30 -0
- package/dist/config/Config.js.map +1 -1
- package/dist/config/ConfigurationSchema.d.ts +75 -198
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +17 -17
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +2 -2
- package/dist/config/ServerConfiguration.d.ts.map +1 -1
- package/dist/config/ServerConfiguration.js +15 -13
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +11 -0
- package/dist/config/index.js.map +1 -0
- package/dist/docs/DocumentationGenerator.js +2 -2
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/dxt-entry.js +3 -3
- package/dist/dxt-entry.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -37
- package/dist/index.js.map +1 -1
- package/dist/performance/MetricsCollector.d.ts.map +1 -1
- package/dist/performance/MetricsCollector.js +5 -4
- package/dist/performance/MetricsCollector.js.map +1 -1
- package/dist/security/AISecurityScanner.js +7 -7
- package/dist/security/AISecurityScanner.js.map +1 -1
- package/dist/security/AutomatedRemediation.d.ts.map +1 -1
- package/dist/security/AutomatedRemediation.js +11 -11
- package/dist/security/AutomatedRemediation.js.map +1 -1
- package/dist/security/InputValidator.d.ts +50 -126
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +9 -9
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/security/SecurityCIPipeline.d.ts +47 -5
- package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
- package/dist/security/SecurityCIPipeline.js +390 -49
- package/dist/security/SecurityCIPipeline.js.map +1 -1
- package/dist/security/SecurityConfigManager.js +10 -10
- package/dist/security/SecurityConfigManager.js.map +1 -1
- package/dist/security/SecurityMonitoring.js +4 -4
- package/dist/security/SecurityMonitoring.js.map +1 -1
- package/dist/security/SecurityReviewer.d.ts.map +1 -1
- package/dist/security/SecurityReviewer.js +13 -6
- package/dist/security/SecurityReviewer.js.map +1 -1
- package/dist/security/index.js +3 -3
- package/dist/security/index.js.map +1 -1
- package/dist/server/ConnectionTester.js +5 -5
- package/dist/server/ConnectionTester.js.map +1 -1
- package/dist/server/ToolRegistry.d.ts +2 -2
- package/dist/server/ToolRegistry.d.ts.map +1 -1
- package/dist/server/ToolRegistry.js +7 -6
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +9 -0
- package/dist/server/index.js.map +1 -0
- package/dist/tools/BaseToolManager.d.ts.map +1 -1
- package/dist/tools/BaseToolManager.js +11 -11
- package/dist/tools/BaseToolManager.js.map +1 -1
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +7 -7
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +14 -14
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/media.d.ts.map +1 -1
- package/dist/tools/media.js +14 -11
- package/dist/tools/media.js.map +1 -1
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +12 -12
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/performance.d.ts.map +1 -1
- package/dist/tools/performance.js +13 -11
- package/dist/tools/performance.js.map +1 -1
- package/dist/tools/posts/PostHandlers.d.ts.map +1 -1
- package/dist/tools/posts/PostHandlers.js +16 -16
- package/dist/tools/posts/PostHandlers.js.map +1 -1
- package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -1
- package/dist/tools/posts/index.d.ts.map +1 -1
- package/dist/tools/seo/BulkOperations.d.ts +113 -0
- package/dist/tools/seo/BulkOperations.d.ts.map +1 -0
- package/dist/tools/seo/BulkOperations.js +398 -0
- package/dist/tools/seo/BulkOperations.js.map +1 -0
- package/dist/tools/seo/SEOHandlers.d.ts +55 -0
- package/dist/tools/seo/SEOHandlers.d.ts.map +1 -0
- package/dist/tools/seo/SEOHandlers.js +255 -0
- package/dist/tools/seo/SEOHandlers.js.map +1 -0
- package/dist/tools/seo/SEOToolDefinitions.d.ts +59 -0
- package/dist/tools/seo/SEOToolDefinitions.d.ts.map +1 -0
- package/dist/tools/seo/SEOToolDefinitions.js +385 -0
- package/dist/tools/seo/SEOToolDefinitions.js.map +1 -0
- package/dist/tools/seo/SEOTools.d.ts +203 -0
- package/dist/tools/seo/SEOTools.d.ts.map +1 -0
- package/dist/tools/seo/SEOTools.js +708 -0
- package/dist/tools/seo/SEOTools.js.map +1 -0
- package/dist/tools/seo/analyzers/ContentAnalyzer.d.ts +94 -0
- package/dist/tools/seo/analyzers/ContentAnalyzer.d.ts.map +1 -0
- package/dist/tools/seo/analyzers/ContentAnalyzer.js +402 -0
- package/dist/tools/seo/analyzers/ContentAnalyzer.js.map +1 -0
- package/dist/tools/seo/auditors/SiteAuditor.d.ts +121 -0
- package/dist/tools/seo/auditors/SiteAuditor.d.ts.map +1 -0
- package/dist/tools/seo/auditors/SiteAuditor.js +600 -0
- package/dist/tools/seo/auditors/SiteAuditor.js.map +1 -0
- package/dist/tools/seo/generators/MetaGenerator.d.ts +128 -0
- package/dist/tools/seo/generators/MetaGenerator.d.ts.map +1 -0
- package/dist/tools/seo/generators/MetaGenerator.js +547 -0
- package/dist/tools/seo/generators/MetaGenerator.js.map +1 -0
- package/dist/tools/seo/generators/SchemaGenerator.d.ts +204 -0
- package/dist/tools/seo/generators/SchemaGenerator.d.ts.map +1 -0
- package/dist/tools/seo/generators/SchemaGenerator.js +670 -0
- package/dist/tools/seo/generators/SchemaGenerator.js.map +1 -0
- package/dist/tools/seo/index.d.ts +17 -0
- package/dist/tools/seo/index.d.ts.map +1 -0
- package/dist/tools/seo/index.js +18 -0
- package/dist/tools/seo/index.js.map +1 -0
- package/dist/tools/seo/optimizers/InternalLinkingSuggester.d.ts +186 -0
- package/dist/tools/seo/optimizers/InternalLinkingSuggester.d.ts.map +1 -0
- package/dist/tools/seo/optimizers/InternalLinkingSuggester.js +683 -0
- package/dist/tools/seo/optimizers/InternalLinkingSuggester.js.map +1 -0
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +12 -12
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/taxonomies.d.ts.map +1 -1
- package/dist/tools/taxonomies.js +20 -20
- package/dist/tools/taxonomies.js.map +1 -1
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +12 -12
- package/dist/tools/users.js.map +1 -1
- package/dist/types/client.d.ts +8 -6
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js.map +1 -1
- package/dist/types/seo.d.ts +473 -0
- package/dist/types/seo.d.ts.map +1 -0
- package/dist/types/seo.js +94 -0
- package/dist/types/seo.js.map +1 -0
- package/dist/utils/enhancedError.js +1 -1
- package/dist/utils/enhancedError.js.map +1 -1
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.js +0 -1
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.js +3 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts +2 -2
- package/dist/utils/toolWrapper.js +8 -8
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation/core.d.ts.map +1 -1
- package/dist/utils/validation/core.js.map +1 -1
- package/dist/utils/validation/index.d.ts.map +1 -1
- package/dist/utils/validation/index.js.map +1 -1
- package/dist/utils/validation/network.js +3 -3
- package/dist/utils/validation/network.js.map +1 -1
- package/dist/utils/validation/rateLimit.js.map +1 -1
- package/dist/utils/validation/security.js.map +1 -1
- package/dist/utils/validation/wordpress.js.map +1 -1
- package/dist/utils/version.d.ts +144 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +318 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +21 -55
- package/src/cache/CacheInvalidation.ts +183 -20
- package/src/cache/HttpCacheWrapper.ts +8 -5
- package/src/cache/SEOCacheManager.ts +330 -0
- package/src/cache/__tests__/CacheInvalidation.test.ts +6 -11
- package/src/cache/__tests__/CachedWordPressClient.test.ts +37 -62
- package/src/client/SEOWordPressClient.ts +876 -0
- package/src/client/api.ts +50 -21
- package/src/client/auth.ts +19 -19
- package/src/client/index.ts +16 -0
- package/src/client/managers/AuthManager.ts +175 -0
- package/src/client/managers/AuthenticationManager.ts +16 -14
- package/src/client/managers/BaseManager.ts +24 -5
- package/src/client/managers/ComposedAuthenticationManager.ts +409 -0
- package/src/client/managers/ComposedManagerFactory.ts +231 -0
- package/src/client/managers/ComposedRequestManager.ts +336 -0
- package/src/client/managers/JWTAuthImplementation.ts +326 -0
- package/src/client/managers/ManagersIndex.ts +6 -0
- package/src/client/managers/RequestManager.ts +9 -7
- package/src/client/managers/composed/MigrationAdapter.ts +263 -0
- package/src/client/managers/composed/index.ts +47 -0
- package/src/client/managers/implementations/ConfigurationProviderImpl.ts +52 -0
- package/src/client/managers/implementations/ErrorHandlerImpl.ts +102 -0
- package/src/client/managers/implementations/ParameterValidatorImpl.ts +221 -0
- package/src/client/managers/interfaces/ManagerInterfaces.ts +171 -0
- package/src/config/Config.ts +63 -0
- package/src/config/ConfigurationSchema.ts +17 -17
- package/src/config/ServerConfiguration.ts +18 -16
- package/src/config/index.ts +13 -0
- package/src/docs/DocumentationGenerator.ts +2 -2
- package/src/dxt-entry.ts +3 -3
- package/src/index.ts +43 -43
- package/src/performance/MetricsCollector.ts +15 -11
- package/src/security/AISecurityScanner.ts +7 -7
- package/src/security/AutomatedRemediation.ts +13 -11
- package/src/security/InputValidator.ts +10 -9
- package/src/security/SecurityCIPipeline.ts +494 -56
- package/src/security/SecurityConfigManager.ts +10 -10
- package/src/security/SecurityMonitoring.ts +5 -5
- package/src/security/SecurityReviewer.ts +13 -6
- package/src/security/index.ts +3 -3
- package/src/server/ConnectionTester.ts +5 -5
- package/src/server/ToolRegistry.ts +9 -8
- package/src/server/index.ts +10 -0
- package/src/tools/BaseToolManager.ts +55 -83
- package/src/tools/auth.ts +21 -12
- package/src/tools/comments.ts +23 -19
- package/src/tools/index.ts +1 -0
- package/src/tools/media.ts +23 -20
- package/src/tools/pages.ts +20 -13
- package/src/tools/performance.ts +101 -32
- package/src/tools/posts/PostHandlers.ts +23 -23
- package/src/tools/posts/PostToolDefinitions.ts +1 -1
- package/src/tools/posts/index.ts +2 -2
- package/src/tools/seo/BulkOperations.ts +557 -0
- package/src/tools/seo/SEOHandlers.ts +296 -0
- package/src/tools/seo/SEOToolDefinitions.ts +402 -0
- package/src/tools/seo/SEOTools.ts +871 -0
- package/src/tools/seo/analyzers/ContentAnalyzer.ts +493 -0
- package/src/tools/seo/auditors/SiteAuditor.ts +787 -0
- package/src/tools/seo/generators/MetaGenerator.ts +694 -0
- package/src/tools/seo/generators/SchemaGenerator.ts +955 -0
- package/src/tools/seo/index.ts +47 -0
- package/src/tools/seo/optimizers/InternalLinkingSuggester.ts +934 -0
- package/src/tools/site.ts +27 -26
- package/src/tools/taxonomies.ts +29 -25
- package/src/tools/users.ts +20 -13
- package/src/types/client.ts +8 -6
- package/src/types/seo.ts +546 -0
- package/src/utils/enhancedError.ts +1 -1
- package/src/utils/error.ts +1 -2
- package/src/utils/index.ts +23 -0
- package/src/utils/logger.ts +3 -3
- package/src/utils/toolWrapper.ts +10 -10
- package/src/utils/validation/core.ts +2 -2
- package/src/utils/validation/index.ts +2 -2
- package/src/utils/validation/network.ts +5 -5
- package/src/utils/validation/rateLimit.ts +1 -1
- package/src/utils/validation/security.ts +1 -1
- package/src/utils/validation/wordpress.ts +1 -1
- 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"}
|