@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,723 +0,0 @@
1
- /**
2
- * Version Detection System for CLODO Framework
3
- * Automatically detects framework versions and chooses appropriate implementations
4
- */
5
-
6
- import { featureManager, FEATURES } from '../config/FeatureManager.js';
7
- import { MigrationFactory } from './MigrationAdapters.js';
8
-
9
- /**
10
- * Version Detection and Compatibility Manager
11
- */
12
- export class VersionDetector {
13
- constructor() {
14
- this.detectionCache = new Map();
15
- this.compatibilityMatrix = new Map();
16
- this.versionHistory = [];
17
- this.currentVersion = null;
18
- this._initializeCompatibilityMatrix();
19
- this._detectCurrentVersion();
20
- }
21
-
22
- /**
23
- * Detect the current framework version
24
- * @returns {Object} Version information
25
- */
26
- detectVersion() {
27
- if (this.currentVersion) {
28
- return this.currentVersion;
29
- }
30
- const cacheKey = 'framework_version';
31
- if (this.detectionCache.has(cacheKey)) {
32
- return this.detectionCache.get(cacheKey);
33
- }
34
- const versionInfo = this._performVersionDetection();
35
- this.detectionCache.set(cacheKey, versionInfo);
36
- this.currentVersion = versionInfo;
37
- return versionInfo;
38
- }
39
-
40
- /**
41
- * Check compatibility between versions
42
- * @param {string} sourceVersion - Source version
43
- * @param {string} targetVersion - Target version
44
- * @returns {Object} Compatibility information
45
- */
46
- checkCompatibility(sourceVersion, targetVersion) {
47
- const compatKey = `${sourceVersion}->${targetVersion}`;
48
- if (this.compatibilityMatrix.has(compatKey)) {
49
- return this.compatibilityMatrix.get(compatKey);
50
- }
51
- const compatibility = this._calculateCompatibility(sourceVersion, targetVersion);
52
- this.compatibilityMatrix.set(compatKey, compatibility);
53
- return compatibility;
54
- }
55
-
56
- /**
57
- * Get recommended implementation based on version and features
58
- * @param {string} componentType - Type of component (schemaManager, dataService, etc.)
59
- * @param {Object} options - Detection options
60
- * @returns {Object} Implementation recommendation
61
- */
62
- getRecommendedImplementation(componentType, options = {}) {
63
- const version = this.detectVersion();
64
- const features = this._analyzeAvailableFeatures(componentType);
65
- const userPreferences = this._getUserPreferences(options);
66
- return {
67
- componentType,
68
- version: version.version,
69
- implementation: this._selectImplementation(componentType, version, features, userPreferences),
70
- features: features,
71
- migrationPath: this._generateMigrationPath(componentType, version),
72
- compatibility: this._getCompatibilityInfo(componentType, version)
73
- };
74
- }
75
-
76
- /**
77
- * Auto-configure framework based on detected environment
78
- * @param {Object} overrides - Manual configuration overrides
79
- * @returns {Object} Configuration result
80
- */
81
- autoConfigureFramework(overrides = {}) {
82
- const version = this.detectVersion();
83
- const environment = this._detectEnvironment();
84
- const capabilities = this._detectCapabilities();
85
- const configuration = {
86
- version: version.version,
87
- environment: environment.type,
88
- capabilities: capabilities,
89
- features: this._generateFeatureConfiguration(version, environment, capabilities),
90
- components: this._generateComponentConfiguration(version, environment),
91
- migration: this._generateMigrationConfiguration(version, environment)
92
- };
93
-
94
- // Apply overrides
95
- if (overrides.features) {
96
- Object.assign(configuration.features, overrides.features);
97
- }
98
-
99
- // Configure feature manager
100
- this._applyFeatureConfiguration(configuration.features);
101
- return configuration;
102
- }
103
-
104
- /**
105
- * Create version-appropriate adapters
106
- * @param {Object} components - Available components
107
- * @returns {Object} Configured adapters
108
- */
109
- createVersionAdapters(components) {
110
- const version = this.detectVersion();
111
- const compatibility = this._getVersionCompatibility(version);
112
- if (compatibility.requiresAdapters) {
113
- return this._createCompatibilityAdapters(components, version);
114
- }
115
- return this._createDirectAdapters(components, version);
116
- }
117
-
118
- /**
119
- * Generate migration strategy
120
- * @param {string} targetVersion - Target version to migrate to
121
- * @returns {Object} Migration strategy
122
- */
123
- generateMigrationStrategy(targetVersion) {
124
- const currentVersion = this.detectVersion();
125
- const compatibility = this.checkCompatibility(currentVersion.version, targetVersion);
126
- return {
127
- sourceVersion: currentVersion.version,
128
- targetVersion: targetVersion,
129
- compatibility: compatibility,
130
- strategy: this._determineMigrationStrategy(currentVersion, targetVersion, compatibility),
131
- phases: this._generateMigrationPhases(currentVersion, targetVersion),
132
- risks: this._assessMigrationRisks(currentVersion, targetVersion),
133
- timeline: this._estimateMigrationTimeline(currentVersion, targetVersion)
134
- };
135
- }
136
-
137
- // Private methods
138
-
139
- /**
140
- * Initialize compatibility matrix with known version relationships
141
- * @private
142
- */
143
- _initializeCompatibilityMatrix() {
144
- const compatibilityRules = [
145
- // Legacy to Enhanced (1.x -> 2.x)
146
- {
147
- source: '1.0.0',
148
- target: '2.0.0',
149
- compatible: true,
150
- requiresAdapters: true,
151
- breakingChanges: ['API signature changes', 'Configuration format changes'],
152
- migrationComplexity: 'medium'
153
- }, {
154
- source: '1.1.0',
155
- target: '2.0.0',
156
- compatible: true,
157
- requiresAdapters: true,
158
- breakingChanges: ['Enhanced validation format'],
159
- migrationComplexity: 'low'
160
- },
161
- // Enhanced versions (2.x series)
162
- {
163
- source: '2.0.0',
164
- target: '2.1.0',
165
- compatible: true,
166
- requiresAdapters: false,
167
- breakingChanges: [],
168
- migrationComplexity: 'none'
169
- }];
170
- compatibilityRules.forEach(rule => {
171
- const key = `${rule.source}->${rule.target}`;
172
- this.compatibilityMatrix.set(key, rule);
173
- });
174
- }
175
-
176
- /**
177
- * Detect current framework version
178
- * @private
179
- */
180
- _detectCurrentVersion() {
181
- this.currentVersion = this._performVersionDetection();
182
- }
183
-
184
- /**
185
- * Perform actual version detection
186
- * @private
187
- */
188
- _performVersionDetection() {
189
- const detectionMethods = [() => this._detectFromPackageJson(), () => this._detectFromModuleExports(), () => this._detectFromFeatureFlags(), () => this._detectFromAPISignatures(), () => this._detectFromFileStructure()];
190
- let versionInfo = null;
191
- for (const method of detectionMethods) {
192
- try {
193
- const result = method();
194
- if (result && result.confidence > 0.5) {
195
- versionInfo = result;
196
- break;
197
- }
198
- } catch (error) {
199
- // Continue with next detection method
200
- continue;
201
- }
202
- }
203
- if (!versionInfo) {
204
- versionInfo = this._getDefaultVersionInfo();
205
- }
206
-
207
- // Add detection metadata
208
- versionInfo.detectedAt = new Date().toISOString();
209
- versionInfo.detectionMethod = versionInfo.method || 'default';
210
- return versionInfo;
211
- }
212
-
213
- /**
214
- * Detect version from package.json
215
- * @private
216
- */
217
- _detectFromPackageJson() {
218
- try {
219
- // In a real implementation, this would read from actual package.json
220
- // For now, we'll simulate detection
221
- const packageVersion = '2.0.0'; // Simulated version
222
-
223
- return {
224
- version: packageVersion,
225
- type: 'enhanced',
226
- confidence: 0.9,
227
- method: 'package.json',
228
- features: ['caching', 'validation', 'security', 'metrics']
229
- };
230
- } catch {
231
- return null;
232
- }
233
- }
234
-
235
- /**
236
- * Detect version from module exports
237
- * @private
238
- */
239
- _detectFromModuleExports() {
240
- try {
241
- // Check for enhanced features in exports
242
- const hasEnhancedFeatures = this._checkForEnhancedFeatures();
243
- if (hasEnhancedFeatures) {
244
- return {
245
- version: '2.0.0',
246
- type: 'enhanced',
247
- confidence: 0.8,
248
- method: 'module_exports',
249
- features: this._detectAvailableFeatures()
250
- };
251
- } else {
252
- return {
253
- version: '1.0.0',
254
- type: 'legacy',
255
- confidence: 0.7,
256
- method: 'module_exports',
257
- features: ['basic_crud', 'simple_validation']
258
- };
259
- }
260
- } catch {
261
- return null;
262
- }
263
- }
264
-
265
- /**
266
- * Detect version from feature flags
267
- * @private
268
- */
269
- _detectFromFeatureFlags() {
270
- try {
271
- const hasFeatureManager = typeof featureManager !== 'undefined';
272
- if (hasFeatureManager) {
273
- const allFeatures = featureManager.getAllFeatures();
274
- const enhancedFeatureCount = Object.keys(allFeatures).length;
275
- return {
276
- version: enhancedFeatureCount > 10 ? '2.0.0' : '1.1.0',
277
- type: 'enhanced',
278
- confidence: 0.85,
279
- method: 'feature_flags',
280
- features: Object.keys(allFeatures)
281
- };
282
- }
283
- return null;
284
- } catch {
285
- return null;
286
- }
287
- }
288
-
289
- /**
290
- * Detect version from API signatures
291
- * @private
292
- */
293
- _detectFromAPISignatures() {
294
- try {
295
- // Check for enhanced method signatures
296
- const signatures = this._analyzeAPISignatures();
297
- if (signatures.hasEnhancedSignatures) {
298
- return {
299
- version: '2.0.0',
300
- type: 'enhanced',
301
- confidence: 0.75,
302
- method: 'api_signatures',
303
- features: signatures.detectedFeatures
304
- };
305
- }
306
- return {
307
- version: '1.0.0',
308
- type: 'legacy',
309
- confidence: 0.6,
310
- method: 'api_signatures',
311
- features: ['basic_api']
312
- };
313
- } catch {
314
- return null;
315
- }
316
- }
317
-
318
- /**
319
- * Detect version from file structure
320
- * @private
321
- */
322
- _detectFromFileStructure() {
323
- try {
324
- // Check for enhanced framework structure
325
- const hasEnhancedStructure = this._checkFileStructure();
326
- return {
327
- version: hasEnhancedStructure ? '2.0.0' : '1.0.0',
328
- type: hasEnhancedStructure ? 'enhanced' : 'legacy',
329
- confidence: 0.6,
330
- method: 'file_structure',
331
- features: hasEnhancedStructure ? ['enhanced_structure'] : ['basic_structure']
332
- };
333
- } catch {
334
- return null;
335
- }
336
- }
337
-
338
- /**
339
- * Get default version info as fallback
340
- * @private
341
- */
342
- _getDefaultVersionInfo() {
343
- return {
344
- version: '2.0.0',
345
- type: 'enhanced',
346
- confidence: 0.3,
347
- method: 'default',
348
- features: ['unknown'],
349
- warning: 'Version detection failed, using default enhanced version'
350
- };
351
- }
352
-
353
- /**
354
- * Check for enhanced framework features
355
- * @private
356
- */
357
- _checkForEnhancedFeatures() {
358
- // Check for enhanced method signatures or capabilities
359
- const enhancedIndicators = ['validateData', 'getCacheMetrics', 'executeHooks', 'generateMigrationPath'];
360
-
361
- // In a real implementation, this would check actual exports
362
- return enhancedIndicators.some(() => {
363
- // Simulate checking for method existence
364
- return true; // Assume enhanced features are available
365
- });
366
- }
367
-
368
- /**
369
- * Detect available features
370
- * @private
371
- */
372
- _detectAvailableFeatures() {
373
- const features = [];
374
-
375
- // Check for caching capabilities
376
- if (this._hasFeature('caching')) {
377
- features.push('caching');
378
- }
379
-
380
- // Check for validation capabilities
381
- if (this._hasFeature('validation')) {
382
- features.push('validation');
383
- }
384
-
385
- // Check for security capabilities
386
- if (this._hasFeature('security')) {
387
- features.push('security');
388
- }
389
- return features;
390
- }
391
-
392
- /**
393
- * Check if a specific feature is available
394
- * @private
395
- */
396
- _hasFeature() {
397
- // In a real implementation, this would test for actual feature availability
398
- return true; // Assume features are available for now
399
- }
400
-
401
- /**
402
- * Analyze API signatures for version detection
403
- * @private
404
- */
405
- _analyzeAPISignatures() {
406
- // Check method signatures for enhanced features
407
- const enhancedMethods = ['validateData', 'getCacheMetrics', 'executeHooks'];
408
- return {
409
- hasEnhancedSignatures: true,
410
- // Simulate detection
411
- detectedFeatures: enhancedMethods
412
- };
413
- }
414
-
415
- /**
416
- * Check file structure for version indicators
417
- * @private
418
- */
419
- _checkFileStructure() {
420
- // Check for enhanced framework directory structure
421
- // const enhancedPaths = [
422
- // 'src/config/FeatureManager.js',
423
- // 'src/migration/MigrationAdapters.js',
424
- // 'src/monitoring/'
425
- // ];
426
-
427
- // In a real implementation, this would check actual file system
428
- return true; // Assume enhanced structure
429
- }
430
-
431
- /**
432
- * Calculate compatibility between versions
433
- * @private
434
- */
435
- _calculateCompatibility(sourceVersion, targetVersion) {
436
- const [sourceMajor, sourceMinor] = this._parseVersion(sourceVersion);
437
- const [targetMajor, targetMinor] = this._parseVersion(targetVersion);
438
- const majorDiff = Math.abs(targetMajor - sourceMajor);
439
- const minorDiff = Math.abs(targetMinor - sourceMinor);
440
- if (majorDiff > 1) {
441
- return {
442
- compatible: false,
443
- requiresAdapters: false,
444
- migrationComplexity: 'impossible',
445
- breakingChanges: ['Major version incompatibility']
446
- };
447
- }
448
- if (majorDiff === 1) {
449
- return {
450
- compatible: true,
451
- requiresAdapters: true,
452
- migrationComplexity: 'high',
453
- breakingChanges: ['API changes', 'Configuration changes']
454
- };
455
- }
456
- return {
457
- compatible: true,
458
- requiresAdapters: minorDiff > 0,
459
- migrationComplexity: minorDiff > 0 ? 'low' : 'none',
460
- breakingChanges: []
461
- };
462
- }
463
-
464
- /**
465
- * Parse version string
466
- * @private
467
- */
468
- _parseVersion(versionString) {
469
- const parts = versionString.split('.').map(Number);
470
- return [parts[0] || 0, parts[1] || 0, parts[2] || 0];
471
- }
472
-
473
- /**
474
- * Analyze available features for component type
475
- * @private
476
- */
477
- _analyzeAvailableFeatures(componentType) {
478
- const featureMap = {
479
- schemaManager: [FEATURES.ENABLE_ENHANCED_SCHEMA, FEATURES.ENABLE_SCHEMA_CACHING, FEATURES.ENABLE_COMPREHENSIVE_VALIDATION],
480
- dataService: [FEATURES.ENABLE_QUERY_CACHING, FEATURES.ENABLE_SECURITY_CONTROLS, FEATURES.ENABLE_ADVANCED_PAGINATION],
481
- moduleManager: [FEATURES.ENABLE_ENHANCED_HOOKS, FEATURES.ENABLE_HOOK_TIMEOUT, FEATURES.ENABLE_HOOK_METRICS]
482
- };
483
- const componentFeatures = featureMap[componentType] || [];
484
- return componentFeatures.map(feature => ({
485
- name: feature,
486
- enabled: featureManager.isEnabled(feature),
487
- available: true
488
- }));
489
- }
490
-
491
- /**
492
- * Get user preferences from options
493
- * @private
494
- */
495
- _getUserPreferences(options) {
496
- return {
497
- preferEnhanced: options.preferEnhanced ?? true,
498
- enableMigration: options.enableMigration ?? true,
499
- riskTolerance: options.riskTolerance || 'medium',
500
- performanceFirst: options.performanceFirst ?? false
501
- };
502
- }
503
-
504
- /**
505
- * Select appropriate implementation
506
- * @private
507
- */
508
- _selectImplementation(componentType, version, features, preferences) {
509
- if (version.type === 'legacy' && preferences.preferEnhanced) {
510
- return {
511
- type: 'adapter',
512
- reason: 'Legacy version with enhanced preference',
513
- adapter: 'migration'
514
- };
515
- }
516
- if (version.type === 'enhanced') {
517
- return {
518
- type: 'enhanced',
519
- reason: 'Enhanced version available',
520
- adapter: 'direct'
521
- };
522
- }
523
- return {
524
- type: 'legacy',
525
- reason: 'Legacy version, no migration requested',
526
- adapter: 'none'
527
- };
528
- }
529
-
530
- /**
531
- * Generate migration path for component
532
- * @private
533
- */
534
- _generateMigrationPath(componentType, version) {
535
- if (version.type === 'enhanced') {
536
- return {
537
- required: false,
538
- steps: []
539
- };
540
- }
541
- return {
542
- required: true,
543
- steps: ['Enable feature flags', 'Create migration adapters', 'Test compatibility', 'Gradual rollout']
544
- };
545
- }
546
-
547
- /**
548
- * Get compatibility information for component
549
- * @private
550
- */
551
- _getCompatibilityInfo(componentType, version) {
552
- return {
553
- backwardCompatible: version.type === 'enhanced',
554
- forwardCompatible: true,
555
- adaptersRequired: version.type === 'legacy',
556
- migrationPath: this._generateMigrationPath(componentType, version)
557
- };
558
- }
559
-
560
- /**
561
- * Detect environment information
562
- * @private
563
- */
564
- _detectEnvironment() {
565
- return {
566
- type: 'cloudflare-worker',
567
- runtime: 'v8',
568
- capabilities: ['d1', 'kv', 'durable-objects'],
569
- constraints: ['memory-limited', 'cpu-limited']
570
- };
571
- }
572
-
573
- /**
574
- * Detect runtime capabilities
575
- * @private
576
- */
577
- _detectCapabilities() {
578
- return {
579
- database: ['d1'],
580
- storage: ['kv'],
581
- compute: ['isolates'],
582
- networking: ['fetch'],
583
- caching: ['cache-api'],
584
- monitoring: ['analytics']
585
- };
586
- }
587
-
588
- /**
589
- * Generate feature configuration
590
- * @private
591
- */
592
- _generateFeatureConfiguration(version, environment, capabilities) {
593
- const config = {};
594
-
595
- // Enable caching if supported
596
- if (capabilities.caching.includes('cache-api')) {
597
- config[FEATURES.ENABLE_QUERY_CACHING] = true;
598
- config[FEATURES.ENABLE_SCHEMA_CACHING] = true;
599
- }
600
-
601
- // Enable security in production
602
- if (environment.type !== 'development') {
603
- config[FEATURES.ENABLE_SECURITY_CONTROLS] = true;
604
- }
605
-
606
- // Enable monitoring if available
607
- if (capabilities.monitoring.includes('analytics')) {
608
- config[FEATURES.ENABLE_PERFORMANCE_MONITORING] = true;
609
- config[FEATURES.ENABLE_HOOK_METRICS] = true;
610
- }
611
- return config;
612
- }
613
-
614
- /**
615
- * Generate component configuration
616
- * @private
617
- */
618
- _generateComponentConfiguration(version, environment) {
619
- return {
620
- schemaManager: {
621
- implementation: version.type === 'enhanced' ? 'enhanced' : 'legacy',
622
- caching: environment.type !== 'development'
623
- },
624
- dataService: {
625
- implementation: version.type === 'enhanced' ? 'enhanced' : 'legacy',
626
- security: environment.type !== 'development'
627
- },
628
- moduleManager: {
629
- implementation: version.type === 'enhanced' ? 'enhanced' : 'legacy',
630
- metrics: environment.type !== 'development'
631
- }
632
- };
633
- }
634
-
635
- /**
636
- * Generate migration configuration
637
- * @private
638
- */
639
- _generateMigrationConfiguration(version, environment) {
640
- return {
641
- enabled: version.type === 'legacy',
642
- strategy: version.type === 'legacy' ? 'gradual' : 'none',
643
- phases: version.type === 'legacy' ? ['feature-flags', 'adapters', 'testing', 'rollout'] : []
644
- };
645
- }
646
-
647
- /**
648
- * Apply feature configuration to feature manager
649
- * @private
650
- */
651
- _applyFeatureConfiguration(features) {
652
- for (const [featureName, enabled] of Object.entries(features)) {
653
- if (enabled) {
654
- featureManager.enable(featureName, {
655
- reason: 'Auto-configured by version detector'
656
- });
657
- } else {
658
- featureManager.disable(featureName, {
659
- reason: 'Auto-configured by version detector'
660
- });
661
- }
662
- }
663
- }
664
-
665
- /**
666
- * Get version compatibility information
667
- * @private
668
- */
669
- _getVersionCompatibility(version) {
670
- return {
671
- requiresAdapters: version.type === 'legacy',
672
- supportsMigration: true,
673
- hasBreakingChanges: version.type === 'legacy'
674
- };
675
- }
676
-
677
- /**
678
- * Create compatibility adapters
679
- * @private
680
- */
681
- _createCompatibilityAdapters(components, version) {
682
- return MigrationFactory.createMigrationSuite(components, {} // Legacy components would be provided here if available
683
- );
684
- }
685
-
686
- /**
687
- * Create direct adapters (no compatibility needed)
688
- * @private
689
- */
690
- _createDirectAdapters(components, version) {
691
- return {
692
- schemaManager: components.schemaManager,
693
- dataService: components.dataService,
694
- moduleManager: components.moduleManager,
695
- direct: true,
696
- version: version.version
697
- };
698
- }
699
- }
700
-
701
- // Export singleton instance
702
- export const versionDetector = new VersionDetector();
703
-
704
- /**
705
- * Convenience function to auto-configure framework
706
- */
707
- export function autoConfigureFramework(overrides = {}) {
708
- return versionDetector.autoConfigureFramework(overrides);
709
- }
710
-
711
- /**
712
- * Convenience function to get version info
713
- */
714
- export function getFrameworkVersion() {
715
- return versionDetector.detectVersion();
716
- }
717
-
718
- /**
719
- * Convenience function to create adapters
720
- */
721
- export function createVersionAdapters(components) {
722
- return versionDetector.createVersionAdapters(components);
723
- }