@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.
Files changed (169) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +53 -0
  3. package/dist/bin/clodo-service.js +47 -15
  4. package/dist/bin/commands/deploy.js +115 -83
  5. package/dist/bin/commands/helpers/deployment-ui.js +138 -0
  6. package/dist/bin/commands/helpers/deployment-verification.js +251 -0
  7. package/dist/bin/commands/helpers/error-recovery.js +80 -0
  8. package/dist/bin/commands/helpers/resource-detection.js +113 -0
  9. package/dist/bin/commands/validate.js +1 -1
  10. package/dist/bin/security/security-cli.js +1 -1
  11. package/dist/bin/shared/cache/configuration-cache.js +82 -0
  12. package/dist/bin/shared/cloudflare/domain-manager.js +1 -1
  13. package/dist/bin/shared/cloudflare/index.js +1 -1
  14. package/dist/bin/shared/cloudflare/ops.js +6 -4
  15. package/dist/bin/shared/config/ConfigurationManager.js +23 -1
  16. package/dist/bin/shared/config/command-config-manager.js +19 -3
  17. package/dist/bin/shared/config/index.js +1 -1
  18. package/dist/bin/shared/deployment/credential-collector.js +30 -7
  19. package/dist/bin/shared/deployment/index.js +2 -2
  20. package/dist/bin/shared/deployment/rollback-manager.js +4 -520
  21. package/dist/bin/shared/deployment/utilities/d1-error-recovery.js +177 -0
  22. package/dist/bin/shared/deployment/validator.js +40 -10
  23. package/dist/bin/shared/deployment/workflows/deployment-summary.js +214 -0
  24. package/dist/bin/shared/deployment/workflows/interactive-confirmation.js +188 -0
  25. package/dist/bin/shared/deployment/workflows/interactive-database-workflow.js +234 -0
  26. package/dist/bin/shared/deployment/workflows/interactive-domain-info-gatherer.js +240 -0
  27. package/dist/bin/shared/deployment/workflows/interactive-secret-workflow.js +228 -0
  28. package/dist/bin/shared/deployment/workflows/interactive-testing-workflow.js +235 -0
  29. package/dist/bin/shared/deployment/workflows/interactive-validation.js +218 -0
  30. package/dist/bin/shared/error-handling/error-classifier.js +46 -0
  31. package/dist/bin/shared/monitoring/health-checker.js +129 -1
  32. package/dist/bin/shared/monitoring/memory-manager.js +17 -6
  33. package/dist/bin/shared/routing/domain-router.js +1 -1
  34. package/dist/bin/shared/utils/deployment-validator.js +97 -0
  35. package/dist/bin/shared/utils/formatters.js +10 -0
  36. package/dist/bin/shared/utils/index.js +13 -1
  37. package/dist/bin/shared/utils/interactive-prompts.js +34 -18
  38. package/dist/bin/shared/utils/progress-manager.js +2 -2
  39. package/dist/bin/shared/utils/progress-spinner.js +53 -0
  40. package/dist/bin/shared/utils/sensitive-redactor.js +91 -0
  41. package/dist/bin/shared/validation/ValidationRegistry.js +1 -1
  42. package/dist/security/index.js +1 -1
  43. package/dist/security/patterns/insecure-patterns.js +1 -1
  44. package/dist/utils/constants.js +102 -0
  45. package/dist/utils/deployment/wrangler-config-manager.js +215 -48
  46. package/dist/utils/framework-config.js +2 -2
  47. package/dist/utils/interactive-prompts.js +10 -59
  48. package/package.json +16 -8
  49. package/dist/bin/clodo-service-old.js +0 -868
  50. package/dist/bin/clodo-service-test.js +0 -10
  51. package/dist/bin/commands/assess.js +0 -91
  52. package/dist/bin/commands/create.js +0 -77
  53. package/dist/bin/commands/diagnose.js +0 -83
  54. package/dist/bin/commands/helpers.js +0 -138
  55. package/dist/bin/commands/update.js +0 -75
  56. package/dist/bin/database/deployment-db-manager.js +0 -423
  57. package/dist/bin/database/enterprise-db-manager.js +0 -457
  58. package/dist/bin/database/wrangler-d1-manager.js +0 -685
  59. package/dist/bin/deployment/enterprise-deploy.js +0 -877
  60. package/dist/bin/deployment/master-deploy.js +0 -1376
  61. package/dist/bin/deployment/modular-enterprise-deploy.js +0 -466
  62. package/dist/bin/deployment/modules/DeploymentConfiguration.js +0 -395
  63. package/dist/bin/deployment/modules/DeploymentOrchestrator.js +0 -492
  64. package/dist/bin/deployment/modules/EnvironmentManager.js +0 -517
  65. package/dist/bin/deployment/modules/MonitoringIntegration.js +0 -560
  66. package/dist/bin/deployment/modules/ValidationManager.js +0 -342
  67. package/dist/bin/deployment/orchestration/BaseDeploymentOrchestrator.js +0 -426
  68. package/dist/bin/deployment/orchestration/EnterpriseOrchestrator.js +0 -401
  69. package/dist/bin/deployment/orchestration/PortfolioOrchestrator.js +0 -273
  70. package/dist/bin/deployment/orchestration/SingleServiceOrchestrator.js +0 -231
  71. package/dist/bin/deployment/orchestration/UnifiedDeploymentOrchestrator.js +0 -662
  72. package/dist/bin/deployment/test-interactive-utils.js +0 -66
  73. package/dist/bin/portfolio/portfolio-manager.js +0 -487
  74. package/dist/bin/service-management/create-service.js +0 -122
  75. package/dist/bin/service-management/init-service.js +0 -79
  76. package/dist/config/customers.js +0 -623
  77. package/dist/config/domains.js +0 -186
  78. package/dist/config/index.js +0 -6
  79. package/dist/database/database-orchestrator.js +0 -795
  80. package/dist/database/index.js +0 -4
  81. package/dist/deployment/index.js +0 -11
  82. package/dist/deployment/orchestration/BaseDeploymentOrchestrator.js +0 -426
  83. package/dist/deployment/orchestration/EnterpriseOrchestrator.js +0 -401
  84. package/dist/deployment/orchestration/PortfolioOrchestrator.js +0 -273
  85. package/dist/deployment/orchestration/SingleServiceOrchestrator.js +0 -231
  86. package/dist/deployment/orchestration/UnifiedDeploymentOrchestrator.js +0 -662
  87. package/dist/deployment/orchestration/index.js +0 -17
  88. package/dist/deployment/rollback-manager.js +0 -36
  89. package/dist/deployment/wrangler-deployer.js +0 -640
  90. package/dist/handlers/GenericRouteHandler.js +0 -532
  91. package/dist/migration/MigrationAdapters.js +0 -562
  92. package/dist/modules/ModuleManager.js +0 -668
  93. package/dist/modules/security.js +0 -96
  94. package/dist/orchestration/cross-domain-coordinator.js +0 -1083
  95. package/dist/orchestration/index.js +0 -5
  96. package/dist/orchestration/modules/DeploymentCoordinator.js +0 -368
  97. package/dist/orchestration/modules/DomainResolver.js +0 -198
  98. package/dist/orchestration/modules/StateManager.js +0 -332
  99. package/dist/orchestration/multi-domain-orchestrator.js +0 -724
  100. package/dist/routing/EnhancedRouter.js +0 -158
  101. package/dist/schema/SchemaManager.js +0 -778
  102. package/dist/service-management/ConfirmationEngine.js +0 -412
  103. package/dist/service-management/ErrorTracker.js +0 -299
  104. package/dist/service-management/GenerationEngine.js +0 -447
  105. package/dist/service-management/InputCollector.js +0 -619
  106. package/dist/service-management/ServiceCreator.js +0 -265
  107. package/dist/service-management/ServiceInitializer.js +0 -453
  108. package/dist/service-management/ServiceOrchestrator.js +0 -633
  109. package/dist/service-management/generators/BaseGenerator.js +0 -233
  110. package/dist/service-management/generators/GeneratorRegistry.js +0 -254
  111. package/dist/service-management/generators/cicd/CiWorkflowGenerator.js +0 -87
  112. package/dist/service-management/generators/cicd/DeployWorkflowGenerator.js +0 -106
  113. package/dist/service-management/generators/code/ServiceHandlersGenerator.js +0 -235
  114. package/dist/service-management/generators/code/ServiceMiddlewareGenerator.js +0 -116
  115. package/dist/service-management/generators/code/ServiceUtilsGenerator.js +0 -246
  116. package/dist/service-management/generators/code/WorkerIndexGenerator.js +0 -143
  117. package/dist/service-management/generators/config/DevelopmentEnvGenerator.js +0 -101
  118. package/dist/service-management/generators/config/DomainsConfigGenerator.js +0 -175
  119. package/dist/service-management/generators/config/EnvExampleGenerator.js +0 -178
  120. package/dist/service-management/generators/config/ProductionEnvGenerator.js +0 -97
  121. package/dist/service-management/generators/config/StagingEnvGenerator.js +0 -97
  122. package/dist/service-management/generators/config/WranglerTomlGenerator.js +0 -238
  123. package/dist/service-management/generators/core/PackageJsonGenerator.js +0 -243
  124. package/dist/service-management/generators/core/SiteConfigGenerator.js +0 -115
  125. package/dist/service-management/generators/documentation/ApiDocsGenerator.js +0 -331
  126. package/dist/service-management/generators/documentation/ConfigurationDocsGenerator.js +0 -294
  127. package/dist/service-management/generators/documentation/DeploymentDocsGenerator.js +0 -244
  128. package/dist/service-management/generators/documentation/ReadmeGenerator.js +0 -196
  129. package/dist/service-management/generators/schemas/ServiceSchemaGenerator.js +0 -190
  130. package/dist/service-management/generators/scripts/DeployScriptGenerator.js +0 -123
  131. package/dist/service-management/generators/scripts/HealthCheckScriptGenerator.js +0 -101
  132. package/dist/service-management/generators/scripts/SetupScriptGenerator.js +0 -88
  133. package/dist/service-management/generators/service-types/StaticSiteGenerator.js +0 -342
  134. package/dist/service-management/generators/testing/EslintConfigGenerator.js +0 -85
  135. package/dist/service-management/generators/testing/IntegrationTestsGenerator.js +0 -237
  136. package/dist/service-management/generators/testing/JestConfigGenerator.js +0 -72
  137. package/dist/service-management/generators/testing/UnitTestsGenerator.js +0 -277
  138. package/dist/service-management/generators/tooling/DockerComposeGenerator.js +0 -71
  139. package/dist/service-management/generators/tooling/GitignoreGenerator.js +0 -143
  140. package/dist/service-management/generators/utils/FileWriter.js +0 -179
  141. package/dist/service-management/generators/utils/PathResolver.js +0 -157
  142. package/dist/service-management/generators/utils/ServiceManifestGenerator.js +0 -111
  143. package/dist/service-management/generators/utils/TemplateEngine.js +0 -185
  144. package/dist/service-management/generators/utils/index.js +0 -18
  145. package/dist/service-management/handlers/ConfirmationHandler.js +0 -71
  146. package/dist/service-management/handlers/GenerationHandler.js +0 -80
  147. package/dist/service-management/handlers/InputHandler.js +0 -59
  148. package/dist/service-management/handlers/ValidationHandler.js +0 -203
  149. package/dist/service-management/index.js +0 -14
  150. package/dist/service-management/routing/DomainRouteMapper.js +0 -311
  151. package/dist/service-management/routing/RouteGenerator.js +0 -266
  152. package/dist/service-management/routing/WranglerRoutesBuilder.js +0 -273
  153. package/dist/service-management/routing/index.js +0 -14
  154. package/dist/service-management/services/DirectoryStructureService.js +0 -56
  155. package/dist/service-management/services/GenerationCoordinator.js +0 -208
  156. package/dist/service-management/services/GeneratorRegistry.js +0 -174
  157. package/dist/services/GenericDataService.js +0 -501
  158. package/dist/ui-structures/concepts/second-order-acquisition-strategy.md +0 -286
  159. package/dist/ui-structures/concepts/service-lifecycle-management.md +0 -150
  160. package/dist/ui-structures/concepts/service-manifest-guide.md +0 -309
  161. package/dist/ui-structures/concepts/three-tier-categorization-strategy.md +0 -231
  162. package/dist/ui-structures/creation/automated-generation-ui.json +0 -246
  163. package/dist/ui-structures/creation/core-inputs-ui.json +0 -217
  164. package/dist/ui-structures/creation/smart-confirmable-ui.json +0 -451
  165. package/dist/ui-structures/reference/absolutely-required-inputs.json +0 -315
  166. package/dist/ui-structures/reference/service-manifest-template.json +0 -342
  167. package/dist/version/VersionDetector.js +0 -723
  168. package/dist/worker/index.js +0 -4
  169. 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
- }