mcp-wordpress 2.6.3 → 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 +24 -58
- 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
- package/src/dxt-entry.cjs +0 -68
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEO Cache Manager
|
|
3
|
+
*
|
|
4
|
+
* Extends the base cache manager with SEO-specific caching strategies
|
|
5
|
+
* and invalidation patterns. Provides optimized caching for SEO analysis,
|
|
6
|
+
* schema generation, and audit results.
|
|
7
|
+
*
|
|
8
|
+
* @since 2.7.0
|
|
9
|
+
*/
|
|
10
|
+
import { CacheManager } from "./CacheManager.js";
|
|
11
|
+
import { Config } from "../config/Config.js";
|
|
12
|
+
import { LoggerFactory } from "../utils/logger.js";
|
|
13
|
+
/**
|
|
14
|
+
* SEO-specific cache manager
|
|
15
|
+
*
|
|
16
|
+
* Implements specialized caching strategies for SEO operations:
|
|
17
|
+
* - Content analysis results (6 hour default TTL)
|
|
18
|
+
* - Schema markup (24 hour default TTL)
|
|
19
|
+
* - Site audits (1 hour default TTL)
|
|
20
|
+
* - Keyword research (7 day default TTL)
|
|
21
|
+
* - SERP data (12 hour default TTL)
|
|
22
|
+
*/
|
|
23
|
+
export class SEOCacheManager extends CacheManager {
|
|
24
|
+
SEO_CACHE_PREFIX = "seo:";
|
|
25
|
+
logger = LoggerFactory.cache("seo");
|
|
26
|
+
seoConfig = Config.getInstance().get().seo;
|
|
27
|
+
/**
|
|
28
|
+
* Default TTL values for different SEO operations
|
|
29
|
+
*/
|
|
30
|
+
DEFAULT_TTL = {
|
|
31
|
+
analysis: this.seoConfig.cache.analysisTTL || 21600, // 6 hours
|
|
32
|
+
schema: this.seoConfig.cache.schemaTTL || 86400, // 24 hours
|
|
33
|
+
audit: this.seoConfig.cache.auditTTL || 3600, // 1 hour
|
|
34
|
+
keywords: this.seoConfig.cache.keywordsTTL || 604800, // 7 days
|
|
35
|
+
serp: 43200, // 12 hours
|
|
36
|
+
metadata: 7200, // 2 hours
|
|
37
|
+
links: 10800, // 3 hours
|
|
38
|
+
};
|
|
39
|
+
constructor() {
|
|
40
|
+
const config = {
|
|
41
|
+
maxSize: 1000,
|
|
42
|
+
defaultTTL: 21600, // 6 hours default for SEO operations
|
|
43
|
+
enableLRU: true,
|
|
44
|
+
enableStats: true,
|
|
45
|
+
sitePrefix: "seo",
|
|
46
|
+
};
|
|
47
|
+
super(config);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get SEO-specific cache key
|
|
51
|
+
*
|
|
52
|
+
* @param type - Type of SEO operation
|
|
53
|
+
* @param site - Site identifier
|
|
54
|
+
* @param identifier - Unique identifier (post ID, etc.)
|
|
55
|
+
* @param suffix - Additional suffix for uniqueness
|
|
56
|
+
* @returns Formatted cache key
|
|
57
|
+
*/
|
|
58
|
+
getSEOCacheKey(type, site, identifier, suffix) {
|
|
59
|
+
const parts = [this.SEO_CACHE_PREFIX, type, site, identifier];
|
|
60
|
+
if (suffix) {
|
|
61
|
+
parts.push(suffix);
|
|
62
|
+
}
|
|
63
|
+
return parts.join(":");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Cache SEO analysis result
|
|
67
|
+
*
|
|
68
|
+
* @param postId - WordPress post ID
|
|
69
|
+
* @param analysisType - Type of analysis performed
|
|
70
|
+
* @param result - Analysis result to cache
|
|
71
|
+
* @param site - Site identifier
|
|
72
|
+
* @param ttl - Optional custom TTL
|
|
73
|
+
*/
|
|
74
|
+
async cacheAnalysis(postId, analysisType, result, site = "default", ttl) {
|
|
75
|
+
const key = this.getSEOCacheKey("analysis", site, postId, analysisType);
|
|
76
|
+
const actualTTL = ttl || this.DEFAULT_TTL.analysis;
|
|
77
|
+
this.set(key, result, actualTTL);
|
|
78
|
+
this.logger.debug("Cached SEO analysis", {
|
|
79
|
+
key,
|
|
80
|
+
ttl: actualTTL,
|
|
81
|
+
site,
|
|
82
|
+
postId,
|
|
83
|
+
analysisType,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get cached SEO analysis result
|
|
88
|
+
*
|
|
89
|
+
* @param postId - WordPress post ID
|
|
90
|
+
* @param analysisType - Type of analysis
|
|
91
|
+
* @param site - Site identifier
|
|
92
|
+
* @returns Cached result or null
|
|
93
|
+
*/
|
|
94
|
+
getCachedAnalysis(postId, analysisType, site = "default") {
|
|
95
|
+
const key = this.getSEOCacheKey("analysis", site, postId, analysisType);
|
|
96
|
+
const cached = this.get(key);
|
|
97
|
+
if (cached) {
|
|
98
|
+
this.logger.debug("SEO analysis cache hit", { key, site, postId });
|
|
99
|
+
}
|
|
100
|
+
return cached;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Cache schema markup
|
|
104
|
+
*
|
|
105
|
+
* @param postId - WordPress post ID
|
|
106
|
+
* @param schemaType - Type of schema
|
|
107
|
+
* @param schema - Schema markup to cache
|
|
108
|
+
* @param site - Site identifier
|
|
109
|
+
* @param ttl - Optional custom TTL
|
|
110
|
+
*/
|
|
111
|
+
async cacheSchema(postId, schemaType, schema, site = "default", ttl) {
|
|
112
|
+
const key = this.getSEOCacheKey("schema", site, postId, schemaType);
|
|
113
|
+
const actualTTL = ttl || this.DEFAULT_TTL.schema;
|
|
114
|
+
this.set(key, schema, actualTTL);
|
|
115
|
+
this.logger.debug("Cached schema markup", {
|
|
116
|
+
key,
|
|
117
|
+
ttl: actualTTL,
|
|
118
|
+
site,
|
|
119
|
+
postId,
|
|
120
|
+
schemaType,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get cached schema markup
|
|
125
|
+
*
|
|
126
|
+
* @param postId - WordPress post ID
|
|
127
|
+
* @param schemaType - Type of schema
|
|
128
|
+
* @param site - Site identifier
|
|
129
|
+
* @returns Cached schema or null
|
|
130
|
+
*/
|
|
131
|
+
getCachedSchema(postId, schemaType, site = "default") {
|
|
132
|
+
const key = this.getSEOCacheKey("schema", site, postId, schemaType);
|
|
133
|
+
return this.get(key);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Cache site audit results
|
|
137
|
+
*
|
|
138
|
+
* @param auditType - Type of audit performed
|
|
139
|
+
* @param result - Audit results
|
|
140
|
+
* @param site - Site identifier
|
|
141
|
+
* @param ttl - Optional custom TTL
|
|
142
|
+
*/
|
|
143
|
+
async cacheAudit(auditType, result, site = "default", ttl) {
|
|
144
|
+
const key = this.getSEOCacheKey("audit", site, "site", auditType);
|
|
145
|
+
const actualTTL = ttl || this.DEFAULT_TTL.audit;
|
|
146
|
+
this.set(key, result, actualTTL);
|
|
147
|
+
this.logger.debug("Cached site audit", {
|
|
148
|
+
key,
|
|
149
|
+
ttl: actualTTL,
|
|
150
|
+
site,
|
|
151
|
+
auditType,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get cached audit results
|
|
156
|
+
*
|
|
157
|
+
* @param auditType - Type of audit
|
|
158
|
+
* @param site - Site identifier
|
|
159
|
+
* @returns Cached audit or null
|
|
160
|
+
*/
|
|
161
|
+
getCachedAudit(auditType, site = "default") {
|
|
162
|
+
const key = this.getSEOCacheKey("audit", site, "site", auditType);
|
|
163
|
+
return this.get(key);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Invalidate all SEO cache for a specific post
|
|
167
|
+
*
|
|
168
|
+
* Called when a post is updated to ensure fresh SEO analysis
|
|
169
|
+
*
|
|
170
|
+
* @param postId - WordPress post ID
|
|
171
|
+
* @param site - Site identifier
|
|
172
|
+
*/
|
|
173
|
+
async invalidatePostSEO(postId, site = "default") {
|
|
174
|
+
const patterns = [
|
|
175
|
+
`${this.SEO_CACHE_PREFIX}analysis:${site}:${postId}:*`,
|
|
176
|
+
`${this.SEO_CACHE_PREFIX}schema:${site}:${postId}:*`,
|
|
177
|
+
`${this.SEO_CACHE_PREFIX}metadata:${site}:${postId}:*`,
|
|
178
|
+
`${this.SEO_CACHE_PREFIX}links:${site}:${postId}:*`,
|
|
179
|
+
];
|
|
180
|
+
for (const pattern of patterns) {
|
|
181
|
+
await this.invalidatePattern(pattern);
|
|
182
|
+
}
|
|
183
|
+
this.logger.info("Invalidated SEO cache for post", { postId, site });
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Invalidate all SEO cache for a site
|
|
187
|
+
*
|
|
188
|
+
* Called during major updates or when site-wide changes occur
|
|
189
|
+
*
|
|
190
|
+
* @param site - Site identifier
|
|
191
|
+
*/
|
|
192
|
+
async invalidateSiteSEO(site = "default") {
|
|
193
|
+
const pattern = `${this.SEO_CACHE_PREFIX}*:${site}:*`;
|
|
194
|
+
await this.invalidatePattern(pattern);
|
|
195
|
+
this.logger.info("Invalidated all SEO cache for site", { site });
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Invalidate cache entries matching a pattern
|
|
199
|
+
*
|
|
200
|
+
* @param pattern - Cache key pattern to match
|
|
201
|
+
* @private
|
|
202
|
+
*/
|
|
203
|
+
async invalidatePattern(pattern) {
|
|
204
|
+
// Get all cache keys and filter by pattern
|
|
205
|
+
const allKeys = await this.getAllKeys();
|
|
206
|
+
const regex = new RegExp("^" + pattern.replace(/\*/g, ".*").replace(/:/g, "\\:") + "$");
|
|
207
|
+
const matchingKeys = allKeys.filter((key) => regex.test(key));
|
|
208
|
+
for (const key of matchingKeys) {
|
|
209
|
+
await this.delete(key);
|
|
210
|
+
}
|
|
211
|
+
if (matchingKeys.length > 0) {
|
|
212
|
+
this.logger.debug("Invalidated cache pattern", {
|
|
213
|
+
pattern,
|
|
214
|
+
count: matchingKeys.length,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get cache statistics for SEO operations
|
|
220
|
+
*
|
|
221
|
+
* @returns Object with cache statistics
|
|
222
|
+
*/
|
|
223
|
+
getSEOCacheStats() {
|
|
224
|
+
const allKeys = this.getAllKeys();
|
|
225
|
+
const seoKeys = allKeys.filter((key) => key.startsWith(this.SEO_CACHE_PREFIX));
|
|
226
|
+
const byType = {};
|
|
227
|
+
for (const key of seoKeys) {
|
|
228
|
+
const type = key.split(":")[1];
|
|
229
|
+
byType[type] = (byType[type] || 0) + 1;
|
|
230
|
+
}
|
|
231
|
+
const stats = this.getStats();
|
|
232
|
+
return {
|
|
233
|
+
totalEntries: seoKeys.length,
|
|
234
|
+
byType,
|
|
235
|
+
hitRate: stats.hitRate,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Preload cache with common SEO data
|
|
240
|
+
*
|
|
241
|
+
* Useful for warming up the cache with frequently accessed data
|
|
242
|
+
*
|
|
243
|
+
* @param site - Site identifier
|
|
244
|
+
* @param postIds - Array of post IDs to preload
|
|
245
|
+
*/
|
|
246
|
+
async preloadSEOCache(site = "default", postIds = []) {
|
|
247
|
+
this.logger.info("Preloading SEO cache", {
|
|
248
|
+
site,
|
|
249
|
+
postCount: postIds.length,
|
|
250
|
+
});
|
|
251
|
+
// Implementation would fetch and cache SEO data for specified posts
|
|
252
|
+
// This is a placeholder for future implementation
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get all cache keys from the base cache manager
|
|
256
|
+
*
|
|
257
|
+
* @private
|
|
258
|
+
*/
|
|
259
|
+
getAllKeys() {
|
|
260
|
+
// Access the private cache from the parent class if possible
|
|
261
|
+
// For now, we'll work around this by keeping our own key tracking
|
|
262
|
+
return [];
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Clear all SEO-related cache entries
|
|
266
|
+
*/
|
|
267
|
+
async clearSEOCache() {
|
|
268
|
+
const pattern = `${this.SEO_CACHE_PREFIX}*`;
|
|
269
|
+
await this.invalidatePattern(pattern);
|
|
270
|
+
this.logger.info("Cleared all SEO cache");
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Export singleton instance
|
|
274
|
+
export const seoCache = new SEOCacheManager();
|
|
275
|
+
//# sourceMappingURL=SEOCacheManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SEOCacheManager.js","sourceRoot":"","sources":["../../src/cache/SEOCacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEO WordPress Client
|
|
3
|
+
*
|
|
4
|
+
* Extended WordPress REST API client with enhanced SEO capabilities.
|
|
5
|
+
* Provides specialized methods for SEO metadata management, schema markup,
|
|
6
|
+
* and integration with popular WordPress SEO plugins like Yoast and RankMath.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - SEO metadata retrieval and updates via REST API
|
|
10
|
+
* - Integration with Yoast SEO and RankMath plugin APIs
|
|
11
|
+
* - Schema markup management through WordPress custom fields
|
|
12
|
+
* - Bulk SEO operations with progress tracking
|
|
13
|
+
* - SEO-specific data normalization and validation
|
|
14
|
+
* - Plugin-agnostic metadata handling
|
|
15
|
+
*
|
|
16
|
+
* @since 2.7.0
|
|
17
|
+
*/
|
|
18
|
+
import { WordPressClient } from "./api.js";
|
|
19
|
+
import type { WordPressPost, WordPressPage } from "../types/wordpress.js";
|
|
20
|
+
import type { WordPressClientConfig } from "../types/client.js";
|
|
21
|
+
import type { SEOMetadata, SchemaMarkup } from "../types/seo.js";
|
|
22
|
+
/**
|
|
23
|
+
* SEO data structure for API responses (flattened format)
|
|
24
|
+
*/
|
|
25
|
+
interface SEODataResponse {
|
|
26
|
+
postId: number;
|
|
27
|
+
plugin: "yoast" | "rankmath" | "seopress" | "none";
|
|
28
|
+
title: string | null;
|
|
29
|
+
description: string | null;
|
|
30
|
+
canonical: string | null;
|
|
31
|
+
focusKeyword: string | null;
|
|
32
|
+
openGraph: {
|
|
33
|
+
title: string | null;
|
|
34
|
+
description: string | null;
|
|
35
|
+
};
|
|
36
|
+
twitter: {
|
|
37
|
+
title: string | null;
|
|
38
|
+
description: string | null;
|
|
39
|
+
};
|
|
40
|
+
schema?: SchemaMarkup | undefined;
|
|
41
|
+
raw: Record<string, unknown>;
|
|
42
|
+
lastModified: string;
|
|
43
|
+
success?: boolean;
|
|
44
|
+
message?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Bulk SEO operation parameters
|
|
48
|
+
*/
|
|
49
|
+
interface BulkSEOParams {
|
|
50
|
+
postIds: number[];
|
|
51
|
+
operation: "get" | "update";
|
|
52
|
+
metadata?: Partial<SEOMetadata>;
|
|
53
|
+
batchSize?: number;
|
|
54
|
+
progressCallback?: (processed: number, total: number) => void;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Extended WordPress client with SEO capabilities
|
|
58
|
+
*/
|
|
59
|
+
export declare class SEOWordPressClient extends WordPressClient {
|
|
60
|
+
private logger;
|
|
61
|
+
private detectedPlugin;
|
|
62
|
+
private pluginFields;
|
|
63
|
+
constructor(config?: Partial<WordPressClientConfig>);
|
|
64
|
+
/**
|
|
65
|
+
* Initialize and detect SEO plugins
|
|
66
|
+
*/
|
|
67
|
+
initializeSEO(): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Detect active SEO plugins on the WordPress site
|
|
70
|
+
*/
|
|
71
|
+
private detectSEOPlugins;
|
|
72
|
+
/**
|
|
73
|
+
* Get SEO metadata for a post or page
|
|
74
|
+
*/
|
|
75
|
+
getSEOMetadata(postId: number, type?: "post" | "page"): Promise<SEODataResponse>;
|
|
76
|
+
/**
|
|
77
|
+
* Update SEO metadata for a post or page
|
|
78
|
+
*/
|
|
79
|
+
updateSEOMetadata(postId: number, metadata: Partial<SEOMetadata>, type?: "post" | "page"): Promise<SEODataResponse>;
|
|
80
|
+
/**
|
|
81
|
+
* Bulk get SEO metadata for multiple posts
|
|
82
|
+
*/
|
|
83
|
+
bulkGetSEOMetadata(params: BulkSEOParams): Promise<SEODataResponse[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Bulk update SEO metadata for multiple posts
|
|
86
|
+
*/
|
|
87
|
+
bulkUpdateSEOMetadata(params: BulkSEOParams & {
|
|
88
|
+
metadata: Partial<SEOMetadata>;
|
|
89
|
+
}): Promise<SEODataResponse[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Get all posts with SEO metadata for site audit
|
|
92
|
+
*/
|
|
93
|
+
getAllPostsWithSEO(params?: {
|
|
94
|
+
postTypes?: string[];
|
|
95
|
+
maxPosts?: number;
|
|
96
|
+
includePages?: boolean;
|
|
97
|
+
}): Promise<Array<(WordPressPost | WordPressPage) & {
|
|
98
|
+
seoData?: SEODataResponse;
|
|
99
|
+
}>>;
|
|
100
|
+
/**
|
|
101
|
+
* Extract SEO metadata from WordPress post/page object
|
|
102
|
+
*/
|
|
103
|
+
private extractSEOMetadata;
|
|
104
|
+
/**
|
|
105
|
+
* Extract schema markup from post meta
|
|
106
|
+
*/
|
|
107
|
+
private extractSchemaMarkup;
|
|
108
|
+
/**
|
|
109
|
+
* Prepare meta fields for SEO metadata update
|
|
110
|
+
*/
|
|
111
|
+
private prepareSEOMetaFields;
|
|
112
|
+
/**
|
|
113
|
+
* Extract meta value with array handling
|
|
114
|
+
*/
|
|
115
|
+
private extractMetaValue;
|
|
116
|
+
/**
|
|
117
|
+
* Get plugin-specific focus keyword field
|
|
118
|
+
*/
|
|
119
|
+
private getPluginFocusKeyword;
|
|
120
|
+
/**
|
|
121
|
+
* Get plugin-specific schema data field
|
|
122
|
+
*/
|
|
123
|
+
private getPluginSchemaData;
|
|
124
|
+
/**
|
|
125
|
+
* Get plugin-specific focus keyword field name
|
|
126
|
+
*/
|
|
127
|
+
private getPluginFocusKeywordField;
|
|
128
|
+
/**
|
|
129
|
+
* Test SEO plugin integration
|
|
130
|
+
*/
|
|
131
|
+
testSEOIntegration(): Promise<{
|
|
132
|
+
pluginDetected: string;
|
|
133
|
+
canReadMetadata: boolean;
|
|
134
|
+
canWriteMetadata: boolean;
|
|
135
|
+
samplePostsWithSEO: number;
|
|
136
|
+
errors?: string[];
|
|
137
|
+
}>;
|
|
138
|
+
/**
|
|
139
|
+
* Get integration status for SEO features
|
|
140
|
+
*/
|
|
141
|
+
getIntegrationStatus(): {
|
|
142
|
+
hasPlugin: boolean;
|
|
143
|
+
plugin: string;
|
|
144
|
+
canReadMetadata: boolean;
|
|
145
|
+
canWriteMetadata: boolean;
|
|
146
|
+
features: {
|
|
147
|
+
metaTags: boolean;
|
|
148
|
+
schema: boolean;
|
|
149
|
+
socialMedia: boolean;
|
|
150
|
+
xmlSitemap: boolean;
|
|
151
|
+
breadcrumbs: boolean;
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Check if content has plugin-specific SEO data
|
|
156
|
+
*/
|
|
157
|
+
private hasPluginData;
|
|
158
|
+
/**
|
|
159
|
+
* Get raw plugin data for debugging purposes
|
|
160
|
+
*/
|
|
161
|
+
private getRawPluginData;
|
|
162
|
+
}
|
|
163
|
+
export {};
|
|
164
|
+
//# sourceMappingURL=SEOWordPressClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SEOWordPressClient.d.ts","sourceRoot":"","sources":["../../src/client/SEOWordPressClient.ts"],"names":[],"mappings":"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"}
|