@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.
- package/CHANGELOG.md +564 -0
- package/LICENSE +21 -0
- package/README.md +1393 -0
- package/bin/README.md +71 -0
- package/bin/clodo-service.js +416 -0
- package/bin/security/security-cli.js +96 -0
- package/bin/service-management/README.md +74 -0
- package/bin/service-management/create-service.js +129 -0
- package/bin/service-management/init-service.js +102 -0
- package/bin/service-management/init-service.js.backup +889 -0
- package/bin/shared/config/customer-cli.js +293 -0
- package/dist/config/ConfigurationManager.js +159 -0
- package/dist/config/CustomerConfigCLI.js +220 -0
- package/dist/config/FeatureManager.js +426 -0
- package/dist/config/customers.js +441 -0
- package/dist/config/domains.js +180 -0
- package/dist/config/features.js +225 -0
- package/dist/config/index.js +6 -0
- package/dist/database/database-orchestrator.js +730 -0
- package/dist/database/index.js +4 -0
- package/dist/deployment/auditor.js +971 -0
- package/dist/deployment/index.js +10 -0
- package/dist/deployment/rollback-manager.js +523 -0
- package/dist/deployment/testers/api-tester.js +80 -0
- package/dist/deployment/testers/auth-tester.js +129 -0
- package/dist/deployment/testers/core.js +217 -0
- package/dist/deployment/testers/database-tester.js +105 -0
- package/dist/deployment/testers/index.js +74 -0
- package/dist/deployment/testers/load-tester.js +120 -0
- package/dist/deployment/testers/performance-tester.js +105 -0
- package/dist/deployment/validator.js +558 -0
- package/dist/deployment/wrangler-deployer.js +574 -0
- package/dist/handlers/GenericRouteHandler.js +532 -0
- package/dist/index.js +39 -0
- package/dist/migration/MigrationAdapters.js +562 -0
- package/dist/modules/ModuleManager.js +668 -0
- package/dist/modules/security.js +98 -0
- package/dist/orchestration/cross-domain-coordinator.js +1083 -0
- package/dist/orchestration/index.js +5 -0
- package/dist/orchestration/modules/DeploymentCoordinator.js +258 -0
- package/dist/orchestration/modules/DomainResolver.js +196 -0
- package/dist/orchestration/modules/StateManager.js +332 -0
- package/dist/orchestration/multi-domain-orchestrator.js +255 -0
- package/dist/routing/EnhancedRouter.js +158 -0
- package/dist/schema/SchemaManager.js +778 -0
- package/dist/security/ConfigurationValidator.js +490 -0
- package/dist/security/DeploymentManager.js +208 -0
- package/dist/security/SecretGenerator.js +142 -0
- package/dist/security/SecurityCLI.js +228 -0
- package/dist/security/index.js +51 -0
- package/dist/security/patterns/environment-rules.js +66 -0
- package/dist/security/patterns/insecure-patterns.js +21 -0
- package/dist/service-management/ConfirmationEngine.js +411 -0
- package/dist/service-management/ErrorTracker.js +294 -0
- package/dist/service-management/GenerationEngine.js +3109 -0
- package/dist/service-management/InputCollector.js +237 -0
- package/dist/service-management/ServiceCreator.js +229 -0
- package/dist/service-management/ServiceInitializer.js +448 -0
- package/dist/service-management/ServiceOrchestrator.js +638 -0
- package/dist/service-management/handlers/ConfigMutator.js +130 -0
- package/dist/service-management/handlers/ConfirmationHandler.js +71 -0
- package/dist/service-management/handlers/GenerationHandler.js +80 -0
- package/dist/service-management/handlers/InputHandler.js +59 -0
- package/dist/service-management/handlers/ValidationHandler.js +203 -0
- package/dist/service-management/index.js +7 -0
- package/dist/services/GenericDataService.js +488 -0
- package/dist/shared/cloudflare/domain-discovery.js +562 -0
- package/dist/shared/cloudflare/domain-manager.js +912 -0
- package/dist/shared/cloudflare/index.js +8 -0
- package/dist/shared/cloudflare/ops.js +387 -0
- package/dist/shared/config/cache.js +1167 -0
- package/dist/shared/config/command-config-manager.js +174 -0
- package/dist/shared/config/customer-cli.js +258 -0
- package/dist/shared/config/index.js +9 -0
- package/dist/shared/config/manager.js +289 -0
- package/dist/shared/database/connection-manager.js +338 -0
- package/dist/shared/database/index.js +7 -0
- package/dist/shared/database/orchestrator.js +632 -0
- package/dist/shared/deployment/auditor.js +971 -0
- package/dist/shared/deployment/index.js +10 -0
- package/dist/shared/deployment/rollback-manager.js +523 -0
- package/dist/shared/deployment/validator.js +558 -0
- package/dist/shared/index.js +32 -0
- package/dist/shared/monitoring/health-checker.js +250 -0
- package/dist/shared/monitoring/index.js +8 -0
- package/dist/shared/monitoring/memory-manager.js +382 -0
- package/dist/shared/monitoring/production-monitor.js +390 -0
- package/dist/shared/production-tester/api-tester.js +80 -0
- package/dist/shared/production-tester/auth-tester.js +129 -0
- package/dist/shared/production-tester/core.js +217 -0
- package/dist/shared/production-tester/database-tester.js +105 -0
- package/dist/shared/production-tester/index.js +74 -0
- package/dist/shared/production-tester/load-tester.js +120 -0
- package/dist/shared/production-tester/performance-tester.js +105 -0
- package/dist/shared/security/api-token-manager.js +296 -0
- package/dist/shared/security/index.js +8 -0
- package/dist/shared/security/secret-generator.js +918 -0
- package/dist/shared/security/secure-token-manager.js +379 -0
- package/dist/shared/utils/error-recovery.js +240 -0
- package/dist/shared/utils/graceful-shutdown-manager.js +380 -0
- package/dist/shared/utils/index.js +9 -0
- package/dist/shared/utils/interactive-prompts.js +134 -0
- package/dist/shared/utils/rate-limiter.js +249 -0
- package/dist/utils/ErrorHandler.js +173 -0
- package/dist/utils/deployment/config-cache.js +1160 -0
- package/dist/utils/deployment/index.js +6 -0
- package/dist/utils/deployment/interactive-prompts.js +97 -0
- package/dist/utils/deployment/secret-generator.js +896 -0
- package/dist/utils/dirname-helper.js +35 -0
- package/dist/utils/domain-config.js +159 -0
- package/dist/utils/error-recovery.js +240 -0
- package/dist/utils/esm-helper.js +52 -0
- package/dist/utils/framework-config.js +481 -0
- package/dist/utils/graceful-shutdown-manager.js +379 -0
- package/dist/utils/health-checker.js +114 -0
- package/dist/utils/index.js +36 -0
- package/dist/utils/prompt-handler.js +98 -0
- package/dist/utils/usage-tracker.js +252 -0
- package/dist/utils/validation.js +112 -0
- package/dist/version/VersionDetector.js +723 -0
- package/dist/worker/index.js +4 -0
- package/dist/worker/integration.js +332 -0
- package/docs/FRAMEWORK-ARCHITECTURE-OVERVIEW.md +206 -0
- package/docs/INTEGRATION_GUIDE.md +2045 -0
- package/docs/README.md +82 -0
- package/docs/SECURITY.md +242 -0
- package/docs/deployment/deployment-guide.md +540 -0
- package/docs/overview.md +280 -0
- package/package.json +176 -0
- 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();
|