obscura-rs
v0.1.0
Published
Rust-powered drop-in replacement for javascript-obfuscator. Same JS API, 10–100× faster.
Maintainers
Readme
obscura-rs
A Rust-powered drop-in replacement for the javascript-obfuscator npm package. Same JS API, 10–100× faster.
Prebuilt binaries ship for macOS (x64, arm64) and Linux glibc (x64, arm64). Other platforms can build from source — see the repo.
Install
npm install obscura-rsUsage
const JavaScriptObfuscator = require('obscura-rs');
const result = JavaScriptObfuscator.obfuscate(
`function hello(name) { console.log('Hello, ' + name); }`,
{
compact: true,
controlFlowFlattening: true,
stringArray: true,
stringArrayEncoding: ['base64'],
seed: 1,
},
);
console.log(result.getObfuscatedCode());
console.log(result.getSourceMap()); // '' when no source map was requested
console.log(result.getIdentifierNamesCache()); // {}obfuscateMultiple
const results = JavaScriptObfuscator.obfuscateMultiple(
{
a: 'const x = 1;',
b: 'const y = 2;',
},
{ compact: true },
);
results.a.getObfuscatedCode();
results.b.getObfuscatedCode();API
obfuscate(sourceCode: string, options?: Options): ObfuscationResult
obfuscateMultiple(sources: Record<string, string>, options?: Options): Record<string, ObfuscationResult>
ObfuscationResult
getObfuscatedCode(): stringgetSourceMap(): string— JSON-stringified source map, or''if none.getIdentifierNamesCache(): Record<string, unknown>toString(): string— alias forgetObfuscatedCode().
Options
See index.d.ts for the full TypeScript interface. Option names mirror the upstream camelCase spelling.
Building from source
# From the workspace root:
cargo build -p obscura-napi --release
# Or, with the napi-rs CLI (handles cross-platform packaging):
cd npm && npm install && npm run buildDeviations from upstream
Tracked as work lands. Current notable differences:
- Helper templates (self-defending, debug protection, console disable, domain lock) are not yet re-obfuscated through rename + string-array. Tracked as task T-22.
License
MIT — same as upstream.
