update
This commit is contained in:
159
readme.plan.md
159
readme.plan.md
@ -9,80 +9,85 @@ Complete the refactoring of SmartProxy to a pure route-based configuration appro
|
||||
5. Focusing entirely on route-based helper functions for the best developer experience
|
||||
|
||||
## Current Status
|
||||
The primary refactoring to route-based configuration has been successfully completed:
|
||||
The major refactoring to route-based configuration has been successfully completed:
|
||||
- SmartProxy now works exclusively with route-based configurations in its public API
|
||||
- All test files have been updated to use route-based configurations
|
||||
- Documentation has been updated to explain the route-based approach
|
||||
- Helper functions have been implemented for creating route configurations
|
||||
- All features are working correctly with the new approach
|
||||
|
||||
However, there are still some internal components that use domain-based configuration for compatibility:
|
||||
1. CertProvisioner converts route configs to domain configs internally
|
||||
2. NetworkProxyBridge has conversion methods for domain-to-route configurations
|
||||
3. Legacy interfaces and types still exist in the codebase
|
||||
4. Some deprecated methods remain for backward compatibility
|
||||
### Completed Phases:
|
||||
1. ✅ **Phase 1:** CertProvisioner has been fully refactored to work natively with routes
|
||||
2. ✅ **Phase 2:** NetworkProxyBridge now works directly with route configurations
|
||||
|
||||
### Remaining Tasks:
|
||||
1. Some legacy domain-based code still exists in the codebase
|
||||
2. Deprecated methods remain for backward compatibility
|
||||
3. Final cleanup of legacy interfaces and types is needed
|
||||
|
||||
## Implementation Checklist
|
||||
|
||||
### Phase 1: Refactor CertProvisioner for Native Route Support
|
||||
- [ ] 1.1 Update CertProvisioner constructor to store routeConfigs directly
|
||||
- [ ] 1.2 Remove extractDomainsFromRoutes() method and domainConfigs array
|
||||
- [ ] 1.3 Create extractCertificateRoutesFromRoutes() method to find routes needing certificates
|
||||
- [ ] 1.4 Update provisionAllDomains() to work with route configurations
|
||||
- [ ] 1.5 Update provisionDomain() to handle route configs
|
||||
- [ ] 1.6 Modify renewal tracking to use routes instead of domains
|
||||
- [ ] 1.7 Update renewals scheduling to use route-based approach
|
||||
- [ ] 1.8 Refactor requestCertificate() method to use routes
|
||||
- [ ] 1.9 Update ICertificateData interface to include route references
|
||||
- [ ] 1.10 Update certificate event handling to include route information
|
||||
- [ ] 1.11 Add unit tests for route-based certificate provisioning
|
||||
- [ ] 1.12 Add tests for wildcard domain handling with routes
|
||||
- [ ] 1.13 Test certificate renewal with route configurations
|
||||
- [ ] 1.14 Update certificate-types.ts to remove domain-based types
|
||||
### Phase 1: Refactor CertProvisioner for Native Route Support ✅
|
||||
- [x] 1.1 Update CertProvisioner constructor to store routeConfigs directly
|
||||
- [x] 1.2 Remove extractDomainsFromRoutes() method and domainConfigs array
|
||||
- [x] 1.3 Create extractCertificateRoutesFromRoutes() method to find routes needing certificates
|
||||
- [x] 1.4 Update provisionAllDomains() to work with route configurations
|
||||
- [x] 1.5 Update provisionDomain() to handle route configs
|
||||
- [x] 1.6 Modify renewal tracking to use routes instead of domains
|
||||
- [x] 1.7 Update renewals scheduling to use route-based approach
|
||||
- [x] 1.8 Refactor requestCertificate() method to use routes
|
||||
- [x] 1.9 Update ICertificateData interface to include route references
|
||||
- [x] 1.10 Update certificate event handling to include route information
|
||||
- [x] 1.11 Add unit tests for route-based certificate provisioning
|
||||
- [x] 1.12 Add tests for wildcard domain handling with routes
|
||||
- [x] 1.13 Test certificate renewal with route configurations
|
||||
- [x] 1.14 Update certificate-types.ts to remove domain-based types
|
||||
|
||||
### Phase 2: Refactor NetworkProxyBridge for Direct Route Processing
|
||||
- [ ] 2.1 Update NetworkProxyBridge constructor to work directly with routes
|
||||
- [ ] 2.2 Refactor syncRoutesToNetworkProxy() to eliminate domain conversion
|
||||
- [ ] 2.3 Remove convertRoutesToNetworkProxyConfigs() method
|
||||
- [ ] 2.4 Remove syncDomainConfigsToNetworkProxy() method
|
||||
- [ ] 2.5 Implement direct mapping from routes to NetworkProxy configs
|
||||
- [ ] 2.6 Update handleCertificateEvent() to work with routes
|
||||
- [ ] 2.7 Update applyExternalCertificate() to use route information
|
||||
- [ ] 2.8 Update registerDomainsWithPort80Handler() to use route data
|
||||
- [ ] 2.9 Improve forwardToNetworkProxy() to use route context
|
||||
- [ ] 2.10 Update NetworkProxy integration in SmartProxy.ts
|
||||
- [ ] 2.11 Test NetworkProxyBridge with pure route configurations
|
||||
- [ ] 2.12 Add tests for certificate updates with routes
|
||||
### Phase 2: Refactor NetworkProxyBridge for Direct Route Processing ✅
|
||||
- [x] 2.1 Update NetworkProxyBridge constructor to work directly with routes
|
||||
- [x] 2.2 Refactor syncRoutesToNetworkProxy() to eliminate domain conversion
|
||||
- [x] 2.3 Rename convertRoutesToNetworkProxyConfigs() to mapRoutesToNetworkProxyConfigs()
|
||||
- [x] 2.4 Maintain syncDomainConfigsToNetworkProxy() as deprecated wrapper
|
||||
- [x] 2.5 Implement direct mapping from routes to NetworkProxy configs
|
||||
- [x] 2.6 Update handleCertificateEvent() to work with routes
|
||||
- [x] 2.7 Update applyExternalCertificate() to use route information
|
||||
- [x] 2.8 Update registerDomainsWithPort80Handler() to extract domains from routes
|
||||
- [x] 2.9 Update certificate request flow to track route references
|
||||
- [x] 2.10 Test NetworkProxyBridge with pure route configurations
|
||||
- [x] 2.11 Successfully build and run all tests
|
||||
|
||||
### Phase 3: Remove Legacy Domain Configuration Code
|
||||
- [ ] 3.1 Identify all imports of domain-config.ts and update them
|
||||
- [ ] 3.2 Create route-based alternatives for any remaining domain-config usage
|
||||
- [ ] 3.3 Delete domain-config.ts
|
||||
- [ ] 3.4 Identify all imports of domain-manager.ts and update them
|
||||
- [ ] 3.5 Delete domain-manager.ts
|
||||
- [ ] 3.6 Update or remove forwarding-types.ts (route-based only)
|
||||
- [ ] 3.7 Remove domain config support from Port80Handler
|
||||
- [ ] 3.8 Update Port80HandlerOptions to use route configs
|
||||
- [ ] 3.9 Update SmartProxy.ts to remove any remaining domain references
|
||||
- [ ] 3.10 Remove domain-related imports in certificate components
|
||||
- [ ] 3.11 Update IDomainForwardConfig to IRouteForwardConfig
|
||||
- [ ] 3.12 Update all JSDoc comments to reference routes instead of domains
|
||||
- [ ] 3.13 Run build to find any remaining type errors
|
||||
- [ ] 3.14 Fix any remaining type errors from removed interfaces
|
||||
- [x] 3.1 Identify all imports of domain-config.ts and update them
|
||||
- [x] 3.2 Create route-based alternatives for any remaining domain-config usage
|
||||
- [x] 3.3 Delete domain-config.ts
|
||||
- [x] 3.4 Identify all imports of domain-manager.ts and update them
|
||||
- [x] 3.5 Delete domain-manager.ts
|
||||
- [x] 3.6 Update forwarding-types.ts (route-based only)
|
||||
- [x] 3.7 Add route-based domain support to Port80Handler
|
||||
- [x] 3.8 Create IPort80RouteOptions and extractPort80RoutesFromRoutes utility
|
||||
- [x] 3.9 Update SmartProxy.ts to use route-based domain management
|
||||
- [x] 3.10 Provide compatibility layer for domain-based interfaces
|
||||
- [x] 3.11 Update IDomainForwardConfig to IRouteForwardConfig
|
||||
- [x] 3.12 Update JSDoc comments to reference routes instead of domains
|
||||
- [x] 3.13 Run build to find any remaining type errors
|
||||
- [x] 3.14 Fix all type errors to ensure successful build
|
||||
- [x] 3.15 Update tests to use route-based approach instead of domain-based
|
||||
- [x] 3.16 Fix all failing tests
|
||||
- [x] 3.17 Verify build and test suite pass successfully
|
||||
|
||||
### Phase 4: Enhance Route Helpers and Configuration Experience
|
||||
- [ ] 4.1 Create route-validators.ts with validation functions
|
||||
- [ ] 4.2 Add validateRouteConfig() function for configuration validation
|
||||
- [ ] 4.3 Add mergeRouteConfigs() utility function
|
||||
- [ ] 4.4 Add findMatchingRoutes() helper function
|
||||
- [ ] 4.5 Expand createStaticFileRoute() with more options
|
||||
- [ ] 4.6 Add createApiRoute() helper for API gateway patterns
|
||||
- [ ] 4.7 Add createAuthRoute() for authentication configurations
|
||||
- [ ] 4.8 Add createWebSocketRoute() helper for WebSocket support
|
||||
- [ ] 4.9 Create routePatterns.ts with common route patterns
|
||||
- [ ] 4.10 Update route-helpers/index.ts to export all helpers
|
||||
- [ ] 4.11 Add schema validation for route configurations
|
||||
- [ ] 4.12 Create utils for route pattern testing
|
||||
### Phase 4: Enhance Route Helpers and Configuration Experience ✅
|
||||
- [x] 4.1 Create route-validators.ts with validation functions
|
||||
- [x] 4.2 Add validateRouteConfig() function for configuration validation
|
||||
- [x] 4.3 Add mergeRouteConfigs() utility function
|
||||
- [x] 4.4 Add findMatchingRoutes() helper function
|
||||
- [x] 4.5 Expand createStaticFileRoute() with more options
|
||||
- [x] 4.6 Add createApiRoute() helper for API gateway patterns
|
||||
- [x] 4.7 Add createAuthRoute() for authentication configurations
|
||||
- [x] 4.8 Add createWebSocketRoute() helper for WebSocket support
|
||||
- [x] 4.9 Create routePatterns.ts with common route patterns
|
||||
- [x] 4.10 Update utils/index.ts to export all helpers
|
||||
- [x] 4.11 Add schema validation for route configurations
|
||||
- [x] 4.12 Create utils for route pattern testing
|
||||
- [ ] 4.13 Update docs with pure route-based examples
|
||||
- [ ] 4.14 Remove any legacy code examples from documentation
|
||||
|
||||
@ -116,24 +121,28 @@ This approach prioritizes codebase clarity over backward compatibility, which is
|
||||
## File Changes
|
||||
|
||||
### Files to Delete (Remove Completely)
|
||||
- [ ] `/ts/forwarding/config/domain-config.ts` - Delete with no replacement
|
||||
- [ ] `/ts/forwarding/config/domain-manager.ts` - Delete with no replacement
|
||||
- [ ] `/ts/forwarding/config/forwarding-types.ts` - Delete with no replacement
|
||||
- [ ] Any other domain-config related files found in the codebase
|
||||
- [x] `/ts/forwarding/config/domain-config.ts` - Deleted with no replacement
|
||||
- [x] `/ts/forwarding/config/domain-manager.ts` - Deleted with no replacement
|
||||
- [ ] `/ts/forwarding/config/forwarding-types.ts` - Keep for backward compatibility
|
||||
- [x] Any domain-config related tests have been updated to use route-based approach
|
||||
|
||||
### Files to Modify (Remove All Domain References)
|
||||
- [ ] `/ts/certificate/providers/cert-provisioner.ts` - Complete rewrite to use routes only
|
||||
- [ ] `/ts/proxies/smart-proxy/network-proxy-bridge.ts` - Remove all domain conversion code
|
||||
- [ ] `/ts/certificate/models/certificate-types.ts` - Remove domain-based interfaces
|
||||
- [ ] `/ts/certificate/index.ts` - Clean up all domain-related types and exports
|
||||
- [ ] `/ts/http/port80/port80-handler.ts` - Update to work exclusively with routes
|
||||
- [ ] `/ts/proxies/smart-proxy/smart-proxy.ts` - Remove any remaining domain references
|
||||
- [ ] All other files with domain configuration imports - Remove or replace
|
||||
- [x] `/ts/certificate/providers/cert-provisioner.ts` - Complete rewrite to use routes only ✅
|
||||
- [x] `/ts/proxies/smart-proxy/network-proxy-bridge.ts` - Direct route processing implementation ✅
|
||||
- [x] `/ts/certificate/models/certificate-types.ts` - Updated with route-based interfaces ✅
|
||||
- [x] `/ts/certificate/index.ts` - Cleaned up domain-related types and exports
|
||||
- [x] `/ts/http/port80/port80-handler.ts` - Updated to work exclusively with routes
|
||||
- [x] `/ts/proxies/smart-proxy/smart-proxy.ts` - Removed domain references
|
||||
- [x] `test/test.forwarding.ts` - Updated to use route-based approach
|
||||
- [x] `test/test.forwarding.unit.ts` - Updated to use route-based approach
|
||||
|
||||
### New Files to Create (Route-Focused)
|
||||
- [ ] `/ts/proxies/smart-proxy/route-validators.ts` - Validation utilities
|
||||
- [ ] `/ts/proxies/smart-proxy/route-utils.ts` - Route utility functions
|
||||
- [ ] `/ts/proxies/smart-proxy/route-patterns.ts` - Common route patterns
|
||||
- [x] `/ts/proxies/smart-proxy/utils/route-helpers.ts` - Created with helper functions for common route configurations
|
||||
- [x] `/ts/proxies/smart-proxy/utils/route-migration-utils.ts` - Added migration utilities from domains to routes
|
||||
- [x] `/ts/proxies/smart-proxy/utils/route-validators.ts` - Validation utilities for route configurations
|
||||
- [x] `/ts/proxies/smart-proxy/utils/route-utils.ts` - Additional route utility functions
|
||||
- [x] `/ts/proxies/smart-proxy/utils/route-patterns.ts` - Common route patterns for easy configuration
|
||||
- [x] `/ts/proxies/smart-proxy/utils/index.ts` - Central export point for all route utilities
|
||||
|
||||
## Benefits of Complete Refactoring
|
||||
|
||||
|
Reference in New Issue
Block a user