humanifyjs
Version:
> Deobfuscate Javascript code using LLMs ("AI")
23 lines (22 loc) • 1.01 kB
JavaScript
import fs from "fs/promises";
import { ensureFileExists } from "./file-utils.js";
import { webcrack } from "./plugins/webcrack.js";
import { verbose } from "./verbose.js";
export async function unminify(filename, outputDir, plugins = []) {
ensureFileExists(filename);
const bundledCode = await fs.readFile(filename, "utf-8");
const extractedFiles = await webcrack(bundledCode, outputDir);
for (let i = 0; i < extractedFiles.length; i++) {
console.log(`Processing file ${i + 1}/${extractedFiles.length}`);
const file = extractedFiles[i];
const code = await fs.readFile(file.path, "utf-8");
if (code.trim().length === 0) {
verbose.log(`Skipping empty file ${file.path}`);
continue;
}
const formattedCode = await plugins.reduce((p, next) => p.then(next), Promise.resolve(code));
verbose.log("Input: ", code);
verbose.log("Output: ", formattedCode);
await fs.writeFile(file.path, formattedCode);
}
}