@tamyla/clodo-framework 3.1.22 → 3.1.24
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 +16 -0
- package/README.md +230 -1
- package/dist/cli/commands/assess.js +192 -0
- package/dist/cli/commands/create.js +77 -0
- package/dist/{bin → cli}/commands/deploy.js +36 -14
- package/dist/cli/commands/diagnose.js +83 -0
- package/dist/{bin → cli}/commands/helpers/deployment-verification.js +2 -3
- package/dist/{bin → cli}/commands/helpers/error-recovery.js +1 -1
- package/dist/{bin → cli}/commands/helpers/resource-detection.js +1 -1
- package/dist/cli/commands/helpers.js +110 -0
- package/dist/cli/commands/init-config.js +57 -0
- package/dist/cli/commands/update.js +102 -0
- package/dist/cli/commands/validate.js +65 -0
- package/dist/cli/security-cli.js +118 -0
- package/dist/config/FeatureManager.js +6 -0
- package/dist/config/clodo-create.example.json +26 -0
- package/dist/config/clodo-deploy.example.json +41 -0
- package/dist/config/clodo-update.example.json +46 -0
- package/dist/config/clodo-validate.example.json +41 -0
- package/dist/config/customers/template/development.env.template +37 -0
- package/dist/config/customers/template/production.env.template +39 -0
- package/dist/config/customers/template/staging.env.template +37 -0
- package/dist/config/customers.js +625 -0
- package/dist/config/domain-examples/README.md +464 -0
- package/dist/config/domain-examples/environment-mapped.json +168 -0
- package/dist/config/domain-examples/multi-domain.json +144 -0
- package/dist/config/domain-examples/single-domain.json +50 -0
- package/dist/config/domains.js +186 -0
- package/dist/config/examples +12 -0
- package/dist/config/features.js +61 -0
- package/dist/config/index.js +6 -0
- package/dist/config/staging-deployment.json +60 -0
- package/dist/config/validation-config.json +347 -0
- package/dist/database/database-orchestrator.js +795 -0
- package/dist/database/index.js +4 -0
- package/dist/deployment/index.js +11 -0
- package/dist/deployment/orchestration/BaseDeploymentOrchestrator.js +426 -0
- package/dist/deployment/orchestration/PortfolioOrchestrator.js +273 -0
- package/dist/deployment/orchestration/SingleServiceOrchestrator.js +231 -0
- package/dist/deployment/orchestration/UnifiedDeploymentOrchestrator.js +662 -0
- package/dist/deployment/orchestration/index.js +17 -0
- package/dist/deployment/rollback-manager.js +36 -0
- package/dist/deployment/wrangler-deployer.js +640 -0
- package/dist/handlers/GenericRouteHandler.js +532 -0
- package/dist/lib/database/deployment-db-manager.js +423 -0
- package/dist/lib/database/wrangler-d1-manager.js +685 -0
- package/dist/lib/deployment/modules/DeploymentConfiguration.js +395 -0
- package/dist/lib/deployment/modules/DeploymentOrchestrator.js +492 -0
- package/dist/lib/deployment/modules/EnvironmentManager.js +517 -0
- package/dist/lib/deployment/modules/MonitoringIntegration.js +560 -0
- package/dist/lib/deployment/modules/ValidationManager.js +342 -0
- package/dist/lib/deployment/orchestration/BaseDeploymentOrchestrator.js +426 -0
- package/dist/lib/deployment/orchestration/EnterpriseOrchestrator.js +21 -0
- package/dist/lib/deployment/orchestration/PortfolioOrchestrator.js +273 -0
- package/dist/lib/deployment/orchestration/SingleServiceOrchestrator.js +231 -0
- package/dist/lib/deployment/orchestration/UnifiedDeploymentOrchestrator.js +662 -0
- package/dist/{bin → lib}/shared/cloudflare/domain-discovery.js +1 -1
- package/dist/{bin → lib}/shared/cloudflare/domain-manager.js +1 -1
- package/dist/{bin → lib}/shared/cloudflare/ops.js +4 -4
- package/dist/{bin → lib}/shared/config/command-config-manager.js +1 -1
- package/dist/{bin → lib}/shared/config/index.js +1 -1
- package/dist/{bin → lib}/shared/config/manifest-loader.js +3 -3
- package/dist/{bin → lib}/shared/deployment/credential-collector.js +1 -1
- package/dist/lib/shared/deployment/index.js +10 -0
- package/dist/{bin → lib}/shared/deployment/rollback-manager.js +1 -1
- package/dist/{bin → lib}/shared/deployment/utilities/d1-error-recovery.js +1 -1
- package/dist/{bin → lib}/shared/deployment/validator.js +1 -1
- package/dist/{bin → lib}/shared/deployment/workflows/interactive-database-workflow.js +1 -1
- package/dist/{bin → lib}/shared/monitoring/health-checker.js +2 -2
- package/dist/{bin → lib}/shared/routing/domain-router.js +1 -1
- package/dist/{bin → lib}/shared/utils/config-loader.js +47 -11
- package/dist/lib/shared/utils/service-config-manager.js +227 -0
- package/dist/{bin → lib}/shared/validation/ValidationRegistry.js +1 -1
- package/dist/migration/MigrationAdapters.js +608 -0
- package/dist/modules/ModuleManager.js +668 -0
- package/dist/modules/security.js +96 -0
- package/dist/orchestration/cross-domain-coordinator.js +1083 -0
- package/dist/orchestration/index.js +5 -0
- package/dist/orchestration/modules/DeploymentCoordinator.js +368 -0
- package/dist/orchestration/modules/DomainResolver.js +198 -0
- package/dist/orchestration/modules/StateManager.js +332 -0
- package/dist/orchestration/multi-domain-orchestrator.js +765 -0
- package/dist/routing/EnhancedRouter.js +158 -0
- package/dist/schema/SchemaManager.js +778 -0
- package/dist/security/index.js +2 -2
- package/dist/service-management/ConfirmationEngine.js +412 -0
- package/dist/service-management/ErrorTracker.js +299 -0
- package/dist/service-management/GenerationEngine.js +447 -0
- package/dist/service-management/InputCollector.js +619 -0
- package/dist/service-management/ServiceCreator.js +21 -0
- package/dist/service-management/ServiceOrchestrator.js +672 -0
- package/dist/service-management/generators/BaseGenerator.js +233 -0
- package/dist/service-management/generators/GeneratorRegistry.js +254 -0
- package/dist/service-management/generators/cicd/CiWorkflowGenerator.js +87 -0
- package/dist/service-management/generators/cicd/DeployWorkflowGenerator.js +106 -0
- package/dist/service-management/generators/code/ServiceHandlersGenerator.js +235 -0
- package/dist/service-management/generators/code/ServiceMiddlewareGenerator.js +116 -0
- package/dist/service-management/generators/code/ServiceUtilsGenerator.js +246 -0
- package/dist/service-management/generators/code/WorkerIndexGenerator.js +143 -0
- package/dist/service-management/generators/config/DevelopmentEnvGenerator.js +101 -0
- package/dist/service-management/generators/config/DomainsConfigGenerator.js +175 -0
- package/dist/service-management/generators/config/EnvExampleGenerator.js +178 -0
- package/dist/service-management/generators/config/ProductionEnvGenerator.js +97 -0
- package/dist/service-management/generators/config/StagingEnvGenerator.js +97 -0
- package/dist/service-management/generators/config/WranglerTomlGenerator.js +238 -0
- package/dist/service-management/generators/core/PackageJsonGenerator.js +243 -0
- package/dist/service-management/generators/core/SiteConfigGenerator.js +115 -0
- package/dist/service-management/generators/documentation/ApiDocsGenerator.js +331 -0
- package/dist/service-management/generators/documentation/ConfigurationDocsGenerator.js +294 -0
- package/dist/service-management/generators/documentation/DeploymentDocsGenerator.js +244 -0
- package/dist/service-management/generators/documentation/ReadmeGenerator.js +196 -0
- package/dist/service-management/generators/schemas/ServiceSchemaGenerator.js +190 -0
- package/dist/service-management/generators/scripts/DeployScriptGenerator.js +123 -0
- package/dist/service-management/generators/scripts/HealthCheckScriptGenerator.js +101 -0
- package/dist/service-management/generators/scripts/SetupScriptGenerator.js +88 -0
- package/dist/service-management/generators/service-types/StaticSiteGenerator.js +342 -0
- package/dist/service-management/generators/testing/EslintConfigGenerator.js +85 -0
- package/dist/service-management/generators/testing/IntegrationTestsGenerator.js +237 -0
- package/dist/service-management/generators/testing/JestConfigGenerator.js +72 -0
- package/dist/service-management/generators/testing/UnitTestsGenerator.js +277 -0
- package/dist/service-management/generators/tooling/DockerComposeGenerator.js +71 -0
- package/dist/service-management/generators/tooling/GitignoreGenerator.js +143 -0
- package/dist/service-management/generators/utils/FileWriter.js +179 -0
- package/dist/service-management/generators/utils/PathResolver.js +157 -0
- package/dist/service-management/generators/utils/ServiceManifestGenerator.js +111 -0
- package/dist/service-management/generators/utils/TemplateEngine.js +185 -0
- package/dist/service-management/generators/utils/index.js +18 -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 +216 -0
- package/dist/service-management/index.js +14 -0
- package/dist/service-management/routing/DomainRouteMapper.js +311 -0
- package/dist/service-management/routing/RouteGenerator.js +266 -0
- package/dist/service-management/routing/WranglerRoutesBuilder.js +273 -0
- package/dist/service-management/routing/index.js +14 -0
- package/dist/service-management/services/DirectoryStructureService.js +56 -0
- package/dist/service-management/services/GenerationCoordinator.js +208 -0
- package/dist/service-management/services/GeneratorRegistry.js +174 -0
- package/dist/services/GenericDataService.js +501 -0
- package/dist/ui-structures/concepts/second-order-acquisition-strategy.md +286 -0
- package/dist/ui-structures/concepts/service-lifecycle-management.md +150 -0
- package/dist/ui-structures/concepts/service-manifest-guide.md +309 -0
- package/dist/ui-structures/concepts/three-tier-categorization-strategy.md +231 -0
- package/dist/ui-structures/creation/automated-generation-ui.json +246 -0
- package/dist/ui-structures/creation/core-inputs-ui.json +217 -0
- package/dist/ui-structures/creation/smart-confirmable-ui.json +451 -0
- package/dist/ui-structures/reference/absolutely-required-inputs.json +315 -0
- package/dist/ui-structures/reference/service-manifest-template.json +342 -0
- package/dist/utils/cloudflare/ops.js +1 -1
- package/dist/utils/file-manager.js +1 -1
- package/dist/utils/formatters.js +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/version/VersionDetector.js +813 -0
- package/dist/worker/index.js +4 -0
- package/dist/worker/integration.js +351 -0
- package/package.json +7 -15
- package/dist/bin/commands/validate.js +0 -51
- package/dist/bin/security/security-cli.js +0 -108
- package/dist/bin/shared/deployment/index.js +0 -10
- /package/dist/{bin → cli}/clodo-service.js +0 -0
- /package/dist/{bin → cli}/commands/helpers/deployment-ui.js +0 -0
- /package/dist/{bin → lib}/shared/cache/configuration-cache.js +0 -0
- /package/dist/{bin → lib}/shared/cloudflare/index.js +0 -0
- /package/dist/{bin → lib}/shared/config/ConfigurationManager.js +0 -0
- /package/dist/{bin → lib}/shared/config/cache.js +0 -0
- /package/dist/{bin → lib}/shared/config/cloudflare-service-validator.js +0 -0
- /package/dist/{bin → lib}/shared/config/manager.js +0 -0
- /package/dist/{bin → lib}/shared/database/connection-manager.js +0 -0
- /package/dist/{bin → lib}/shared/database/index.js +0 -0
- /package/dist/{bin → lib}/shared/database/orchestrator.js +0 -0
- /package/dist/{bin → lib}/shared/deployment/auditor.js +0 -0
- /package/dist/{bin → lib}/shared/deployment/workflows/deployment-summary.js +0 -0
- /package/dist/{bin → lib}/shared/deployment/workflows/interactive-confirmation.js +0 -0
- /package/dist/{bin → lib}/shared/deployment/workflows/interactive-domain-info-gatherer.js +0 -0
- /package/dist/{bin → lib}/shared/deployment/workflows/interactive-secret-workflow.js +0 -0
- /package/dist/{bin → lib}/shared/deployment/workflows/interactive-testing-workflow.js +0 -0
- /package/dist/{bin → lib}/shared/deployment/workflows/interactive-validation.js +0 -0
- /package/dist/{bin → lib}/shared/error-handling/error-classifier.js +0 -0
- /package/dist/{bin → lib}/shared/index.js +0 -0
- /package/dist/{bin → lib}/shared/logging/Logger.js +0 -0
- /package/dist/{bin → lib}/shared/monitoring/index.js +0 -0
- /package/dist/{bin → lib}/shared/monitoring/memory-manager.js +0 -0
- /package/dist/{bin → lib}/shared/monitoring/production-monitor.js +0 -0
- /package/dist/{bin → lib}/shared/production-tester/api-tester.js +0 -0
- /package/dist/{bin → lib}/shared/production-tester/auth-tester.js +0 -0
- /package/dist/{bin → lib}/shared/production-tester/core.js +0 -0
- /package/dist/{bin → lib}/shared/production-tester/database-tester.js +0 -0
- /package/dist/{bin → lib}/shared/production-tester/index.js +0 -0
- /package/dist/{bin → lib}/shared/production-tester/load-tester.js +0 -0
- /package/dist/{bin → lib}/shared/production-tester/performance-tester.js +0 -0
- /package/dist/{bin → lib}/shared/security/api-token-manager.js +0 -0
- /package/dist/{bin → lib}/shared/security/index.js +0 -0
- /package/dist/{bin → lib}/shared/security/secret-generator.js +0 -0
- /package/dist/{bin → lib}/shared/security/secure-token-manager.js +0 -0
- /package/dist/{bin → lib}/shared/utils/ErrorHandler.js +0 -0
- /package/dist/{bin → lib}/shared/utils/cli-options.js +0 -0
- /package/dist/{bin → lib}/shared/utils/deployment-validator.js +0 -0
- /package/dist/{bin → lib}/shared/utils/error-recovery.js +0 -0
- /package/dist/{bin → lib}/shared/utils/file-manager.js +0 -0
- /package/dist/{bin → lib}/shared/utils/formatters.js +0 -0
- /package/dist/{bin → lib}/shared/utils/graceful-shutdown-manager.js +0 -0
- /package/dist/{bin → lib}/shared/utils/index.js +0 -0
- /package/dist/{bin → lib}/shared/utils/interactive-prompts.js +0 -0
- /package/dist/{bin → lib}/shared/utils/interactive-utils.js +0 -0
- /package/dist/{bin → lib}/shared/utils/output-formatter.js +0 -0
- /package/dist/{bin → lib}/shared/utils/progress-manager.js +0 -0
- /package/dist/{bin → lib}/shared/utils/progress-spinner.js +0 -0
- /package/dist/{bin → lib}/shared/utils/rate-limiter.js +0 -0
- /package/dist/{bin → lib}/shared/utils/sensitive-redactor.js +0 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { createRouteHandlers } from '../handlers/GenericRouteHandler.js';
|
|
2
|
+
import { schemaManager } from '../schema/SchemaManager.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Enhanced Router
|
|
6
|
+
* Supports both domain-specific routes and generic CRUD routes
|
|
7
|
+
*
|
|
8
|
+
* Framework-ready version: All data-service specific imports and routes removed.
|
|
9
|
+
* Domain-specific routes should be registered by the consuming application.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export class EnhancedRouter {
|
|
13
|
+
/**
|
|
14
|
+
* Create a new EnhancedRouter instance
|
|
15
|
+
* @param {Object} d1Client - D1 database client
|
|
16
|
+
* @param {Object} options - Router options
|
|
17
|
+
*/
|
|
18
|
+
constructor(d1Client, options = {}) {
|
|
19
|
+
this.d1Client = d1Client;
|
|
20
|
+
this.options = options;
|
|
21
|
+
this.routes = new Map();
|
|
22
|
+
this.genericHandlers = createRouteHandlers(d1Client, options);
|
|
23
|
+
|
|
24
|
+
// Register generic routes for all models
|
|
25
|
+
this._registerGenericRoutes();
|
|
26
|
+
|
|
27
|
+
// Note: Domain-specific routes should be registered by the consuming application
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Register a custom route
|
|
32
|
+
* @param {string} method - HTTP method
|
|
33
|
+
* @param {string} path - Route path
|
|
34
|
+
* @param {Function} handler - Route handler
|
|
35
|
+
*/
|
|
36
|
+
registerRoute(method, path, handler) {
|
|
37
|
+
const key = `${method.toUpperCase()} ${path}`;
|
|
38
|
+
this.routes.set(key, handler);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Find and execute a route handler
|
|
43
|
+
* @param {string} method - HTTP method
|
|
44
|
+
* @param {string} path - Request path
|
|
45
|
+
* @param {Request} request - HTTP request
|
|
46
|
+
* @returns {Promise<Response>} HTTP response
|
|
47
|
+
*/
|
|
48
|
+
async handleRequest(method, path, request) {
|
|
49
|
+
const key = `${method.toUpperCase()} ${path}`;
|
|
50
|
+
|
|
51
|
+
// Check for exact match first
|
|
52
|
+
if (this.routes.has(key)) {
|
|
53
|
+
const handler = this.routes.get(key);
|
|
54
|
+
return await handler(request);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Check for parameterized routes
|
|
58
|
+
for (const [routeKey, handler] of this.routes.entries()) {
|
|
59
|
+
const [routeMethod, routePath] = routeKey.split(' ');
|
|
60
|
+
if (routeMethod !== method.toUpperCase()) continue;
|
|
61
|
+
const match = this._matchRoute(routePath, path);
|
|
62
|
+
if (match) {
|
|
63
|
+
// Add route parameters to request
|
|
64
|
+
// @ts-ignore - Extending Request object with params
|
|
65
|
+
request.params = match.params;
|
|
66
|
+
return await handler(request, ...match.args);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// No route found
|
|
71
|
+
return new Response('Not Found', {
|
|
72
|
+
status: 404
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Register generic CRUD routes for all configured models
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
_registerGenericRoutes() {
|
|
81
|
+
for (const [modelName] of schemaManager.getAllModels()) {
|
|
82
|
+
const handler = this.genericHandlers[modelName];
|
|
83
|
+
const basePath = `/api/${modelName}`;
|
|
84
|
+
|
|
85
|
+
// CRUD routes
|
|
86
|
+
this.registerRoute('GET', basePath, req => handler.handleList(req));
|
|
87
|
+
this.registerRoute('POST', basePath, req => handler.handleCreate(req));
|
|
88
|
+
this.registerRoute('GET', `${basePath}/:id`, (req, id) => handler.handleGet(req, id));
|
|
89
|
+
this.registerRoute('PATCH', `${basePath}/:id`, (req, id) => handler.handleUpdate(req, id));
|
|
90
|
+
this.registerRoute('DELETE', `${basePath}/:id`, (req, id) => handler.handleDelete(req, id));
|
|
91
|
+
console.log(`✅ Registered generic routes for: ${modelName}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Match a route pattern against a path
|
|
97
|
+
* @param {string} pattern - Route pattern (e.g., '/users/:id')
|
|
98
|
+
* @param {string} path - Request path
|
|
99
|
+
* @returns {Object|null} Match result or null
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
_matchRoute(pattern, path) {
|
|
103
|
+
const patternParts = pattern.split('/');
|
|
104
|
+
const pathParts = path.split('/');
|
|
105
|
+
if (patternParts.length !== pathParts.length) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const params = {};
|
|
109
|
+
const args = [];
|
|
110
|
+
for (let i = 0; i < patternParts.length; i++) {
|
|
111
|
+
const patternPart = patternParts[i];
|
|
112
|
+
const pathPart = pathParts[i];
|
|
113
|
+
if (patternPart.startsWith(':')) {
|
|
114
|
+
// Parameter
|
|
115
|
+
const paramName = patternPart.slice(1);
|
|
116
|
+
params[paramName] = pathPart;
|
|
117
|
+
args.push(pathPart);
|
|
118
|
+
} else if (patternPart !== pathPart) {
|
|
119
|
+
// No match
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
params,
|
|
125
|
+
args
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Get all registered routes
|
|
131
|
+
* @returns {Map} Route map
|
|
132
|
+
*/
|
|
133
|
+
getRoutes() {
|
|
134
|
+
return this.routes;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Add middleware to the router
|
|
139
|
+
* @param {Function} middleware - Middleware function
|
|
140
|
+
*/
|
|
141
|
+
use(middleware) {
|
|
142
|
+
// Store middleware for later use
|
|
143
|
+
if (!this.middleware) {
|
|
144
|
+
this.middleware = [];
|
|
145
|
+
}
|
|
146
|
+
this.middleware.push(middleware);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Create an enhanced router instance
|
|
152
|
+
* @param {Object} d1Client - D1 database client
|
|
153
|
+
* @param {Object} options - Router options
|
|
154
|
+
* @returns {EnhancedRouter} Router instance
|
|
155
|
+
*/
|
|
156
|
+
export function createEnhancedRouter(d1Client, options = {}) {
|
|
157
|
+
return new EnhancedRouter(d1Client, options);
|
|
158
|
+
}
|