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,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JWT Authentication Implementation
|
|
3
|
+
* Complete JWT authentication with token refresh and RequestManager integration
|
|
4
|
+
*/
|
|
5
|
+
import { AuthenticationError } from "../../types/client.js";
|
|
6
|
+
import { AUTH_METHODS } from "../../types/wordpress.js";
|
|
7
|
+
import { LoggerFactory } from "../../utils/logger.js";
|
|
8
|
+
export class JWTAuthImplementation {
|
|
9
|
+
requestManager;
|
|
10
|
+
authConfig;
|
|
11
|
+
logger = LoggerFactory.api();
|
|
12
|
+
jwtToken = null;
|
|
13
|
+
tokenExpiry = null;
|
|
14
|
+
refreshTokenValue = null;
|
|
15
|
+
constructor(requestManager, authConfig) {
|
|
16
|
+
this.requestManager = requestManager;
|
|
17
|
+
this.authConfig = authConfig;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Complete JWT authentication implementation
|
|
21
|
+
*/
|
|
22
|
+
async authenticateJWT() {
|
|
23
|
+
if (!this.authConfig.username || !this.authConfig.password) {
|
|
24
|
+
throw new AuthenticationError("JWT authentication requires username and password", AUTH_METHODS.JWT);
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
this.logger.info("Starting JWT authentication", {
|
|
28
|
+
username: this.authConfig.username,
|
|
29
|
+
endpoint: "jwt-auth/v1/token"
|
|
30
|
+
});
|
|
31
|
+
const response = await this.requestManager.request("POST", "jwt-auth/v1/token", {
|
|
32
|
+
username: this.authConfig.username,
|
|
33
|
+
password: this.authConfig.password,
|
|
34
|
+
}, {
|
|
35
|
+
skipAuth: true, // Don't use auth headers for the auth request itself
|
|
36
|
+
timeout: 10000,
|
|
37
|
+
});
|
|
38
|
+
if (!response.token) {
|
|
39
|
+
throw new AuthenticationError("JWT token not received in response", AUTH_METHODS.JWT);
|
|
40
|
+
}
|
|
41
|
+
// Store the JWT token
|
|
42
|
+
this.jwtToken = response.token;
|
|
43
|
+
// Calculate token expiry (default to 24 hours if not provided)
|
|
44
|
+
const expiresInSeconds = response.expires_in || (24 * 60 * 60);
|
|
45
|
+
this.tokenExpiry = Date.now() + (expiresInSeconds * 1000);
|
|
46
|
+
this.logger.info("JWT authentication successful", {
|
|
47
|
+
user: response.user_nicename,
|
|
48
|
+
expiresAt: new Date(this.tokenExpiry).toISOString(),
|
|
49
|
+
});
|
|
50
|
+
// Test the token by validating it
|
|
51
|
+
await this.validateToken();
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
this.jwtToken = null;
|
|
55
|
+
this.tokenExpiry = null;
|
|
56
|
+
this.logger.error("JWT authentication failed", {
|
|
57
|
+
error: error instanceof Error ? error.message : String(error),
|
|
58
|
+
});
|
|
59
|
+
if (error instanceof Error) {
|
|
60
|
+
throw new AuthenticationError(`JWT authentication failed: ${error.message}`, AUTH_METHODS.JWT);
|
|
61
|
+
}
|
|
62
|
+
throw new AuthenticationError("JWT authentication failed", AUTH_METHODS.JWT);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Validate JWT token
|
|
67
|
+
*/
|
|
68
|
+
async validateToken() {
|
|
69
|
+
if (!this.jwtToken) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const response = await this.requestManager.request("POST", "jwt-auth/v1/token/validate", {}, {
|
|
74
|
+
headers: {
|
|
75
|
+
Authorization: `Bearer ${this.jwtToken}`,
|
|
76
|
+
},
|
|
77
|
+
timeout: 5000,
|
|
78
|
+
});
|
|
79
|
+
const isValid = response.data.status === 200;
|
|
80
|
+
if (!isValid) {
|
|
81
|
+
this.logger.warn("JWT token validation failed", { response });
|
|
82
|
+
this.jwtToken = null;
|
|
83
|
+
this.tokenExpiry = null;
|
|
84
|
+
}
|
|
85
|
+
return isValid;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
this.logger.warn("JWT token validation error", {
|
|
89
|
+
error: error instanceof Error ? error.message : String(error),
|
|
90
|
+
});
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Refresh JWT token
|
|
96
|
+
*/
|
|
97
|
+
async refreshToken() {
|
|
98
|
+
if (!this.jwtToken) {
|
|
99
|
+
throw new AuthenticationError("No JWT token to refresh", AUTH_METHODS.JWT);
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
this.logger.debug("Refreshing JWT token");
|
|
103
|
+
// Some JWT implementations support refresh endpoints
|
|
104
|
+
// First try the refresh endpoint if available
|
|
105
|
+
try {
|
|
106
|
+
const refreshResponse = await this.requestManager.request("POST", "jwt-auth/v1/token/refresh", {}, {
|
|
107
|
+
headers: {
|
|
108
|
+
Authorization: `Bearer ${this.jwtToken}`,
|
|
109
|
+
},
|
|
110
|
+
timeout: 5000,
|
|
111
|
+
});
|
|
112
|
+
if (refreshResponse.token) {
|
|
113
|
+
this.jwtToken = refreshResponse.token;
|
|
114
|
+
const expiresInSeconds = refreshResponse.expires_in || (24 * 60 * 60);
|
|
115
|
+
this.tokenExpiry = Date.now() + (expiresInSeconds * 1000);
|
|
116
|
+
this.logger.info("JWT token refreshed successfully", {
|
|
117
|
+
expiresAt: new Date(this.tokenExpiry).toISOString(),
|
|
118
|
+
});
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (_refreshError) {
|
|
123
|
+
this.logger.debug("JWT refresh endpoint not available, falling back to re-authentication");
|
|
124
|
+
}
|
|
125
|
+
// Fallback: Re-authenticate with original credentials
|
|
126
|
+
if (!this.authConfig.username || !this.authConfig.password) {
|
|
127
|
+
throw new AuthenticationError("Cannot refresh JWT token: original credentials not available", AUTH_METHODS.JWT);
|
|
128
|
+
}
|
|
129
|
+
this.logger.debug("Re-authenticating to refresh JWT token");
|
|
130
|
+
await this.authenticateJWT();
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
this.jwtToken = null;
|
|
134
|
+
this.tokenExpiry = null;
|
|
135
|
+
this.logger.error("JWT token refresh failed", {
|
|
136
|
+
error: error instanceof Error ? error.message : String(error),
|
|
137
|
+
});
|
|
138
|
+
throw new AuthenticationError(`JWT token refresh failed: ${error instanceof Error ? error.message : 'Unknown error'}`, AUTH_METHODS.JWT);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Check if JWT token is expired
|
|
143
|
+
*/
|
|
144
|
+
isTokenExpired() {
|
|
145
|
+
if (!this.tokenExpiry) {
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
// Consider token expired if it expires within 5 minutes (300000ms)
|
|
149
|
+
const buffer = 5 * 60 * 1000;
|
|
150
|
+
return Date.now() >= (this.tokenExpiry - buffer);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get current JWT token
|
|
154
|
+
*/
|
|
155
|
+
getToken() {
|
|
156
|
+
return this.jwtToken;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get token expiry timestamp
|
|
160
|
+
*/
|
|
161
|
+
getTokenExpiry() {
|
|
162
|
+
return this.tokenExpiry;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Clear JWT token and expiry
|
|
166
|
+
*/
|
|
167
|
+
clearToken() {
|
|
168
|
+
this.jwtToken = null;
|
|
169
|
+
this.tokenExpiry = null;
|
|
170
|
+
this.refreshTokenValue = null;
|
|
171
|
+
this.logger.debug("JWT token cleared");
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get JWT auth headers
|
|
175
|
+
*/
|
|
176
|
+
getAuthHeaders() {
|
|
177
|
+
if (!this.jwtToken) {
|
|
178
|
+
return {};
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
Authorization: `Bearer ${this.jwtToken}`,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Check if we have a valid JWT token
|
|
186
|
+
*/
|
|
187
|
+
hasValidToken() {
|
|
188
|
+
return this.jwtToken !== null && !this.isTokenExpired();
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Automatic token refresh if needed
|
|
192
|
+
*/
|
|
193
|
+
async ensureValidToken() {
|
|
194
|
+
if (!this.jwtToken) {
|
|
195
|
+
// No token, need to authenticate
|
|
196
|
+
await this.authenticateJWT();
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (this.isTokenExpired()) {
|
|
200
|
+
// Token expired, need to refresh
|
|
201
|
+
await this.refreshToken();
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// Token is still valid
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Logout and invalidate token
|
|
208
|
+
*/
|
|
209
|
+
async logout() {
|
|
210
|
+
if (!this.jwtToken) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
try {
|
|
214
|
+
// Try to invalidate the token on the server
|
|
215
|
+
await this.requestManager.request("POST", "jwt-auth/v1/token/invalidate", {}, {
|
|
216
|
+
headers: this.getAuthHeaders(),
|
|
217
|
+
timeout: 5000,
|
|
218
|
+
});
|
|
219
|
+
this.logger.info("JWT token invalidated on server");
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
this.logger.warn("Failed to invalidate JWT token on server", {
|
|
223
|
+
error: error instanceof Error ? error.message : String(error),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
this.clearToken();
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get token information
|
|
230
|
+
*/
|
|
231
|
+
getTokenInfo() {
|
|
232
|
+
return {
|
|
233
|
+
hasToken: this.jwtToken !== null,
|
|
234
|
+
isExpired: this.isTokenExpired(),
|
|
235
|
+
expiresAt: this.tokenExpiry ? new Date(this.tokenExpiry).toISOString() : null,
|
|
236
|
+
expiresIn: this.tokenExpiry ? Math.max(0, this.tokenExpiry - Date.now()) : null,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=JWTAuthImplementation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JWTAuthImplementation.js","sourceRoot":"","sources":["../../../src/client/managers/JWTAuthImplementation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManagersIndex.d.ts","sourceRoot":"","sources":["../../../src/client/managers/ManagersIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManagersIndex.js","sourceRoot":"","sources":["../../../src/client/managers/ManagersIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestManager.d.ts","sourceRoot":"","sources":["../../../src/client/managers/RequestManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RequestManager.d.ts","sourceRoot":"","sources":["../../../src/client/managers/RequestManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAGxG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,WAAW,CAAwB;gBAE/B,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB;IAgBnF;;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;IAoBhH;;OAEG;YACW,oBAAoB;IAqClC;;OAEG;YACW,WAAW;IAkEzB;;OAEG;YACW,mBAAmB;IA6BjC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;YACW,gBAAgB;IAY9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAOjC;;OAEG;IACH,QAAQ,IAAI,WAAW;CAGxB"}
|
|
@@ -6,6 +6,7 @@ import { WordPressAPIError, RateLimitError } from "../../types/client.js";
|
|
|
6
6
|
import { config } from "../../config/Config.js";
|
|
7
7
|
import { BaseManager } from "./BaseManager.js";
|
|
8
8
|
import { debug, startTimer } from "../../utils/debug.js";
|
|
9
|
+
import { getUserAgent } from "../../utils/version.js";
|
|
9
10
|
export class RequestManager extends BaseManager {
|
|
10
11
|
stats;
|
|
11
12
|
lastRequestTime = 0;
|
|
@@ -22,6 +23,7 @@ export class RequestManager extends BaseManager {
|
|
|
22
23
|
averageResponseTime: 0,
|
|
23
24
|
rateLimitHits: 0,
|
|
24
25
|
authFailures: 0,
|
|
26
|
+
errors: 0,
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
@@ -36,9 +38,9 @@ export class RequestManager extends BaseManager {
|
|
|
36
38
|
this.updateAverageResponseTime(timer.end());
|
|
37
39
|
return response;
|
|
38
40
|
}
|
|
39
|
-
catch (
|
|
41
|
+
catch (_error) {
|
|
40
42
|
this.stats.failedRequests++;
|
|
41
|
-
this.handleError(
|
|
43
|
+
this.handleError(_error, `${method} ${endpoint}`);
|
|
42
44
|
}
|
|
43
45
|
finally {
|
|
44
46
|
this.stats.totalRequests++;
|
|
@@ -88,7 +90,7 @@ export class RequestManager extends BaseManager {
|
|
|
88
90
|
method,
|
|
89
91
|
headers: {
|
|
90
92
|
"Content-Type": "application/json",
|
|
91
|
-
"User-Agent":
|
|
93
|
+
"User-Agent": getUserAgent(),
|
|
92
94
|
...authHeaders, // Add auth headers before custom headers
|
|
93
95
|
...options.headers,
|
|
94
96
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestManager.js","sourceRoot":"","sources":["../../../src/client/managers/RequestManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RequestManager.js","sourceRoot":"","sources":["../../../src/client/managers/RequestManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Adapter
|
|
3
|
+
* Provides backward compatibility while transitioning from inheritance to composition
|
|
4
|
+
*/
|
|
5
|
+
import type { WordPressClientConfig, HTTPMethod } from "../../../types/client.js";
|
|
6
|
+
import { RequestManager } from "../RequestManager.js";
|
|
7
|
+
import { AuthenticationManager } from "../AuthenticationManager.js";
|
|
8
|
+
import { ComposedAuthenticationManager } from "../ComposedAuthenticationManager.js";
|
|
9
|
+
/**
|
|
10
|
+
* Adapter that wraps composed managers to provide the same interface as inheritance-based ones
|
|
11
|
+
*/
|
|
12
|
+
export declare class RequestManagerAdapter {
|
|
13
|
+
private composedManager;
|
|
14
|
+
constructor(clientConfig: WordPressClientConfig, authManager: AuthenticationManager | ComposedAuthenticationManager);
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the adapter
|
|
17
|
+
*/
|
|
18
|
+
initialize(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Delegate request method to composed manager
|
|
21
|
+
*/
|
|
22
|
+
request<T>(method: HTTPMethod, endpoint: string, data?: unknown, options?: unknown): Promise<T>;
|
|
23
|
+
/**
|
|
24
|
+
* Delegate stats method
|
|
25
|
+
*/
|
|
26
|
+
getStats(): unknown;
|
|
27
|
+
/**
|
|
28
|
+
* Delegate reset stats method
|
|
29
|
+
*/
|
|
30
|
+
resetStats(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Cleanup method
|
|
33
|
+
*/
|
|
34
|
+
dispose(): void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Migration utilities for gradual transition
|
|
38
|
+
*/
|
|
39
|
+
export declare class MigrationAdapter {
|
|
40
|
+
/**
|
|
41
|
+
* Create managers using the new composition approach but with backward-compatible interface
|
|
42
|
+
*/
|
|
43
|
+
static createCompatibleManagers(config: WordPressClientConfig): Promise<{
|
|
44
|
+
requestManager: RequestManagerAdapter;
|
|
45
|
+
authManager: ComposedAuthenticationManager;
|
|
46
|
+
}>;
|
|
47
|
+
/**
|
|
48
|
+
* Factory method that returns either old or new managers based on feature flag
|
|
49
|
+
*/
|
|
50
|
+
static createManagers(config: WordPressClientConfig, useComposition?: boolean): Promise<{
|
|
51
|
+
requestManager: RequestManager | RequestManagerAdapter;
|
|
52
|
+
authManager: AuthenticationManager | ComposedAuthenticationManager;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a manager is using the new composed approach
|
|
56
|
+
*/
|
|
57
|
+
static isComposed(manager: unknown): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get migration progress information
|
|
60
|
+
*/
|
|
61
|
+
static getMigrationStatus(managers: unknown[]): {
|
|
62
|
+
total: number;
|
|
63
|
+
composed: number;
|
|
64
|
+
inheritance: number;
|
|
65
|
+
percentage: number;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Performance comparison between inheritance and composition approaches
|
|
69
|
+
*/
|
|
70
|
+
static performanceComparison(config: WordPressClientConfig, iterations?: number): Promise<{
|
|
71
|
+
inheritance: number;
|
|
72
|
+
composition: number;
|
|
73
|
+
improvement: string;
|
|
74
|
+
}>;
|
|
75
|
+
/**
|
|
76
|
+
* Migration guide generator
|
|
77
|
+
*/
|
|
78
|
+
static generateMigrationGuide(): string;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=MigrationAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationAdapter.d.ts","sourceRoot":"","sources":["../../../../src/client/managers/composed/MigrationAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AAEpF;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAAyB;gBAEpC,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,GAAG,6BAA6B;IAcnH;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IASrG;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;WACU,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC;QAC5E,cAAc,EAAE,qBAAqB,CAAC;QACtC,WAAW,EAAE,6BAA6B,CAAC;KAC5C,CAAC;IAaF;;OAEG;WACU,cAAc,CACzB,MAAM,EAAE,qBAAqB,EAC7B,cAAc,GAAE,OAAc,GAC7B,OAAO,CAAC;QACT,cAAc,EAAE,cAAc,GAAG,qBAAqB,CAAC;QACvD,WAAW,EAAE,qBAAqB,GAAG,6BAA6B,CAAC;KACpE,CAAC;IASF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAQ5C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG;QAC9C,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACpB;IAcD;;OAEG;WACU,qBAAqB,CAChC,MAAM,EAAE,qBAAqB,EAC7B,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAqBF;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI,MAAM;CAkFxC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Adapter
|
|
3
|
+
* Provides backward compatibility while transitioning from inheritance to composition
|
|
4
|
+
*/
|
|
5
|
+
import { ComposedRequestManager } from "../ComposedRequestManager.js";
|
|
6
|
+
import { ComposedAuthenticationManager } from "../ComposedAuthenticationManager.js";
|
|
7
|
+
/**
|
|
8
|
+
* Adapter that wraps composed managers to provide the same interface as inheritance-based ones
|
|
9
|
+
*/
|
|
10
|
+
export class RequestManagerAdapter {
|
|
11
|
+
composedManager;
|
|
12
|
+
constructor(clientConfig, authManager) {
|
|
13
|
+
// If the authManager is the old inheritance-based one, create a composed one
|
|
14
|
+
let composedAuthManager;
|
|
15
|
+
if (authManager instanceof ComposedAuthenticationManager) {
|
|
16
|
+
composedAuthManager = authManager;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
// Create composed auth manager from config
|
|
20
|
+
composedAuthManager = ComposedAuthenticationManager.create(clientConfig);
|
|
21
|
+
}
|
|
22
|
+
this.composedManager = ComposedRequestManager.create(clientConfig, composedAuthManager);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the adapter
|
|
26
|
+
*/
|
|
27
|
+
async initialize() {
|
|
28
|
+
await this.composedManager.initialize();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Delegate request method to composed manager
|
|
32
|
+
*/
|
|
33
|
+
async request(method, endpoint, data, options) {
|
|
34
|
+
return this.composedManager.request(method, endpoint, data, options);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Delegate stats method
|
|
38
|
+
*/
|
|
39
|
+
getStats() {
|
|
40
|
+
return this.composedManager.getStats();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Delegate reset stats method
|
|
44
|
+
*/
|
|
45
|
+
resetStats() {
|
|
46
|
+
this.composedManager.resetStats();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Cleanup method
|
|
50
|
+
*/
|
|
51
|
+
dispose() {
|
|
52
|
+
this.composedManager.dispose();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Migration utilities for gradual transition
|
|
57
|
+
*/
|
|
58
|
+
export class MigrationAdapter {
|
|
59
|
+
/**
|
|
60
|
+
* Create managers using the new composition approach but with backward-compatible interface
|
|
61
|
+
*/
|
|
62
|
+
static async createCompatibleManagers(config) {
|
|
63
|
+
const authManager = ComposedAuthenticationManager.create(config);
|
|
64
|
+
await authManager.authenticate();
|
|
65
|
+
const requestManager = new RequestManagerAdapter(config, authManager);
|
|
66
|
+
await requestManager.initialize();
|
|
67
|
+
return {
|
|
68
|
+
requestManager,
|
|
69
|
+
authManager,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Factory method that returns either old or new managers based on feature flag
|
|
74
|
+
*/
|
|
75
|
+
static async createManagers(config, useComposition = true) {
|
|
76
|
+
if (useComposition) {
|
|
77
|
+
return MigrationAdapter.createCompatibleManagers(config);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Return old inheritance-based managers (simplified for now)
|
|
81
|
+
throw new Error("Legacy managers not available in this implementation");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if a manager is using the new composed approach
|
|
86
|
+
*/
|
|
87
|
+
static isComposed(manager) {
|
|
88
|
+
return (manager instanceof ComposedAuthenticationManager ||
|
|
89
|
+
manager instanceof ComposedRequestManager ||
|
|
90
|
+
manager instanceof RequestManagerAdapter);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get migration progress information
|
|
94
|
+
*/
|
|
95
|
+
static getMigrationStatus(managers) {
|
|
96
|
+
const total = managers.length;
|
|
97
|
+
const composed = managers.filter((manager) => MigrationAdapter.isComposed(manager)).length;
|
|
98
|
+
const inheritance = total - composed;
|
|
99
|
+
const percentage = total > 0 ? Math.round((composed / total) * 100) : 0;
|
|
100
|
+
return {
|
|
101
|
+
total,
|
|
102
|
+
composed,
|
|
103
|
+
inheritance,
|
|
104
|
+
percentage,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Performance comparison between inheritance and composition approaches
|
|
109
|
+
*/
|
|
110
|
+
static async performanceComparison(config, iterations = 100) {
|
|
111
|
+
// Running performance comparison with iterations
|
|
112
|
+
// Test composition approach only (inheritance baseline would require old managers)
|
|
113
|
+
const compositionStart = performance.now();
|
|
114
|
+
for (let i = 0; i < iterations; i++) {
|
|
115
|
+
const authManager = ComposedAuthenticationManager.create(config);
|
|
116
|
+
const requestManager = ComposedRequestManager.create(config, authManager);
|
|
117
|
+
// Simulate usage
|
|
118
|
+
authManager.isAuthenticated();
|
|
119
|
+
requestManager.getStats();
|
|
120
|
+
}
|
|
121
|
+
const compositionTime = performance.now() - compositionStart;
|
|
122
|
+
return {
|
|
123
|
+
inheritance: 0, // Would require old managers to measure
|
|
124
|
+
composition: compositionTime,
|
|
125
|
+
improvement: "Composition pattern implemented",
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Migration guide generator
|
|
130
|
+
*/
|
|
131
|
+
static generateMigrationGuide() {
|
|
132
|
+
return `
|
|
133
|
+
# Migration Guide: Inheritance to Composition
|
|
134
|
+
|
|
135
|
+
## Overview
|
|
136
|
+
This migration guide helps transition from inheritance-based managers to composition-based managers.
|
|
137
|
+
|
|
138
|
+
## Benefits of Composition
|
|
139
|
+
1. **Better Testability**: Each component can be tested in isolation
|
|
140
|
+
2. **Improved Flexibility**: Components can be mixed and matched
|
|
141
|
+
3. **SOLID Principles**: Better adherence to Single Responsibility and Dependency Inversion
|
|
142
|
+
4. **Reduced Coupling**: Components depend on interfaces, not concrete classes
|
|
143
|
+
|
|
144
|
+
## Migration Steps
|
|
145
|
+
|
|
146
|
+
### Step 1: Update Imports
|
|
147
|
+
\`\`\`typescript
|
|
148
|
+
// Old approach
|
|
149
|
+
import { RequestManager } from '../../managers/RequestManager.js';
|
|
150
|
+
import { AuthenticationManager } from '../../managers/AuthenticationManager.js';
|
|
151
|
+
|
|
152
|
+
// New approach
|
|
153
|
+
import { createComposedWordPressClient } from '../../managers/composed';
|
|
154
|
+
\`\`\`
|
|
155
|
+
|
|
156
|
+
### Step 2: Replace Manager Creation
|
|
157
|
+
\`\`\`typescript
|
|
158
|
+
// Old approach
|
|
159
|
+
const authManager = new AuthenticationManager(config);
|
|
160
|
+
const requestManager = new RequestManager(config, authManager);
|
|
161
|
+
|
|
162
|
+
// New approach
|
|
163
|
+
const client = await createComposedWordPressClient(config);
|
|
164
|
+
\`\`\`
|
|
165
|
+
|
|
166
|
+
### Step 3: Update Usage Patterns
|
|
167
|
+
\`\`\`typescript
|
|
168
|
+
// Old approach
|
|
169
|
+
await requestManager.request('GET', '/wp/v2/posts');
|
|
170
|
+
|
|
171
|
+
// New approach
|
|
172
|
+
await client.request('GET', '/wp/v2/posts');
|
|
173
|
+
// or use convenience methods
|
|
174
|
+
await client.getPosts();
|
|
175
|
+
\`\`\`
|
|
176
|
+
|
|
177
|
+
### Step 4: Handle Dependency Injection
|
|
178
|
+
\`\`\`typescript
|
|
179
|
+
// Custom implementations can be injected
|
|
180
|
+
const customErrorHandler = new CustomErrorHandler();
|
|
181
|
+
const factory = new ComposedManagerFactory();
|
|
182
|
+
const client = await factory.createComposedClient({
|
|
183
|
+
clientConfig: config,
|
|
184
|
+
customErrorHandler
|
|
185
|
+
});
|
|
186
|
+
\`\`\`
|
|
187
|
+
|
|
188
|
+
## Gradual Migration
|
|
189
|
+
Use the MigrationAdapter for gradual migration:
|
|
190
|
+
|
|
191
|
+
\`\`\`typescript
|
|
192
|
+
import { MigrationAdapter } from '../../managers/composed';
|
|
193
|
+
|
|
194
|
+
// Feature flag to control migration
|
|
195
|
+
const USE_COMPOSITION = process.env.USE_COMPOSED_MANAGERS === 'true';
|
|
196
|
+
|
|
197
|
+
const { requestManager, authManager } = await MigrationAdapter.createManagers(
|
|
198
|
+
config,
|
|
199
|
+
USE_COMPOSITION
|
|
200
|
+
);
|
|
201
|
+
\`\`\`
|
|
202
|
+
|
|
203
|
+
## Testing the Migration
|
|
204
|
+
1. Run existing tests with both approaches
|
|
205
|
+
2. Performance test both implementations
|
|
206
|
+
3. Gradually migrate components one by one
|
|
207
|
+
4. Monitor for any behavioral differences
|
|
208
|
+
|
|
209
|
+
## Rollback Plan
|
|
210
|
+
The MigrationAdapter provides backward compatibility, allowing easy rollback if issues arise.
|
|
211
|
+
`;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=MigrationAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationAdapter.js","sourceRoot":"","sources":["../../../../src/client/managers/composed/MigrationAdapter.ts"],"names":[],"mappings":"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"}
|