Skip to content

v2.12.0

Compare
Choose a tag to compare
@j4k0xb j4k0xb released this 02 Jan 16:17
· 88 commits to master since this release
v2.12.0

Playground/Docs

Unminify

  • Unminify typeof a > "u" -> typeof a === "undefined"
  • Convert for to while:
    • for (;;) b() -> while (true) b();
    • for (; a(); ) b(); -> while (a()) b();
  • Extract sequence from while loop: while (a(), b()) c(); -> a(); while (b()) c();
  • Split vars in for loop: for (var i = 0, j = 1;;) {} -> var i = 0; var j = 1; while (true) {} thanks to @kuizuo (#37)
  • Invert boolean logic: !(a <= b) -> a > b
  • Fixed a mangle error when default parameters are used (#42)
  • Option to disable: await webcrack(source, { unminify: false })

Transpile

New WIP category for converting transpiled code of Babel/TypeScript/SWC/esbuild back to modern syntax:

  • Merge any expression into template literals: a + "b".concat(c) -> `${a}b${c}`
  • Fixed template literal escaping for \0\b\f\n\r\t\v
  • Logical assignments:
    • x && (x = y) -> x &&= y
    • var _x$y; (_x$y = x.y()).z || (_x$y.z = b); -> x.y().z ||= b;
  • Nullish coalescing: var _a; (_a = a) !== null && _a !== undefined ? _a : b; -> a ?? b
  • Nullish coalescing assignment: var _a; (_a = a) !== null && _a !== void 0 ? _a : a = b; -> a ??= b;
  • Optional chaining: a === null || a === undefined ? undefined : a.b -> a?.b

Unpack Bundle

  • Detect webpack 5 bundle without entry id (#33)

JSX

  • Create component variables: jsx(r ? "a" : "div", {}); -> const Component = r ? "a" : "div"; <Component /> (#38)

Deobfuscate

  • Inline variables that are assigned later: let a; ...; a = 1; let b = a; -> let b = 1 (#36)