js-deobfuscator 2.0.0

Universal JavaScript deobfuscator built on OXC
Documentation
//! Obfuscator-specific transforms.
//!
//! Each submodule targets a specific obfuscator or protection system.
//! These are opt-in transforms selected by the user or auto-detected.
//!
//! ## Available Targets
//!
//! | Target | Patterns |
//! |--------|----------|
//! | `obfuscator_io` | String array + rotation, control flow flattening |
//!
//! ## Usage
//!
//! ```ignore
//! JSDeobfuscator::new()
//!     .target(Target::ObfuscatorIO)
//!     .deobfuscate(source)
//! ```

pub mod obfuscator_io;

/// Known obfuscation targets.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Target {
    /// obfuscator.io / javascript-obfuscator
    ObfuscatorIO,
    // Future:
    // Shape,
    // Kasada,
    // DataDome,
}

impl Target {
    /// Get all modules for this target (as locked modules).
    pub fn modules(&self) -> Vec<Box<dyn crate::engine::module::Module>> {
        match self {
            Target::ObfuscatorIO => vec![
                Box::new(obfuscator_io::StringArrayDecoder::default()),
            ],
        }
    }
}