# buble changelog

## 0.20.0 (2020-03-26)

* **Breaking**: Drop Node v4 && v6 testing on CI; Buble will likely continue to work on these versions, but support for them is no longer actively maintained. [#250](https://github.com/bublejs/buble/pull/250)
* Fix recognition of catch-declared variables ([#237](https://github.com/bublejs/buble/pull/237))
* Prevent labels from being renamed due to let/const transpilation. ([#236](https://github.com/bublejs/buble/pull/236))
* Fix scoping of variables declared in for loops. ([#233](https://github.com/bublejs/buble/pull/233))
* Fix an error when transpiling `for (a[0] in b)`. ([#232](https://github.com/bublejs/buble/pull/232))
* Fix an error when transpiling `for` with an empty init. ([#226](https://github.com/bublejs/buble/pull/226))
* Fix `let`/`const` transpilation when combined with shorthand properties. ([#229](https://github.com/bublejs/buble/pull/229))
* Fix JSX not respecting advanced white space characters. ([#218](https://github.com/bublejs/buble/pull/218))
* Fix name collision when transpiling `A = class extends A {}`. ([#209](https://github.com/bublejs/buble/pull/209))
* Fix `os-homedir` dependency warnings on install. ([#207](https://github.com/bublejs/buble/pull/207))
* Upgrade dependencies to their latest patch versions, fixing security audit warnings. ([#250](https://github.com/bublejs/buble/pull/250))

## 0.19.8 (2019-07-03)

* Allow shebang ([#191](https://github.com/bublejs/buble/pull/191))
* Fix tagged template literal in certain cases ([#190](https://github.com/bublejs/buble/issues/190))
* Fix removing of trailing commas in certain cases ([#194](https://github.com/bublejs/buble/pull/194))
* Make JSX Fragment configurable ([#198](https://github.com/bublejs/buble/issues/198))
* Fix transpiling string-keyed properties with whitespaces before colons ([#200](https://github.com/bublejs/buble/pull/200))

## 0.19.7 (2019-03-11)

* Throw error on dynamic import expression if transform is not disabled
* Throw error on async and await if transform is not disabled
* Allow await outside of functions
* Don't bundle acorn dependencies ([#165](https://github.com/bublejs/buble/pull/165))
* Inline spread elements where possible ([#179](https://github.com/bublejs/buble/pull/179))
* Correctly handle operator precedence for array spread ([#177](https://github.com/bublejs/buble/issues/177))
* Correctly pass-through async arrow functions and methods ([#109](https://github.com/bublejs/buble/issues/109), [#146](https://github.com/bublejs/buble/issues/146))
* Move repository to https://github.com/bublejs/buble
* Exclude non-string keys from rest properties ([#149](https://github.com/bublejs/buble/issues/149))

## 0.19.6 (2018-10-23)

* Fix class expressions with heritage in arrow functions ([#150](https://github.com/bublejs/buble/issues/150))
* Support `objectAssign: true` in API as a short-hand for `objectAssign: "Object.assign"`
* Bundle all acorn dependencies (for now), but no others ([#159](https://github.com/bublejs/buble/issues/159))

## 0.19.5 (2018-10-16)

* Transpile U+2028 and U+2029 according to stage 4 proposal json-superset
* Add `/*@__PURE__*/` annotations to transpiled classes
* Update support data
* Allow disabling spread properties transpiling
* Fix specific edge case with spread and computed properties ([#139](https://github.com/bublejs/buble/issues/139))
* Allow global `return` statements
* Don't create unnecessary `this` aliases with loops ([#120](https://github.com/bublejs/buble/issues/120))
* Don't allow getters and setters if IE8 is transpile target ([#20](https://github.com/bublejs/buble/issues/20))

## 0.19.4 (2018-10-06)

* Fix transpiling destructuring assignments in brace-less if statement's bodies ([#152](https://github.com/bublejs/buble/issues/152))
* Fix transpiling const and let after brace-less if statements ([#132](https://github.com/bublejs/buble/issues/132))
* Transpile binary and octal number literals if base prefix is upper-case ([#74](https://github.com/bublejs/buble/issues/74))
* Mark classes as supported in Chrome 48
* Mark destructuring of arrow function arguments as not supported in Firefox < 52

## 0.19.3 (2018-02-13)

* Make sure browser builds are actually valid ES5 (except for the modules build)

## 0.19.2 (2018-02-12)

* Correctly specify browser field in package.json ([#107](https://github.com/bublejs/buble/issues/107))
* Fix a compile error about using `super` outside of class methods
* Fix transpiling rest properties

## 0.19.1 (2018-02-10)

* Fix transpiling let and const if arrow functions are not transpiled (i. e. node: 4)

## 0.19.0 (2018-02-10)

### Enhancements

* Add support information for new environments
* Add (pass-thru) support for async generators and for-async-of
* Add support for dynamic import ([#102](https://github.com/bublejs/buble/pull/102))
* Add support for JSX fragments ([#62](https://github.com/bublejs/buble/issues/62))
* Add unpkg build and transpile browser build for older environments ([#93](https://github.com/bublejs/buble/issues/93))
* Reuse tagged template quasis ([#67](https://github.com/bublejs/buble/pull/67))
* Transpile trailing commas in new expressions ([#63](https://github.com/bublejs/buble/issues/63))
* Add support for destructuring in for-in and for-of loop heads
* Add support for destructuring in catch clause params
* Add support for rest properties in assignments

### Fixes

* Don't remove commas in comments after the last argument ([#89](https://github.com/bublejs/buble/issues/89))
* Support transformations involving aliasing of variables in block scopes ([#60](https://github.com/bublejs/buble/issues/60))
* Evaluate expression only once with inline default pattern elements
* Fix nested object and array patterns, rest properties and default values in for loop heads
* Only put own properties in rest properties
* Improve declaration of helper variables
* Allow modification of mutable variables that shadow a const before declaration ([#59](https://github.com/bublejs/buble/issues/59))
* Correctly detect modification of immutable variables through destructuring assignments
* In object methods, support destructuring declarations initialized with a variable having the same name as the method ([#86](https://github.com/bublejs/buble/issues/86))
* Fix properties with string literal keys after computed properties ([#91](https://github.com/bublejs/buble/pull/91))
* Fix methods after computed properties ([#101](https://github.com/bublejs/buble/issues/101))
* Fix short-hand generator methods
* Fix template literals in array after spread element ([#105](https://github.com/bublejs/buble/issues/105))
* Fix arrow functions in array after spread element ([#100](https://github.com/bublejs/buble/issues/100))
* Fix arrow functions in new expression after spread element ([#100](https://github.com/bublejs/buble/issues/100))
* Restore decoding HTML entities in JSX ([#104](https://github.com/bublejs/buble/issues/104))
* Correct various entries in support matrix

## 0.18.0

* Allow anonymous functions and classes as default exports ([#37](https://github.com/bublejs/buble/issues/37))
* Handle non-breaking spaces in JSX ([#46](https://github.com/bublejs/buble/issues/46))
* Allow anonymous classes to be assigned to properties ([#33](https://github.com/bublejs/buble/issues/33))
* Add `trailingFunctionCommas` transformation ([#50](https://github.com/bublejs/buble/issues/50))

## 0.17.3

* Move `chalk` to dependencies ([#35](https://github.com/bublejs/buble/issues/35))

## 0.17.2

* Fix nested template literals regression ([#39](https://github.com/bublejs/buble/issues/39))

## 0.17.1

* Error on nested rest elements ([#31](https://github.com/bublejs/buble/pull/31))
* Allow destructuring with computed properties ([#34](https://github.com/bublejs/buble/pull/34))

## 0.17.0

* Update dependencies
* Transpile arrow functions unconditionally if spread arguments need transpilation ([#22](https://github.com/bublejs/buble/pull/22))
* Better object spread support ([#25](https://github.com/bublejs/buble/pull/25))
* Rest properties ([#30](https://github.com/bublejs/buble/pull/30))
* Fix ([#24](https://github.com/bublejs/buble/pull/24))

## 0.16.0

* Allow truthy dash-cased props ([#2](https://github.com/bublejs/buble/pull/2))
* Make class accessors configurable ([#3](https://github.com/bublejs/buble/pull/3))
* Support JSX pragma comments ([#5](https://github.com/bublejs/buble/pull/5))
* Handle JSX with no spaces between attributes ([#6](https://github.com/bublejs/buble/pull/6))

## 0.15.2

* Don't create function names for object methods with `namedFunctionExpressions: false`
* Simplify destructuring assignment statements
* Give unique names to methods that shadow free variables ([#166](https://gitlab.com/Rich-Harris/buble/issues/166))

## 0.15.1

* Fix `Object.assign` regression ([#163](https://gitlab.com/Rich-Harris/buble/issues/163))

## 0.15.0

* More informative CLI errors when input comes from stdin ([#155](https://gitlab.com/Rich-Harris/buble/issues/155))
* Prevent PhantomJS shadowing errors ([#154](https://gitlab.com/Rich-Harris/buble/issues/154))
* Use local `register.js` in tests ([#153](https://gitlab.com/Rich-Harris/buble/issues/153))
* Correct CLI output filename with .jsx input ([#151](https://gitlab.com/Rich-Harris/buble/issues/151))
* Fix whitespace removal bug ([#159](https://gitlab.com/Rich-Harris/buble/issues/159))
* Allow computed properties in object destructuring ([#146](https://gitlab.com/Rich-Harris/buble/issues/146))
* Support rest elements in array destructuring ([#147](https://gitlab.com/Rich-Harris/buble/issues/147))
* Fix array swap assignment expression ([#148](https://gitlab.com/Rich-Harris/buble/issues/148))
* Allow template string as destructuring default ([#145](https://gitlab.com/Rich-Harris/buble/issues/145))
* Support multiple returning loops with block scoping ([cbc17ad5e](https://gitlab.com/Rich-Harris/buble/commit/cbc17ad5e1dc6e8af820fee372e6fb68e475afa4))
* Fix `super` with spread arguments ([#129](https://gitlab.com/Rich-Harris/buble/issues/129))
* Arrow function returning computed property ([#126](https://gitlab.com/Rich-Harris/buble/issues/126))
* Allow computed property and object spread to coexist ([#144](https://gitlab.com/Rich-Harris/buble/issues/144))
* Add `namedFunctionExpressions` option to prevent scope leak in old browsers ([#130](https://gitlab.com/Rich-Harris/buble/issues/130))
* Fix exponentiation assignment edge case ([#122](https://gitlab.com/Rich-Harris/buble/issues/122))
* Allow CLI `--output` flag to work with stdin input

## 0.14.3

* Prevent crashing on Node versions more recent than the latest 'supported' version ([#102](https://gitlab.com/Rich-Harris/buble/merge_requests/102))

## 0.14.2

* Allow `.jsx` file extension ([#127](https://gitlab.com/Rich-Harris/buble/issues/127))
* Handle trailing comma in spread operator ([#133](https://gitlab.com/Rich-Harris/buble/issues/133))
* Allow empty code blocks in JSX ([#131](https://gitlab.com/Rich-Harris/buble/issues/131))
* Allow computed shorthand function name with spread in body ([#135](https://gitlab.com/Rich-Harris/buble/issues/135))
* Add `--objectAssign` CLI option ([#113](https://gitlab.com/Rich-Harris/buble/issues/113))
* Allow numeric literals as shorthand method keys ([#139](https://gitlab.com/Rich-Harris/buble/issues/139))

## 0.14.1

* fix initialization of block-scoped variables in for-of and for-in loops ([#124](https://gitlab.com/Rich-Harris/buble/issues/124))

## 0.14.0

* Always wrap block-less bodies in curlies ([#110](https://gitlab.com/Rich-Harris/buble/issues/110), [#117](https://gitlab.com/Rich-Harris/buble/issues/117), [!80](https://gitlab.com/Rich-Harris/buble/merge_requests/80))
* Make sure block-scoped variables in loops have an initializer ([#124](https://gitlab.com/Rich-Harris/buble/issues/124))
* Destructuring assignments ([!82](https://gitlab.com/Rich-Harris/buble/merge_requests/82))
* Support string literals in object destructuring ([!81](https://gitlab.com/Rich-Harris/buble/merge_requests/81))
* Standalone arrow function expression statements ([!79](https://gitlab.com/Rich-Harris/buble/merge_requests/79))

## 0.13.2

* Fix spread operator when used with `new` and `this` ([#104](https://gitlab.com/Rich-Harris/buble/issues/104), [#115](https://gitlab.com/Rich-Harris/buble/issues/115))

## 0.13.1

* Handle destructuring in for/for-of loop heads ([#95](https://gitlab.com/Rich-Harris/buble/issues/95))
* Allow early return (without value) from loops ([#103](https://gitlab.com/Rich-Harris/buble/issues/103), [#105](https://gitlab.com/Rich-Harris/buble/issues/105))

## 0.13.0

* Require an `objectAssign` option to be specified if using object spread operator ([#93](https://gitlab.com/Rich-Harris/buble/issues/93))
* Fix spread operator with expression method calls and template strings ([!74](https://gitlab.com/Rich-Harris/buble/merge_requests/74))

## 0.12.5

* Prevent reserved words being used as identifiers ([#86](https://gitlab.com/Rich-Harris/buble/issues/86))
* Use correct `this` when transpiling `super` inside arrow function ([#89](https://gitlab.com/Rich-Harris/buble/issues/89))
* Handle body-less `for-of` loops ([#80](https://gitlab.com/Rich-Harris/buble/issues/80))

## 0.12.4

* Allow references to precede declaration (inside function) in block scoping ([#87](https://gitlab.com/Rich-Harris/buble/issues/87))

## 0.12.3

* Argh, npm

## 0.12.2

* Files missing in 0.12.1 (???)

## 0.12.1

* Don't require space before parens of shorthand computed method ([#82](https://gitlab.com/Rich-Harris/buble/issues/82))
* Allow string keys for shorthand methods ([#82](https://gitlab.com/Rich-Harris/buble/issues/82))

## 0.12.0

* Support `u` flag in regular expression literals ([!62](https://gitlab.com/Rich-Harris/buble/merge_requests/62))
* Save `buble/register` transformations to `$HOME/.buble-cache` ([!63](https://gitlab.com/Rich-Harris/buble/merge_requests/63))

## 0.11.6

* Allow shorthand methods with computed names ([#78](https://gitlab.com/Rich-Harris/buble/issues/78))
* Include code snippet in `error.toString()` ([#79](https://gitlab.com/Rich-Harris/buble/issues/79))

## 0.11.5

* Preserve whitespace between JSX tags on single line ([#65](https://gitlab.com/Rich-Harris/buble/issues/65))

## 0.11.4

* Allow computed class methods, except accessors ([!56](https://gitlab.com/Rich-Harris/buble/merge_requests/56))
* Compound destructuring ([!58](https://gitlab.com/Rich-Harris/buble/merge_requests/58))

## 0.11.3

* Ensure inserted statements follow use strict pragma ([#72](https://gitlab.com/Rich-Harris/buble/issues/72))

## 0.11.2

* Ensure closing parenthesis is in correct place when transpiling inline computed property object expressions ([#73](https://gitlab.com/Rich-Harris/buble/issues/73))

## 0.11.1

* Fix computed property followed by non-computed property in inline expression

## 0.11.0

* Computed properties ([#67](https://gitlab.com/Rich-Harris/buble/issues/67))
* Allow `super(...)` to use rest arguments ([#69](https://gitlab.com/Rich-Harris/buble/issues/69))

## 0.10.7

* Allow customisation of `Object.assign` (used in object spread) ([!51](https://gitlab.com/Rich-Harris/buble/merge_requests/51))

## 0.10.6

* Handle sparse arrays ([#62](https://gitlab.com/Rich-Harris/buble/issues/62))
* Handle spread expressions in JSX ([#64](https://gitlab.com/Rich-Harris/buble/issues/64))

## 0.10.5

* Create intermediate directories when transforming via CLI ([#63](https://gitlab.com/Rich-Harris/buble/issues/63))
* Update README ([#57](https://gitlab.com/Rich-Harris/buble/issues/57))

## 0.10.4

* Support spread operator in object literals ([!45](https://gitlab.com/Rich-Harris/buble/merge_requests/45)) and JSX elements ([!46](https://gitlab.com/Rich-Harris/buble/merge_requests/46))

## 0.10.3

* Disable intelligent destructuring, temporarily ([#53](https://gitlab.com/Rich-Harris/buble/issues/53))
* Fix whitespace in JSX literals ([!39](https://gitlab.com/Rich-Harris/buble/merge_requests/39))
* Add `: true` to value-less JSX attributes ([!40](https://gitlab.com/Rich-Harris/buble/merge_requests/40))
* Quote invalid attribute names ([!41](https://gitlab.com/Rich-Harris/buble/merge_requests/41))

## 0.10.2

* Don't add closing quote to JSX component without attributes ([#58](https://gitlab.com/Rich-Harris/buble/issues/58))

## 0.10.1

* Fix handling of literals inside JSX

## 0.10.0

* Basic JSX support

## 0.9.3

* Better spread operator support, including with `arguments` ([#40](https://gitlab.com/Rich-Harris/buble/issues/40))
* Fix indentation of inserted statements in class constructors ([#39](https://gitlab.com/Rich-Harris/buble/issues/39))

## 0.9.2

* Allow class to have accessors and no constructor ([#48](https://gitlab.com/Rich-Harris/buble/issues/48))
* Fix help message in CLI

## 0.9.1

* Prevent confusion over `Literal` node keys

## 0.9.0

* More complete and robust destructuring support ([#37](https://gitlab.com/Rich-Harris/buble/issues/37), [#43](https://gitlab.com/Rich-Harris/buble/issues/43))
* Correct `this`/`arguments` references inside for-of loop

## 0.8.5

* Allow destructured parameter to have default ([#43](https://gitlab.com/Rich-Harris/buble/issues/43))
* Allow `continue`/`break` statements inside a for-of loop

## 0.8.4

* Allow class body to follow ID/superclass without whitespace ([#46](https://gitlab.com/Rich-Harris/buble/issues/46))

## 0.8.3

* Performance enhancements ([!23](https://gitlab.com/Rich-Harris/buble/merge_requests/23))

## 0.8.2

* More robust version of ([!22](https://gitlab.com/Rich-Harris/buble/merge_requests/22))

## 0.8.1

* Fix `export default class A extends B` (broken in 0.8.0) ([!22](https://gitlab.com/Rich-Harris/buble/merge_requests/22))

## 0.8.0

* Subclasses inherit static methods ([#33](https://gitlab.com/Rich-Harris/buble/issues/33))
* Performance enhancements ([!21](https://gitlab.com/Rich-Harris/buble/merge_requests/21))

## 0.7.1

* Prevent omission of closing paren in template string ([#42](https://gitlab.com/Rich-Harris/buble/issues/42))
* Separate variable declarations for each name in destructured declaration ([#18](https://gitlab.com/Rich-Harris/buble/merge_requests/18))

## 0.7.0

* Allow arrow functions to be used as default parameter values ([#36](https://gitlab.com/Rich-Harris/buble/issues/36))

## 0.6.7

* Support `static get` and `set` in classes ([#34](https://gitlab.com/Rich-Harris/buble/issues/34))
* Support spread operator in expression method call ([!14](https://gitlab.com/Rich-Harris/buble/merge_requests/14))
* Fix `for-of` loops with no space after opening paren ([#35](https://gitlab.com/Rich-Harris/buble/issues/35))

## 0.6.6

* Fix another subclass `super()` bug ([#32](https://gitlab.com/Rich-Harris/buble/issues/32))

## 0.6.5

* Fix `super()` call in subclass expression ([#32](https://gitlab.com/Rich-Harris/buble/issues/32))
* Less defensive template string parenthesising ([!9](https://gitlab.com/Rich-Harris/buble/merge_requests/9))

## 0.6.4

* Add Node 6 to support matrix

## 0.6.3

* Handle empty template strings ([#28](https://gitlab.com/Rich-Harris/buble/issues/28))

## 0.6.2

* Handle body-less do-while blocks ([#27](https://gitlab.com/Rich-Harris/buble/issues/27))

## 0.6.1

* Always remember to close parens in template strings

## 0.6.0

* Strip unnecessary empty strings from template literals
* Intelligent destructuring for object patterns in parameters ([#17](https://gitlab.com/Rich-Harris/buble/issues/17))

## 0.5.8

* Fix exponentiation assignment operator edge case

## 0.5.7

* Exponentiation operator support ([#24](https://gitlab.com/Rich-Harris/buble/issues/24))
* More informative error messages for for-of and tagged template strings

## 0.5.6

* Add `dangerousTaggedTemplateString` ([!2](https://gitlab.com/Rich-Harris/buble/merge_requests/2)) and `dangerousForOf` ([!3](https://gitlab.com/Rich-Harris/buble/merge_requests/3)) transforms
* Prevent deindentation causing errors with removed whitespace in class methods
* Use correct identifier with default destructured function parameters ([#23](https://gitlab.com/Rich-Harris/buble/issues/23))


## 0.5.5

* Ensure `return` is in correct place when creating bodies for arrow functions ([#21](https://gitlab.com/Rich-Harris/buble/issues/21))
* Prevent deindentation of class methods causing breakage with destructuring statements ([#22](https://gitlab.com/Rich-Harris/buble/issues/22))

## 0.5.4

* Install missing `chalk` dependency
* Informative error messages when `buble/register` fails

## 0.5.3

* Add `register.js` to package. Yes I'm an idiot

## 0.5.2

* Add `buble/register` for use with e.g. Mocha

## 0.5.1

* Remove unused dependency

## 0.5.0

* Support `--target`, `--yes` and `--no` in CLI
* Compile entire directory of files via CLI
* Sourcemap support in CLI
* All transforms can be disabled (or errors suppressed) with the `transforms` option (or `--yes` and `--no`, in the CLI)
* `import` and `export` will throw an error unless `--no modules` transform is specified
* Fix bug with destructuring
* Fix bug with block scoping and loops


## 0.4.24

* Throw if `let`/`const` is redeclared, or `var` is redeclared with a `let`/`const` (0.4.22 regression)

## 0.4.23

* Add `buble.VERSION`
* Tidy up build process (don't bundle Acorn incorrectly)

## 0.4.22

* Allow double `var` declarations (only throw if `let` or `const` is redeclared)

## 0.4.21

* Add `find` and `findIndex` helpers for 0.12 support

## 0.4.20

* Bump to resolve unknown npm issue

## 0.4.19

* Fix block scoping bug with for loops that don't need to be rewritten as functions

## 0.4.18

* Fix break-inside-switch bug

## 0.4.17

* Support `for...in` loops and block scoping

## 0.4.16

* Add `ie` and `edge` to support matrix

## 0.4.15

* Rewrite reserved properties if specified ([#9](https://gitlab.com/Rich-Harris/buble/issues/9))

## 0.4.14

* Allow classes to extend expressions ([#15](https://gitlab.com/Rich-Harris/buble/issues/15))
* Experimental (partially implemented) API for disabling transforms based on target environment or custom requirements

## 0.4.13

* Fix return statement bug

## 0.4.12

* More complete and robust transpilation of loops that need to be rewritten as functions to simulate block scoping ([#11](https://gitlab.com/Rich-Harris/buble/issues/11), [#12](https://gitlab.com/Rich-Harris/buble/issues/12), [#13](https://gitlab.com/Rich-Harris/buble/issues/13))

## 0.4.11

* Remove source-map-support from CLI (only useful during development)

## 0.4.10

* Basic support for spread operator

## 0.4.9

* Support getters and setters on subclasses
* Disallow unsupported features e.g. generators

## 0.4.8

* Support getters and setters on classes
* Allow identifiers to be renamed in block-scoped destructuring ([#8](https://gitlab.com/Rich-Harris/buble/issues/8))
* Transpile body-less arrow functions correctly ([#9](https://gitlab.com/Rich-Harris/buble/issues/4))

## 0.4.7

* Add browser version

## 0.4.6

* Report locations of parse/compile errors ([#4](https://gitlab.com/Rich-Harris/buble/issues/4))

## 0.4.5

* Sourcemap support

## 0.4.4

* Support for class expressions
* More robust deconflicting
* Various bugfixes

## 0.4.3

* Handle arbitrary whitespace inside template literals

## 0.4.2

* Fix bug-inducing typo

## 0.4.1

* Rest parameters

## 0.4.0

* Self-hosting!

## 0.3.4

* Class inheritance

## 0.3.3

* Handle quote marks in template literals

## 0.3.2

* Handle empty `class` declarations

## 0.3.1

* Add `bin` to package

## 0.3.0

* (Very) basic CLI
* Handle `export default class ...`

## 0.2.2

* Initialise children of Property nodes
* Prevent false positives with reference detection

## 0.2.1

* Add missing files

## 0.2.0

* Support for a bunch more ES2015 features

## 0.1.0

* First (experimental) release
