@tamyla/clodo-framework 1.0.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.
Files changed (130) hide show
  1. package/CHANGELOG.md +564 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1393 -0
  4. package/bin/README.md +71 -0
  5. package/bin/clodo-service.js +416 -0
  6. package/bin/security/security-cli.js +96 -0
  7. package/bin/service-management/README.md +74 -0
  8. package/bin/service-management/create-service.js +129 -0
  9. package/bin/service-management/init-service.js +102 -0
  10. package/bin/service-management/init-service.js.backup +889 -0
  11. package/bin/shared/config/customer-cli.js +293 -0
  12. package/dist/config/ConfigurationManager.js +159 -0
  13. package/dist/config/CustomerConfigCLI.js +220 -0
  14. package/dist/config/FeatureManager.js +426 -0
  15. package/dist/config/customers.js +441 -0
  16. package/dist/config/domains.js +180 -0
  17. package/dist/config/features.js +225 -0
  18. package/dist/config/index.js +6 -0
  19. package/dist/database/database-orchestrator.js +730 -0
  20. package/dist/database/index.js +4 -0
  21. package/dist/deployment/auditor.js +971 -0
  22. package/dist/deployment/index.js +10 -0
  23. package/dist/deployment/rollback-manager.js +523 -0
  24. package/dist/deployment/testers/api-tester.js +80 -0
  25. package/dist/deployment/testers/auth-tester.js +129 -0
  26. package/dist/deployment/testers/core.js +217 -0
  27. package/dist/deployment/testers/database-tester.js +105 -0
  28. package/dist/deployment/testers/index.js +74 -0
  29. package/dist/deployment/testers/load-tester.js +120 -0
  30. package/dist/deployment/testers/performance-tester.js +105 -0
  31. package/dist/deployment/validator.js +558 -0
  32. package/dist/deployment/wrangler-deployer.js +574 -0
  33. package/dist/handlers/GenericRouteHandler.js +532 -0
  34. package/dist/index.js +39 -0
  35. package/dist/migration/MigrationAdapters.js +562 -0
  36. package/dist/modules/ModuleManager.js +668 -0
  37. package/dist/modules/security.js +98 -0
  38. package/dist/orchestration/cross-domain-coordinator.js +1083 -0
  39. package/dist/orchestration/index.js +5 -0
  40. package/dist/orchestration/modules/DeploymentCoordinator.js +258 -0
  41. package/dist/orchestration/modules/DomainResolver.js +196 -0
  42. package/dist/orchestration/modules/StateManager.js +332 -0
  43. package/dist/orchestration/multi-domain-orchestrator.js +255 -0
  44. package/dist/routing/EnhancedRouter.js +158 -0
  45. package/dist/schema/SchemaManager.js +778 -0
  46. package/dist/security/ConfigurationValidator.js +490 -0
  47. package/dist/security/DeploymentManager.js +208 -0
  48. package/dist/security/SecretGenerator.js +142 -0
  49. package/dist/security/SecurityCLI.js +228 -0
  50. package/dist/security/index.js +51 -0
  51. package/dist/security/patterns/environment-rules.js +66 -0
  52. package/dist/security/patterns/insecure-patterns.js +21 -0
  53. package/dist/service-management/ConfirmationEngine.js +411 -0
  54. package/dist/service-management/ErrorTracker.js +294 -0
  55. package/dist/service-management/GenerationEngine.js +3109 -0
  56. package/dist/service-management/InputCollector.js +237 -0
  57. package/dist/service-management/ServiceCreator.js +229 -0
  58. package/dist/service-management/ServiceInitializer.js +448 -0
  59. package/dist/service-management/ServiceOrchestrator.js +638 -0
  60. package/dist/service-management/handlers/ConfigMutator.js +130 -0
  61. package/dist/service-management/handlers/ConfirmationHandler.js +71 -0
  62. package/dist/service-management/handlers/GenerationHandler.js +80 -0
  63. package/dist/service-management/handlers/InputHandler.js +59 -0
  64. package/dist/service-management/handlers/ValidationHandler.js +203 -0
  65. package/dist/service-management/index.js +7 -0
  66. package/dist/services/GenericDataService.js +488 -0
  67. package/dist/shared/cloudflare/domain-discovery.js +562 -0
  68. package/dist/shared/cloudflare/domain-manager.js +912 -0
  69. package/dist/shared/cloudflare/index.js +8 -0
  70. package/dist/shared/cloudflare/ops.js +387 -0
  71. package/dist/shared/config/cache.js +1167 -0
  72. package/dist/shared/config/command-config-manager.js +174 -0
  73. package/dist/shared/config/customer-cli.js +258 -0
  74. package/dist/shared/config/index.js +9 -0
  75. package/dist/shared/config/manager.js +289 -0
  76. package/dist/shared/database/connection-manager.js +338 -0
  77. package/dist/shared/database/index.js +7 -0
  78. package/dist/shared/database/orchestrator.js +632 -0
  79. package/dist/shared/deployment/auditor.js +971 -0
  80. package/dist/shared/deployment/index.js +10 -0
  81. package/dist/shared/deployment/rollback-manager.js +523 -0
  82. package/dist/shared/deployment/validator.js +558 -0
  83. package/dist/shared/index.js +32 -0
  84. package/dist/shared/monitoring/health-checker.js +250 -0
  85. package/dist/shared/monitoring/index.js +8 -0
  86. package/dist/shared/monitoring/memory-manager.js +382 -0
  87. package/dist/shared/monitoring/production-monitor.js +390 -0
  88. package/dist/shared/production-tester/api-tester.js +80 -0
  89. package/dist/shared/production-tester/auth-tester.js +129 -0
  90. package/dist/shared/production-tester/core.js +217 -0
  91. package/dist/shared/production-tester/database-tester.js +105 -0
  92. package/dist/shared/production-tester/index.js +74 -0
  93. package/dist/shared/production-tester/load-tester.js +120 -0
  94. package/dist/shared/production-tester/performance-tester.js +105 -0
  95. package/dist/shared/security/api-token-manager.js +296 -0
  96. package/dist/shared/security/index.js +8 -0
  97. package/dist/shared/security/secret-generator.js +918 -0
  98. package/dist/shared/security/secure-token-manager.js +379 -0
  99. package/dist/shared/utils/error-recovery.js +240 -0
  100. package/dist/shared/utils/graceful-shutdown-manager.js +380 -0
  101. package/dist/shared/utils/index.js +9 -0
  102. package/dist/shared/utils/interactive-prompts.js +134 -0
  103. package/dist/shared/utils/rate-limiter.js +249 -0
  104. package/dist/utils/ErrorHandler.js +173 -0
  105. package/dist/utils/deployment/config-cache.js +1160 -0
  106. package/dist/utils/deployment/index.js +6 -0
  107. package/dist/utils/deployment/interactive-prompts.js +97 -0
  108. package/dist/utils/deployment/secret-generator.js +896 -0
  109. package/dist/utils/dirname-helper.js +35 -0
  110. package/dist/utils/domain-config.js +159 -0
  111. package/dist/utils/error-recovery.js +240 -0
  112. package/dist/utils/esm-helper.js +52 -0
  113. package/dist/utils/framework-config.js +481 -0
  114. package/dist/utils/graceful-shutdown-manager.js +379 -0
  115. package/dist/utils/health-checker.js +114 -0
  116. package/dist/utils/index.js +36 -0
  117. package/dist/utils/prompt-handler.js +98 -0
  118. package/dist/utils/usage-tracker.js +252 -0
  119. package/dist/utils/validation.js +112 -0
  120. package/dist/version/VersionDetector.js +723 -0
  121. package/dist/worker/index.js +4 -0
  122. package/dist/worker/integration.js +332 -0
  123. package/docs/FRAMEWORK-ARCHITECTURE-OVERVIEW.md +206 -0
  124. package/docs/INTEGRATION_GUIDE.md +2045 -0
  125. package/docs/README.md +82 -0
  126. package/docs/SECURITY.md +242 -0
  127. package/docs/deployment/deployment-guide.md +540 -0
  128. package/docs/overview.md +280 -0
  129. package/package.json +176 -0
  130. package/types/index.d.ts +575 -0
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Clodo Framework - Service Template Generator
5
+ * Creates new ser console.log(`āœ“ Using Clodo Framework ServiceCreator module`);ices from predefined templates
6
+ */
7
+
8
+ import { ServiceCreator } from '../../src/service-management/ServiceCreator.js';
9
+
10
+ const SERVICE_TYPES = ['data-service', 'auth-service', 'content-service', 'api-gateway', 'generic'];
11
+
12
+ function showUsage() {
13
+ console.log(`
14
+ Clodo Framework - Service Template Generator
15
+
16
+ Usage: clodo-create-service <service-name> [options]
17
+
18
+ Arguments:
19
+ service-name Name of the service to create (required)
20
+
21
+ Options:
22
+ -t, --type <type> Service type: ${SERVICE_TYPES.join(', ')} (default: generic)
23
+ -o, --output <path> Output directory (default: current directory)
24
+ -f, --force Overwrite existing service directory
25
+ -h, --help Show this help message
26
+
27
+ Examples:
28
+ clodo-create-service my-data-service --type data-service
29
+ clodo-create-service auth-api --type auth-service --output ./services
30
+ clodo-create-service my-service --force
31
+ `);
32
+ }
33
+
34
+ function parseArgs(args) {
35
+ const options = {
36
+ type: 'generic',
37
+ output: process.cwd(),
38
+ force: false
39
+ };
40
+
41
+ let serviceName = null;
42
+
43
+ for (let i = 0; i < args.length; i++) {
44
+ const arg = args[i];
45
+
46
+ switch (arg) {
47
+ case '-t':
48
+ case '--type':
49
+ options.type = args[++i];
50
+ break;
51
+ case '-o':
52
+ case '--output':
53
+ options.output = args[++i];
54
+ break;
55
+ case '-f':
56
+ case '--force':
57
+ options.force = true;
58
+ break;
59
+ case '-h':
60
+ case '--help':
61
+ showUsage();
62
+ process.exit(0);
63
+ break;
64
+ default:
65
+ if (!arg.startsWith('-') && !serviceName) {
66
+ serviceName = arg;
67
+ } else {
68
+ console.error(`Unknown option: ${arg}`);
69
+ showUsage();
70
+ process.exit(1);
71
+ }
72
+ }
73
+ }
74
+
75
+ if (!serviceName) {
76
+ console.error('Error: Service name is required');
77
+ showUsage();
78
+ process.exit(1);
79
+ }
80
+
81
+ if (!SERVICE_TYPES.includes(options.type)) {
82
+ console.error(`Error: Invalid service type. Must be one of: ${SERVICE_TYPES.join(', ')}`);
83
+ process.exit(1);
84
+ }
85
+
86
+ return { serviceName, options };
87
+ }
88
+
89
+ // Main execution
90
+ async function main() {
91
+ try {
92
+ const args = process.argv.slice(2);
93
+ const { serviceName, options } = parseArgs(args);
94
+
95
+ console.log(`šŸš€ Creating ${options.type} service: ${serviceName}`);
96
+ console.log(`āœ“ Using Clodo Framework ServiceCreator module`);
97
+ console.log('');
98
+
99
+ const creator = new ServiceCreator();
100
+ const result = await creator.createService(serviceName, options);
101
+
102
+ if (result.success) {
103
+ console.log('āœ… Service created successfully!');
104
+ console.log('');
105
+ console.log('šŸ“ Next steps:');
106
+ console.log(` cd ${result.serviceDir.split('/').pop() || result.serviceDir.split('\\').pop()}`);
107
+ console.log(' npm install');
108
+ console.log(' npm run setup # Configure domain and Cloudflare settings');
109
+ console.log(' npm run dev # Start development server');
110
+ console.log('');
111
+ console.log('šŸ“š Documentation:');
112
+ console.log(' README.md # Service documentation');
113
+ console.log(' API.md # API documentation');
114
+ console.log('');
115
+ console.log('šŸ”— Useful commands:');
116
+ console.log(' npm test # Run tests');
117
+ console.log(' npm run deploy # Deploy to Cloudflare');
118
+ } else {
119
+ console.error('āŒ Service creation failed:', result.error);
120
+ process.exit(1);
121
+ }
122
+ } catch (error) {
123
+ console.error('āŒ Unexpected error:', error.message);
124
+ process.exit(1);
125
+ }
126
+ }
127
+
128
+ // Run the generator
129
+ main();
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Clodo Framework - Service Initializer
5
+ *
6
+ * Initializes a new service with auto-generated configurations,
7
+ * eliminating the need for manual wrangler.toml and domains.js setup.
8
+ *
9
+ * This solves the workflow order problem by making configuration
10
+ * generation the first step, not a prerequisite.
11
+ */
12
+
13
+ import { program } from 'commander';
14
+ import { ServiceInitializer } from '../../src/service-management/ServiceInitializer.js';
15
+
16
+ const SERVICE_TYPES = ['generic', 'data-service', 'auth-service', 'content-service', 'api-gateway'];
17
+
18
+ class ServiceInitializerCLI {
19
+ constructor() {
20
+ this.setupCLI();
21
+ }
22
+
23
+ setupCLI() {
24
+ program
25
+ .name('clodo-init-service')
26
+ .description('Initialize a Clodo Framework service with auto-generated configurations')
27
+ .version('1.0.0')
28
+ .argument('<service-name>', 'Name of the service to initialize')
29
+ .option('-t, --type <type>', 'Service type', 'generic')
30
+ .option('-d, --domains <domains>', 'Comma-separated list of domains (can include account info)')
31
+ .option('-e, --env <environment>', 'Target environment', 'development')
32
+ .option('--api-token <token>', 'Cloudflare API token for domain discovery')
33
+ .option('--account-id <id>', 'Default Cloudflare account ID')
34
+ .option('--zone-id <id>', 'Default Cloudflare zone ID')
35
+ .option('-o, --output <path>', 'Output directory (services will be created in a services/ subdirectory)', process.cwd())
36
+ .option('-f, --force', 'Overwrite existing service directory')
37
+ .option('--dry-run', 'Show what would be created without creating files')
38
+ .option('--multi-domain', 'Generate configurations for multiple domains')
39
+ .action((serviceName, options) => {
40
+ this.initializeService(serviceName, options);
41
+ });
42
+
43
+ program.on('--help', () => {
44
+ console.log('\nExamples:');
45
+ console.log(' clodo-init-service my-api --type api-gateway --domains "api.example.com,staging.example.com"');
46
+ console.log(' clodo-init-service data-service --type data-service --api-token $CF_TOKEN');
47
+ console.log(' clodo-init-service my-service --env production --account-id $CF_ACCOUNT_ID');
48
+ console.log('\nServices are created in: ./services/{service-name}/');
49
+ console.log('\nEnvironment Variables:');
50
+ console.log(' CLOUDFLARE_API_TOKEN - API token for domain discovery');
51
+ console.log(' CLOUDFLARE_ACCOUNT_ID - Account ID for configurations');
52
+ console.log(' CLOUDFLARE_ZONE_ID - Zone ID for domain configurations');
53
+ });
54
+ }
55
+
56
+ async initializeService(serviceName, options) {
57
+ try {
58
+ console.log('šŸš€ Clodo Framework - Service Initializer');
59
+ console.log('=' .repeat(50));
60
+ console.log('šŸ“¦ Using Clodo Framework ServiceInitializer module');
61
+ console.log('');
62
+
63
+ const initializer = new ServiceInitializer();
64
+ const result = await initializer.initializeService(serviceName, {
65
+ type: options.type,
66
+ domains: options.domains,
67
+ env: options.env,
68
+ apiToken: options.apiToken,
69
+ accountId: options.accountId,
70
+ zoneId: options.zoneId,
71
+ output: options.output,
72
+ force: options.force,
73
+ dryRun: options.dryRun
74
+ });
75
+
76
+ if (result.success) {
77
+ if (result.dryRun) {
78
+ console.log('šŸ“‹ Dry run - would create the following:');
79
+ console.log('Files:', result.configs.join(', '));
80
+ return;
81
+ }
82
+
83
+ console.log('\nāœ… Service initialized successfully!');
84
+ console.log('\nšŸ“ Next steps:');
85
+ console.log(` cd services/${serviceName}`);
86
+ console.log(' npm install');
87
+ console.log(' npm run dev # Start development server');
88
+ console.log(' npm run deploy # Deploy to Cloudflare');
89
+ } else {
90
+ console.error('\nāŒ Initialization failed:', result.error);
91
+ process.exit(1);
92
+ }
93
+ } catch (error) {
94
+ console.error('\nāŒ Unexpected error:', error.message);
95
+ process.exit(1);
96
+ }
97
+ }
98
+ }
99
+
100
+ // Run the CLI
101
+ const cli = new ServiceInitializerCLI();
102
+ program.parse();