js_deobfuscator/lib.rs
1//! Universal JavaScript Deobfuscator
2//!
3//! A high-accuracy JavaScript deobfuscator built on OXC with a 3-layer architecture.
4//!
5//! # Architecture
6//!
7//! The deobfuscator uses a **3-layer architecture**:
8//!
9//! - **Layer 1: ECMA** — ECMAScript standard transforms (works in ANY JS runtime)
10//! - **Layer 2: Runtime** — Browser/Node runtime APIs (atob, btoa, escape, etc.)
11//! - **Layer 3: Extensions** — Obfuscator-specific patterns (string arrays, control flow)
12//!
13//! # Quick Start
14//!
15//! ## Simple API (Recommended)
16//!
17//! ```ignore
18//! use js_deobfuscator::{JSDeobfuscator, Extension};
19//!
20//! // Standard deobfuscation (ECMA + Runtime)
21//! let output = JSDeobfuscator::new()
22//! .deobfuscate("var a = 1 + 2;")?;
23//!
24//! // With string rotator extension
25//! let output = JSDeobfuscator::new()
26//! .ecma(true)
27//! .runtime(true)
28//! .extensions([Extension::StringRotator])
29//! .deobfuscate(&source)?;
30//! ```
31//!
32//! ## One-liner Functions
33//!
34//! ```ignore
35//! use js_deobfuscator::{deobfuscate, deobfuscate_full};
36//!
37//! let output = deobfuscate("var a = 1 + 2;")?; // ECMA + Runtime
38//! let output = deobfuscate_full(&source)?; // All extensions
39//! ```
40//!
41//! ## With Result Details
42//!
43//! ```ignore
44//! use js_deobfuscator::{JSDeobfuscator, Extension};
45//!
46//! let result = JSDeobfuscator::new()
47//! .extensions([Extension::StringRotator])
48//! .deobfuscate_with_result(&source)?;
49//!
50//! println!("Iterations: {}", result.iterations);
51//! println!("Modifications: {}", result.modifications);
52//! println!("{}", result.code);
53//! ```
54//!
55//! # Modules
56//!
57//! - [`core`] — Engine, configuration, high-level API
58//! - [`ecma`] — Layer 1: ECMAScript standard passes
59//! - [`runtime`] — Layer 2: Runtime API passes
60//! - [`extensions`] — Layer 3: Obfuscator pattern handlers
61//! - [`transforms`] — Multi-pass transformation modules
62//! - [`utils`] — Shared utilities
63
64// ============================================================================
65// Modules
66// ============================================================================
67
68pub mod core;
69pub mod ecma;
70pub mod extensions;
71pub mod runtime;
72pub mod transforms;
73pub mod utils;
74
75// ============================================================================
76// Re-exports
77// ============================================================================
78
79pub use core::{
80 DeobError, DeobfuscateResult, EcmaConfig, Engine, EngineConfig, EngineResult, Extension,
81 ExtensionsConfig, JSDeobfuscator, LayerConfig, LogLevel, PassError, RuntimeConfig, deobfuscate,
82 deobfuscate_full,
83};