@tamyla/clodo-framework 3.1.21 ā 3.1.22
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/CHANGELOG.md +9 -0
- package/README.md +53 -0
- package/dist/bin/clodo-service.js +47 -15
- package/dist/bin/commands/deploy.js +115 -83
- package/dist/bin/commands/helpers/deployment-ui.js +138 -0
- package/dist/bin/commands/helpers/deployment-verification.js +251 -0
- package/dist/bin/commands/helpers/error-recovery.js +80 -0
- package/dist/bin/commands/helpers/resource-detection.js +113 -0
- package/dist/bin/commands/validate.js +1 -1
- package/dist/bin/security/security-cli.js +1 -1
- package/dist/bin/shared/cache/configuration-cache.js +82 -0
- package/dist/bin/shared/cloudflare/domain-manager.js +1 -1
- package/dist/bin/shared/cloudflare/index.js +1 -1
- package/dist/bin/shared/cloudflare/ops.js +6 -4
- package/dist/bin/shared/config/ConfigurationManager.js +23 -1
- package/dist/bin/shared/config/command-config-manager.js +19 -3
- package/dist/bin/shared/config/index.js +1 -1
- package/dist/bin/shared/deployment/credential-collector.js +30 -7
- package/dist/bin/shared/deployment/index.js +2 -2
- package/dist/bin/shared/deployment/rollback-manager.js +4 -520
- package/dist/bin/shared/deployment/utilities/d1-error-recovery.js +177 -0
- package/dist/bin/shared/deployment/validator.js +40 -10
- package/dist/bin/shared/deployment/workflows/deployment-summary.js +214 -0
- package/dist/bin/shared/deployment/workflows/interactive-confirmation.js +188 -0
- package/dist/bin/shared/deployment/workflows/interactive-database-workflow.js +234 -0
- package/dist/bin/shared/deployment/workflows/interactive-domain-info-gatherer.js +240 -0
- package/dist/bin/shared/deployment/workflows/interactive-secret-workflow.js +228 -0
- package/dist/bin/shared/deployment/workflows/interactive-testing-workflow.js +235 -0
- package/dist/bin/shared/deployment/workflows/interactive-validation.js +218 -0
- package/dist/bin/shared/error-handling/error-classifier.js +46 -0
- package/dist/bin/shared/monitoring/health-checker.js +129 -1
- package/dist/bin/shared/monitoring/memory-manager.js +17 -6
- package/dist/bin/shared/routing/domain-router.js +1 -1
- package/dist/bin/shared/utils/deployment-validator.js +97 -0
- package/dist/bin/shared/utils/formatters.js +10 -0
- package/dist/bin/shared/utils/index.js +13 -1
- package/dist/bin/shared/utils/interactive-prompts.js +34 -18
- package/dist/bin/shared/utils/progress-manager.js +2 -2
- package/dist/bin/shared/utils/progress-spinner.js +53 -0
- package/dist/bin/shared/utils/sensitive-redactor.js +91 -0
- package/dist/bin/shared/validation/ValidationRegistry.js +1 -1
- package/dist/security/index.js +1 -1
- package/dist/security/patterns/insecure-patterns.js +1 -1
- package/dist/utils/constants.js +102 -0
- package/dist/utils/deployment/wrangler-config-manager.js +215 -48
- package/dist/utils/framework-config.js +2 -2
- package/dist/utils/interactive-prompts.js +10 -59
- package/package.json +16 -8
- package/dist/bin/clodo-service-old.js +0 -868
- package/dist/bin/clodo-service-test.js +0 -10
- package/dist/bin/commands/assess.js +0 -91
- package/dist/bin/commands/create.js +0 -77
- package/dist/bin/commands/diagnose.js +0 -83
- package/dist/bin/commands/helpers.js +0 -138
- package/dist/bin/commands/update.js +0 -75
- package/dist/bin/database/deployment-db-manager.js +0 -423
- package/dist/bin/database/enterprise-db-manager.js +0 -457
- package/dist/bin/database/wrangler-d1-manager.js +0 -685
- package/dist/bin/deployment/enterprise-deploy.js +0 -877
- package/dist/bin/deployment/master-deploy.js +0 -1376
- package/dist/bin/deployment/modular-enterprise-deploy.js +0 -466
- package/dist/bin/deployment/modules/DeploymentConfiguration.js +0 -395
- package/dist/bin/deployment/modules/DeploymentOrchestrator.js +0 -492
- package/dist/bin/deployment/modules/EnvironmentManager.js +0 -517
- package/dist/bin/deployment/modules/MonitoringIntegration.js +0 -560
- package/dist/bin/deployment/modules/ValidationManager.js +0 -342
- package/dist/bin/deployment/orchestration/BaseDeploymentOrchestrator.js +0 -426
- package/dist/bin/deployment/orchestration/EnterpriseOrchestrator.js +0 -401
- package/dist/bin/deployment/orchestration/PortfolioOrchestrator.js +0 -273
- package/dist/bin/deployment/orchestration/SingleServiceOrchestrator.js +0 -231
- package/dist/bin/deployment/orchestration/UnifiedDeploymentOrchestrator.js +0 -662
- package/dist/bin/deployment/test-interactive-utils.js +0 -66
- package/dist/bin/portfolio/portfolio-manager.js +0 -487
- package/dist/bin/service-management/create-service.js +0 -122
- package/dist/bin/service-management/init-service.js +0 -79
- package/dist/config/customers.js +0 -623
- package/dist/config/domains.js +0 -186
- package/dist/config/index.js +0 -6
- package/dist/database/database-orchestrator.js +0 -795
- package/dist/database/index.js +0 -4
- package/dist/deployment/index.js +0 -11
- package/dist/deployment/orchestration/BaseDeploymentOrchestrator.js +0 -426
- package/dist/deployment/orchestration/EnterpriseOrchestrator.js +0 -401
- package/dist/deployment/orchestration/PortfolioOrchestrator.js +0 -273
- package/dist/deployment/orchestration/SingleServiceOrchestrator.js +0 -231
- package/dist/deployment/orchestration/UnifiedDeploymentOrchestrator.js +0 -662
- package/dist/deployment/orchestration/index.js +0 -17
- package/dist/deployment/rollback-manager.js +0 -36
- package/dist/deployment/wrangler-deployer.js +0 -640
- package/dist/handlers/GenericRouteHandler.js +0 -532
- package/dist/migration/MigrationAdapters.js +0 -562
- package/dist/modules/ModuleManager.js +0 -668
- package/dist/modules/security.js +0 -96
- package/dist/orchestration/cross-domain-coordinator.js +0 -1083
- package/dist/orchestration/index.js +0 -5
- package/dist/orchestration/modules/DeploymentCoordinator.js +0 -368
- package/dist/orchestration/modules/DomainResolver.js +0 -198
- package/dist/orchestration/modules/StateManager.js +0 -332
- package/dist/orchestration/multi-domain-orchestrator.js +0 -724
- package/dist/routing/EnhancedRouter.js +0 -158
- package/dist/schema/SchemaManager.js +0 -778
- package/dist/service-management/ConfirmationEngine.js +0 -412
- package/dist/service-management/ErrorTracker.js +0 -299
- package/dist/service-management/GenerationEngine.js +0 -447
- package/dist/service-management/InputCollector.js +0 -619
- package/dist/service-management/ServiceCreator.js +0 -265
- package/dist/service-management/ServiceInitializer.js +0 -453
- package/dist/service-management/ServiceOrchestrator.js +0 -633
- package/dist/service-management/generators/BaseGenerator.js +0 -233
- package/dist/service-management/generators/GeneratorRegistry.js +0 -254
- package/dist/service-management/generators/cicd/CiWorkflowGenerator.js +0 -87
- package/dist/service-management/generators/cicd/DeployWorkflowGenerator.js +0 -106
- package/dist/service-management/generators/code/ServiceHandlersGenerator.js +0 -235
- package/dist/service-management/generators/code/ServiceMiddlewareGenerator.js +0 -116
- package/dist/service-management/generators/code/ServiceUtilsGenerator.js +0 -246
- package/dist/service-management/generators/code/WorkerIndexGenerator.js +0 -143
- package/dist/service-management/generators/config/DevelopmentEnvGenerator.js +0 -101
- package/dist/service-management/generators/config/DomainsConfigGenerator.js +0 -175
- package/dist/service-management/generators/config/EnvExampleGenerator.js +0 -178
- package/dist/service-management/generators/config/ProductionEnvGenerator.js +0 -97
- package/dist/service-management/generators/config/StagingEnvGenerator.js +0 -97
- package/dist/service-management/generators/config/WranglerTomlGenerator.js +0 -238
- package/dist/service-management/generators/core/PackageJsonGenerator.js +0 -243
- package/dist/service-management/generators/core/SiteConfigGenerator.js +0 -115
- package/dist/service-management/generators/documentation/ApiDocsGenerator.js +0 -331
- package/dist/service-management/generators/documentation/ConfigurationDocsGenerator.js +0 -294
- package/dist/service-management/generators/documentation/DeploymentDocsGenerator.js +0 -244
- package/dist/service-management/generators/documentation/ReadmeGenerator.js +0 -196
- package/dist/service-management/generators/schemas/ServiceSchemaGenerator.js +0 -190
- package/dist/service-management/generators/scripts/DeployScriptGenerator.js +0 -123
- package/dist/service-management/generators/scripts/HealthCheckScriptGenerator.js +0 -101
- package/dist/service-management/generators/scripts/SetupScriptGenerator.js +0 -88
- package/dist/service-management/generators/service-types/StaticSiteGenerator.js +0 -342
- package/dist/service-management/generators/testing/EslintConfigGenerator.js +0 -85
- package/dist/service-management/generators/testing/IntegrationTestsGenerator.js +0 -237
- package/dist/service-management/generators/testing/JestConfigGenerator.js +0 -72
- package/dist/service-management/generators/testing/UnitTestsGenerator.js +0 -277
- package/dist/service-management/generators/tooling/DockerComposeGenerator.js +0 -71
- package/dist/service-management/generators/tooling/GitignoreGenerator.js +0 -143
- package/dist/service-management/generators/utils/FileWriter.js +0 -179
- package/dist/service-management/generators/utils/PathResolver.js +0 -157
- package/dist/service-management/generators/utils/ServiceManifestGenerator.js +0 -111
- package/dist/service-management/generators/utils/TemplateEngine.js +0 -185
- package/dist/service-management/generators/utils/index.js +0 -18
- package/dist/service-management/handlers/ConfirmationHandler.js +0 -71
- package/dist/service-management/handlers/GenerationHandler.js +0 -80
- package/dist/service-management/handlers/InputHandler.js +0 -59
- package/dist/service-management/handlers/ValidationHandler.js +0 -203
- package/dist/service-management/index.js +0 -14
- package/dist/service-management/routing/DomainRouteMapper.js +0 -311
- package/dist/service-management/routing/RouteGenerator.js +0 -266
- package/dist/service-management/routing/WranglerRoutesBuilder.js +0 -273
- package/dist/service-management/routing/index.js +0 -14
- package/dist/service-management/services/DirectoryStructureService.js +0 -56
- package/dist/service-management/services/GenerationCoordinator.js +0 -208
- package/dist/service-management/services/GeneratorRegistry.js +0 -174
- package/dist/services/GenericDataService.js +0 -501
- package/dist/ui-structures/concepts/second-order-acquisition-strategy.md +0 -286
- package/dist/ui-structures/concepts/service-lifecycle-management.md +0 -150
- package/dist/ui-structures/concepts/service-manifest-guide.md +0 -309
- package/dist/ui-structures/concepts/three-tier-categorization-strategy.md +0 -231
- package/dist/ui-structures/creation/automated-generation-ui.json +0 -246
- package/dist/ui-structures/creation/core-inputs-ui.json +0 -217
- package/dist/ui-structures/creation/smart-confirmable-ui.json +0 -451
- package/dist/ui-structures/reference/absolutely-required-inputs.json +0 -315
- package/dist/ui-structures/reference/service-manifest-template.json +0 -342
- package/dist/version/VersionDetector.js +0 -723
- package/dist/worker/index.js +0 -4
- package/dist/worker/integration.js +0 -351
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ValidationManager - Coordinates comprehensive validation phases for deployment readiness
|
|
3
|
-
* Provides unified validation orchestration across configuration, database, and deployment components
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { validatePrerequisites, checkAuth, authenticate, workerExists } from '../../shared/config/cloudflare-config.js';
|
|
7
|
-
import { askYesNo } from '../../shared/utils/interactive-utils.js';
|
|
8
|
-
export class ValidationManager {
|
|
9
|
-
constructor(config, enterpriseModules = null) {
|
|
10
|
-
this.config = config;
|
|
11
|
-
this.enterpriseModules = enterpriseModules;
|
|
12
|
-
this.validationResults = {
|
|
13
|
-
prerequisites: null,
|
|
14
|
-
authentication: null,
|
|
15
|
-
configuration: null,
|
|
16
|
-
database: null,
|
|
17
|
-
deployment: null,
|
|
18
|
-
comprehensive: null
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Execute all validation phases with comprehensive reporting
|
|
24
|
-
*/
|
|
25
|
-
async executeComprehensiveValidation() {
|
|
26
|
-
console.log('\nš Comprehensive Validation Suite');
|
|
27
|
-
console.log('=================================');
|
|
28
|
-
const phases = [{
|
|
29
|
-
name: 'Prerequisites',
|
|
30
|
-
method: 'validatePrerequisites'
|
|
31
|
-
}, {
|
|
32
|
-
name: 'Authentication',
|
|
33
|
-
method: 'validateAuthentication'
|
|
34
|
-
}, {
|
|
35
|
-
name: 'Configuration',
|
|
36
|
-
method: 'validateConfiguration'
|
|
37
|
-
}, {
|
|
38
|
-
name: 'Database',
|
|
39
|
-
method: 'validateDatabase'
|
|
40
|
-
}, {
|
|
41
|
-
name: 'Deployment Readiness',
|
|
42
|
-
method: 'validateDeploymentReadiness'
|
|
43
|
-
}];
|
|
44
|
-
const results = {
|
|
45
|
-
passed: [],
|
|
46
|
-
failed: [],
|
|
47
|
-
warnings: []
|
|
48
|
-
};
|
|
49
|
-
for (const phase of phases) {
|
|
50
|
-
try {
|
|
51
|
-
console.log(`\nš Validating ${phase.name}...`);
|
|
52
|
-
const result = await this[phase.method]();
|
|
53
|
-
if (result.valid) {
|
|
54
|
-
results.passed.push(phase.name);
|
|
55
|
-
console.log(` ā
${phase.name}: Passed`);
|
|
56
|
-
if (result.warnings?.length > 0) {
|
|
57
|
-
results.warnings.push(...result.warnings.map(w => `${phase.name}: ${w}`));
|
|
58
|
-
}
|
|
59
|
-
} else {
|
|
60
|
-
results.failed.push({
|
|
61
|
-
phase: phase.name,
|
|
62
|
-
errors: result.errors
|
|
63
|
-
});
|
|
64
|
-
console.log(` ā ${phase.name}: Failed`);
|
|
65
|
-
result.errors?.forEach(error => console.log(` - ${error}`));
|
|
66
|
-
}
|
|
67
|
-
} catch (error) {
|
|
68
|
-
results.failed.push({
|
|
69
|
-
phase: phase.name,
|
|
70
|
-
errors: [error.message]
|
|
71
|
-
});
|
|
72
|
-
console.log(` ā ${phase.name}: Error - ${error.message}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Generate comprehensive report
|
|
77
|
-
return this.generateValidationReport(results);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Validate system prerequisites (Node.js, wrangler CLI, etc.)
|
|
82
|
-
*/
|
|
83
|
-
async validatePrerequisites() {
|
|
84
|
-
try {
|
|
85
|
-
const prereqs = await validatePrerequisites();
|
|
86
|
-
const errors = [];
|
|
87
|
-
for (const prereq of prereqs) {
|
|
88
|
-
if (prereq.status !== 'ok') {
|
|
89
|
-
errors.push(`${prereq.name}: ${prereq.error}`);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
this.validationResults.prerequisites = {
|
|
93
|
-
valid: errors.length === 0,
|
|
94
|
-
errors,
|
|
95
|
-
details: prereqs
|
|
96
|
-
};
|
|
97
|
-
return this.validationResults.prerequisites;
|
|
98
|
-
} catch (error) {
|
|
99
|
-
this.validationResults.prerequisites = {
|
|
100
|
-
valid: false,
|
|
101
|
-
errors: [`Prerequisites check failed: ${error.message}`]
|
|
102
|
-
};
|
|
103
|
-
return this.validationResults.prerequisites;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Validate Cloudflare authentication
|
|
109
|
-
*/
|
|
110
|
-
async validateAuthentication() {
|
|
111
|
-
try {
|
|
112
|
-
const isAuthenticated = await checkAuth();
|
|
113
|
-
if (!isAuthenticated) {
|
|
114
|
-
this.validationResults.authentication = {
|
|
115
|
-
valid: false,
|
|
116
|
-
errors: ['Cloudflare authentication required'],
|
|
117
|
-
canAutoFix: true
|
|
118
|
-
};
|
|
119
|
-
} else {
|
|
120
|
-
this.validationResults.authentication = {
|
|
121
|
-
valid: true,
|
|
122
|
-
errors: []
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
return this.validationResults.authentication;
|
|
126
|
-
} catch (error) {
|
|
127
|
-
this.validationResults.authentication = {
|
|
128
|
-
valid: false,
|
|
129
|
-
errors: [`Authentication check failed: ${error.message}`]
|
|
130
|
-
};
|
|
131
|
-
return this.validationResults.authentication;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Validate deployment configuration completeness and correctness
|
|
137
|
-
*/
|
|
138
|
-
async validateConfiguration() {
|
|
139
|
-
const errors = [];
|
|
140
|
-
const warnings = [];
|
|
141
|
-
|
|
142
|
-
// Validate required configuration fields
|
|
143
|
-
if (!this.config.domain) {
|
|
144
|
-
errors.push('Domain name is required');
|
|
145
|
-
}
|
|
146
|
-
if (!this.config.worker?.name) {
|
|
147
|
-
errors.push('Worker name is required');
|
|
148
|
-
}
|
|
149
|
-
if (!this.config.environment) {
|
|
150
|
-
errors.push('Environment specification is required');
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Validate domain format
|
|
154
|
-
if (this.config.domain && !/^[a-z0-9.-]+\.[a-z]{2,}$/.test(this.config.domain)) {
|
|
155
|
-
errors.push('Invalid domain format');
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Check for existing worker deployment
|
|
159
|
-
try {
|
|
160
|
-
if (this.config.worker?.name) {
|
|
161
|
-
const exists = await workerExists(this.config.worker.name);
|
|
162
|
-
if (exists) {
|
|
163
|
-
warnings.push(`Worker '${this.config.worker.name}' already exists - deployment will update existing worker`);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
} catch (error) {
|
|
167
|
-
warnings.push(`Could not check existing worker: ${error.message}`);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Validate environment-specific configuration
|
|
171
|
-
if (this.config.environment === 'production' && !this.config.database?.enableBackup) {
|
|
172
|
-
warnings.push('Database backup not enabled for production environment');
|
|
173
|
-
}
|
|
174
|
-
this.validationResults.configuration = {
|
|
175
|
-
valid: errors.length === 0,
|
|
176
|
-
errors,
|
|
177
|
-
warnings
|
|
178
|
-
};
|
|
179
|
-
return this.validationResults.configuration;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Validate database configuration and connectivity
|
|
184
|
-
*/
|
|
185
|
-
async validateDatabase() {
|
|
186
|
-
const errors = [];
|
|
187
|
-
const warnings = [];
|
|
188
|
-
try {
|
|
189
|
-
// Basic database configuration validation
|
|
190
|
-
if (!this.config.database?.name) {
|
|
191
|
-
errors.push('Database name is required');
|
|
192
|
-
}
|
|
193
|
-
if (this.config.database?.enableMigrations && !this.config.database?.migrationsPath) {
|
|
194
|
-
warnings.push('Migrations enabled but no migrations path specified');
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// Enterprise database validation if available
|
|
198
|
-
if (this.enterpriseModules?.databaseOrchestrator) {
|
|
199
|
-
try {
|
|
200
|
-
const dbValidation = await this.enterpriseModules.databaseOrchestrator.validateDatabaseSetup(this.config.domain, this.config.environment);
|
|
201
|
-
if (!dbValidation.valid) {
|
|
202
|
-
errors.push(...dbValidation.errors);
|
|
203
|
-
}
|
|
204
|
-
if (dbValidation.warnings) {
|
|
205
|
-
warnings.push(...dbValidation.warnings);
|
|
206
|
-
}
|
|
207
|
-
} catch (error) {
|
|
208
|
-
warnings.push(`Enterprise database validation failed: ${error.message}`);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
this.validationResults.database = {
|
|
212
|
-
valid: errors.length === 0,
|
|
213
|
-
errors,
|
|
214
|
-
warnings
|
|
215
|
-
};
|
|
216
|
-
return this.validationResults.database;
|
|
217
|
-
} catch (error) {
|
|
218
|
-
this.validationResults.database = {
|
|
219
|
-
valid: false,
|
|
220
|
-
errors: [`Database validation failed: ${error.message}`]
|
|
221
|
-
};
|
|
222
|
-
return this.validationResults.database;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Validate deployment readiness using enterprise validation if available
|
|
228
|
-
*/
|
|
229
|
-
async validateDeploymentReadiness() {
|
|
230
|
-
try {
|
|
231
|
-
// Use enterprise validator if available
|
|
232
|
-
if (this.enterpriseModules?.validator) {
|
|
233
|
-
const validation = await this.enterpriseModules.validator.validateDeploymentReadiness(this.config.domain, {
|
|
234
|
-
environment: this.config.environment,
|
|
235
|
-
validationLevel: this.config.deployment?.validationLevel || 'standard',
|
|
236
|
-
interactiveMode: false // Non-interactive for validation reporting
|
|
237
|
-
});
|
|
238
|
-
this.validationResults.deployment = validation;
|
|
239
|
-
return validation;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// Fallback validation for non-enterprise deployments
|
|
243
|
-
const errors = [];
|
|
244
|
-
const warnings = [];
|
|
245
|
-
|
|
246
|
-
// Basic deployment readiness checks
|
|
247
|
-
if (!this.config.worker?.script) {
|
|
248
|
-
errors.push('Worker script path not specified');
|
|
249
|
-
}
|
|
250
|
-
if (!this.config.deployment?.environment) {
|
|
251
|
-
warnings.push('Deployment environment not specified, using default');
|
|
252
|
-
}
|
|
253
|
-
this.validationResults.deployment = {
|
|
254
|
-
valid: errors.length === 0,
|
|
255
|
-
errors,
|
|
256
|
-
warnings
|
|
257
|
-
};
|
|
258
|
-
return this.validationResults.deployment;
|
|
259
|
-
} catch (error) {
|
|
260
|
-
this.validationResults.deployment = {
|
|
261
|
-
valid: false,
|
|
262
|
-
errors: [`Deployment readiness check failed: ${error.message}`]
|
|
263
|
-
};
|
|
264
|
-
return this.validationResults.deployment;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Auto-fix authentication issues by prompting for authentication
|
|
270
|
-
*/
|
|
271
|
-
async autoFixAuthentication() {
|
|
272
|
-
if (!this.validationResults.authentication?.canAutoFix) {
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
275
|
-
const shouldAuthenticate = await askYesNo('Cloudflare authentication required. Run authentication now?', 'y');
|
|
276
|
-
if (shouldAuthenticate) {
|
|
277
|
-
console.log('\nš Please complete Cloudflare authentication...');
|
|
278
|
-
await authenticate();
|
|
279
|
-
|
|
280
|
-
// Re-validate authentication
|
|
281
|
-
await this.validateAuthentication();
|
|
282
|
-
return this.validationResults.authentication.valid;
|
|
283
|
-
}
|
|
284
|
-
return false;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Generate comprehensive validation report
|
|
289
|
-
*/
|
|
290
|
-
generateValidationReport(results) {
|
|
291
|
-
const report = {
|
|
292
|
-
valid: results.failed.length === 0,
|
|
293
|
-
summary: {
|
|
294
|
-
passed: results.passed.length,
|
|
295
|
-
failed: results.failed.length,
|
|
296
|
-
warnings: results.warnings.length
|
|
297
|
-
},
|
|
298
|
-
phases: {
|
|
299
|
-
passed: results.passed,
|
|
300
|
-
failed: results.failed,
|
|
301
|
-
warnings: results.warnings
|
|
302
|
-
},
|
|
303
|
-
recommendation: null
|
|
304
|
-
};
|
|
305
|
-
|
|
306
|
-
// Generate recommendation based on results
|
|
307
|
-
if (report.valid) {
|
|
308
|
-
if (results.warnings.length > 0) {
|
|
309
|
-
report.recommendation = 'Deployment ready with warnings - review warnings before proceeding';
|
|
310
|
-
} else {
|
|
311
|
-
report.recommendation = 'All validation checks passed - deployment ready';
|
|
312
|
-
}
|
|
313
|
-
} else {
|
|
314
|
-
report.recommendation = 'Fix validation errors before proceeding with deployment';
|
|
315
|
-
}
|
|
316
|
-
return report;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Get validation results for specific phase
|
|
321
|
-
*/
|
|
322
|
-
getValidationResults(phase = null) {
|
|
323
|
-
if (phase) {
|
|
324
|
-
return this.validationResults[phase];
|
|
325
|
-
}
|
|
326
|
-
return this.validationResults;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
/**
|
|
330
|
-
* Reset validation state for fresh validation run
|
|
331
|
-
*/
|
|
332
|
-
resetValidationState() {
|
|
333
|
-
this.validationResults = {
|
|
334
|
-
prerequisites: null,
|
|
335
|
-
authentication: null,
|
|
336
|
-
configuration: null,
|
|
337
|
-
database: null,
|
|
338
|
-
deployment: null,
|
|
339
|
-
comprehensive: null
|
|
340
|
-
};
|
|
341
|
-
}
|
|
342
|
-
}
|