@tamyla/clodo-framework 2.0.7 ā 2.0.8
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 +181 -125
- package/README.md +78 -0
- package/bin/clodo-service.js +1 -1
- package/bin/security/security-cli.js +1 -1
- package/bin/service-management/create-service.js +1 -1
- package/bin/service-management/init-service.js +1 -1
- package/bin/shared/config/customer-cli.js +39 -150
- package/dist/config/CustomerConfigCLI.js +18 -12
- package/dist/config/customers.js +183 -7
- package/dist/deployment/wrangler-deployer.js +21 -0
- package/dist/shared/config/customer-cli.js +42 -125
- package/dist/utils/cloudflare/api.js +295 -0
- package/dist/utils/cloudflare/index.js +79 -0
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,133 +1,189 @@
|
|
|
1
|
-
## [2.0.
|
|
1
|
+
## [2.0.8](https://github.com/tamylaa/clodo-framework/compare/v2.0.7...v2.0.8) (2025-10-12)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
### Bug Fixes
|
|
5
5
|
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
### Bug Fixes
|
|
12
|
-
|
|
13
|
-
* PowerShell double-echo in interactive input collection ([6a4b153](https://github.com/tamylaa/clodo-framework/commit/6a4b15380efac0ffc4b57ea4e24f320853c33137))
|
|
14
|
-
|
|
15
|
-
## [2.0.5](https://github.com/tamylaa/clodo-framework/compare/v2.0.4...v2.0.5) (2025-10-11)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
### Bug Fixes
|
|
19
|
-
|
|
20
|
-
* include templates directory in published package ([8d5c1ff](https://github.com/tamylaa/clodo-framework/commit/8d5c1ffc6090c35751d926042c784ae9b4d711b1))
|
|
21
|
-
|
|
22
|
-
## [2.0.4](https://github.com/tamylaa/clodo-framework/compare/v2.0.3...v2.0.4) (2025-10-11)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### Bug Fixes
|
|
26
|
-
|
|
27
|
-
* ensure clodo-security deploy --help works correctly ([1f81b5f](https://github.com/tamylaa/clodo-framework/commit/1f81b5f0d0590bd3d82470485bde6c449b95c12e))
|
|
28
|
-
|
|
29
|
-
## [2.0.3](https://github.com/tamylaa/clodo-framework/compare/v2.0.2...v2.0.3) (2025-10-11)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
### Bug Fixes
|
|
33
|
-
|
|
34
|
-
* Add reusable deployment command with Three-Tier input architecture ([0e13bfc](https://github.com/tamylaa/clodo-framework/commit/0e13bfcdda56d0a137bcd44cfd8a9ca49af30503))
|
|
35
|
-
* clodo-security deploy --help and cross-platform deployment scripts ([d7ebbbe](https://github.com/tamylaa/clodo-framework/commit/d7ebbbe8d41c6e4f297f64d19ea5b98172ddee3b))
|
|
36
|
-
* test - Remove placeholder tests that require unimplemented classes ([b009b34](https://github.com/tamylaa/clodo-framework/commit/b009b34cf1f9f7542fbaab2fa2419b2766c72f10))
|
|
37
|
-
|
|
38
|
-
## [2.0.3](https://github.com/tamylaa/clodo-framework/compare/v2.0.2...v2.0.3) (2025-10-11)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
### Bug Fixes
|
|
42
|
-
|
|
43
|
-
* Add reusable deployment command with Three-Tier input architecture ([0e13bfc](https://github.com/tamylaa/clodo-framework/commit/0e13bfcdda56d0a137bcd44cfd8a9ca49af30503))
|
|
44
|
-
* clodo-security deploy --help and cross-platform deployment scripts ([d7ebbbe](https://github.com/tamylaa/clodo-framework/commit/d7ebbbe8d41c6e4f297f64d19ea5b98172ddee3b))
|
|
45
|
-
* test - Remove placeholder tests that require unimplemented classes ([b009b34](https://github.com/tamylaa/clodo-framework/commit/b009b34cf1f9f7542fbaab2fa2419b2766c72f10))
|
|
46
|
-
|
|
47
|
-
## [2.0.2](https://github.com/tamylaa/clodo-framework/compare/v2.0.1...v2.0.2) (2025-10-11)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
### Bug Fixes
|
|
51
|
-
|
|
52
|
-
* resolve CLI tool import paths and runtime dependencies ([6a726b9](https://github.com/tamylaa/clodo-framework/commit/6a726b95a5e55055048a262d1c146a50a4f0b46f))
|
|
53
|
-
|
|
54
|
-
## [2.0.1](https://github.com/tamylaa/clodo-framework/compare/v2.0.0...v2.0.1) (2025-10-10)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
### Bug Fixes
|
|
58
|
-
|
|
59
|
-
* reorganize documentation structure and fix package distribution ([598d44b](https://github.com/tamylaa/clodo-framework/commit/598d44b669f65c222d215ba33d0361d736a15ac9))
|
|
60
|
-
|
|
61
|
-
# [2.0.0](https://github.com/tamylaa/clodo-framework/compare/v1.0.0...v2.0.0) (2025-10-10)
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
### Bug Fixes
|
|
65
|
-
|
|
66
|
-
* enhance enterprise readiness with comprehensive testing roadmap and documentation ([25702d6](https://github.com/tamylaa/clodo-framework/commit/25702d624047ef40991de47eba0b8dabcfaecfa8))
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
### BREAKING CHANGES
|
|
70
|
-
|
|
71
|
-
* Framework now requires structured testing approach for enterprise deployment
|
|
72
|
-
|
|
73
|
-
# 1.0.0 (2025-10-09)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
### Bug Fixes
|
|
77
|
-
|
|
78
|
-
* add comprehensive security validation module ([ea6cbdf](https://github.com/tamylaa/clodo-framework/commit/ea6cbdf07790266d8b2cd779f750b5e6ef622ba6))
|
|
79
|
-
* add customer configuration management ([ac7379b](https://github.com/tamylaa/clodo-framework/commit/ac7379b41e584bed229cd3a3b8ccb532eed9dcb4))
|
|
80
|
-
* add missing environment parameter to WranglerDeployer validation call ([a833ca3](https://github.com/tamylaa/clodo-framework/commit/a833ca3c1006953911453e1b383c602b96a16229))
|
|
81
|
-
* allow tests to pass when no test files exist ([70bd5b8](https://github.com/tamylaa/clodo-framework/commit/70bd5b8ee61fc7fb70e5015d1889e411c9e091b4))
|
|
82
|
-
* complete rebranding from lego-framework to clodo-framework ([1a704ba](https://github.com/tamylaa/clodo-framework/commit/1a704ba0bdd4b649c412a8b8cc202138d64c79e2))
|
|
83
|
-
* comprehensive documentation update for framework capabilities ([65c0284](https://github.com/tamylaa/clodo-framework/commit/65c0284e6bb916be2f5bd994d76aa198c77cf9fc))
|
|
84
|
-
* comprehensive framework improvements and enterprise documentation ([e77b046](https://github.com/tamylaa/clodo-framework/commit/e77b046cca0dc6ed7afc16479e588d2dece333f3))
|
|
85
|
-
* enhance deployment framework with HTTP validation, error handling, and interactive configuration ([7698f56](https://github.com/tamylaa/clodo-framework/commit/7698f56108c0b90809eaaa55e7335ac89e6dce49))
|
|
86
|
-
* ensure semantic-release works on latest commit ([5d59903](https://github.com/tamylaa/clodo-framework/commit/5d59903cab1c74266373bd6066b045da75256645))
|
|
87
|
-
* implement intelligent WranglerDeployer for actual Cloudflare deployments ([a656190](https://github.com/tamylaa/clodo-framework/commit/a6561909753b5bcb7ece0a0159772daee28dd37c))
|
|
88
|
-
* include documentation in package files ([550a734](https://github.com/tamylaa/clodo-framework/commit/550a734ef9de3f4e4afc35e85226216649e84332))
|
|
89
|
-
* Initial release of Lego Framework v1.0.0 ([6994efd](https://github.com/tamylaa/clodo-framework/commit/6994efdf0be3508ae7fe54c6d71f161d56cafef8))
|
|
90
|
-
* major framework enhancement with enterprise features and TypeScript support ([53c94fb](https://github.com/tamylaa/clodo-framework/commit/53c94fbc3adde14852ffaab9117eda09621f3a16))
|
|
91
|
-
* major framework reorganization and robustness improvements ([7aed0b5](https://github.com/tamylaa/clodo-framework/commit/7aed0b5b438bb02c081d533766951ccc89ff4d4c))
|
|
92
|
-
* make database orchestrator dependency-aware ([051f722](https://github.com/tamylaa/clodo-framework/commit/051f72269aab39d4e972cad8011430dfa86b3f7a))
|
|
93
|
-
* resolve ESLint errors and warnings ([005b591](https://github.com/tamylaa/clodo-framework/commit/005b5916faf6a57c0065d649979dcef84c466ce3))
|
|
94
|
-
* resolve ESLint warnings to enable automated release ([200dd82](https://github.com/tamylaa/clodo-framework/commit/200dd8267af2629f3cb3a1a3a30cbc96ea5bbee9))
|
|
95
|
-
* resolve ESM packaging conflict by preserving ES modules in build output ([0d13422](https://github.com/tamylaa/clodo-framework/commit/0d13422e5c7800006369b157b57d9440805d14dd))
|
|
96
|
-
* resolve GitHub Actions workflow permissions and NPM token issues ([cd53e55](https://github.com/tamylaa/clodo-framework/commit/cd53e55702e0c249e26884304115537c8a3345cf))
|
|
97
|
-
* resolve linting and type checking issues ([598e699](https://github.com/tamylaa/clodo-framework/commit/598e6999be93025d7a35c59df55c6606a59c98ac))
|
|
98
|
-
* resolve missing health-checker dependency by moving to src/utils ([64d429b](https://github.com/tamylaa/clodo-framework/commit/64d429be674855539e5f77413d9a14151d1b0ef8))
|
|
99
|
-
* update repository URLs to correct GitHub username (tamylaa) ([791ae3f](https://github.com/tamylaa/clodo-framework/commit/791ae3ff76589851a0ba09cef58d955272c6b343))
|
|
100
|
-
* Windows compatibility and ES module issues ([7ed2588](https://github.com/tamylaa/clodo-framework/commit/7ed2588d8ae2f706e5646813c1d1dad99944d50f))
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
### Features
|
|
104
|
-
|
|
105
|
-
* Add additional documentation and development tools ([0c6ca0d](https://github.com/tamylaa/clodo-framework/commit/0c6ca0d18ac7bdeef17587a592b8e7e1c549c87b))
|
|
106
|
-
* add GitHub Actions workflow for semantic release ([e097070](https://github.com/tamylaa/clodo-framework/commit/e0970708b454d87dd124371840d0eb1c91c7641c))
|
|
107
|
-
* implement comprehensive production hardening ([4a4c391](https://github.com/tamylaa/clodo-framework/commit/4a4c3917fc3ba624ff61ac79cde1df7c40b6aa33))
|
|
108
|
-
* initial commercial release of Clodo Framework ([647e271](https://github.com/tamylaa/clodo-framework/commit/647e271dd0718b8a5fc4082bc1ac9be1216f9fe2))
|
|
109
|
-
* Rebrand to Clodo Framework v3.0.6 ([03e6923](https://github.com/tamylaa/clodo-framework/commit/03e69232dc60e139601320fce7c1c88c55d6254f))
|
|
110
|
-
* trigger initial Clodo Framework v1.0.0 release ([98bcd76](https://github.com/tamylaa/clodo-framework/commit/98bcd764a1aa1cfe4199d820e02be584619ea11c))
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
### BREAKING CHANGES
|
|
114
|
-
|
|
115
|
-
* Deployments now require security validation by default
|
|
116
|
-
* Enhanced framework with advanced caching, validation, and security features
|
|
117
|
-
|
|
118
|
-
- Enhanced SchemaManager with comprehensive validation and SQL caching (~750 lines)
|
|
119
|
-
- Enhanced GenericDataService with query caching and security controls (~580 lines)
|
|
120
|
-
- Enhanced ModuleManager with enterprise hook execution (~650 lines)
|
|
121
|
-
- Added FeatureManager for progressive enhancement with 20+ feature flags
|
|
122
|
-
- Added VersionDetector for automatic configuration and migration
|
|
123
|
-
- Added MigrationAdapters for backwards compatibility
|
|
124
|
-
- Added comprehensive TypeScript definitions (500+ lines)
|
|
125
|
-
- Enhanced build pipeline with TypeScript checking
|
|
126
|
-
- Fixed critical parsing errors and linting issues
|
|
127
|
-
- 60%+ code duplication reduction through framework consolidation
|
|
128
|
-
|
|
129
|
-
All breaking changes include backwards compatibility via migration adapters.
|
|
6
|
+
* clean up skipped security validation test with proper TODO ([722afbe](https://github.com/tamylaa/clodo-framework/commit/722afbe056be6f8ccb623acbbd3ab9ac4ce75caa))
|
|
7
|
+
* Enhanced customer config, CloudflareAPI utility, and code consolidation ([447ed9b](https://github.com/tamylaa/clodo-framework/commit/447ed9b5d8a2bb806386fc334e2e8bf4efeff43b))
|
|
8
|
+
* resolve ESLint no-undef errors in cloudflare index.js ([1a2bb7f](https://github.com/tamylaa/clodo-framework/commit/1a2bb7fa175bab142f3d5be451cb44ef1b9d8747))
|
|
130
9
|
|
|
10
|
+
## [2.0.7](https://github.com/tamylaa/clodo-framework/compare/v2.0.6...v2.0.7) (2025-10-12)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* **customer-config**: Enhanced customer configuration system to read directly from wrangler.toml
|
|
16
|
+
- Load account_id, SERVICE_DOMAIN, and database configurations from wrangler.toml
|
|
17
|
+
- Read CUSTOMER_DOMAIN from customer environment files
|
|
18
|
+
- Display all 6 core deployment pieces (account ID, zone ID, domains, worker, database, secrets)
|
|
19
|
+
- Added --config-dir parameter for flexible directory specification
|
|
20
|
+
|
|
21
|
+
* **cloudflare**: New CloudflareAPI utility class for programmatic Cloudflare operations
|
|
22
|
+
- Direct REST API integration without CLI dependencies
|
|
23
|
+
- Methods: verifyToken(), listZones(), getZoneDetails(), listD1Databases(), getDeploymentInfo()
|
|
24
|
+
- Helper functions for zone display and selection parsing
|
|
25
|
+
- Organized under src/utils/cloudflare/ with unified exports
|
|
26
|
+
|
|
27
|
+
* **toml**: TOML writing capabilities for dynamic configuration updates
|
|
28
|
+
- updateWranglerToml() - Update wrangler.toml with new configurations
|
|
29
|
+
- updateEnvironmentConfig() - Modify environment-specific settings
|
|
30
|
+
- addD1Database() - Add database bindings dynamically
|
|
31
|
+
- deepMergeConfig() - Recursive configuration merging
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Bug Fixes
|
|
35
|
+
|
|
36
|
+
* **customer-config**: Removed duplicate code causing double output in customer CLI
|
|
37
|
+
* **deployment**: Removed 180 lines of duplicate secret management from WranglerDeployer
|
|
38
|
+
- Secret operations now use bin/shared/cloudflare/ops.js as single source of truth
|
|
39
|
+
- Better error recovery, rate limiting, and production monitoring
|
|
40
|
+
* correct orchestrator method name in deploy command ([b28a372](https://github.com/tamylaa/clodo-framework/commit/b28a37222cf2859449b3470b16ec6eb284cc50e2))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Code Quality
|
|
44
|
+
|
|
45
|
+
* **organization**: Consolidated Cloudflare utilities under src/utils/cloudflare/
|
|
46
|
+
- Separated API-based operations (api.js) from CLI-based operations (ops.js)
|
|
47
|
+
- Created unified index.js for convenient imports
|
|
48
|
+
- Verified no duplicate utilities across src/ and bin/shared/
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
### Testing
|
|
52
|
+
|
|
53
|
+
* Added 12 new tests (132 total, all passing, +9.1%)
|
|
54
|
+
- test/utils/cloudflare-api.test.js - CloudflareAPI module tests (6 tests)
|
|
55
|
+
- test/config/customer-toml.test.js - Customer config tests (6 tests)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### Documentation
|
|
59
|
+
|
|
60
|
+
* **architecture**: Added comprehensive architecture analysis for customer configuration system
|
|
61
|
+
* **capabilities**: Created inventory of existing framework capabilities
|
|
62
|
+
* **cleanup**: Documented 19-task cleanup plan with execution options
|
|
63
|
+
|
|
64
|
+
## [2.0.6](https://github.com/tamylaa/clodo-framework/compare/v2.0.5...v2.0.6) (2025-10-11)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### Bug Fixes
|
|
68
|
+
|
|
69
|
+
* PowerShell double-echo in interactive input collection ([6a4b153](https://github.com/tamylaa/clodo-framework/commit/6a4b15380efac0ffc4b57ea4e24f320853c33137))
|
|
70
|
+
|
|
71
|
+
## [2.0.5](https://github.com/tamylaa/clodo-framework/compare/v2.0.4...v2.0.5) (2025-10-11)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### Bug Fixes
|
|
75
|
+
|
|
76
|
+
* include templates directory in published package ([8d5c1ff](https://github.com/tamylaa/clodo-framework/commit/8d5c1ffc6090c35751d926042c784ae9b4d711b1))
|
|
77
|
+
|
|
78
|
+
## [2.0.4](https://github.com/tamylaa/clodo-framework/compare/v2.0.3...v2.0.4) (2025-10-11)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
### Bug Fixes
|
|
82
|
+
|
|
83
|
+
* ensure clodo-security deploy --help works correctly ([1f81b5f](https://github.com/tamylaa/clodo-framework/commit/1f81b5f0d0590bd3d82470485bde6c449b95c12e))
|
|
84
|
+
|
|
85
|
+
## [2.0.3](https://github.com/tamylaa/clodo-framework/compare/v2.0.2...v2.0.3) (2025-10-11)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
### Bug Fixes
|
|
89
|
+
|
|
90
|
+
* Add reusable deployment command with Three-Tier input architecture ([0e13bfc](https://github.com/tamylaa/clodo-framework/commit/0e13bfcdda56d0a137bcd44cfd8a9ca49af30503))
|
|
91
|
+
* clodo-security deploy --help and cross-platform deployment scripts ([d7ebbbe](https://github.com/tamylaa/clodo-framework/commit/d7ebbbe8d41c6e4f297f64d19ea5b98172ddee3b))
|
|
92
|
+
* test - Remove placeholder tests that require unimplemented classes ([b009b34](https://github.com/tamylaa/clodo-framework/commit/b009b34cf1f9f7542fbaab2fa2419b2766c72f10))
|
|
93
|
+
|
|
94
|
+
## [2.0.3](https://github.com/tamylaa/clodo-framework/compare/v2.0.2...v2.0.3) (2025-10-11)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
### Bug Fixes
|
|
98
|
+
|
|
99
|
+
* Add reusable deployment command with Three-Tier input architecture ([0e13bfc](https://github.com/tamylaa/clodo-framework/commit/0e13bfcdda56d0a137bcd44cfd8a9ca49af30503))
|
|
100
|
+
* clodo-security deploy --help and cross-platform deployment scripts ([d7ebbbe](https://github.com/tamylaa/clodo-framework/commit/d7ebbbe8d41c6e4f297f64d19ea5b98172ddee3b))
|
|
101
|
+
* test - Remove placeholder tests that require unimplemented classes ([b009b34](https://github.com/tamylaa/clodo-framework/commit/b009b34cf1f9f7542fbaab2fa2419b2766c72f10))
|
|
102
|
+
|
|
103
|
+
## [2.0.2](https://github.com/tamylaa/clodo-framework/compare/v2.0.1...v2.0.2) (2025-10-11)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
### Bug Fixes
|
|
107
|
+
|
|
108
|
+
* resolve CLI tool import paths and runtime dependencies ([6a726b9](https://github.com/tamylaa/clodo-framework/commit/6a726b95a5e55055048a262d1c146a50a4f0b46f))
|
|
109
|
+
|
|
110
|
+
## [2.0.1](https://github.com/tamylaa/clodo-framework/compare/v2.0.0...v2.0.1) (2025-10-10)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
### Bug Fixes
|
|
114
|
+
|
|
115
|
+
* reorganize documentation structure and fix package distribution ([598d44b](https://github.com/tamylaa/clodo-framework/commit/598d44b669f65c222d215ba33d0361d736a15ac9))
|
|
116
|
+
|
|
117
|
+
# [2.0.0](https://github.com/tamylaa/clodo-framework/compare/v1.0.0...v2.0.0) (2025-10-10)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
### Bug Fixes
|
|
121
|
+
|
|
122
|
+
* enhance enterprise readiness with comprehensive testing roadmap and documentation ([25702d6](https://github.com/tamylaa/clodo-framework/commit/25702d624047ef40991de47eba0b8dabcfaecfa8))
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
### BREAKING CHANGES
|
|
126
|
+
|
|
127
|
+
* Framework now requires structured testing approach for enterprise deployment
|
|
128
|
+
|
|
129
|
+
# 1.0.0 (2025-10-09)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
### Bug Fixes
|
|
133
|
+
|
|
134
|
+
* add comprehensive security validation module ([ea6cbdf](https://github.com/tamylaa/clodo-framework/commit/ea6cbdf07790266d8b2cd779f750b5e6ef622ba6))
|
|
135
|
+
* add customer configuration management ([ac7379b](https://github.com/tamylaa/clodo-framework/commit/ac7379b41e584bed229cd3a3b8ccb532eed9dcb4))
|
|
136
|
+
* add missing environment parameter to WranglerDeployer validation call ([a833ca3](https://github.com/tamylaa/clodo-framework/commit/a833ca3c1006953911453e1b383c602b96a16229))
|
|
137
|
+
* allow tests to pass when no test files exist ([70bd5b8](https://github.com/tamylaa/clodo-framework/commit/70bd5b8ee61fc7fb70e5015d1889e411c9e091b4))
|
|
138
|
+
* complete rebranding from lego-framework to clodo-framework ([1a704ba](https://github.com/tamylaa/clodo-framework/commit/1a704ba0bdd4b649c412a8b8cc202138d64c79e2))
|
|
139
|
+
* comprehensive documentation update for framework capabilities ([65c0284](https://github.com/tamylaa/clodo-framework/commit/65c0284e6bb916be2f5bd994d76aa198c77cf9fc))
|
|
140
|
+
* comprehensive framework improvements and enterprise documentation ([e77b046](https://github.com/tamylaa/clodo-framework/commit/e77b046cca0dc6ed7afc16479e588d2dece333f3))
|
|
141
|
+
* enhance deployment framework with HTTP validation, error handling, and interactive configuration ([7698f56](https://github.com/tamylaa/clodo-framework/commit/7698f56108c0b90809eaaa55e7335ac89e6dce49))
|
|
142
|
+
* ensure semantic-release works on latest commit ([5d59903](https://github.com/tamylaa/clodo-framework/commit/5d59903cab1c74266373bd6066b045da75256645))
|
|
143
|
+
* implement intelligent WranglerDeployer for actual Cloudflare deployments ([a656190](https://github.com/tamylaa/clodo-framework/commit/a6561909753b5bcb7ece0a0159772daee28dd37c))
|
|
144
|
+
* include documentation in package files ([550a734](https://github.com/tamylaa/clodo-framework/commit/550a734ef9de3f4e4afc35e85226216649e84332))
|
|
145
|
+
* Initial release of Lego Framework v1.0.0 ([6994efd](https://github.com/tamylaa/clodo-framework/commit/6994efdf0be3508ae7fe54c6d71f161d56cafef8))
|
|
146
|
+
* major framework enhancement with enterprise features and TypeScript support ([53c94fb](https://github.com/tamylaa/clodo-framework/commit/53c94fbc3adde14852ffaab9117eda09621f3a16))
|
|
147
|
+
* major framework reorganization and robustness improvements ([7aed0b5](https://github.com/tamylaa/clodo-framework/commit/7aed0b5b438bb02c081d533766951ccc89ff4d4c))
|
|
148
|
+
* make database orchestrator dependency-aware ([051f722](https://github.com/tamylaa/clodo-framework/commit/051f72269aab39d4e972cad8011430dfa86b3f7a))
|
|
149
|
+
* resolve ESLint errors and warnings ([005b591](https://github.com/tamylaa/clodo-framework/commit/005b5916faf6a57c0065d649979dcef84c466ce3))
|
|
150
|
+
* resolve ESLint warnings to enable automated release ([200dd82](https://github.com/tamylaa/clodo-framework/commit/200dd8267af2629f3cb3a1a3a30cbc96ea5bbee9))
|
|
151
|
+
* resolve ESM packaging conflict by preserving ES modules in build output ([0d13422](https://github.com/tamylaa/clodo-framework/commit/0d13422e5c7800006369b157b57d9440805d14dd))
|
|
152
|
+
* resolve GitHub Actions workflow permissions and NPM token issues ([cd53e55](https://github.com/tamylaa/clodo-framework/commit/cd53e55702e0c249e26884304115537c8a3345cf))
|
|
153
|
+
* resolve linting and type checking issues ([598e699](https://github.com/tamylaa/clodo-framework/commit/598e6999be93025d7a35c59df55c6606a59c98ac))
|
|
154
|
+
* resolve missing health-checker dependency by moving to src/utils ([64d429b](https://github.com/tamylaa/clodo-framework/commit/64d429be674855539e5f77413d9a14151d1b0ef8))
|
|
155
|
+
* update repository URLs to correct GitHub username (tamylaa) ([791ae3f](https://github.com/tamylaa/clodo-framework/commit/791ae3ff76589851a0ba09cef58d955272c6b343))
|
|
156
|
+
* Windows compatibility and ES module issues ([7ed2588](https://github.com/tamylaa/clodo-framework/commit/7ed2588d8ae2f706e5646813c1d1dad99944d50f))
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
### Features
|
|
160
|
+
|
|
161
|
+
* Add additional documentation and development tools ([0c6ca0d](https://github.com/tamylaa/clodo-framework/commit/0c6ca0d18ac7bdeef17587a592b8e7e1c549c87b))
|
|
162
|
+
* add GitHub Actions workflow for semantic release ([e097070](https://github.com/tamylaa/clodo-framework/commit/e0970708b454d87dd124371840d0eb1c91c7641c))
|
|
163
|
+
* implement comprehensive production hardening ([4a4c391](https://github.com/tamylaa/clodo-framework/commit/4a4c3917fc3ba624ff61ac79cde1df7c40b6aa33))
|
|
164
|
+
* initial commercial release of Clodo Framework ([647e271](https://github.com/tamylaa/clodo-framework/commit/647e271dd0718b8a5fc4082bc1ac9be1216f9fe2))
|
|
165
|
+
* Rebrand to Clodo Framework v3.0.6 ([03e6923](https://github.com/tamylaa/clodo-framework/commit/03e69232dc60e139601320fce7c1c88c55d6254f))
|
|
166
|
+
* trigger initial Clodo Framework v1.0.0 release ([98bcd76](https://github.com/tamylaa/clodo-framework/commit/98bcd764a1aa1cfe4199d820e02be584619ea11c))
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
### BREAKING CHANGES
|
|
170
|
+
|
|
171
|
+
* Deployments now require security validation by default
|
|
172
|
+
* Enhanced framework with advanced caching, validation, and security features
|
|
173
|
+
|
|
174
|
+
- Enhanced SchemaManager with comprehensive validation and SQL caching (~750 lines)
|
|
175
|
+
- Enhanced GenericDataService with query caching and security controls (~580 lines)
|
|
176
|
+
- Enhanced ModuleManager with enterprise hook execution (~650 lines)
|
|
177
|
+
- Added FeatureManager for progressive enhancement with 20+ feature flags
|
|
178
|
+
- Added VersionDetector for automatic configuration and migration
|
|
179
|
+
- Added MigrationAdapters for backwards compatibility
|
|
180
|
+
- Added comprehensive TypeScript definitions (500+ lines)
|
|
181
|
+
- Enhanced build pipeline with TypeScript checking
|
|
182
|
+
- Fixed critical parsing errors and linting issues
|
|
183
|
+
- 60%+ code duplication reduction through framework consolidation
|
|
184
|
+
|
|
185
|
+
All breaking changes include backwards compatibility via migration adapters.
|
|
186
|
+
|
|
131
187
|
## [3.0.6](https://github.com/tamylaa/clodo-framework/compare/v3.0.5...v3.0.6) (2025-10-07)
|
|
132
188
|
|
|
133
189
|
|
package/README.md
CHANGED
|
@@ -105,6 +105,84 @@ npx @tamyla/clodo-framework security deploy customer production
|
|
|
105
105
|
- **ā” Performance Optimized**: Intelligent caching system for schemas, SQL queries, and validation results
|
|
106
106
|
- **š Advanced Data Operations**: Enhanced CRUD with relationships, advanced pagination, and query optimization
|
|
107
107
|
|
|
108
|
+
## š What's New in v2.0.7
|
|
109
|
+
|
|
110
|
+
### š§ Enhanced Customer Configuration System
|
|
111
|
+
The customer configuration CLI now **reads directly from your wrangler.toml** file, providing a single source of truth for deployment configuration:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# List all customers with complete deployment metadata
|
|
115
|
+
npx @tamyla/clodo-framework customer list
|
|
116
|
+
|
|
117
|
+
# Specify custom config directory
|
|
118
|
+
npx @tamyla/clodo-framework customer list --config-dir /path/to/config
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**What you see now:**
|
|
122
|
+
- ā
Account ID from wrangler.toml
|
|
123
|
+
- ā
Zone ID from wrangler.toml
|
|
124
|
+
- ā
Customer domain from environment config
|
|
125
|
+
- ā
Service domain from wrangler.toml
|
|
126
|
+
- ā
Worker name and database info
|
|
127
|
+
- ā
Secrets status
|
|
128
|
+
|
|
129
|
+
All **6 core deployment pieces** in one command - no more hunting through multiple files!
|
|
130
|
+
|
|
131
|
+
### āļø New CloudflareAPI Utility
|
|
132
|
+
Programmatic Cloudflare operations without CLI dependencies:
|
|
133
|
+
|
|
134
|
+
```javascript
|
|
135
|
+
import { CloudflareAPI } from '@tamyla/clodo-framework/utils/cloudflare';
|
|
136
|
+
|
|
137
|
+
const cf = new CloudflareAPI(apiToken);
|
|
138
|
+
|
|
139
|
+
// Verify token permissions
|
|
140
|
+
const isValid = await cf.verifyToken();
|
|
141
|
+
|
|
142
|
+
// List all zones/domains
|
|
143
|
+
const zones = await cf.listZones();
|
|
144
|
+
|
|
145
|
+
// Get zone details (account_id, zone_id, etc.)
|
|
146
|
+
const details = await cf.getZoneDetails(zoneId);
|
|
147
|
+
|
|
148
|
+
// List D1 databases
|
|
149
|
+
const databases = await cf.listD1Databases(accountId);
|
|
150
|
+
|
|
151
|
+
// Get complete deployment info
|
|
152
|
+
const info = await cf.getDeploymentInfo(zoneId);
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### š TOML Configuration Writing
|
|
156
|
+
Dynamic wrangler.toml updates from code:
|
|
157
|
+
|
|
158
|
+
```javascript
|
|
159
|
+
import {
|
|
160
|
+
updateWranglerToml,
|
|
161
|
+
addD1Database,
|
|
162
|
+
updateEnvironmentConfig
|
|
163
|
+
} from '@tamyla/clodo-framework/config/customers';
|
|
164
|
+
|
|
165
|
+
// Add a new D1 database binding
|
|
166
|
+
await addD1Database('production', 'my-database', 'database-uuid-123');
|
|
167
|
+
|
|
168
|
+
// Update environment config
|
|
169
|
+
await updateEnvironmentConfig('production', {
|
|
170
|
+
vars: { SERVICE_DOMAIN: 'api.example.com' }
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
// Update any wrangler.toml section
|
|
174
|
+
await updateWranglerToml({
|
|
175
|
+
name: 'my-worker',
|
|
176
|
+
compatibility_date: '2025-01-01'
|
|
177
|
+
});
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### š§¹ Code Quality Improvements
|
|
181
|
+
- **Removed 180 lines** of duplicate secret management code
|
|
182
|
+
- **Consolidated Cloudflare utilities** under `src/utils/cloudflare/`
|
|
183
|
+
- **Single source of truth** for Cloudflare operations (API vs CLI)
|
|
184
|
+
- **Better organization** - clear separation between framework and CLI utilities
|
|
185
|
+
|
|
108
186
|
## š§Ŗ Downstream Service Testing & Validation
|
|
109
187
|
|
|
110
188
|
The CLODO Framework provides comprehensive capabilities for testing, validating, and deploying Cloudflare Workers in downstream environments - perfect for ensuring services work correctly in third-party accounts and production environments.
|
package/bin/clodo-service.js
CHANGED
|
@@ -7,12 +7,33 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { CustomerConfigCLI } from '../../../dist/config/CustomerConfigCLI.js';
|
|
10
|
+
import { resolve } from 'path';
|
|
11
|
+
|
|
12
|
+
// Parse command line arguments
|
|
13
|
+
const argv = process.argv.slice(2);
|
|
14
|
+
let configDir = null;
|
|
15
|
+
let command = null;
|
|
16
|
+
let args = [];
|
|
17
|
+
|
|
18
|
+
// Extract --config-dir parameter if present
|
|
19
|
+
for (let i = 0; i < argv.length; i++) {
|
|
20
|
+
if (argv[i] === '--config-dir' && i + 1 < argv.length) {
|
|
21
|
+
configDir = resolve(argv[i + 1]);
|
|
22
|
+
i++; // Skip the next argument (the path)
|
|
23
|
+
} else if (!command) {
|
|
24
|
+
command = argv[i];
|
|
25
|
+
} else {
|
|
26
|
+
args.push(argv[i]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
10
29
|
|
|
11
|
-
|
|
12
|
-
|
|
30
|
+
// Default to current working directory if not specified
|
|
31
|
+
if (!configDir) {
|
|
32
|
+
configDir = resolve(process.cwd(), 'config');
|
|
33
|
+
}
|
|
13
34
|
|
|
14
35
|
async function main() {
|
|
15
|
-
const cli = new CustomerConfigCLI();
|
|
36
|
+
const cli = new CustomerConfigCLI({ configDir });
|
|
16
37
|
await cli.initialize();
|
|
17
38
|
|
|
18
39
|
try {
|
|
@@ -105,14 +126,20 @@ async function main() {
|
|
|
105
126
|
console.log('š Configured customers:\n');
|
|
106
127
|
listResult.customers.forEach(customer => {
|
|
107
128
|
console.log(`š¢ ${customer.name}`);
|
|
108
|
-
console.log(` Domain: ${customer.domain || 'Not
|
|
129
|
+
console.log(` Domain: ${customer.customerDomain || customer.domain || 'Not configured'}`);
|
|
130
|
+
console.log(` Account ID: ${customer.accountId ? `${customer.accountId.substring(0, 8)}...${customer.accountId.substring(24)}` : 'Not configured'}`);
|
|
131
|
+
console.log(` Zone ID: ${customer.zoneId ? `${customer.zoneId.substring(0, 8)}...` : 'Not configured'}`);
|
|
132
|
+
if (customer.databaseId) {
|
|
133
|
+
console.log(` Database: ${customer.databaseName || 'Unnamed'} (${customer.databaseId.substring(0, 8)}...)`);
|
|
134
|
+
}
|
|
135
|
+
console.log(` Secrets: ${customer.hasSecrets ? 'ā
Managed via wrangler secret commands' : 'ā Not configured'}`);
|
|
109
136
|
console.log(` Environments: ${customer.environments.join(', ')}`);
|
|
110
|
-
console.log(`
|
|
111
|
-
console.log(` Config: config/customers/${customer.name}/`);
|
|
137
|
+
console.log(` Config Path: config/customers/${customer.name}/`);
|
|
112
138
|
console.log('');
|
|
113
139
|
});
|
|
114
140
|
} else if (listResult.success) {
|
|
115
141
|
console.log('š No customers configured');
|
|
142
|
+
console.log('\nš” Tip: Run "clodo-customer-config create-customer <name>" to create your first customer');
|
|
116
143
|
} else {
|
|
117
144
|
console.error(`ā Failed to list customers: ${listResult.error}`);
|
|
118
145
|
process.exit(1);
|
|
@@ -121,6 +148,10 @@ async function main() {
|
|
|
121
148
|
|
|
122
149
|
default:
|
|
123
150
|
console.log('Customer Configuration Management Tool\n');
|
|
151
|
+
console.log('Usage:');
|
|
152
|
+
console.log(' clodo-customer-config [--config-dir <path>] <command> [args]\n');
|
|
153
|
+
console.log('Options:');
|
|
154
|
+
console.log(' --config-dir <path> - Path to config directory (default: ./config)\n');
|
|
124
155
|
console.log('Available commands:');
|
|
125
156
|
console.log(' create-customer <name> [domain] - Create new customer config from template');
|
|
126
157
|
console.log(' validate - Validate configuration structure');
|
|
@@ -132,9 +163,11 @@ async function main() {
|
|
|
132
163
|
console.log(' clodo-customer-config validate');
|
|
133
164
|
console.log(' clodo-customer-config show acmecorp production');
|
|
134
165
|
console.log(' clodo-customer-config list');
|
|
166
|
+
console.log(' clodo-customer-config --config-dir /path/to/service/config validate');
|
|
135
167
|
console.log('\nIntegration:');
|
|
136
168
|
console.log(' This tool integrates with Clodo Framework domain and feature flag systems.');
|
|
137
169
|
console.log(' Customer configurations are automatically registered as domains.');
|
|
170
|
+
console.log(' When run from a service directory, it uses ./config by default.');
|
|
138
171
|
break;
|
|
139
172
|
}
|
|
140
173
|
} catch (error) {
|
|
@@ -143,150 +176,6 @@ async function main() {
|
|
|
143
176
|
}
|
|
144
177
|
}
|
|
145
178
|
|
|
146
|
-
main().catch(error => {
|
|
147
|
-
console.error(`ā Unexpected error: ${error.message}`);
|
|
148
|
-
process.exit(1);
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
async function handleCreateCustomer(args) {
|
|
152
|
-
const [customerName, domain] = args;
|
|
153
|
-
|
|
154
|
-
if (!customerName) {
|
|
155
|
-
console.error('Usage: customer-config create-customer <customer-name> [domain]');
|
|
156
|
-
process.exit(1);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
console.log(`šļø Creating customer configuration: ${customerName}`);
|
|
160
|
-
|
|
161
|
-
// Pass framework mode flag to skip strict validation
|
|
162
|
-
const customerInfo = await customerManager.createCustomer(customerName, domain, {
|
|
163
|
-
skipValidation: true,
|
|
164
|
-
isFrameworkMode: true
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
console.log(`\nš Customer ${customerName} configuration created successfully!`);
|
|
168
|
-
console.log(`\nš Customer Details:`);
|
|
169
|
-
console.log(` Name: ${customerInfo.name}`);
|
|
170
|
-
console.log(` Domain: ${customerInfo.domain || 'Not specified'}`);
|
|
171
|
-
console.log(` Config Path: ${customerInfo.configPath}`);
|
|
172
|
-
console.log(` Environments: ${customerInfo.environments.join(', ')}`);
|
|
173
|
-
|
|
174
|
-
console.log(`\nš Next steps:`);
|
|
175
|
-
console.log(`1. Review generated configs in: config/customers/${customerName}/`);
|
|
176
|
-
console.log(`2. Update domain-specific URLs if needed`);
|
|
177
|
-
console.log(`3. Generate production secrets: npm run security:generate-key ${customerName}`);
|
|
178
|
-
console.log(`4. Set production secrets: wrangler secret put KEY_NAME --env production`);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
async function handleValidate() {
|
|
182
|
-
console.log('š Validating customer configuration structure...\n');
|
|
183
|
-
|
|
184
|
-
const result = await customerManager.validateConfigs();
|
|
185
|
-
|
|
186
|
-
if (result.valid) {
|
|
187
|
-
console.log('ā
All customer configurations are valid');
|
|
188
|
-
} else {
|
|
189
|
-
console.log('ā Configuration validation failed');
|
|
190
|
-
result.errors.forEach(error => console.log(` - ${error}`));
|
|
191
|
-
process.exit(1);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
async function handleShow(args) {
|
|
196
|
-
const [customerName, environment] = args;
|
|
197
|
-
|
|
198
|
-
if (!customerName || !environment) {
|
|
199
|
-
console.error('Usage: customer-config show <customer> <environment>');
|
|
200
|
-
process.exit(1);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
const config = customerManager.showConfig(customerName, environment);
|
|
204
|
-
|
|
205
|
-
console.log(`š Effective configuration: ${customerName}/${environment}\n`);
|
|
206
|
-
|
|
207
|
-
if (config.variables.base) {
|
|
208
|
-
console.log('š Base variables:');
|
|
209
|
-
Object.entries(config.variables.base).slice(0, 10).forEach(([key, value]) => {
|
|
210
|
-
console.log(` ${key}=${value}`);
|
|
211
|
-
});
|
|
212
|
-
if (Object.keys(config.variables.base).length > 10) {
|
|
213
|
-
console.log(' ...');
|
|
214
|
-
}
|
|
215
|
-
console.log('');
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
if (config.variables.customer) {
|
|
219
|
-
console.log(`š Customer ${environment} variables:`);
|
|
220
|
-
Object.entries(config.variables.customer).slice(0, 15).forEach(([key, value]) => {
|
|
221
|
-
console.log(` ${key}=${value}`);
|
|
222
|
-
});
|
|
223
|
-
if (Object.keys(config.variables.customer).length > 15) {
|
|
224
|
-
console.log(' ...');
|
|
225
|
-
}
|
|
226
|
-
console.log('');
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
if (config.features && Object.keys(config.features).length > 0) {
|
|
230
|
-
console.log('š© Customer features:');
|
|
231
|
-
Object.entries(config.features).forEach(([feature, enabled]) => {
|
|
232
|
-
console.log(` ${feature}: ${enabled ? 'ā
' : 'ā'}`);
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
async function handleDeployCommand(args) {
|
|
238
|
-
const [customerName, environment] = args;
|
|
239
|
-
|
|
240
|
-
if (!customerName || !environment) {
|
|
241
|
-
console.error('Usage: customer-config deploy-command <customer> <environment>');
|
|
242
|
-
process.exit(1);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
const deployInfo = customerManager.getDeployCommand(customerName, environment);
|
|
246
|
-
|
|
247
|
-
console.log(`š Deploy command for ${customerName}/${environment}:`);
|
|
248
|
-
console.log(` ${deployInfo.command}`);
|
|
249
|
-
console.log(`\nš” Ensure customer config is loaded: ${deployInfo.configPath}`);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
async function handleList() {
|
|
253
|
-
const customers = customerManager.listCustomers();
|
|
254
|
-
|
|
255
|
-
if (customers.length === 0) {
|
|
256
|
-
console.log('š No customers configured');
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
console.log('š Configured customers:\n');
|
|
261
|
-
|
|
262
|
-
customers.forEach(customer => {
|
|
263
|
-
console.log(`š¢ ${customer.name}`);
|
|
264
|
-
console.log(` Domain: ${customer.domain || 'Not specified'}`);
|
|
265
|
-
console.log(` Environments: ${customer.environments.join(', ')}`);
|
|
266
|
-
console.log(` Created: ${customer.createdAt}`);
|
|
267
|
-
console.log(` Config: config/customers/${customer.name}/`);
|
|
268
|
-
console.log('');
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
function showHelp() {
|
|
273
|
-
console.log('Customer Configuration Management Tool\n');
|
|
274
|
-
console.log('Available commands:');
|
|
275
|
-
console.log(' create-customer <name> [domain] - Create new customer config from template');
|
|
276
|
-
console.log(' validate - Validate configuration structure');
|
|
277
|
-
console.log(' show <customer> <environment> - Show effective configuration');
|
|
278
|
-
console.log(' deploy-command <customer> <env> - Get deployment command');
|
|
279
|
-
console.log(' list - List all configured customers');
|
|
280
|
-
console.log('\nExamples:');
|
|
281
|
-
console.log(' customer-config create-customer acmecorp acmecorp.com');
|
|
282
|
-
console.log(' customer-config validate');
|
|
283
|
-
console.log(' customer-config show acmecorp production');
|
|
284
|
-
console.log(' customer-config list');
|
|
285
|
-
console.log('\nIntegration:');
|
|
286
|
-
console.log(' This tool integrates with Clodo Framework domain and feature flag systems.');
|
|
287
|
-
console.log(' Customer configurations are automatically registered as domains.');
|
|
288
|
-
}
|
|
289
|
-
|
|
290
179
|
main().catch(error => {
|
|
291
180
|
console.error(`ā Unexpected error: ${error.message}`);
|
|
292
181
|
process.exit(1);
|