UNPKG

webcrack

Version:

Deobfuscate, unminify and unpack bundled javascript

43 lines (42 loc) 1.85 kB
#!/usr/bin/env node import { program } from "commander"; import debug from "debug"; import { existsSync, readFileSync } from "node:fs"; import { readFile, rm } from "node:fs/promises"; import { join } from "node:path"; import * as url from "node:url"; import { webcrack } from "./index.js"; const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); const { version, description } = JSON.parse( readFileSync(join(__dirname, "..", "package.json"), "utf8") ); debug.enable("webcrack:*"); async function readStdin() { let data = ""; process.stdin.setEncoding("utf8"); for await (const chunk of process.stdin) data += chunk; return data; } program.version(version).description(description).option("-o, --output <path>", "output directory for bundled files").option("-f, --force", "overwrite output directory").option("-m, --mangle", "mangle variable names").option("--no-jsx", "do not decompile JSX").option("--no-unpack", "do not extract modules from the bundle").option("--no-deobfuscate", "do not deobfuscate the code").option("--no-unminify", "do not unminify the code").argument("[file]", "input file, defaults to stdin").action(async (input) => { const { output, force, ...options } = program.opts(); const code = await (input ? readFile(input, "utf8") : readStdin()); if (output) { if (force || !existsSync(output)) { await rm(output, { recursive: true, force: true }); } else { program.error("output directory already exists"); } } const result = await webcrack(code, options); if (output) { await result.save(output); } else { console.log(result.code); if (result.bundle) { debug("webcrack:unpack")( "Modules are not displayed in the terminal. Use the --output option to save them to a directory." ); } } }).parse(); //# sourceMappingURL=cli.js.map