Skip to content

vscode-f5-flipper-1.17.0.vsix

Choose a tag to compare

@github-actions github-actions released this 12 Oct 12:59
· 20 commits to main since this release
1766a1f

🚀 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:

  1. Pre-compiled Regex Patterns - Compile once at initialization (~40% faster parsing)
  2. Improved Options Parsing - Enhanced regex eliminates string concatenation hacks
  3. Parallel Digester Execution - Run all digesters concurrently with Promise.all()
  4. Set-based Duplicate Removal - O(n) complexity vs O(n²) with indexOf()
  5. Shared Utility Functions - Centralized extractOptions() reduces code duplication
  6. Native structuredClone - Faster deep cloning for CS→LB references

Files:

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.ts for 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 tests
  • tests/045_objectCounter.unit.tests.ts - Object counting tests
  • tests/046_csToLbRefs.unit.tests.ts - CS→LB reference tests
  • tests/305_performance.comparison.tests.ts - Component performance tests
  • tests/306_final.performance.tests.ts - End-to-end benchmarks
  • tests/integration/rx-parser/ - Snapshot-based integration tests

Documentation

New Documentation:

Enhanced Types:

  • Marked AdcConfObj as @deprecated with migration guidance
  • Enhanced AdcConfObjRx with comprehensive JSDoc and examples
  • Improved NsObject interface with specific common fields
  • Better IDE autocomplete and tooltips

Added

Fixed

  • parseNsOptions Function Improvements

    • Fixed -cip parameter parsing to handle multi-value options (e.g., -cip ENABLED client-ip)
    • Added filtering to exclude -devno internal 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
  • Eliminated Undefined Field Pollution

    • Fixed sortAdcApp() function setting optional fields to undefined explicitly
    • 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

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.ts script for updating snapshots after intentional changes
    • Comprehensive README documentation for snapshot testing approach
    • All 48 integration tests passing
  • Enhanced Type System Documentation

    • Created docs/RX-PARSER-TYPES.md comprehensive 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

Changed

  • Deprecated Old Parser Tests

    • Moved tests/304_parseAdcArraysRx.allConfigs.int.tests.ts to .deprecated
    • Created tests/304_DEPRECATED_README.md explaining migration
    • New snapshot tests replace old comparison tests (faster, no ADCold dependency)
  • Type Definitions Improvements

    • Marked AdcConfObj as @deprecated with clear migration guidance
    • Enhanced AdcConfObjRx JSDoc with benefits, structure examples, and usage patterns
    • Improved NsObject interface with specific common fields (protocol, ipAddress, port, server)
    • Better IDE autocomplete and tooltips throughout

Performance

  • Integration test execution ~40% faster (no old parser comparison)
  • Smaller JSON output without undefined fields
  • Better IDE performance with enhanced type definitions