Supports ES2020, Flow, JSX
In order to simplify parser we always assume strict mode.
- yield sometimes isn't a keyword and allowed to be used as identifier
- identifiers mangling
- const/let transformation
- destructuring assignment transformation
- class transformation
- arrow fn transformation
- async function transformation
- generator function transformation
- object literal extensions transformation
- unused imports removal
- dead code elimination
- variables
- source map generation
- modern decorators
- flow declare type/interface/var/function/class
- flow declare module