Repository navigation
vscode-f5-flipper-1.17.0.vsix
🚀 Major Performance Enhancement: New RX Parsing Engine
This release introduces a complete rewrite of the NetScaler configuration parser with a new RX-based engine that delivers 2-3x faster performance while providing superior accuracy in configuration abstraction.
Performance Improvements
End-to-End Processing:
- Up to 3.11x faster complete processing pipeline
- Average 1.48x speedup (30% improvement) across all config sizes
- 2.05x faster on complex GSLB configurations (t1.ns.conf)
- 1.43x faster on enterprise configs with 17+ apps (bren.ns.conf)
Parsing Phase:
- Up to 2.24x faster regex matching and object creation
- Average 1.46x speedup (27% improvement)
- Pre-compiled regex patterns eliminate compilation overhead
Digestion Phase:
- Up to 5.59x faster application abstraction
- Up to 82.1% faster on GSLB configs
- Parallel digester execution with
Promise.all()(3-6x speedup)
Scalability:
Small configs (100-500 lines): 1.2-1.5x faster
Medium configs (500-2000 lines): 1.5-2.0x faster
Large configs (2000+ lines): 2.0-3.0x faster
See RX Parser Performance Report for comprehensive benchmarks and methodology.
Architecture Improvements
NEW: Object-Based Storage
- Replaced array-based structure with object storage keyed by name
- O(1) lookup by name vs O(n) array search
- Single-pass parsing with immediate object creation
- All properties extracted during parsing (no multi-pass required)
Optimizations:
- Pre-compiled Regex Patterns - Compile once at initialization (~40% faster parsing)
- Improved Options Parsing - Enhanced regex eliminates string concatenation hacks
- Parallel Digester Execution - Run all digesters concurrently with
Promise.all() - Set-based Duplicate Removal - O(n) complexity vs O(n²) with
indexOf() - Shared Utility Functions - Centralized
extractOptions()reduces code duplication - Native structuredClone - Faster deep cloning for CS→LB references
Files:
- src/parseAdcArraysRx.ts - New RX parsing engine
- src/CitrixADC.ts - Updated to use RX parser with parallel digestion
- src/digLbVserverRx.ts - RX-based LB digester
- src/digCsVserverRx.ts - RX-based CS digester
- src/digGslbVserverRx.ts - RX-based GSLB digester
- src/parseAdcUtils.ts - Shared parsing utilities
Quality Improvements
Better Accuracy:
- ✅ Improved binding detection for CS→LB vserver relationships
- ✅ Fixed duplicate entries in SSL certificate arrays
- ✅ Complete SSL certificate handling in all scenarios
- ✅ Proper CS policy deduplication
- ✅ Enhanced server address/hostname detection with IP pattern matching
- ✅ Fixed SSL cert line ordering to match original behavior
- ✅ Fixed monitor protocol field inclusion
100% Backward Compatible:
- Drop-in replacement with identical output structure
- All existing code continues to work without changes
- Legacy parser preserved in
CitrixADCold.tsfor reference
Testing
Comprehensive Test Coverage:
- 25+ new tests for RX parser components
- Snapshot-based integration tests (48 tests across 14 configs)
- Performance comparison tests validating 2-3x improvements
- All tests passing with improved coverage metrics
Test Files:
tests/007_parseNsOpts.unit.tests.ts- Options parsing teststests/045_objectCounter.unit.tests.ts- Object counting teststests/046_csToLbRefs.unit.tests.ts- CS→LB reference teststests/305_performance.comparison.tests.ts- Component performance teststests/306_final.performance.tests.ts- End-to-end benchmarkstests/integration/rx-parser/- Snapshot-based integration tests
Documentation
New Documentation:
- docs/RX-Parser-Performance-Report.md - Comprehensive performance analysis
- docs/RX-PARSER-TYPES.md - Type system guide and migration guide
- docs/RELEASE-2025-01-12.md - Detailed release notes
Enhanced Types:
- Marked
AdcConfObjas@deprecatedwith migration guidance - Enhanced
AdcConfObjRxwith comprehensive JSDoc and examples - Improved
NsObjectinterface with specific common fields - Better IDE autocomplete and tooltips
Added
Fixed
-
parseNsOptions Function Improvements
- Fixed
-cipparameter parsing to handle multi-value options (e.g.,-cip ENABLED client-ip) - Added filtering to exclude
-devnointernal device numbers from parsed output - Upgraded regex pattern to properly capture multi-word option values
- Removed old string concatenation hack for last option handling
- Added 6 new unit tests for edge cases and multi-value parameters
- Fixed
-
Eliminated Undefined Field Pollution
- Fixed
sortAdcApp()function setting optional fields toundefinedexplicitly - Changed to conditional spread operator pattern to only include fields with values
- Cleaner JSON output without undefined values in parser results
- Reduced snapshot file sizes
- Fixed
Added
-
Snapshot-Based Integration Tests
- Created new
tests/integration/rx-parser/test framework - Generated golden snapshots for 14 NetScaler config files (48 individual app tests)
- Added
generateSnapshots.tsscript for updating snapshots after intentional changes - Comprehensive README documentation for snapshot testing approach
- All 48 integration tests passing
- Created new
-
Enhanced Type System Documentation
- Created
docs/RX-PARSER-TYPES.mdcomprehensive type system guide - Added migration guide from old parser (
AdcConfObj) to new parser (AdcConfObjRx) - Documented common usage patterns with real-world examples
- Added utility function documentation
- Created
Changed
-
Deprecated Old Parser Tests
- Moved
tests/304_parseAdcArraysRx.allConfigs.int.tests.tsto.deprecated - Created
tests/304_DEPRECATED_README.mdexplaining migration - New snapshot tests replace old comparison tests (faster, no ADCold dependency)
- Moved
-
Type Definitions Improvements
- Marked
AdcConfObjas@deprecatedwith clear migration guidance - Enhanced
AdcConfObjRxJSDoc with benefits, structure examples, and usage patterns - Improved
NsObjectinterface with specific common fields (protocol, ipAddress, port, server) - Better IDE autocomplete and tooltips throughout
- Marked
Performance
- Integration test execution ~40% faster (no old parser comparison)
- Smaller JSON output without undefined fields
- Better IDE performance with enhanced type definitions