Compare commits

..

864 Commits

Author SHA1 Message Date
5916a06ea1 Strict package versions 2019-11-24 22:11:47 +01:00
bfcf2590eb Fix babel-eslint version check failing the tests 2019-11-24 20:14:56 +01:00
a8619469bf v7.7.4-csx.1 2019-11-24 18:50:06 +01:00
9a80ee7950 v7.7.4-csx.0 in packages 2019-11-24 18:48:01 +01:00
9c9f830ac0 Initializer and version-coercion fixes. (Also updated the tests and the makefile) 2019-11-24 18:39:49 +01:00
Nicolò Ribaudo
5dbb90ede3 Add v7.7.4 to CHANGELOG.md [skip ci] 2019-11-23 00:38:07 +01:00
Nicolò Ribaudo
75767d87cb v7.7.4 2019-11-23 00:05:58 +01:00
Nicolò Ribaudo
1b4cfc21d9 Add support for native esm to @babel/runtime (#10748)
* Add support for native esm to @babel/runtime

* Test

* Do not remove new package.json files

* Remove git diff
2019-11-22 23:59:30 +01:00
Kai Cataldo
2dfc06e83b Merge pull request #10744 from kaicataldo/@babel/eslint-config-internal
Rename babel-eslint-config-internal -> @babel/eslint-config-internal
2019-11-22 17:11:53 -05:00
Kai Cataldo
2c40b8c706 Fix failing tests 2019-11-22 16:25:38 -05:00
Kai Cataldo
ca88cf1060 Incorporate feedback 2019-11-22 16:05:44 -05:00
Kai Cataldo
74e2c2cd78 Update eslint/babel-eslint-config-internal/package.json
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2019-11-22 16:05:43 -05:00
Kai Cataldo
25169901de Rename babel-eslint-config-internal -> @babel/eslint-config-internal 2019-11-22 16:05:43 -05:00
Jaideep Bhoosreddy
74fb914fe3 Use the local version of babel in test262 job (#10749)
* Use the local version of babel

* retrigger

* correctly remove other changes

* d'oh last one

* remove link part
2019-11-22 11:21:19 -05:00
Huáng Jùnliàng
683adcbb70 Reduce standalone build size (#10668)
* infra: build standalone against src

* infra: add absoluteRuntime

# Conflicts:
#	babel.config.js

* chore: remove `process.env` replace

* add $ to signify exact match

credits to Nicolò
2019-11-21 14:31:38 +01:00
Nicolò Ribaudo
cc51f2a1f2 Update lerna (#10733)
* Update lerna

* yarn-deduplicate

* Update lockfile
2019-11-21 01:05:47 +01:00
Brian Ng
83fc3f2623 Update preset-env mappings (#10742) 2019-11-20 18:48:38 -05:00
Huáng Jùnliàng
fee4d936a3 chore: introduce envinfo into environment section [ci-skip] (#10565)
This reverts commit d234ff6572.
2019-11-20 21:49:34 +01:00
George Zahariev
01d6d6dd3b Flow enums: fix enum body location (#10737) 2019-11-19 22:46:08 -06:00
Huáng Jùnliàng
6ba113197f fix: add missing available plugins to babel-preset-env-standalone (#10732)
* fix: add missing available plugins to babel-preset-env-standalone

* skip available-plugins test in CI coverage test
2019-11-18 14:29:18 -05:00
Brian Ng
a502d88043 Fix some incorrect typeof parsing in flow (#10657) 2019-11-18 19:22:27 +01:00
gr
10213655bc [parser] Allow optional async methods (#10582)
* Add parsePostMemberNameModifiers to aync method

* Add test
2019-11-18 19:18:36 +01:00
Huáng Jùnliàng
cfd26fdbf2 register ImportEqualsSpecifier to scope (#10710)
Co-authored-by: <jaejoon.choi>
2019-11-18 13:04:34 -05:00
Raja Sekar
faf149226b minor config change (#10731) 2019-11-18 09:27:53 +01:00
Kai Cataldo
dba5bd3012 Merge pull request #10730 from kaicataldo/node-6-tests
Do not run eslint/* tests in Node v6
2019-11-18 00:26:23 -05:00
Kai Cataldo
d18d0b6478 Run Prettier 2019-11-17 23:31:38 -05:00
Kai Cataldo
db2b601886 Add TODO comment 2019-11-17 23:28:51 -05:00
Kai Cataldo
e9e6918df6 Do not run eslint/* tests in Node v6 2019-11-17 23:28:51 -05:00
Kai Cataldo
53a3dac011 Clean up eslint/* directories (#10729) 2019-11-17 11:01:10 +01:00
Kai Cataldo
401c9bbe83 Update ESLint/Prettier config for eslint/* packages (#10724) 2019-11-16 23:28:02 +01:00
Brian Ng
c37361ba2e Bump prettier@1.19.1 (#10728) 2019-11-16 16:05:40 +01:00
Raja Sekar
f087cf842f Mocha to jest migration for eslint packages (#10716)
* migrated mocha to jest

* migrated mocha to jest - 2

* migrated mocha to jest - removed preversion hook from script

* migrated mocha to jest - 3

* migrated mocha to jest - 4

* cleanup

* review

* review
2019-11-16 12:32:19 +01:00
Kai Cataldo
bcd181f051 ESLint: disable max-len (#10727)
* ESLint: disable max-len

* Rename .eslintrc.json -> .eslintrc.js

* Fix up .eslintrc.js
2019-11-16 11:10:33 +01:00
Nicolò Ribaudo
5ca8acdb38 Do not automatically publish eslint packages (#10722)
* Do not automatically publish eslint packages

* Fix

* Fix

* Fix

* Fix

* Fix
2019-11-16 11:09:18 +01:00
Kai Cataldo
a6d134804a Unify build step for ESLint packages (#10723) 2019-11-16 10:15:15 +01:00
Arun Kumar Mohan
1b75fe3cba chore: fix typo: prest -> preset (#10726) [ci-skip] 2019-11-15 23:56:59 -05:00
Huáng Jùnliàng
3846d2a7fa chore: fix typo (#10725) 2019-11-15 20:56:32 -06:00
Huáng Jùnliàng
6c7f8291d4 polish: skip creating extra reference for safely re-used node (#10720)
* polish: skip creating extra reference for safely re-used node

* reimplement using scope.maybeGenerateMemoised
2019-11-16 01:11:03 +01:00
Nicolò Ribaudo
d56911b88d Reorganize meta files for ESLint packages (#10714)
* Move COC and CONTRIBUTING

* Add changelog links

* Reorganize gitignore and licenses
2019-11-16 01:10:26 +01:00
Nicolò Ribaudo
72eca8f0c2 Fix publishing broken by eslint packages (#10721) 2019-11-15 20:54:04 +01:00
Huáng Jùnliàng
5bb4ee73da chore: use loose mode of transform (#10718) 2019-11-15 10:48:37 -06:00
Nicolò Ribaudo
b4c42601d1 Fix linting in ESLint packages (#10712)
* Lint eslint/*

* Run "make fix-js"

* Fix remaining problems

* Remove linting from subpackages

* Remove husky

* Add back eslint dep
2019-11-14 22:05:26 +01:00
Huáng Jùnliàng
17dfdab7d2 chore: ignore engines for eslint packages (#10713) 2019-11-14 22:00:46 +01:00
Raja Sekar
927b89bec8 removed yarn lock from eslint packages (#10711) 2019-11-14 21:46:40 +01:00
dependabot[bot]
ec18c30ce7 Bump js-yaml from 3.12.0 to 3.13.1 (babel/eslint-plugin-babel-plugin#2)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.12.0 to 3.13.1.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.12.0...3.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-08 21:05:37 +02:00
Nicolò Ribaudo
f7c3d0717a 1.0.1 2018-12-18 22:35:38 +01:00
Nicolò Ribaudo
f5e482d3f6 Add repo url 2018-12-18 22:35:25 +01:00
Nicolò Ribaudo
31c3de6bfa Typo 🤦 2018-12-18 22:33:27 +01:00
Nicolò Ribaudo
cc78743ac8 Add .npmignore 2018-12-18 22:09:51 +01:00
Nicolò Ribaudo
1bd82dd6c1 1.0.0 2018-12-18 21:24:54 +01:00
Nicolò Ribaudo
cc2d738343 Update readme with the new package name 2018-12-18 21:23:50 +01:00
Nicolò Ribaudo
76ece4576e Add publishConfig to package.json 2018-12-18 21:04:36 +01:00
Nicolò Ribaudo
ef29bf53ff Rename to @babel/eslint-plugin-developement. Fixes babel/eslint-plugin-babel-plugin#1 2018-12-18 19:59:26 +01:00
Nicolò Ribaudo
e146ae748e Create Test workflow 2018-12-17 21:15:50 +01:00
Nicolò Ribaudo
ed1cee365f Update package.json#main 2018-12-17 20:13:53 +01:00
Nicolò Ribaudo
b615efba87 Export rules 2018-11-20 21:20:58 +01:00
Nicolò Ribaudo
69cc2c30c5 Docs 2018-11-20 21:11:47 +01:00
Nicolò Ribaudo
110191d81e Add plugin-name rule 2018-11-20 20:30:08 +01:00
Nicolò Ribaudo
c59db52954 Extract isBabelPluginFactory helper 2018-11-20 20:30:02 +01:00
Nicolò Ribaudo
2be54111c0 Add no-undefined-identifier rule 2018-11-20 18:13:37 +01:00
Nicolò Ribaudo
1f7197ec16 Extract isFromBabelTypes helper 2018-11-20 18:02:40 +01:00
Nicolò Ribaudo
6285cb9b64 Add no-deprecated-clone rule 2018-11-19 00:53:17 +01:00
Nicolò Ribaudo
3243af3e07 First commit 2018-11-18 23:57:36 +01:00
fergald
f3e2752df3 Support private properties in no-invalid-this (babel/eslint-plugin-babel#183)
* add failing test

* support ClassPrivateProperty
2019-08-24 17:12:15 +09:00
dependabot[bot]
693fa1aa0d Bump js-yaml from 3.11.0 to 3.13.1 (babel/eslint-plugin-babel#177)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.11.0 to 3.13.1.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.11.0...3.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-15 18:52:01 +02:00
dependabot[bot]
7061d966ab Bump lodash from 4.17.4 to 4.17.14 (babel/eslint-plugin-babel#181)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.4 to 4.17.14.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.4...4.17.14)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-12 20:20:59 -05:00
Brian Ng
ebe197f12e 5.3.0 2018-11-15 09:13:03 -06:00
Ville Saukkonen
eccbdab734 Camelcase - support for optional chaining (babel/eslint-plugin-babel#163) 2018-11-08 17:47:03 +02:00
Brian Ng
2358ed1bf9 5.2.1 2018-09-27 09:09:40 -05:00
Brian Ng
e8c0f529a0 Fix missing valid-typeof export (babel/eslint-plugin-babel#165) 2018-09-27 08:20:52 -05:00
Brian Ng
7c97b5587a 5.2.0 2018-09-06 10:45:30 -05:00
Brian Ng
d86c6dd449 Add valid-typeof rule with support for BigInt (babel/eslint-plugin-babel#161) 2018-09-06 10:39:48 -05:00
Brian Ng
f70f68e44a Update readme for opt call support in no-unused-expressions [skip ci] (babel/eslint-plugin-babel#160) 2018-09-05 09:41:55 -05:00
Brian Ng
d03a00c1a4 mocha@5.2.0 (babel/eslint-plugin-babel#159) 2018-09-05 09:26:43 -05:00
Brian Ng
b3ce66b1ff Merge pull request babel/eslint-plugin-babel#158 from lehni/fix/optional-call-expression-in-no-unused-expressions 2018-09-05 09:20:31 -05:00
Brian Ng
2ea80c845e Merge pull request babel/eslint-plugin-babel#157 from amilajack/patch-1
Test against modern node versions
2018-09-04 10:34:28 -05:00
Brian Ng
3e7fe7b25e 5.1.0 2018-04-20 08:49:02 -05:00
Brian Ng
562deb8f09 Merge pull request babel/eslint-plugin-babel#144 from babel/issue142
Fix bug with semi rule with class properties and omitLastInOneLineBlock option
2018-04-19 23:30:41 -05:00
Brian Ng
ae68b5bf24 Refresh new-cap tests 2018-04-18 20:33:36 -05:00
Brian Ng
5b5d9a5dec eslint-rule-composer@0.3.0 2018-04-18 20:29:53 -05:00
Brian Ng
bc15f0627d Merge pull request babel/eslint-plugin-babel#131 from lyleunderwood/do-expressions
add no-unused-expressions with do expressions support
2018-04-18 20:25:42 -05:00
Henry Zhu
1037e37418 5.0.0 2018-03-31 08:42:29 -04:00
Brian Ng
8e49bbbb09 Add quotes rule to index 2018-03-30 09:28:48 -05:00
Brian Ng
550dcfc96a Merge pull request babel/eslint-plugin-babel#139 from babel/quotes-jsxfragment
Add babel/quotes rule for JSXFragment workaround
2018-03-30 09:11:10 -05:00
Brian Ng
2624190887 Update deprecation table with versions 2018-03-30 09:09:23 -05:00
Brian Ng
b41b3af879 Merge pull request babel/eslint-plugin-babel#138 from babel/composer
Refactor rules to use eslint-rule-composer
2018-03-30 08:34:43 -05:00
Henry Zhu
15c5245d55 4.1.2 2017-07-25 16:42:26 -04:00
Brandon Kobel
da75b8484f Modifying semi rule to support for await (babel/eslint-plugin-babel#126) 2017-05-10 12:09:23 -04:00
Henry Zhu
dc0109ad3d 4.1.1 2017-03-06 10:48:48 -05:00
Jason Quense
399c182ab5 Merge pull request babel/eslint-plugin-babel#123 from daltones/master
Deprecate rule `no-await-in-loop`
2017-03-04 09:35:33 -05:00
Henry Zhu
c548da9d36 4.1.0 2017-02-27 15:00:01 -05:00
Aaron Jensen
71202609b5 Add babel semi (babel/eslint-plugin-babel#121)
* Add semi from eslint

* Add ClassProperty support to semi rule

Fixes babel/eslint-plugin-babel#43
2017-02-27 11:58:50 -08:00
Henry Zhu
4b52a4c707 4.0.1 2017-01-18 18:03:24 -05:00
Matthew Wagerfield
7f94d5f75f Updated rules to new format, added deprecated flag (babel/eslint-plugin-babel#119) 2017-01-18 23:01:31 +00:00
Henry Zhu
3855f28ebb 4.0.0 2016-11-17 16:46:29 -05:00
Henry Zhu
9c9bff745c readme: drop node < 4 [skip ci] 2016-11-17 16:45:47 -05:00
Henry Zhu
d38551cc23 Breaking: Deprecate built-in rules (babel/eslint-plugin-babel#115)
* Deprecate built-in rules

* fix update to babel-eslint 7 with awaitexpression

* deprecate flow-object-type
2016-11-17 16:39:04 -05:00
greenkeeper[bot]
48010c551b chore(package): update dependencies (babel/eslint-plugin-babel#109)
https://greenkeeper.io/
2016-11-17 15:23:38 -05:00
Mathieu M-Gosselin
5b5f8e32a0 Updated Node versions to test against in the Travis configuration. (babel/eslint-plugin-babel#110) 2016-11-17 15:23:23 -05:00
Plusb Preco
c7d8d991a8 Drop support of Node < 4 (babel/eslint-plugin-babel#113)
* Drop support Node < 4

* Add missing changes

* Update `.travis.yml`
2016-11-18 05:21:46 +09:00
Jason Quense
2b52d67ebc Merge pull request babel/eslint-plugin-babel#101 from mathieumg/no-invalid-this
Added `babel/no-invalid-this`
2016-11-02 14:38:46 -04:00
Greenkeeper
831a217d00 chore(package): update mocha to version 3.0.0 (babel/eslint-plugin-babel#79)
https://greenkeeper.io/
2016-09-22 10:27:31 +02:00
Greenkeeper
57b06a504a chore(package): update eslint to version 3.0.0 (babel/eslint-plugin-babel#70)
https://greenkeeper.io/
2016-07-01 21:27:59 +02:00
Kai Cataldo
6e4d44f312 Update Dependencies (babel/eslint-plugin-babel#67)
* Update Dependencies

fixes babel/eslint-plugin-babel#65

* Remove PhantomJS & is-my-json-valid

PhantomJS & is-my-json-valid is not actually used anywhere

* Change ESLint peerDependency version back to >=1.0.0
2016-07-01 10:15:59 -04:00
Henry Zhu
f6c2d2e0e5 --save-dev instead of -D [skip ci] 2016-07-01 08:24:41 -04:00
Kai Cataldo
1daf7f9865 Run Travis CI in same Node versions as babel-eslint (babel/eslint-plugin-babel#68) 2016-07-01 07:58:05 -04:00
Henry Zhu
cae8513636 3.3.0 2016-06-21 16:17:06 -04:00
Henry Zhu
8cd329f611 Merge pull request babel/eslint-plugin-babel#64 from zertosh/master
Add func-params-comma-dangle rule
2016-06-21 16:15:36 -04:00
Henry Zhu
148e6be60f show which rules are fixable 2016-06-01 18:13:06 -04:00
Jason Quense
f57dc5227a Merge pull request babel/eslint-plugin-babel#62 from lemonmade/fix-for-arrow-parens
Add an automated fix for arrow-parens
2016-06-01 16:45:26 -04:00
Henry Zhu
8487ec8a67 3.2.0 2016-04-07 18:25:57 -04:00
Henry Zhu
ba2b2bc04d Merge pull request babel/eslint-plugin-babel#57 from nmote/docs
Add docs for flow-object-type rule
2016-04-07 18:24:59 -04:00
Jason Quense
5363ff85cc Merge pull request babel/eslint-plugin-babel#56 from nmote/flow-object-type
Add flow-object-type rule
2016-04-05 16:19:28 -04:00
jquense
6ac58744fe update readme 2016-02-03 19:30:16 -05:00
jquense
7fa3aa9116 3.1.0 2016-02-03 19:28:25 -05:00
Jason Quense
7a2ecd2516 Merge pull request babel/eslint-plugin-babel#44 from ssorallen/arrow-type-annotations
Add type annotations to arrow-parens "as-needed"
2016-01-21 20:20:23 -05:00
Jason Quense
d58dc7bd1d Merge pull request babel/eslint-plugin-babel#41 from zaygraveyard/issue35
Fix: array-bracket-spacing for destructuring typed parameter (fixes babel/eslint-plugin-babel#35)
2015-12-20 19:45:01 -05:00
Jason Quense
8bc70e3aac Merge pull request babel/eslint-plugin-babel#40 from zaygraveyard/issue18
Update: Add tests to check the issue babel/eslint-plugin-babel#18
2015-12-20 19:13:30 -05:00
Jason Quense
b5cdcbe06e Merge pull request babel/eslint-plugin-babel#39 from zaygraveyard/issue37
Update: Implement auto fix for object-curly-spacing (fixes babel/eslint-plugin-babel#37)
2015-12-20 17:14:32 -05:00
Jason Quense
9eebd7b057 Merge pull request babel/eslint-plugin-babel#38 from zaygraveyard/issue36
Fix: `object-curly-spacing` had been crashing on an empty object patt…
2015-12-20 16:43:33 -05:00
Henry Zhu
885bfe95dc Merge pull request babel/eslint-plugin-babel#32 from hawkrives/patch-1
Fix typo in README rules section
2015-11-29 19:28:01 -05:00
Henry Zhu
1168d60564 3.0.0 2015-11-25 18:51:45 -05:00
Jason Quense
a2c695275d Merge pull request babel/eslint-plugin-babel#29 from evocateur/no-deps
Future-proofing
2015-11-25 14:47:17 -05:00
jquense
fcdf7ec95d v2.2.0 2015-11-23 19:16:41 -05:00
Jason Quense
dd8f357639 Merge pull request babel/eslint-plugin-babel#22 from nmote/await
Add no-await-in-loop rule.
2015-11-01 11:46:24 -05:00
Jason Quense
9d8a2f14dd Merge pull request babel/eslint-plugin-babel#23 from LegNeato/master
Support trailing commas in import and export statements. Fixes babel/eslint-plugin-babel#21
2015-10-26 10:36:36 +07:00
Jason Quense
64291d8d52 Merge pull request babel/eslint-plugin-babel#11 from pascalduez/pr__fix-readme
Improve the Readme
2015-08-18 15:30:38 -04:00
Henry Zhu
eb438f0f98 2.1.1 2015-08-18 10:53:41 -04:00
Henry Zhu
cc73bb56b6 Merge pull request babel/eslint-plugin-babel#10 from aruberto/master
add arrow-parens to index.js
2015-08-18 10:52:55 -04:00
Henry Zhu
902ae7e6e7 2.1.0 2015-08-15 21:08:57 -04:00
Henry Zhu
f5f7b50e17 Merge pull request babel/eslint-plugin-babel#9 from babel/arrow-parens
Add support for async functions in arrow-parens
2015-08-15 21:05:46 -04:00
jquense
fc31183a20 v2.0.0 2015-08-04 23:33:06 -04:00
Jason Quense
3eeaa4aa36 Merge pull request babel/eslint-plugin-babel#7 from mathieumg/eslint1.0
Updated for ESLint 1.0
2015-08-04 23:30:13 -04:00
Jason Quense
89011d92fc Merge pull request babel/eslint-plugin-babel#5 from deepsweet/eslint-1.0-rc
support eslint@>=1.0.0-rc-1
2015-07-24 14:14:14 -04:00
jquense
f0a2fb6b7b v1.2.0 2015-07-20 14:55:25 -04:00
Jason Quense
51d6ba733f Merge pull request babel/eslint-plugin-babel#4 from mathieumg/objectcurlyspacing_export
Added support for experimental exports in the `object-curly-spacing` rule
2015-07-16 09:17:20 -04:00
jquense
1bfe4aa02f v1.1.0 2015-07-07 19:40:03 -04:00
Jason Quense
fadd5b55ca Merge pull request babel/eslint-plugin-babel#3 from mathieumg/spaceinbrackets_export
Added support for experimental exports in the `space-in-brackets` rule.
2015-07-03 23:15:14 -04:00
Jason Quense
c2c9933797 Merge pull request babel/eslint-plugin-babel#1 from mathieumg/blockscopedvar_export
Added support for experimental export types
2015-07-03 23:14:57 -04:00
Jason Quense
382c3f2bb9 Merge pull request babel/eslint-plugin-babel#2 from mathieumg/newcap_decorators
Added support for decorators in the new-cap rule.
2015-07-01 13:39:08 -04:00
jquense
e9e6dee39a Typos and copy 2015-06-19 00:08:09 -04:00
Jason Quense
cc35677cff Update README.md 2015-06-19 00:04:01 -04:00
jquense
c442efa7c5 Initial 2015-06-19 00:01:10 -04:00
Brian Ng
5b35722d63 Bump semver@6 (babel/babel-eslint#802) 2019-11-01 18:08:47 -05:00
Chiawen Chen
3396fdd7f7 Breaking: make AST match Espree 6 (babel/babel-eslint#785) 2019-11-02 07:08:32 +08:00
dependabot[bot]
6b3e9e3f1e Bump eslint-utils from 1.4.0 to 1.4.2 (babel/babel-eslint#796)
Bumps [eslint-utils](https://github.com/mysticatea/eslint-utils) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/mysticatea/eslint-utils/releases)
- [Commits](https://github.com/mysticatea/eslint-utils/compare/v1.4.0...v1.4.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-08-26 21:16:13 -05:00
Daniel Tschinder
030fddb0b8 chore: Update deps and fix tests for new mocha and eslint (babel/babel-eslint#781) 2019-07-15 18:49:52 +02:00
dependabot[bot]
8635063118 Bump js-yaml from 3.12.0 to 3.13.1 (babel/babel-eslint#780)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.12.0 to 3.13.1.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.12.0...3.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-15 18:27:39 +02:00
dependabot[bot]
6748797681 Bump lodash from 4.17.5 to 4.17.14 (babel/babel-eslint#779)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.5 to 4.17.14.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.5...4.17.14)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-15 18:25:29 +02:00
Param Aggarwal
f9836caee5 fix typo in README.md (babel/babel-eslint#762) 2019-04-04 19:51:25 +05:30
Yosuke Ota
3fcfc90a12 Fix to convert hash token. (babel/babel-eslint#753) 2019-02-15 07:56:30 +09:00
Kai Cataldo
025fff7871 Docs: Add glob-based configuration example (babel/babel-eslint#748)
* Docs: Add glob-based configuration example

* Fix quotes style for consistency
2019-01-29 10:56:54 -05:00
Henry Zhu
2d64900b46 11.0.0-beta.0 2019-01-21 16:29:18 -05:00
Kai Cataldo
37cf65c6f8 Add requireConfigFile option (babel/babel-eslint#743)
* Add requireConfigFile option

* Update README.md
2019-01-21 11:06:29 -05:00
Kai Cataldo
0581ce1559 Add code of conduct (same as Babel) (babel/babel-eslint#740) [skip ci] 2019-01-11 15:27:36 -05:00
Kai Cataldo
bbce2b3807 Remove comment attachment (babel/babel-eslint#736)
* Remove comment attachment

* Simplify error messaging in tests
2019-01-11 12:23:34 -05:00
Kai Cataldo
2b9ee42ded Remove monkeypatching dead code (babel/babel-eslint#737) 2019-01-10 18:28:40 -05:00
Kai Cataldo
47de99e1b8 Use @babel/core#parse (babel/babel-eslint#711) 2019-01-10 15:25:00 -05:00
Kai Cataldo
bede064c0b Major: remove parseNoPatch (babel/babel-eslint#733) 2019-01-07 09:55:16 -05:00
Kai Cataldo
c209725ada Test Node v11 in CI (babel/babel-eslint#712) 2018-11-08 10:43:04 -05:00
Emerson Laurentino
de38cfc510 fix index path typo (babel/babel-eslint#709) 2018-11-07 16:36:11 -03:00
Kai Cataldo
22a1681e11 Merge pull request babel/babel-eslint#706 from kaicataldo/es6
Update ESLint config
2018-10-30 14:48:37 -05:00
Henry Zhu
40d9bb3a77 10.0.1 2018-09-27 10:29:57 -04:00
Henry Zhu
e56b342e59 Revert babel/babel-eslint#584 (babel/babel-eslint#697)
* Revert "Treat type alias declarationlike function declaration (babel/babel-eslint#584)"

This reverts commit 020d012c554913fea137f4129798ce31a4896dfe.
2018-09-27 10:29:29 -04:00
Henry Zhu
9adb82e68a 10.0.0 2018-09-25 15:32:56 -04:00
Henry Zhu
742aa412a7 test value should be switched 2018-09-25 15:29:14 -04:00
Joa Ebert
22fa8e6f20 Treat type alias declarationlike function declaration (babel/babel-eslint#584)
A type alias shouldn't trigger a no-use-before-define warning just
like a function declaration.

Cyclic type dependencies are common when using flow.
For instance: type Node<T> = { head: T; tail: Node<T> }

Fixes babel/babel-eslint#485
2018-09-25 20:39:43 +02:00
Henry Zhu
78a2f603ce Test eslint5, update peerDep (babel/babel-eslint#690)
* test against eslint 5
* set peerDep
2018-09-25 14:32:16 -04:00
Brian Ng
990ea0f1ae Drop old monkeypatching behavior (babel/babel-eslint#689)
An alternative to adding a direct dep on estraverse (https://github.com/babel/babel-eslint/pull/685), let's just drop the old monkeypatching behavior.

Closes babel/babel-eslint#685, Closes babel/babel-eslint#680
2018-09-25 13:07:46 -05:00
Henry Zhu
dae75e1853 9.0.0 2018-08-27 18:09:21 -04:00
Brian Ng
b6a7601e4a Bump to babel@7.0.0 🎉 (babel/babel-eslint#676) 2018-08-27 17:04:26 -05:00
Ed Morley
c456fdddd7 Docs: Make the default parserOptions more explicit (babel/babel-eslint#673)
In particular, previously the `.eslintrc` example implied that the default value for `codeFrame` was `false`, when in fact it is `true`:
https://github.com/babel/babel-eslint/blob/v9.0.0-beta.3/lib/parse.js#L14
2018-08-23 06:23:06 +01:00
Alexandre Borela
2a1c76e070 Add logical assignment plugin (babel/babel-eslint#674)
Fix babel/babel-eslint#672
2018-08-23 02:21:45 -03:00
Brian Ng
57c825eebb Bump some devDeps 2018-08-21 15:18:02 -05:00
Leo Yin
6ab458b512 build(deps): upgrade @babel/* to 7.0.0-rc.2 (babel/babel-eslint#668) 2018-08-22 04:00:17 +08:00
Henry Zhu
35c49ddf97 9.0.0-beta.3 2018-07-12 09:50:58 -04:00
Henry Zhu
098ab73be1 update lock 2018-07-12 09:50:30 -04:00
Mark Tse
e675cd7445 chore - fixing eslint-scope to a safe version; resolves babel/babel-eslint#656. (babel/babel-eslint#657) 2018-07-12 09:49:43 -04:00
Brian Ng
a1f9458052 9.0.0-beta.2 2018-07-06 11:24:45 -05:00
Rubén Norte
a17917810d Merge pull request babel/babel-eslint#645 from rubennorte/support-new-flow-syntax-in-scope-analysis
Support new flow syntax in scope analysis
2018-07-06 17:20:52 +01:00
Rubén Norte
dcf55cb730 Upgrade Babel to v7.0.0-beta.52 (babel/babel-eslint#650)
* Upgrade Babel to v7.0.0-beta.52

* Fixed failing test
2018-07-06 14:50:59 +01:00
Brian Ng
28c4507866 9.0.0-beta.1 2018-06-29 08:37:18 -05:00
Rubén Norte
4f9e2a5be6 Breaking: Upgraded Babel to 7.0.0-beta.51 (babel/babel-eslint#642)
* Upgraded Babel to 7.0.0-beta.51, with changes to decorators

* Removed support for Node 4 and added it for Node 10

* nit: fix typo [skip ci]
2018-06-29 14:26:43 +01:00
Brian Ng
8dae11e6d2 8.2.5 2018-06-23 08:20:40 -05:00
Brian Ng
9342a5b74c Revert bump to babel 51 (babel/babel-eslint#640) 2018-06-23 08:20:08 -05:00
Brian Ng
92507e598f 8.2.4 2018-06-22 13:39:23 -05:00
Brian Ng
42d0769683 Add test for template string with object with template string inside (babel/babel-eslint#639)
Closes https://github.com/babel/babel-eslint/pull/538.
Fixes https://github.com/babel/babel-eslint/issues/537.

Now that https://github.com/babel/babel-eslint/pull/610 has landed, I wanted to make sure this case was covered.
2018-06-22 11:12:54 -05:00
Brian Ng
6a6c2bad50 Support OptionalMemberExpression with scope too (babel/babel-eslint#634) 2018-06-22 11:03:15 -05:00
Brian Ng
b537da9b53 Drop node4 in travis 2018-06-15 16:39:58 -05:00
Brian Ng
85d8f70478 Bump Babel deps 2018-06-11 08:47:15 -05:00
Cristian Pallarés
da43afb5de refactor: rename babylon to @babel/parser 2018-06-06 00:18:13 +02:00
Brian Ng
077bea0a45 Fix converting template types to handle nested templates (babel/babel-eslint#610)
Fixes https://github.com/babel/babel-eslint/issues/603 (and the fixture from https://github.com/babel/babel-eslint/issues/609 works).

Reworks our code that converts the format of Babylon template tokens to be a bit more robust, especially with things like nested templates with arrows.

(Adapted the logic from https://github.com/eslint/espree/blob/master/lib/token-translator.js)
2018-06-18 16:46:31 -05:00
Rubén Norte
99968db2b1 Fix token types for experimental operators (babel/babel-eslint#632)
* Added failing tests

* Recognized nullish coalescing, optional chaining and pipeline operators as Punctuator tokens
2018-06-15 15:42:05 +01:00
Rubén Norte
3477626973 Add support for the optional chaining operator (babel/babel-eslint#630) 2018-06-15 15:31:43 +01:00
jmurretxactly
735abb06b4 don't require unpad per test fixture, fixes babel/babel-eslint#572 (babel/babel-eslint#618) 2018-05-08 05:52:59 -06:00
Ankur Oberoi
cadb22334e updates readme for latest eslint & babel-eslint (babel/babel-eslint#607) [skip ci] 2018-04-13 09:26:41 -07:00
Henry Zhu
b2bc4fe4f4 8.2.3 2018-04-13 11:25:03 -04:00
Henry Zhu
2f7aea98eb lock to beta.44 2018-04-13 11:23:59 -04:00
Bary Levi
b2c065976b Save babel beta packages as exact versions (babel/babel-eslint#606) [skip ci] 2018-04-13 18:23:03 +03:00
Daniel Tschinder
f75f7a0601 8.2.2 2018-02-20 11:57:07 +01:00
Daniel Tschinder
1bd58fa018 Allow newer versions of babel 2018-02-20 11:56:40 +01:00
Daniel Tschinder
c27c2b6e68 Update dependencies 2018-02-20 11:54:09 +01:00
Daniel Tschinder
c03d5c41a5 chore(package): update lint-staged to version 6.1.1 (babel/babel-eslint#592)
Closes babel/babel-eslint#539
2018-02-20 11:49:19 +01:00
Brian Ng
7057e9fb73 Bump deps (babel/babel-eslint#591) 2018-02-15 21:39:42 -06:00
Toru Nagashima
fbb7ff6e44 Fix: wrong token type of ! and ~ (fixes babel/babel-eslint#576) (babel/babel-eslint#577) 2018-01-17 15:10:55 +09:00
Henry Zhu
6d37c551dd 8.2.1 2018-01-08 19:15:40 -05:00
Henry Zhu
23d12acd15 fix export change (babel/babel-eslint#571) 2018-01-08 19:15:22 -05:00
Kai Cataldo
b6ce2b649f 8.2.0 2018-01-08 18:06:57 -05:00
Henry Zhu
2afde99434 Add other parser plugins, update yarn.lock (babel/babel-eslint#569) 2018-01-08 17:46:57 -05:00
Kai Cataldo
97c9442511 Make 2018 the default ecmaVersion for rules relying on parserOptions (babel/babel-eslint#556) 2018-01-08 17:45:24 -05:00
jony89
660180b932 update babel packages (babel/babel-eslint#565)
* update babel packages

There is some critical bug fixes in version babylon#7.0.0-beta.33 regard `async` - `await` syntax which is needed pretty immediately :)

* remove test 42 (test for import type *)

`import type *` is invalid, since the namespace can't be a type
2018-01-09 00:40:11 +02:00
Toru Nagashima
d0d84aca9b 8.1.2 2017-12-26 10:59:19 +09:00
Toru Nagashima
624a425f7d Fix: add Literal type to visitorKeys (babel/babel-eslint#562)
* Fix: add Literal type to visitorKeys
* Fix: use ./visitor-keys
2017-12-26 10:50:13 +09:00
Toru Nagashima
3cb154df82 Fix: ignore eval (fixes babel/babel-eslint#560) (babel/babel-eslint#561) 2017-12-26 10:49:36 +09:00
Toru Nagashima
a706e85b19 8.1.1 2017-12-25 15:57:19 +09:00
Teddy Katz
e988a88af0 Fix: Prevent parseForESLint() behavior from changing after parse() is called (fixes babel/babel-eslint#558)(babel/babel-eslint#559)
* Prevent parseForESLint() behavior from changing after parse() is called

(fixes https://github.com/babel/babel-eslint/issues/558, fixes https://github.com/eslint/eslint/issues/9767)

* Avoid using the enhanced referencer after monkeypatching

* Chore: add test for babel/babel-eslint#558

* Pass correct scope analyzer options

* fix escope patch and improve tests

* remove process.exit(1)
2017-12-25 01:52:36 -05:00
Teddy Katz
5b08714a4d 8.1.0 2017-12-24 02:02:44 -05:00
Teddy Katz
d33839a9c3 Re-add parseNoPatch function (accidentally removed) (babel/babel-eslint#557) 2017-12-24 02:00:29 -05:00
Toru Nagashima
5d6d52f04e Use new scopeManager/visitorKeys APIs (babel/babel-eslint#542)
(fixes https://github.com/eslint/eslint/issues/9762)
2017-12-24 15:42:17 +09:00
Logan Smyth
7ed6bfb925 8.0.3 2017-12-01 10:06:40 -08:00
Logan Smyth
3a36eca1b4 Fix mocha command path. 2017-12-01 10:06:24 -08:00
Logan Smyth
b6172b2ed3 Lock down dependency versions. 2017-12-01 10:05:34 -08:00
Henry Zhu
39cef92885 8.0.2 2017-11-06 15:00:41 -05:00
Henry Zhu
0e2bbc3705 require correct deps 2017-11-06 14:57:56 -05:00
Henry Zhu
090269e5a0 Always use unpad (babel/babel-eslint#535) 2017-11-06 12:51:19 -05:00
Henry Zhu
f43062ebbb Allow ^ version for babel dependencies (babel/babel-eslint#534) 2017-11-06 12:47:47 -05:00
greenkeeper[bot]
38f372b8ea fix(package): update babylon to version 7.0.0-beta.31 (babel/babel-eslint#533) 2017-11-06 12:25:35 -05:00
Henry Zhu
c958724bbd 8.0.1 2017-09-26 16:18:43 -04:00
Clement Hoang
b0d8baf320 Update README.md support (babel/babel-eslint#531) [skip ci]
#linting channel is now archived in babel slack.
2017-10-31 11:50:35 -07:00
greenkeeper[bot]
5b3caf7b66 chore(package): update mocha to version 4.0.0 (babel/babel-eslint#524) 2017-10-11 14:14:29 +02:00
Jordan Gensler
04cf4246b8 Adding optionalCatchBinding to plugins. (babel/babel-eslint#521) 2017-09-26 13:17:44 -07:00
Henry Zhu
b576677e9f 8.0.0 2017-09-12 09:44:23 -04:00
Henry Zhu
d61b06b8b5 update to beta.0 2017-09-12 09:42:30 -04:00
Daniel Tschinder
15e2aa0a24 Remove already fixed workaround (babel/babel-eslint#508) 2017-08-02 14:37:01 +02:00
Henry Zhu
bc9b69590b 8.0.0-alpha.17 2017-07-26 16:19:29 -04:00
Henry Zhu
cf86d94597 alpha.17 2017-07-26 16:18:45 -04:00
Henry Zhu
35f79cb272 8.0.0-alpha.15 2017-07-13 13:01:31 -04:00
Henry Zhu
522140b43f update (babel/babel-eslint#504) 2017-07-13 12:58:45 -04:00
Evan Brodie
c9b8d2dfd1 Readme update usage section (babel/babel-eslint#501) [skip ci]
* Updates README: Consolidates versioning table

Basically a revert of 52b4a13. It is easier to read a single table instead of two locations in the README for the version compatabilities between ESLint and babel-eslint

* Updates README: Add yarn command for installation

* [skip ci]
2017-07-09 21:03:59 -04:00
greenkeeper[bot]
469e679b6d Update eslint to the latest version 🚀 (babel/babel-eslint#500)
* chore(package): update eslint to version 4.1.0

* escope -> eslint-scope

* Fix linting
2017-06-25 08:30:29 -07:00
greenkeeper[bot]
dcb4bffee5 chore(package): update husky to version 0.14.0 (babel/babel-eslint#498) 2017-06-22 13:18:47 -07:00
Kevin Mårtensson
9a791d175c Update install instructions to use latest stable release (babel/babel-eslint#497) [skip ci] 2017-06-20 23:49:46 +02:00
Henry Zhu
d40a6dd9b7 8.0.0-alpha.13 2017-06-18 18:33:40 -04:00
Henry Zhu
6aec93c468 Merge pull request babel/babel-eslint#493 from danez/regression-test
Test for babylon regression
2017-06-18 18:30:59 -04:00
Brian Ng
94e69f399b Add Prettier (babel/babel-eslint#491) 2017-06-17 14:14:42 -05:00
Henry Zhu
001064885d 8.0.0-alpha.12 2017-06-16 16:56:32 -04:00
Daniel Tschinder
bffbaff7e2 Use babylon estree and ranges (babel/babel-eslint#489) 2017-06-15 23:03:02 +02:00
Mark Banner
36a630e023 Fix: allow options to be optional when monkey patching escope.analyze (fixes babel/babel-eslint#470). (babel/babel-eslint#484) 2017-06-08 17:23:08 +01:00
Reyad Attiyat
45a9f64174 Use Node 8 and drop Node 5 from travis (babel/babel-eslint#483)
* Use Node 8 and drop Node 5 from travis

* switch the order [skip ci]
2017-06-06 20:38:49 -05:00
Reyad Attiyat
4e4aa05639 Update to Babylon 7 (fixes babel/babel-eslint#481) (babel/babel-eslint#482)
* Update to Babylon 7 (fixes babel/babel-eslint#481)

* Pin dependencies to alpha version

* fix deprecation, add other plugins

* oops

* Update index.js

* Add tests for private class properties with rules no-undef no-unused-vars
2017-06-06 20:37:57 -05:00
Reyad Attiyat
cb2eb3a1fb Fix: Convert RegExpLieteral value to RegExp object (fixes babel/babel-eslint#477) (babel/babel-eslint#478) 2017-05-29 20:41:14 -05:00
Sebastian McKenzie
b4daa5eae2 7.2.3 2017-04-21 22:14:19 +01:00
Andres Suarez
6feaee84e0 Fix flow type spread handling (babel/babel-eslint#465) 2017-04-21 11:48:52 -04:00
Henry Zhu
b5c058bf6e 7.2.2 2017-04-12 12:07:05 -04:00
Vitor Balocco
267731917b Fix: use eslint-scope instead of escope if present (babel/babel-eslint#461) 2017-04-12 17:59:23 +02:00
Andres Suarez
b8a3af8cd6 Separate finding peer deps from monkeypatching (babel/babel-eslint#460) 2017-03-30 13:49:51 -04:00
Andres Suarez
9a558bd942 Remove unused .gitmodules (babel/babel-eslint#457) 2017-03-25 19:36:10 -04:00
Andres Suarez
d78b0debd7 Use dedent for unpadding (babel/babel-eslint#456) 2017-03-25 19:32:05 -04:00
Henry Zhu
711c1e2f4b Merge pull request babel/babel-eslint#455 from babel/babylon-to-espree-tidy
Tidy up babylon-to-espree
2017-03-25 19:15:23 -04:00
Andres Suarez
2ca65d5451 Add type parameter scope tests (babel/babel-eslint#454) 2017-03-23 15:46:48 -04:00
Henry Zhu
e8b91f8862 7.2.1 2017-03-23 14:03:23 -04:00
Andres Suarez
26daac8690 Remove left over eslint 2 estraverse code (babel/babel-eslint#452)
This was missed in babel/babel-eslint#361
2017-03-23 14:02:24 -04:00
Andres Suarez
1c5400a670 Fix type param and interface declaration scoping (babel/babel-eslint#449) 2017-03-23 12:49:19 -04:00
Andres Suarez
700f62e28e Remove lodash dependency (babel/babel-eslint#450) 2017-03-22 22:35:31 -04:00
Andres Suarez
371488c102 Format non-regression errors for legibility (babel/babel-eslint#451) 2017-03-22 22:34:13 -04:00
Luís Couto
1cda9b6a80 Update README.md with codeFrame option (babel/babel-eslint#448) 2017-03-21 00:11:30 +00:00
Henry Zhu
f9b19189d7 7.2.0 2017-03-20 17:53:26 -04:00
wtgtybhertgeghgtwtg
d3c40a1851 Use lodash instead of lodash.pickby. (babel/babel-eslint#435) 2017-03-20 14:50:09 -07:00
Alex Rattray
65413344bd [flow] Process polymorphic type bounds on functions (babel/babel-eslint#444) 2017-03-20 14:46:07 -07:00
Luís Couto
2bee348c9a Add option to disable code frame. (babel/babel-eslint#446)
* Add option to disable code hightlight.

* Rename codeHighlight with codeFrame

* Add codeFrame tests

* Remove colors from test assertions
2017-03-20 21:45:11 +00:00
Henry Zhu
dccd5a7593 Merge pull request babel/babel-eslint#447 from kaicataldo/clean-up-eslint
Chore: Clean up and upgrades
2017-03-20 11:44:33 -04:00
Henry Zhu
b3c41bd5d7 remove deprecated rule examples [skip ci] 2017-02-28 23:41:03 -05:00
Henry Zhu
ad8a7e78e1 update readme [skip ci] 2017-02-28 23:39:49 -05:00
Henry Zhu
4f4d229e0a chore(package): update eslint-config-babel to version 6.0.0 (babel/babel-eslint#433)
* chore(package): update eslint-config-babel to version 6.0.0

Closes babel/babel-eslint#432

https://greenkeeper.io/

* Fix linting
2017-01-15 06:59:51 -05:00
Nazim Hajidin
d76cfe05b1 Update to use Node 4 features (babel/babel-eslint#425)
* Change for loops to forEach

* Change more for loops

* Arrow functions

* Use object shorthand

* Put this on one line

* Change back to using for loops
2017-01-14 17:15:54 -05:00
greenkeeper[bot]
fd2093914e chore(package): update eslint-config-babel to version 4.0.0 (babel/babel-eslint#430)
https://greenkeeper.io/
2017-01-10 19:36:02 +01:00
Henry Zhu
10864cfa71 add badges [skip ci] 2016-12-06 18:02:37 -05:00
Henry Zhu
38072c0716 Revert "use *" (babel/babel-eslint#426) 2016-12-02 16:51:16 -05:00
Henry Zhu
122acf8f81 use * (babel/babel-eslint#421) 2016-11-18 08:52:17 -05:00
greenkeeper[bot]
332da936b7 chore(package): update eslint-config-babel to version 3.0.0 (babel/babel-eslint#423)
https://greenkeeper.io/
2016-11-17 18:05:03 -05:00
Henry Zhu
f78ab342fd 7.1.1 2016-11-17 17:59:19 -05:00
greenkeeper[bot]
49625639f2 chore(package): update dependencies (babel/babel-eslint#422)
https://greenkeeper.io/
2016-11-17 17:57:52 -05:00
Henry Zhu
838bada36d append code frame on parse error (babel/babel-eslint#418) 2016-11-17 17:48:58 -05:00
Henry Zhu
1be2c47da6 chore(package): update babylon to version 6.13.0 (babel/babel-eslint#420)
https://greenkeeper.io/
2016-11-03 09:37:12 -04:00
Henry Zhu
8c12b515b8 chore(package): update eslint to version 3.9.1 (babel/babel-eslint#419)
https://greenkeeper.io/
2016-11-03 09:36:59 -04:00
Henry Zhu
93a4c3c699 7.1.0 2016-10-26 14:36:47 -04:00
Jordan Gensler
1d52247080 [import()] Adding support to lint dynamic imports (babel/babel-eslint#413)
* [import()] Adding support to lint dynamic imports

* [import()] Adding regression test to import
2016-10-17 14:40:06 -04:00
Steven Job
1f04cab99f Now using template strings (babel/babel-eslint#410)
* Use template strings in non-regression tests

* Refactor non-regression tests to fix test failures

Moved backtick to fix test 'getter/setter babel/babel-eslint#218' as indent matters
Fixed line numbers for some tests

* Use template strings in babel-eslint tests

* Fix tests for babel-eslint

Avoids error that shows when using template strings for tests:
	line 253 line comments
	line 260 block comments
	line 306 jsdoc

Error: At loc.start.column: are different (6 !== 0)

* Other small template literal changes

* Add unpad to correctly indent template literals
2016-10-17 19:27:20 +01:00
Daniel Tschinder
31f48f0651 Update test for eslint 3.8 (babel/babel-eslint#412)
* Update test for eslint 3.8

also ignore yarn lock

* Run lint only on latest version
2016-10-15 11:04:55 +02:00
Greenkeeper
610cf28dab Update eslint-config-babel to version 2.0.1 🚀 (babel/babel-eslint#408)
* chore(package): update eslint-config-babel to version 2.0.1

https://greenkeeper.io/

* Fix plugin
2016-10-10 14:36:10 +02:00
Nick
994eea7a53 docs: Update built-in support notes in README (babel/babel-eslint#398) [skip ci]
* docs: Update built-in support notes in README

eslint v3.6.0 supports ES2017 features

* docs: Update built-in support notes in README

eslint v3.6.0 supports ES2017 features
2016-09-29 21:25:35 +01:00
Henry Zhu
8d48eecc2f 7.0.0 2016-09-27 12:35:24 -04:00
Henry Zhu
aa6c5ccd45 updates 2016-09-27 12:34:26 -04:00
Henry Zhu
3c414db312 remove eslint 2 logic (babel/babel-eslint#361)
* remove old code

* remove async/await logic before eslint supported it

* not needed
2016-09-27 12:32:10 -04:00
Ville Immonen
ce6d9df192 Remove the lodash.assign dependency (babel/babel-eslint#393)
lodash.assign is deprecated:
```
npm WARN deprecated lodash.assign@4.2.0: This package is deprecated.
Use Object.assign.
```
2016-09-27 18:32:52 +03:00
Greenkeeper
33343e6688 chore(package): update babylon to version 6.11.2 (babel/babel-eslint#391)
https://greenkeeper.io/
2016-09-27 14:43:22 +02:00
Greenkeeper
2339c8af0f chore(package): update espree to version 3.3.1 (babel/babel-eslint#394)
https://greenkeeper.io/
2016-09-27 14:43:14 +02:00
Greenkeeper
93a73cc483 chore(package): update eslint to version 3.6.0 (babel/babel-eslint#392)
https://greenkeeper.io/
2016-09-27 14:43:03 +02:00
Henry Zhu
3d4e8cfea3 update test line number [skip ci] 2016-09-27 08:42:41 -04:00
Dan Harper
f97d83d847 eslint-plugin-flow-vars -> eslint-plugin-flowtype (babel/babel-eslint#374) [skip ci] 2016-09-09 16:28:19 +01:00
Henry Zhu
9c70c76cfd add deps for npm 2 2016-09-09 11:26:47 -04:00
Henry Zhu
313388b293 typo 2016-08-03 09:36:15 -04:00
Henry Zhu
2b812b087c Merge pull request babel/babel-eslint#354 from babel/eslint-config-babel
Use eslint-config-babel
2016-08-03 09:34:51 -04:00
Greenkeeper
481329a47e chore(package): update mocha to version 3.0.0 (babel/babel-eslint#356)
https://greenkeeper.io/
2016-08-02 04:34:39 +02:00
Henry Zhu
50e0abfd16 Drop node < 4 (babel/babel-eslint#358) 2016-08-01 15:00:01 -04:00
Daniel Tschinder
0534eb7644 Fix tests for eslint 3.2 (babel/babel-eslint#352) 2016-07-30 19:44:42 +02:00
Daniel Tschinder
289bf4f84a Add note about eslint 3 [skip ci] 2016-07-11 01:18:41 +02:00
Daniel Tschinder
af44a1cc83 Test eslint 3 and 2 on travis (babel/babel-eslint#340)
closes babel/babel-eslint#332
2016-07-11 00:28:57 +02:00
Daniel Tschinder
0cb35ab04e Fix tests for eslint 3.0
Seems that eslint got a lot smarter and reports vars that are used, but are useless as unused
These examples are also failing with espree
2016-07-10 23:47:44 +02:00
Henry Zhu
b0dbbfcc03 6.1.2 2016-07-09 11:40:34 -04:00
Toru Nagashima
1766a21145 Fix: improve handling of class properties (fixes babel/babel-eslint#337) (babel/babel-eslint#338)
I added ClassProperty method into Referencer of escope. This method will
address class properties and those type anotations.
2016-07-10 00:40:08 +09:00
Henry Zhu
52d9c34465 6.1.1 2016-07-08 14:23:39 -04:00
Henry Zhu
9ee5e6e59c Create a variable for class properties in scope instead of deleting the key (babel/babel-eslint#336) 2016-07-08 14:23:04 -04:00
Henry Zhu
66a4cf578f remove hardcoded strict mode value (babel/babel-eslint#331) 2016-06-27 01:53:27 -04:00
Daniel Tschinder
19baee2242 Add testcase for space-comment and shebang babel/babel-eslint#163
This works as of babylon 6.8.2
2016-06-26 22:50:50 +02:00
Daniel Tschinder
ce54b07e2d Testcase for newline-before-return shouldn't fail with comments. (babel/babel-eslint#300) 2016-06-26 21:52:39 +02:00
Henry Zhu
167b8bf0a0 6.1.0 2016-06-22 16:37:11 -04:00
rhettlivingston
ab9afd33d1 Add allowImportExportEverywhere parserOption (babel/babel-eslint#327) (babel/babel-eslint#329)
* Add allowImportExportEverywhere parserOption (babel/babel-eslint#327)

* Added "allowImportExportEverywhere option (babel/babel-eslint#327)" test.
2016-06-22 16:36:47 -04:00
Henry Zhu
4d473c3305 6.0.5 2016-06-20 17:12:33 -04:00
Daniel Tschinder
93a9a8d638 Reset TypeParameters to Identifier (babel/babel-eslint#325) 2016-06-20 23:11:38 +02:00
Henry Zhu
c8fe9136d7 add a message about using the default parser (babel/babel-eslint#306)
* add a message about using the default parser

* decrease the size
2016-05-02 08:41:41 -04:00
Daniel Tschinder
97af2b0b62 Add regression test for babel/babel-eslint#223 (babel/babel-eslint#305) 2016-04-29 23:23:13 +02:00
Daniel Tschinder
81ce743986 Add node 6 to travis tests. 2016-04-29 23:22:40 +02:00
Daniel Tschinder
2b66040f0d Add tests for two issues and rename test suite (babel/babel-eslint#304) 2016-04-29 23:07:02 +02:00
Daniel Tschinder
872449d6fc Add configuration section to README (babel/babel-eslint#303) 2016-04-26 18:11:33 +02:00
Henry Zhu
a2f345b24b add changelog command 2016-04-25 18:00:58 -04:00
Henry Zhu
161edcca48 6.0.4 2016-04-25 17:55:19 -04:00
Rafał Ruciński
cfd35799da Fix parent not being set for decorator nodes. (babel/babel-eslint#296) 2016-04-25 23:51:43 +02:00
Daniel Tschinder
0ccbceb9e8 Ensure strictmode is enabled/disabled when changing sourceType (babel/babel-eslint#302) 2016-04-25 15:41:43 +02:00
Daniel Tschinder
cbc0475634 Update lodash and replace pick by pickBy (babel/babel-eslint#301) 2016-04-25 01:14:39 +02:00
Daniel Tschinder
cf456bfe4a Fix escope to take sourceType and ecmaVersion from options (babel/babel-eslint#288)
escope was hardcoded to sourcetype: "module" and ecmaVersion: "6"
This changes it to take the configuration from the eslint options and still
defaulting to "module" and "6".
This is done by having to global variables, as monkeypatch is only triggered once.
To fix scoping issues, the same logic as in eslint is applied. It disables the nodejs scope
if the sourceType is module.
2016-04-20 02:56:15 +02:00
Rafał Ruciński
fd36e3cf8d Declare eslint call more simply in the scripts. (babel/babel-eslint#297) 2016-04-20 02:55:24 +02:00
Rafał Ruciński
149dd082f3 Add root: true to eslint config. (babel/babel-eslint#294)
This prevents taking user's eslint config files that are higher in the
directory structure into consideration.
2016-04-18 04:01:15 +02:00
Rafał Ruciński
44ff360379 Make npm scripts work on Windows too. (babel/babel-eslint#295) 2016-04-18 03:59:08 +02:00
Henry Zhu
8a089b65fb 6.0.2 2016-03-31 19:14:07 -04:00
Henry Zhu
3c9ef8ec7e Merge pull request babel/babel-eslint#285 from josh/revert-282-no-implicit-globals-regression
Revert "Fix processing sourceType: script"
2016-03-31 19:09:30 -04:00
Henry Zhu
1fe0d4a94b Merge pull request babel/babel-eslint#282 from josh/no-implicit-globals-regression
Fix processing sourceType: script
2016-03-31 16:49:31 -04:00
Henry Zhu
cccce9d0ab update install instructions for eslint 1 and 2 2016-03-28 18:23:37 -04:00
Henry Zhu
c6401945d9 6.0.0 2016-03-25 23:51:29 -04:00
Henry Zhu
c6a69b763f 6.0.0-beta.6 2016-03-14 08:37:34 -04:00
Henry Zhu
080f0c7b22 Merge pull request babel/babel-eslint#273 from mysticatea/fix-monkeypatching-for-2.3.0
Fix: Remove throwing an error when estraverse-fb has not found.
2016-03-14 08:36:44 -04:00
Henry Zhu
2c6b323a62 6.0.0-beta.5 2016-03-08 11:06:58 -05:00
Henry Zhu
b42d59b29c errror on estraverse-fb.. 2016-03-08 11:06:47 -05:00
Henry Zhu
c8ff9bad93 6.0.0-beta.4 2016-03-08 11:04:19 -05:00
Henry Zhu
7fbf6111e3 just throw an error right now instead of it silently working but with bugs 2016-03-08 10:57:22 -05:00
Henry Zhu
d75bd7b82c 6.0.0-beta.3 2016-03-07 23:13:50 -05:00
Henry Zhu
217f83fd56 Merge pull request babel/babel-eslint#271 from danez/fix-use-before-define
Remove visiting of properties left of spread, fixes babel/babel-eslint#249.
2016-03-07 23:09:46 -05:00
Henry Zhu
6e3aa3357c Merge pull request babel/babel-eslint#272 from kaicataldo/fixes259
Update readme to fix npm registry escaped HTML (fixes babel/babel-eslint#259)
2016-03-07 23:09:33 -05:00
Henry Zhu
e886404171 6.0.0-beta.2 2016-03-07 12:34:10 -05:00
Henry Zhu
4a8c6d8a8b Merge pull request babel/babel-eslint#270 from danez/cleanup-monkey
remove monkey-patching of patternVisitor as unused
2016-03-07 08:31:48 -05:00
Henry Zhu
a827ab2d4e Merge pull request babel/babel-eslint#269 from babel/eslint-2.3.0
try catch estraverse-fb since eslint removed it in 2.3.0, temp skip b…
2016-03-06 22:29:51 -05:00
Henry Zhu
c3915b9798 6.0.0-beta.1 2016-03-01 22:39:34 -05:00
Henry Zhu
c28b839c17 Update README.md 2016-03-01 22:37:28 -05:00
Henry Zhu
511862c4ee Merge pull request babel/babel-eslint#264 from hzoo/eslint2
ESLint 2
2016-03-01 22:34:53 -05:00
Henry Zhu
dce22ce5f6 Merge pull request babel/babel-eslint#257 from gmaclennan/patch-1
Update README.md install docs for eslint v1.x
2016-02-27 10:23:01 -05:00
Henry Zhu
edc91849cb Update .travis.yml 2016-02-16 18:13:32 -05:00
Henry Zhu
f117721251 5.0.0 2016-02-16 18:06:37 -05:00
Henry Zhu
5df6babfad Update README.md 2016-02-16 17:43:05 -05:00
Henry Zhu
e4f43aa51b Merge pull request babel/babel-eslint#255 from deepsweet/npm-ignore
include only necessary files in npm package
2016-02-16 12:32:56 -05:00
Henry Zhu
05f708c330 Merge pull request babel/babel-eslint#250 from danez/patch-1
Testcase for babel/babel-eslint#239
2016-02-02 17:11:01 -05:00
Henry Zhu
8f9f800dc5 5.0.0-beta10 2016-02-01 23:06:09 -05:00
Henry Zhu
83debbfda0 Merge pull request babel/babel-eslint#246 from babel/escope-patterns
Prevent escope referencer from traversing into param pattern type annotations
2016-02-01 23:05:06 -05:00
Henry Zhu
c1bec5c4de check using __esModule 2016-02-01 20:22:03 -05:00
Henry Zhu
740a546249 5.0.0-beta9 2016-02-01 14:40:54 -05:00
Henry Zhu
a55236d383 Merge pull request babel/babel-eslint#244 from christophehurpeau/patch-1
fix babel/babel-eslint#243
2016-02-01 14:40:01 -05:00
Henry Zhu
e2464f462e 5.0.0-beta8 2016-01-30 12:20:15 -05:00
Henry Zhu
177c0b4979 Add a test for use strict and directive ast change
Fixes babel/babel-eslint#242
2016-01-30 12:19:44 -05:00
Henry Zhu
167741b80b 5.0.0-beta7 2016-01-30 10:37:21 -05:00
Henry Zhu
f083e49a63 Merge pull request babel/babel-eslint#241 from jmm/rule-strict
Add tests for `strict` rule
2016-01-30 10:34:38 -05:00
Henry Zhu
9380324a0f temporarily remove test 2016-01-30 10:32:47 -05:00
Henry Zhu
0778f623fb Merge pull request babel/babel-eslint#232 from vaibhavmule/patch-1
update Licenses date
2016-01-16 00:16:50 -05:00
Henry Zhu
1adc834b10 skip for now 2015-12-29 13:48:29 -05:00
Henry Zhu
c510fa79d0 add test for es6 unicode escapes 2015-12-29 13:44:12 -05:00
Henry Zhu
02d63b7ec4 5.0.0-beta6 2015-12-09 08:42:02 -05:00
Henry Zhu
c35137040a update acorn-to-esprima, account for getter/setter kind property 2015-12-09 08:40:27 -05:00
Henry Zhu
3b673ef4b6 5.0.0-beta5 2015-12-09 08:27:37 -05:00
Henry Zhu
318a530dfa update acorn-to-esprima, add getter/setter tests 2015-12-09 08:27:19 -05:00
Henry Zhu
fa7dfc272a update eslint 2015-12-01 09:58:43 -05:00
Henry Zhu
423683e7ef 5.0.0-beta4 2015-11-29 08:24:29 -05:00
Henry Zhu
c078e11bcf update acorn-to-esprima to 2.0.1 2015-11-29 08:24:10 -05:00
Henry Zhu
61e1c5b546 5.0.0-beta3 2015-11-28 16:31:24 -05:00
Henry Zhu
4249dcd353 update acorn-to-esprima, add tests for babel/babel-eslint#216 2015-11-28 16:31:13 -05:00
Henry Zhu
f76be581b3 5.0.0-beta2 2015-11-27 15:45:09 -05:00
Henry Zhu
faa003168c add functionSent to parser 2015-11-27 15:44:07 -05:00
Henry Zhu
204ba86418 Merge pull request babel/babel-eslint#215 from zertosh/master
babylon/espree option alignment
2015-11-27 15:42:16 -05:00
Henry Zhu
c435628b6a 5.0.0-beta1 2015-11-26 14:46:42 -05:00
Henry Zhu
72e8f9d969 Merge pull request babel/babel-eslint#202 from hzoo/babel6
Update to babel 6
2015-11-26 14:44:37 -05:00
Henry Zhu
27c9abfae5 4.1.6 2015-11-23 21:19:53 -05:00
Henry Zhu
78361c1518 skip for now 2015-11-23 21:19:08 -05:00
Henry Zhu
12dd87f96b add node 5 2015-11-23 20:38:48 -05:00
Henry Zhu
2ddb2d4c89 test for no-redeclare 2015-11-23 20:37:44 -05:00
Henry Zhu
3d901f5960 Merge pull request babel/babel-eslint#212 from evocateur/fix-with-latest-eslint
Avoid errors with eslint 1.10.x when excluding destructured properties
2015-11-23 20:33:39 -05:00
Henry Zhu
0859607b4e Merge pull request babel/babel-eslint#209 from Constellation/pattern-visitor
Patch SpreadProperty to escope's PatternVisitor
2015-11-23 13:34:48 -05:00
Henry Zhu
5352ad41c5 mention eslint-plugin-flow-vars for flow issues 2015-11-15 20:59:48 -05:00
Henry Zhu
8f9cc6b827 4.1.5 2015-11-09 21:11:56 -05:00
Henry Zhu
a294ab4545 Merge pull request babel/babel-eslint#206 from mysticatea/fix-for-eslint-1.9
Fix for ESLint@1.9 and npm@3
2015-11-09 21:04:45 -05:00
Henry Zhu
d08053d483 4.1.4 2015-11-04 09:51:00 -05:00
Henry Zhu
677d42f7ad update eslint, acorn-to-esprima 2015-11-01 10:10:08 -05:00
Henry Zhu
b4fb1d3aca test with ecmaFeatures on by default, add test for babel/babel-eslint#192
Ref babel/babel-eslint#192
2015-10-07 20:23:41 -04:00
Henry Zhu
dd8ba490ee update readme, add contributing 2015-10-07 20:11:00 -04:00
Henry Zhu
afd72ba541 update packages 2015-10-07 20:05:11 -04:00
Henry Zhu
463cda9a10 4.1.3 2015-09-17 09:42:26 -04:00
Henry Zhu
b5e0dbe8e8 check AssignmentPattern types - fixes babel/babel-eslint#184 2015-09-17 09:42:18 -04:00
Henry Zhu
6dc026c203 un-comment babel/babel-eslint#124 test 2015-09-15 09:20:14 -04:00
Henry Zhu
cc4ce5bbed add node 4 to travis 2015-09-14 14:48:14 -04:00
Henry Zhu
95c4c77df1 4.1.2 2015-09-14 14:45:10 -04:00
Henry Zhu
c0a7ebf51b fix attachComment typo, add comment tests 2015-09-14 14:26:21 -04:00
Henry Zhu
742b1cb65d Merge pull request babel/babel-eslint#182 from bryanrsmith/patch-1
fix typo in comment
2015-09-11 18:38:53 -04:00
Henry Zhu
229a1922d8 4.1.1 2015-08-31 10:23:10 -04:00
Henry Zhu
2b17528c5d Merge pull request babel/babel-eslint#180 from hzoo/master
update eslint, acorn-to-esprima - ref eslint/eslint#3596
2015-08-31 10:22:52 -04:00
Henry Zhu
61243967ac 4.1.0 2015-08-25 12:14:17 -04:00
Henry Zhu
4cdf59532d Merge pull request babel/babel-eslint#177 from hzoo/use-acorn-to-esprima
use `acorn-to-esprima` package
2015-08-25 12:11:24 -04:00
Henry Zhu
b2405a9924 lint fix, lint task 2015-08-20 15:07:05 -04:00
Henry Zhu
8812bf735e update espree, update eslintester for eslint 1.0 2015-08-20 15:04:30 -04:00
Henry Zhu
ac163a64fe do not use local 2015-08-20 14:41:06 -04:00
Henry Zhu
412aee0be0 update eslint to 1.2.0 2015-08-20 14:39:37 -04:00
Henry Zhu
fea7ef937e remove note about babel-eslint being experimental 2015-08-19 09:46:50 -04:00
Henry Zhu
03492bae52 4.0.10 2015-08-16 22:49:15 -04:00
Henry Zhu
e8c6b4e988 Merge pull request babel/babel-eslint#165 from hzoo/remove-spread-transform
use SpreadProperty type, revert other transforms
2015-08-16 22:48:56 -04:00
Henry Zhu
8d46c00125 4.0.9 2015-08-16 22:33:38 -04:00
Henry Zhu
2140a08e3e Merge pull request babel/babel-eslint#170 from hzoo/remove-super-transform
remove super transform since it should be in espree
2015-08-16 21:54:01 -04:00
Henry Zhu
d06c003344 4.0.8 2015-08-16 16:12:18 -04:00
Henry Zhu
9740af8be4 Merge pull request babel/babel-eslint#169 from hzoo/i-168
async func and space-before-function-paren
2015-08-16 16:11:57 -04:00
Henry Zhu
5b57763788 4.0.7 2015-08-15 19:49:44 -04:00
Henry Zhu
69c303ea00 Merge pull request babel/babel-eslint#166 from hzoo/remove-async-transform
remove async func transform
2015-08-15 19:49:21 -04:00
Henry Zhu
7d8de4e2ae 4.0.6 2015-08-15 09:25:14 -04:00
Henry Zhu
cd0f5ccc93 add older tests 2015-08-15 09:24:14 -04:00
Henry Zhu
6476a8d916 Merge pull request babel/babel-eslint#164 from hzoo/remove-rest-transform
Remove rest transform
2015-08-15 08:48:41 -04:00
Henry Zhu
839c5ed577 use --follow-tags 2015-08-14 22:00:25 -04:00
Henry Zhu
21294eb228 update to eslint@1.1.0 2015-08-14 22:00:10 -04:00
Henry Zhu
71ab33eff4 update to eslint 1.0.0, fix tests 2015-08-03 10:57:06 -04:00
Sebastian McKenzie
4255c0f812 4.0.5 2015-07-27 04:20:26 +01:00
Sebastian McKenzie
436716fdd7 update babel-core to 5.6.9 2015-07-27 04:20:19 +01:00
Sebastian McKenzie
f79577a7ec add Makefile 2015-07-27 04:07:19 +01:00
Sebastian McKenzie
18b029ca88 4.0.4 2015-07-27 04:04:37 +01:00
Sebastian McKenzie
2c868efbad fix range generation for template tokens - fixes babel/babel-eslint#156 2015-07-27 04:04:30 +01:00
Sebastian McKenzie
39e9fc9e40 4.0.3 2015-07-27 02:58:45 +01:00
Sebastian McKenzie
19e2f1bb33 use start/end rather than directly using range in attachComments 2015-07-27 02:58:37 +01:00
Sebastian McKenzie
af51b545ba 4.0.2 2015-07-27 02:44:56 +01:00
Sebastian McKenzie
582cf6cc8a add missing ranges 2015-07-27 02:44:49 +01:00
Sebastian McKenzie
06ccbca763 4.0.1 2015-07-27 02:21:29 +01:00
Sebastian McKenzie
56a27a0647 add range property - fixes babel/babel-eslint#155 2015-07-27 02:21:18 +01:00
Henry Zhu
4437132372 4.0.0 2015-07-25 11:08:25 -04:00
Henry Zhu
c5bbf91892 Merge pull request babel/babel-eslint#152 from bgw/line-x
Replace 'Line X' with actual line number
2015-07-25 11:08:08 -04:00
Henry Zhu
d4318aa0d8 Merge pull request babel/babel-eslint#128 from hzoo/i-124
add tests - for babel/babel-eslint#124
2015-07-25 11:00:42 -04:00
Henry Zhu
80888a1b23 3.1.27 2015-07-25 10:53:17 -04:00
Henry Zhu
8d65e3e894 Merge pull request babel/babel-eslint#154 from alexkuz/master
fix visiting filter in comprehension
2015-07-25 10:08:31 -04:00
Henry Zhu
bb29041dce 3.1.26 2015-07-22 01:35:33 -04:00
Henry Zhu
9c452f5b14 remove estraverse attach comments method, fix up tests 2015-07-22 00:36:03 -04:00
Henry Zhu
2bb5101112 add test for babel/babel-eslint#149 2015-07-21 23:57:13 -04:00
Sebastian McKenzie
ec9a75173b 3.1.25 2015-07-22 01:19:45 +01:00
Sebastian McKenzie
c551545f29 filter comment tokens - fixes babel/babel-eslint#153 2015-07-22 01:19:23 +01:00
Sebastian McKenzie
8baea68c6c 3.1.24 2015-07-21 22:34:24 +01:00
Sebastian McKenzie
e7aecdce71 convert comment node types from babel to espree - ref facebook/react#4449 2015-07-21 22:34:14 +01:00
Henry Zhu
61555c6ebd fix typo: attachComment -> attachComments 2015-07-10 18:37:45 -04:00
Henry Zhu
efef3af7b8 update readme - separate channel/signup, categorize known issues better 2015-07-09 13:11:14 -04:00
Henry Zhu
39fa1c4ac2 3.1.23 2015-07-06 10:40:56 -04:00
Henry Zhu
05f5cc3ea8 Merge pull request babel/babel-eslint#146 from hzoo/i-142-2
use node.babelType for SpreadProperty
2015-07-06 10:40:11 -04:00
Henry Zhu
f57dde1ac3 3.1.22 2015-07-06 09:38:11 -04:00
Henry Zhu
d9bf8d252e fix no-unused-vars issue with spread
Use a private _spread property on Property node instead of SpreadProperty

Fixes https://github.com/babel/babel-eslint/issues/142#issuecomment-118707124
2015-07-06 09:36:34 -04:00
Henry Zhu
8c4adbf98d 3.1.21 2015-07-05 22:08:19 -04:00
Henry Zhu
4e884f439e Merge pull request babel/babel-eslint#143 from hzoo/i-142
only visit properties in object destructuring when there is a SpreadP…
2015-07-05 22:06:15 -04:00
Henry Zhu
78a7af3c0a add known issue for babel/babel-eslint#130 - no-undef for global flow types 2015-07-01 11:38:00 -04:00
Henry Zhu
b26b8efca4 add known issue for babel/babel-eslint#136 2015-07-01 11:27:42 -04:00
Henry Zhu
0de11015cc update devDep eslint@0.24.0 2015-06-29 14:19:06 -04:00
Henry Zhu
6b05576d99 3.1.20 2015-06-29 13:51:50 -04:00
Henry Zhu
dee7261bbe Merge pull request babel/babel-eslint#140 from hzoo/i-138
create scope for each comprehension - fixes babel/babel-eslint#138
2015-06-29 13:48:19 -04:00
Sebastian McKenzie
1502bf6a2d 3.1.19 2015-06-26 15:06:21 +01:00
Sebastian McKenzie
e72e79694f attempt to resolve estraverse relative to esrecurse if found - this is necessary because of the tree flattening in npm 3 2015-06-26 15:06:18 +01:00
Henry Zhu
b05ae77e41 3.1.18 2015-06-23 18:32:44 -04:00
Henry Zhu
7ff5dd56e8 Merge pull request babel/babel-eslint#135 from PiPeep/fix-jest
Fix eslint module path resolution in jest
2015-06-23 18:32:09 -04:00
Henry Zhu
c22414c1fd fix tests after updating babel 2015-06-22 17:00:31 -04:00
Henry Zhu
96a9af0a06 update eslint, update tests 2015-06-22 16:48:51 -04:00
Henry Zhu
cec51daa04 add message about using eslint-plugin-babel 2015-06-18 21:22:59 -04:00
Henry Zhu
c3b0bb21e9 3.1.17 2015-06-17 20:32:16 -04:00
Henry Zhu
cf57c817cb Known Issues: add flow declarations with 'no-unused-vars' 2015-06-17 20:31:58 -04:00
Henry Zhu
0de733b66a flow: create var declaration for flow declarations 2015-06-17 09:18:51 -04:00
Henry Zhu
d16f726b15 3.1.16 2015-06-17 07:18:47 -04:00
Henry Zhu
d224153cba Merge pull request babel/babel-eslint#133 from hzoo/i-132
support flow declarations correctly, lint - fixes babel/babel-eslint#132
2015-06-17 07:17:26 -04:00
Henry Zhu
da3d4bf537 Known Issue: object-shorthand with spread operator 2015-06-15 20:25:44 -04:00
Henry Zhu
0c47ebe881 fix build.. 2015-06-10 17:11:21 -04:00
Henry Zhu
eaec0f1595 remove uneeded param 2015-06-10 17:07:53 -04:00
Henry Zhu
d5e2ac1fb6 3.1.15 2015-06-09 15:01:13 -04:00
Henry Zhu
1c25c8eed3 Merge pull request babel/babel-eslint#126 from leebyron/fix-flow-type
Fixes flow type scoping issues - fixes babel/babel-eslint#123
2015-06-09 15:00:38 -04:00
Henry Zhu
d83aa7f6ce clarify known eslint issues, add to link slack channel for questions 2015-06-08 09:41:12 -04:00
Henry Zhu
4ba3178d8e Merge pull request babel/babel-eslint#116 from hzoo/eslint-tests
Add eslint submodule to run eslint tests - Ref babel/babel-eslint#62
2015-06-08 09:37:55 -04:00
Henry Zhu
5d23153aed 3.1.14 2015-06-06 16:55:00 -04:00
Henry Zhu
adc009b832 Merge pull request babel/babel-eslint#122 from hzoo/i-95
visit properties in ObjectPattern - fixes babel/babel-eslint#95
2015-06-06 16:54:05 -04:00
Henry Zhu
c15a7c6b65 lint: fix quotes, rule 2015-06-06 09:21:23 -04:00
Henry Zhu
face6ff6af add lint config from babel, lint 2015-06-06 09:14:24 -04:00
Henry Zhu
c38ea387e5 3.1.13 2015-06-05 05:29:59 -04:00
Henry Zhu
84a8d342f2 Merge pull request babel/babel-eslint#121 from hzoo/i-120
don't visit var decl - fixes babel/babel-eslint#120
2015-06-05 05:24:20 -04:00
Sebastian McKenzie
8d3a7244c3 3.1.12 2015-06-05 10:00:26 +01:00
Sebastian McKenzie
b10c9b0357 update to babel 5.5.1 2015-06-05 10:00:15 +01:00
Henry Zhu
6bcdfb11cc 3.1.11 2015-06-03 17:13:06 -04:00
Henry Zhu
6a2938deaa Merge pull request babel/babel-eslint#118 from hzoo/poly-types
add flow exceptions for polymorphic types (<A>) - Ref babel/babel-eslint#109
2015-06-03 17:11:28 -04:00
Henry Zhu
ade0b3b21b Merge pull request babel/babel-eslint#114 from hzoo/i-9
support comprehensions (no-undef) - fixes babel/babel-eslint#9
2015-06-03 17:06:42 -04:00
Henry Zhu
e6ba27075e 3.1.10 2015-06-01 21:18:54 -04:00
Henry Zhu
a4f6edab85 Merge pull request babel/babel-eslint#109 from hzoo/i-108
visit flow types - fixes babel/babel-eslint#108
2015-06-01 21:16:02 -04:00
Henry Zhu
866a77a8cc Merge pull request babel/babel-eslint#117 from hzoo/eslint-0.22.1
update to eslint@0.22.1
2015-06-01 21:14:33 -04:00
Sebastian McKenzie
b95ea1092e 3.1.9 2015-05-25 05:48:21 +01:00
Sebastian McKenzie
7f0ce79fae Merge pull request babel/babel-eslint#113 from babel/paths
Use Path-based introspection methods rather than node-based
2015-05-25 05:48:08 +01:00
Henry Zhu
813ede0cd5 3.1.8 2015-05-22 21:05:00 -04:00
Henry Zhu
b845304ce2 update readme about issues/jsx 2015-05-22 21:04:00 -04:00
Henry Zhu
9cc077638a add all espree ecmaFeatures, fixes babel/babel-eslint#31 again 2015-05-21 07:46:01 -04:00
Henry Zhu
573020678a 3.1.7 2015-05-21 06:51:52 -04:00
Henry Zhu
48c23ad8ef remove from dependency (update devDependency 2015-05-21 06:51:17 -04:00
Henry Zhu
1230588b98 3.1.6 2015-05-20 19:06:06 -04:00
Henry Zhu
0e50a0b6e0 Merge pull request babel/babel-eslint#105 from hzoo/visit-decorators
patch escope to visit decorators - fixes babel/babel-eslint#72
2015-05-20 19:03:56 -04:00
Henry Zhu
80114dda35 Merge pull request babel/babel-eslint#107 from hzoo/update-eslint
eslint@0.21.2
2015-05-20 18:14:18 -04:00
Henry Zhu
a5f9a8fea0 3.1.5 2015-05-17 17:13:40 -04:00
Henry Zhu
7fa06fa566 add test for babel/babel-eslint#66 2015-05-16 23:26:48 -04:00
Henry Zhu
47a771a7b1 Merge pull request babel/babel-eslint#100 from babel/es7.functionBind
add ES7 function bind (::) as Punctuator
2015-05-16 23:23:28 -04:00
Henry Zhu
82f3fe4147 Merge pull request babel/babel-eslint#101 from hzoo/more-jsx
add JSXText type, more tests
2015-05-16 23:22:53 -04:00
Sebastian McKenzie
54adf244dd 3.1.4 2015-05-16 23:17:12 +01:00
Sebastian McKenzie
b699e4f2aa add support for type cast expressions - fixes babel/babel-eslint#102 2015-05-16 23:17:03 +01:00
Sebastian McKenzie
5ba504f809 3.1.3 2015-05-15 20:55:56 +01:00
Henry Zhu
730f2528dc Merge pull request babel/babel-eslint#97 from hzoo/fix-templates
fix template type issues
2015-05-15 14:42:28 -04:00
Sebastian McKenzie
9731e496c8 3.1.2 2015-05-14 21:39:13 +01:00
Sebastian McKenzie
d84fc559f2 Merge pull request babel/babel-eslint#94 from hzoo/support-templates
support template strings - Fixes babel/babel-eslint#31
2015-05-14 21:38:56 +01:00
Sebastian McKenzie
527287aa29 Merge pull request babel/babel-eslint#93 from hzoo/tokenTypes
add tokenTypes: Null, Boolean, RegularExpression
2015-05-13 00:27:19 +01:00
Sebastian McKenzie
758e8d40e5 Merge pull request babel/babel-eslint#90 from hzoo/morePunctuatorTypes
change more tokentypes to be punctuator - fixes babel/babel-eslint#59
2015-05-11 08:15:41 +01:00
Sebastian McKenzie
0f13e5708b 3.1.1 2015-05-07 13:49:05 +01:00
Sebastian McKenzie
77c5b0f3b7 Merge pull request babel/babel-eslint#86 from hzoo/patchestraverse-fb
also patch estraverse-fb - fixes babel/babel-eslint#73
2015-05-07 13:48:32 +01:00
Sebastian McKenzie
e571aec2ff 3.1.0 2015-05-06 17:19:48 +01:00
Sebastian McKenzie
46f65bcf49 Merge pull request babel/babel-eslint#76 from Cellule/attach_comments
Attach comments to ast using estraverse
2015-05-06 17:19:30 +01:00
Sebastian McKenzie
47c1673092 remove flow types and class property keys 2015-04-13 18:05:58 -07:00
Sebastian McKenzie
d301c8e099 upgrade to babel 5.1.8 2015-04-13 17:12:08 -07:00
Sebastian McKenzie
729cedc925 Merge branch 'master' of github.com:babel/babel-eslint 2015-04-08 22:07:28 -07:00
Sebastian McKenzie
4a531aaba4 port to babel 5.0.0 2015-04-08 22:07:21 -07:00
Sebastian McKenzie
ded2e420b1 bump version 2015-03-16 12:49:43 +11:00
Sebastian McKenzie
b9ae556f9f add sourceType property 2015-03-16 12:49:38 +11:00
Sebastian McKenzie
ce91f1869b Merge pull request babel/babel-eslint#50 from UltCombo/fix-48
acorn-to-esprima: fix ExportNamedDeclaration, closes babel/babel-eslint#48
2015-03-16 12:42:57 +11:00
Sebastian McKenzie
0d0cc6bb83 Merge pull request babel/babel-eslint#44 from Globegitter/patch-1
Added global flag to install command
2015-03-11 21:35:12 +11:00
Sebastian McKenzie
665f0d6002 upgrade babel-core to 4.7.8 2015-03-11 01:15:32 +11:00
Sebastian McKenzie
fcb367666d add class usage non regression test 2015-03-11 01:15:15 +11:00
Sebastian McKenzie
cbe8c84ec1 add messages to non regression test output 2015-03-11 00:40:11 +11:00
Sebastian McKenzie
3fced333e8 bump to 2.0.0 2015-03-11 00:40:00 +11:00
Sebastian McKenzie
6762396aec fix module conversion 2015-03-11 00:35:00 +11:00
Sebastian McKenzie
7625971974 Merge branch 'master' of github.com:babel/babel-eslint 2015-03-11 00:17:22 +11:00
Sebastian McKenzie
24eef21756 convert playground assignment operators - fixes babel/babel-eslint#40 2015-03-11 00:15:07 +11:00
Sebastian McKenzie
64b63e44bf update to babel-core and eslint 0.16 2015-03-11 00:13:34 +11:00
Sebastian McKenzie
47e3808aa4 update to eslint 0.16, remove certain mangling 2015-03-10 18:18:35 +11:00
Sebastian McKenzie
78ca83eb6f 1.0.14 2015-03-09 02:46:17 +11:00
Sebastian McKenzie
6556b06f23 Merge branch 'master' of github.com:babel/babel-eslint 2015-03-09 02:45:56 +11:00
Sebastian McKenzie
a31835836d bump version 2015-03-04 22:29:49 +11:00
Sebastian McKenzie
71a5782ab7 make spread properties computed - fixes babel/babel-eslint#16 2015-03-02 12:31:08 +11:00
Sebastian McKenzie
9a77a7dbaa ensure function expression body is a block statement - fixes babel/babel-eslint#20 2015-03-02 12:25:08 +11:00
Sebastian McKenzie
955dd1e126 turn async functions into generators - fixes babel/babel-eslint#22 2015-03-02 12:04:59 +11:00
Sebastian McKenzie
02f4f5e885 turn super references into a this expression - fixes babel/babel-eslint#10 2015-02-28 17:37:12 +11:00
Sebastian McKenzie
e08a0fab99 Merge branch 'master' of github.com:babel/babel-eslint 2015-02-28 17:07:28 +11:00
Sebastian McKenzie
e4cee14aa6 better XJSIdentifier -> Identifier logic - fixes babel/babel-eslint#12 2015-02-28 17:07:11 +11:00
Sebastian McKenzie
0f1910891d explode all rest elements - fixes babel/babel-eslint#11 2015-02-28 16:33:21 +11:00
Sebastian McKenzie
1cc579cb5d move up explantory paragraph 2015-02-28 12:09:20 +11:00
Sebastian McKenzie
e891659b21 bump version 2015-02-28 12:07:33 +11:00
Sebastian McKenzie
bde03060a5 remove ClassDeclaration transformation 2015-02-28 12:07:21 +11:00
Sebastian McKenzie
24aa904d99 add how does it work section to readme 2015-02-28 12:03:01 +11:00
Sebastian McKenzie
5b2df4ce30 bump version 2015-02-28 11:59:26 +11:00
Sebastian McKenzie
1ca488c3ec turn class declarations into variable declarations - fixes babel/babel-eslint#8 2015-02-28 11:58:56 +11:00
Sebastian McKenzie
9117398452 bump version 2015-02-28 11:50:44 +11:00
Sebastian McKenzie
1d1d7a5145 transform JSX identifiers and member expressions - fixes babel/babel-eslint#5 2015-02-28 11:31:54 +11:00
Sebastian McKenzie
a14e1e8fd1 clean up toAst method and properly transform rest elements away - fixes babel/babel-eslint#7 2015-02-28 11:28:22 +11:00
Sebastian McKenzie
932d799e28 pop off last token which will be an EOF, currently not used anywhere by espree and it runs into issues with some rules - fixes babel/babel-eslint#2 2015-02-27 23:40:59 +11:00
Sebastian McKenzie
be9da7ef08 output esprima compatible error messages - fixes babel/babel-eslint#3 2015-02-27 23:23:15 +11:00
Sebastian McKenzie
65a6fce75c turn ArrowFunctionExpression into a FunctionExpression - fixes babel/babel-eslint#1 2015-02-27 23:06:47 +11:00
Sebastian McKenzie
041c7e246f add support for spread property 2015-02-27 22:40:56 +11:00
Sebastian McKenzie
5c226d0451 add more comments to acorn-to-esprima source 2015-02-27 21:57:03 +11:00
Sebastian McKenzie
d70e358a94 clean up readme 2015-02-27 21:49:54 +11:00
Sebastian McKenzie
5d5c7c6ae1 first commit 2015-02-27 21:44:06 +11:00
Daniel Tschinder
b0fcf28267 9.0.0 2019-02-10 14:19:02 -08:00
Daniel Tschinder
3a5d6ee433 Update peer dependencies and allow babel-eslint 11 2019-02-10 14:17:27 -08:00
Brian Ng
7c39f9477f 8.0.2 2018-11-21 09:10:50 -06:00
Brian Ng
0076d85f5d Relax eslint-plugin-flowtype peerDep 2018-11-21 09:04:12 -06:00
Brian Ng
ad2ca8dd4b Merge tag 'v8.0.1'
8.0.1
2018-11-21 09:09:28 -06:00
Brian Ng
a3230ce730 Merge pull request babel/eslint-config-babel#29 from babel/babel-eslint 2018-09-25 16:24:38 -05:00
Brian Ng
e13c2f535c 8.0.0 2018-09-11 11:20:13 -05:00
Brian Ng
7499b0cab0 Merge pull request babel/eslint-config-babel#20 from babel/existentialism-patch-1 2018-09-11 10:28:37 -05:00
Brian Ng
74d47288c0 Merge pull request babel/eslint-config-babel#28 from babel/b 2018-09-11 10:28:24 -05:00
Henry Zhu
a47d722c07 7.0.2 2017-08-07 19:59:01 -04:00
Brian Ng
85d858984b Update babel-eslint peer dep (babel/eslint-config-babel#25) 2017-08-07 18:58:40 -05:00
Henry Zhu
794e8b12eb 7.0.1 2017-06-17 14:53:43 -04:00
Brian Ng
288a74e55f Re-add es6 env option (babel/eslint-config-babel#24) 2017-06-17 13:53:32 -05:00
Henry Zhu
4b35717b04 7.0.0 2017-06-17 14:35:27 -04:00
Brian Ng
a2f678151d Breaking: Drop style rules (babel/eslint-config-babel#22)
* Drop style rules

* es tweaks

* fix

* Update index.js
2017-06-17 13:35:03 -05:00
Daniel Tschinder
8a527d1ef5 Enable comma-dangle (babel/eslint-config-babel#19) 2017-02-20 17:45:06 +01:00
Daniel Tschinder
1ce807d5de Enable key-spacing and no-multi-spaces (babel/eslint-config-babel#18)
Fixes babel/eslint-config-babel#16
2017-02-20 17:14:45 +01:00
Daniel Tschinder
773c340514 Add func-call-spacing rule (babel/eslint-config-babel#15) 2017-02-20 16:59:50 +01:00
Henry Zhu
50122b7078 6.0.0 2017-01-14 16:01:07 -05:00
Daniel Tschinder
3bbc507a3f Add object-curly-spacing rule (babel/eslint-config-babel#14)
Fixes babel/eslint-config-babel#12
2017-01-14 22:00:42 +01:00
Henry Zhu
cada67daeb 5.0.0 2017-01-14 07:54:17 -05:00
Daniel Tschinder
af4dcb616d better indent switch, iife, multiline functions (babel/eslint-config-babel#10) 2017-01-14 13:51:41 +01:00
Daniel Tschinder
d4a1e97249 Add comma-spacing rule (babel/eslint-config-babel#11) 2017-01-14 13:51:22 +01:00
Kai Cataldo
292003444d peerDeps: remove eslint-plugin-babel (babel/eslint-config-babel#13) 2017-01-14 07:51:07 -05:00
Henry Zhu
d9b467403a 4.0.1 2017-01-10 12:27:01 -05:00
Henry Zhu
ff304c3890 fix 2017-01-10 12:26:45 -05:00
Henry Zhu
42ad818e3f 4.0.0 2017-01-08 22:19:51 -05:00
Henry Zhu
6117b83b55 Merge pull request babel/eslint-config-babel#9 from kaicataldo/prefer-const
Enable prefer-const
2017-01-08 22:19:01 -05:00
Henry Zhu
1f4e239217 3.0.0 2016-11-17 18:03:35 -05:00
Henry Zhu
4819beb149 use builtin (babel/eslint-config-babel#8)
* use built-in

* Update package.json
2016-11-17 18:03:01 -05:00
Henry Zhu
9279489413 2.0.1 2016-10-05 16:36:03 -04:00
Dan Harper
1536dfda0a flowtype plugin (babel/eslint-config-babel#6) 2016-10-05 21:35:44 +01:00
Henry Zhu
b2b1416fbc 2.0.0 2016-10-05 16:32:27 -04:00
Henry Zhu
c3bc500240 update info/links 2016-10-05 16:32:19 -04:00
Daniel Tschinder
0f87764827 Ensure unix line endings (babel/eslint-config-babel#4) 2016-10-01 18:12:35 +02:00
Daniel Tschinder
978f3392c5 Do not allow trailing spaces (babel/eslint-config-babel#3) 2016-10-01 18:12:29 +02:00
Henry Zhu
c88f903374 readme [skip ci] 2016-09-24 02:10:40 -04:00
Daniel Tschinder
edcf1b59dd Exchange flow plugin with new one (babel/eslint-config-babel#2)
* Change to eslint-plugin-flowtype

* Use new plugin

* Make dependencies peerDependencies

* Readd babel-eslint
2016-09-24 08:09:47 +02:00
Henry Zhu
b95c7aa556 1.0.2 2016-09-02 18:49:34 -04:00
Bo Borgerson
bfa69bbdb6 Add the "space-infix-ops" rule (babel/eslint-config-babel#1)
Require whitespace around infix operators.

The babel code base already mostly satisfies this.  Nice to keep it that way.

This is used by Lerna, too.
2016-09-02 15:48:46 -07:00
Henry Zhu
5706f0531b 1.0.1 2016-06-29 17:33:34 -04:00
Henry Zhu
a48f2e209c fix bug with config, use other way of specifying severity 2016-06-29 17:33:26 -04:00
Henry Zhu
13feb7278e init 2016-06-29 16:40:35 -04:00
Kai Cataldo
15b0283650 2019-11-13 19:40:27 -05:00
Huáng Jùnliàng
e1839e5ec9 Circumvent typeof transform for umd build template (#10701)
* add test case

* fix: circumvent typeof transform

* chore: update test fixtures
2019-11-13 22:47:56 +01:00
Jaideep Bhoosreddy
433b6ba3a4 Ignore PR job on master branch (#10702) 2019-11-13 21:42:44 +01:00
ZYSzys
1d1101eb7c Add missing flow type to babel-cli for consistency (#10692) 2019-11-13 17:39:19 +01:00
Jaideep Bhoosreddy
67ea7f4b4d Implement PR workflow for running test262 on babel PRs (#10579)
* Implement PR workflow with test262

* revisions
2019-11-13 17:31:29 +01:00
Huáng Jùnliàng
7633f09479 Babel should not silently remove unknown options after command… (#10698)
* chore: add test case

* chore: bump commander to 4.0.1

* fix: let commander.js throw on unknown options after args
2019-11-13 00:25:24 +01:00
Huáng Jùnliàng
ce070ce422 bump @babel/* dev dependencies (#10648)
* bump @babel/* dev dependencies

* chore: align version to @babel/runtime

* chore: bump to 7.7.1

* chore: bump to 7.7.2
2019-11-13 00:05:38 +01:00
Nicolò Ribaudo
f71338baf9 E2E test Babel with itself before publishing (#10569)
* Add e2e test using Babel itself

* Make checks run again
2019-11-12 23:55:36 +01:00
Shriram Balaji
ecad667dda Fix optional method chaining in derived classes (#10694) 2019-11-12 10:28:40 -06:00
4geru koichi uchinishi
d9fd07929a chore: add missing new line to fixture (#10697) 2019-11-12 11:08:35 -05:00
Huáng Jùnliàng
d413a3078c Add asserts this [is type] parsing support (#10677) 2019-11-11 16:36:10 -06:00
Sakibul Mowla
4cb5e0a013 Allow TypeScript type assertions in array destructuring (#10592)
* Add test

* Add fix

* Fix test, destructure with as assertion

* Add angle-bracket assertion case

* Use isBinding to make typeCastToParameter decision
2019-11-11 22:38:13 +01:00
Benjamin Blackwood
b2767c7d8a Add funding field to package.json (#10687) [ci-skip] 2019-11-11 08:08:18 -05:00
Mohammad Ahmadi
8e5f2dc929 corrected the grammar of an option description (#10691)
* grammar correction of an option description

(missed in #10589)

* changed description to be consistent with others

Co-Authored-By: Huáng Jùnliàng <jlhwung@gmail.com>

* ran prettier
2019-11-11 12:39:36 +03:00
Kenza Houmani
2b082601a7 Fix parentheses on replaceWithMultiple for JSX (#10598)
* Closes #9851 Fix parentheses on replaceWithMultiple for JSX

* Rename test

* Use generate(ast) directly
2019-11-11 12:36:17 +03:00
chrishinrichs
70c0ed512a Fix: Don't call Object.keys on non-objects (babel#10482) (#10683) 2019-11-08 21:31:46 -06:00
Babel Bot
8c2ed89aaa Add v7.7.3 to CHANGELOG.md [skip ci] 2019-11-08 20:52:12 +00:00
Nicolò Ribaudo
e315d65a7a v7.7.3 2019-11-08 23:45:00 +03:00
Nicolò Ribaudo
0287c0f02f Don't recover from "adjacent jsx elements" parser error (#10682) 2019-11-08 23:23:04 +03:00
Babel Bot
c2bace4b73 Add v7.7.2 to CHANGELOG.md [skip ci] 2019-11-06 23:28:38 +00:00
Nicolò Ribaudo
35f4d12763 v7.7.2 2019-11-07 02:20:52 +03:00
Nicolò Ribaudo
9082e68d6f Parse arrows with params annotations in conditional expressions (#10669) 2019-11-07 02:18:36 +03:00
Vojtech Miksu
bdb4318f47 chore: update convert-source-map dep (#10667) 2019-11-06 14:30:32 -06:00
Maksim Ryzhikov
3ab035bab6 fix: Use the recommended property to specify repository URL (#10665) [ci-skip]
Use recommended by npm property to specify repository URL
https://docs.npmjs.com/files/package.json#repository

Otherwise, it breaks some tools which relay on this convention for example "nlf" package
https://github.com/iandotkelly/nlf/blob/master/lib/nlf.js#L284-L285
2019-11-06 07:34:09 -05:00
Leonid Shevtsov
2cd5ad0c80 fix typo: identifer -> identifier (#10647) 2019-11-06 09:13:08 +01:00
Huáng Jùnliàng
2640e5a27c fix: remove accessibility of constructor (#10658) 2019-11-05 13:52:57 -06:00
Huáng Jùnliàng
0f949990c3 fix: add inList setter for compatibility with babel-minify (#10656) 2019-11-05 12:28:16 -05:00
njlr
f544753bb8 code style: consistent spacing (#10643) [ci-skip]
Makes spacing consistent
2019-11-05 09:40:57 -05:00
Babel Bot
d3db02da30 Add v7.7.1 to CHANGELOG.md [skip ci] 2019-11-05 13:50:36 +00:00
Nicolò Ribaudo
42c8e0fb2f v7.7.1 2019-11-05 14:44:00 +01:00
Nicolò Ribaudo
bf48fca6a0 Revert "throw a TypeError if identifier validation fails (#106… (#10650)
This reverts commit c7d8b8a377.
2019-11-05 14:43:23 +01:00
Archer
f8eb290da1 Fix(babel-preset-env): check api.caller is a function to avoid… (#10649) 2019-11-05 14:39:14 +01:00
Nicolò Ribaudo
5f2240e7ab Add v7.7.0 to CHANGELOG.md [skip ci] 2019-11-05 12:06:52 +01:00
Nicolò Ribaudo
97faa83953 v7.7.0 2019-11-05 11:27:14 +01:00
Nicolò Ribaudo
cdbffe3990 Remove --require-scripts from publish-ci [skip ci] 2019-11-05 11:25:29 +01:00
Huáng Jùnliàng
b114486bc1 Traverse performance (#10480)
* perf: remove this.inList assignment

* perf: convert NodePath.parentKey into accessor function

* perf: compress shouldSkip/shouldStop/removed traverse flags

* perf: lazy initialize this.skipKeys

* perf: lazily initialize NodePath.data

* add code comments before bit operations

* remove unused typeAnnotation property

# Conflicts:
#	packages/babel-traverse/src/path/index.js

* early return when visitor keys are empty
2019-11-05 11:11:58 +01:00
Nicolò Ribaudo
e9c1bce50f Add support for TS declare modifier on fields (#10545)
* [parser] Add support for TS declare modifier on fields (#10484)

* [parser] Add support for TS declare modifier on fields

* Use Object.create(null)

* Comment

* Add support for TS declare types to types and generator (#10544)

* Transform TypeScript "declare" fields (#10546)

* Transform TypeScript "declare" fields

* Remove multiple spaces

* declareFields -> allowDeclareFields

* Update after rebase
2019-11-05 10:56:57 +01:00
Nicolò Ribaudo
87feda7c2a @babel/parser error recovery (#10363)
* Add error recovery support to @babel/parser

* Update @babel/parser tests to always recover from errors

* Update this.raise usage in @babel/parser:

- expression.js
- lval.js
- statement.js
- estree.js
- flow.js
- jsx/index.js
- tokenizer/index.js

* Update @babel/parser fixtures with recovered errors

* Fix tests out of @babel/parser

* Do not use try/catch for control flow

* Update invalid fixtures

* Do not report invalid lhs in toAssignable

* Do not validate function id multiple times

* Dedupe reserved await errors

* Remove duplicate errors about strict reserved bindings

* Remove duplicated error about yield/await inside params

* Don't error twice for methods in object patterns

* Don't report invalid super() twice

* Remove dup error about reserved param for expr arrows

* Remove double escapes in migrated tests

* Dedupe errors about invalid escapes in identifiers

* Remove duplicated error about decorated constructor

* Remove duplicated error about spread in flow class

* Don't throw for invalid super usage

* Don't fail for object decorators with stage 2

* Fix flow inexact type errors

* Fix flow

* Fix errors about escapes in keywords (ref: #10455)

* Update after rebase

* Fix todo

* Remove duplicated error when using += for defaults

* Remove unnecessary throw

* Nit: use ??
2019-11-05 10:15:00 +01:00
Nicolò Ribaudo
d25262ec4b Correctly delegate .return() in async generator (#10422)
* Correctly delegate .return() in async generator

* Add catch param

* minNodeVersion

* Add another test
2019-11-05 00:35:40 +01:00
Nicolò Ribaudo
861844761f [preset-env] Don't use async-to-generator when already using re… (#9481)
* [preset-env] Don't use async-to-generator when already using regenerator

* Add tests

* Update fixtures
2019-11-04 22:53:53 +01:00
Nicolò Ribaudo
43aa7e262c Don't throw when destructuring into a var named as an import (#10628) 2019-11-04 22:50:36 +01:00
Huáng Jùnliàng
5e24016623 fix: remove ExportNamedDeclaration when the specifier is empty (#10638) 2019-11-04 21:51:24 +01:00
Nicolò Ribaudo
d023e105b7 [TS] Parse calls with type args in optional chains (#10631)
* [TS] Parse calls with type args in optional chains

* Test output
2019-11-04 13:25:15 -05:00
Nicolò Ribaudo
abce0ef49d [TS] Correctly transform computed strings and templates in enums (#10555)
* [TS] Correctly transform computed strings and templates in enums

* Typo [skip ci]
2019-11-04 13:22:49 -05:00
Chris Garrett
5c0d8a9de7 add legacy decorators support to strict class fields (#10616)
This PR allows legacy decorators to work with strict class fields, which
are now stage 3 and have shipped in a number of browsers. Allowing this will
allow users of the legacy transform (which is currently recommended by the
champions of the decorator proposal) to use the proper class field semantics
for non-decorated fields, which should help prevent breakage later on.

This change is not a breaking change, since users had to explicitly opt into
loose mode in class fields before. This just gives them the option to remove
that opt-in.
2019-11-04 13:05:42 -05:00
Nicolò Ribaudo
bea1b0d0af Add support for .cjs config files (#10599)
* Remove duplicate config loading logic and errors

* Add support for .cjs config files

* Add tests

* [tests] Fallback for fs.promises on node 6
2019-11-04 00:24:44 +01:00
Mohammad Ahmadi
58a646be59 corrected the grammar of option descriptions (#10589)
* corrected the grammar of option descriptions

* added comment
2019-11-04 00:24:00 +01:00
Martin Forsgren
c7d8b8a377 throw a TypeError if identifier validation fails (#10621)
* throw a TypeError if Identifier validation fails

* Relax identifier validation, reserved words are ok
2019-11-02 12:04:16 +01:00
Huáng Jùnliàng
d08702c9d2 inputSourceMap should work when it is in an external file (#10623)
* fix: construct comment block for fromMapFileComment

* add test

* small tweak: redundant capturing group
2019-10-31 16:12:44 -04:00
Huáng Jùnliàng
a2b5437b01 chore: remove output-file-sync dependency (#10619) 2019-10-31 11:51:36 -07:00
Linus Unnebäck
0b0edc3e3d chore: bump source-map-support to 0.5.16 (#10615) 2019-10-30 07:56:52 -04:00
Huáng Jùnliàng
e419e5fe42 chore: bump source-map-support to 0.5.14 (#10614) 2019-10-29 19:19:16 -04:00
Nicolò Ribaudo
4e6a4b08bb Create @babel/plugin-syntax-top-level-await (#10573) 2019-10-29 23:27:56 +01:00
Ivan Medina
3d2f365074 [transform-react-jsx] Add useSpread option to transform JSX (#10572)
* [transform-react-jsx] Add useSpread option to transform JSX

* Add validation for default option

* Add error when using useSpread and useBuiltIns at the same time

* Move useSpread to convertAttribute helper function

* Add useSpread option to presect-react

* Remove casting useSpread to boolean in preset-react option.

Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2019-10-29 23:02:53 +01:00
Huáng Jùnliàng
8ffca0475a Merge multiple regex transform plugin (#10447)
* feat: implement create-regexp-features-plugin

* fix: test input is not effective

* refactor: leverage create-regexp-features-plugin

* test: add more test cases

* test: update test fixture

* chore: add type annotation to features

* test: add regression test for issue 9892

* add regression test for issue 9199

* address review comments from Nicolò

* address review comments from Brian

* small tweaks

* Enable dotAllFlag when flags includes u
2019-10-29 22:58:04 +01:00
George Zahariev
ec3345bb57 Flow enums parsing (#10344)
* Flow enums parsing

* Parse exporting enums

* Enums parsing remove lookahead, other improvements

* Enums: add EnumBody and EnumMember aliases, change boolean members to use BooleaLiteral value

* Fix enum member init flow type, now that boolean members have a BooleanLiteral value

* Flow enums: use contextual utils, change members length checks to use logic operators, remove reserved word logic modification

* Flow enums: remove unnecessary code in generator, fix error message
2019-10-29 22:55:12 +01:00
Vivek Nayyar
4b3a19ea9f fixed missing errors on assignment pattern in object expression (#10607)
* 🐛 fixed missing errors on assignment pattern in object expression

* ♻️ remove a non-needed comment

* 🐛 missed adding comma in the test input

* 🐛 fixed the failing valid-property-initializer test
2019-10-29 22:32:02 +01:00
Micah Zoltu
198b4a0fbd Changes UMD callsite to be more likely to pass in the intended… (#10477)
* Changes UMD callsite to be more likely to pass in the intended object.

Fixes #10476
Note: This PR should be considered pseudocode and used as an illustration of the proposed fix.  I do not know nearly enough about this project to know if this is an appropriate solution to the problem, nor do I have the confidence to update the tests appropriately.

* Update tests
2019-10-29 22:19:49 +01:00
Nicolò Ribaudo
143d159982 Create parser plugin "topLevelAwait" (#10449)
* Create parser plugin "topLevelAwait"

* Update test262 whitelist

* Update ts typings

* Fix "sourceType: unambiguous" with TLA

* Ambiguous tokens after await

* Update await %x(0)

* typo [skip ci]

* Typo [skip ci]

Co-Authored-By: Brian Ng <bng412@gmail.com>
2019-10-29 22:18:39 +01:00
Georgii Dolzhykov
63f9a3c946 rename assertsModifier to asserts (#10613)
see https://github.com/babel/babel/pull/10543#issuecomment-547571501
2019-10-29 16:25:42 -04:00
Devon Govett
3a5e8a8dd4 Add support for babel.config.json (#10501)
* Add support for babel.config.json root config

* Throw if multiple configuration files are found

* Add tests
2019-10-29 19:37:50 +01:00
Tan Li Hau
38a3063111 add assertions signature for TypeScript (#10543)
* add asserts predicate

* fix flow

* babel-generator for typescript assertions

* babel-types for typescript assertions

* asserts modifier as boolean
2019-10-29 18:51:33 +01:00
Nicolò Ribaudo
4cd93ab5f3 [parser] Enable "exportNamespaceFrom" by default (#10521) 2019-10-29 18:44:32 +01:00
Eugene Myunster
d248e2d188 moving proposalNullishCoalescingOperator and proposalOptionalChaining to stage 3 (#10590) 2019-10-29 18:44:01 +01:00
Nicolò Ribaudo
f47fbd5f39 Nit: Use ?. in the example used by the proposal readme (#10604) 2019-10-29 18:35:15 +01:00
Bogdan Chadkin
be0fcaaf49 Make dir for babel --out-file (#8622)
* Make dir for babel --out-file

Currently there's unexpected regression after upgrade from babel 6.
On creating file with any depth like dist/index.js the error about
not existing directory is thrown.

In this diff I modified babel-cli to create deep directory for out-file
command.

I also replaced `mkdirp` with more supported `make-dir` package which
also have official promise support.

* Fix test
2019-10-29 18:29:45 +01:00
彭驰
4e5ac1fd5c Fix #8326, add back --quiet option. (#10399)
* Fix issue #8326, quiet the @babel/cli with --quiet cli option.

* --quiet and --verbose options now conflict with each other.
2019-10-29 18:28:52 +01:00
Nicolò Ribaudo
1d1fab4ea2 [parser] Add support for private fields in TypeScript (#10483)
* [parser] Add support for private fields in TypeScript

* Fix flow
2019-10-29 18:27:54 +01:00
Simen Bekkhus
f1bc6c4e18 feat: if code frame error is on a single line, highlight the w… (#10361)
* feat: if code frame error is on a single line, highlight the whole path

* flow
2019-10-29 18:23:54 +01:00
gr
b6ef9689b2 [parser] Parse only modifiers of actual methods (#10594)
* Parse only modifiers of actual methods

* Throw question token if is used before the real name
2019-10-29 17:56:05 +01:00
Huáng Jùnliàng
01927babe2 chore: update web.immediate support fixtures (#10612) 2019-10-29 16:23:59 +01:00
Mateusz Burzyński
9ada30c207 Use .find instead of .filter to get targetPath in ImportInjector (#10608) 2019-10-27 15:09:03 -04:00
ExE Boss
43065a9e24 fix(babel‑helpers/interopRequireWildcard): Avoid double nullis… (#10585)
* fix(babel‑helpers/interopRequireWildcard): Avoid double nullish check

* Update fixtures
2019-10-24 23:14:44 +02:00
Brian Ng
fce1b74105 Test node@13 on CircleCI (#10600) 2019-10-24 09:28:01 -04:00
Huáng Jùnliàng
562b6c3bbb chore: replace outdated travis-ci.org badges [ci skip] (#10593) 2019-10-22 21:35:02 -04:00
Huáng Jùnliàng
1770dace34 chore: test against Node.js 13 (#10591) 2019-10-23 00:23:20 +02:00
Matthew Whitworth
5b40845afe add test and fix for string literal case (#10578) 2019-10-21 17:39:03 +02:00
samuel kwok
fe258dec04 fix: _interopRequireWildcard should only cache objects (#10574)
* fix: [#10561] _interopRequireWildcard should cache object only

* fix: narrow down cache restriction to object/function type

* test: add interop require null module case
2019-10-19 12:01:38 +02:00
Nicolò Ribaudo
78cd63d9cf Fix invalid test layout in @babel/parser 2019-10-18 11:16:17 +02:00
Nicolò Ribaudo
43b623c1f1 [traverse] Allow skipping nodes inserted with .replaceWith() (#9777)
* Avoid regression
2019-10-18 00:16:35 +02:00
Daniel Arthur Gallagher
b5b8055cc0 docs: add homepage link to @babel/runtime package.json (#10418)
* docs: add homepage link

Adds a homepage link to populate npmjs.com.
Update the repository property syntax.

* Update the repository link

Point to the root repo plus a reference to the subdirectory.

* style: drop HTML extension
2019-10-17 23:26:14 +02:00
Jaideep Bhoosreddy
da9c9a64c2 Add master branch workflow for test262 tests (#10556)
The results of these tests will be stored in build artifacts which will be used to compare with test262 runs on PR (future work!). Robin has also done a
lot of work to ensure all babel packages are properly linked to the
test runner. Additionally, Nicolo has helped in mentorship and
contributions to babel-test262-runner which is used here.

We're no longer giving xunit output to CircleCI because once it sees failing tests it will mark babel's master as broken. As a stopgap, it will render the test results in the mocha spec format, which is human readable.

Co-Authored-By: Robin Ricard <rricard2@bloomberg.net>
Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2019-10-17 13:52:31 -04:00
Huáng Jùnliàng
8c94b3f209 Bump babel-types to ^7.6.3 (#10568)
* fix incorrect lerna bootstrap options

* chore: bump @babel/types dependencies to v7.6.3

* chore: remove ignore-engines on lerna bootstrap
2019-10-17 07:49:41 -04:00
gr
095f28a913 fix: Exclude catch clause from let identifier error (#10559)
* Exclude catch clause from let identifier error

* Disallow let binding based on parameter

* Add test

* Remove unused getter

* Update packages/babel-parser/src/parser/statement.js

Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
2019-10-17 09:30:36 +02:00
Huáng Jùnliàng
487f10f84d fix: disable caching when babel could not read/write cache (#10557)
* fix: disable caching when babel could not read/write cache

* emit warning when cache folder resides in readonly fs

* fix: always register save handler

* cache: maintain old behaviour

* test: add more test case

* fix: next tick tasks are FIFO

* test: disable test on Windows
2019-10-17 09:30:01 +02:00
piotr
5800fc97b3 [parser] Exception to 8 and 9 in tagged template (#10567) 2019-10-17 00:01:22 +02:00
Nicolò Ribaudo
2254542010 Don't use deprecated "lerna publish --require-scripts" (#10558) [skip ci] 2019-10-16 22:13:21 +02:00
Brian Ng
d234ff6572 Revert "chore: introduce envinfo into environment section (#10553)" (#10564)
This reverts commit 800eccc046.
2019-10-16 10:56:35 -04:00
Huáng Jùnliàng
800eccc046 chore: introduce envinfo into environment section (#10553)
* chore: introduce envinfo into environment section [skip ci]

* Apply suggestions from code review

Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>

* Address review comments from Nicolò

* Update .github/ISSUE_TEMPLATE/Bug_report.md [skip ci]

Co-Authored-By: Brian Ng <bng412@gmail.com>

* chore: simplify issue template [skip ci]
2019-10-16 09:12:13 -05:00
Gerald
cd5d3abc32 fix: String#italics is incorrectly defined in babel-preset-env (#10563) 2019-10-16 09:23:47 -04:00
Nicolò Ribaudo
272d85d0ad Inject core-js@3 imports in Program:exit instead of on post() (#10146)
* Inject corejs3 imports in Program:exit instead of post

This allows them to be requeued and transformed by other plugins.

* Also entry

* Rebase

* Update packages/babel-preset-env/src/polyfills/corejs3/entry-plugin.js [skip ci]

Co-Authored-By: Brian Ng <bng412@gmail.com>
2019-10-15 23:46:10 +02:00
Nicolò Ribaudo
686186cabc Attemp fixing @babel/node and cli errors on Travis on Windows (#10547)
For some reason, it looks like that the rimraf call didn't properly delete
the folder:

   EEXIST: file already exists, mkdir 'C:\Users\travis\build\babel\babel\packages\babel-node\test\tmp'
      150 |   process.chdir(__dirname);
      151 |   if (fs.existsSync(tmpLoc)) rimraf.sync(tmpLoc);
    > 152 |   fs.mkdirSync(tmpLoc);
          |      ^
      153 |   process.chdir(tmpLoc);
      154 | };

Lets try to reuse the existing folder rather than deleting and recreating it
2019-10-15 23:00:23 +02:00
Alejandro Sánchez
06313a6288 Allow duplicate __proto__ keys in patterns, simple case (#6705) (#10532)
* Allow duplicate __proto__ keys in patterns, simple case (#6705)

* Update test262 whitelist

* Rename checkDuplicatedProto's parameter and adjust type

* Store first __proto__ redefinition's position
2019-10-15 00:18:33 +02:00
Huáng Jùnliàng
dcf7d89b8e fix: remove filename annotation in buildCodeFrameError (#10539) 2019-10-14 18:19:55 +02:00
Nicolò Ribaudo
1b19608a5a Update fixtures for core-js new version 2019-10-14 00:59:02 +02:00
Brian Ng
e28c8ac612 Fix generator missing parens around an arrow returning function type (#10519) 2019-10-11 21:22:42 -04:00
Nicolò Ribaudo
99035ca96e Don't use args rest/spread to hoist super method calls (#9939)
* Don't use args rest/spread to hoist super method calls

* Hoist this in hoisted super method calls

* Make the code more readable

Review by edoardocavazza
2019-10-11 10:18:54 +02:00
Babel Bot
c455d2af86 Add v7.6.4 to CHANGELOG.md [skip ci] 2019-10-10 14:30:50 +00:00
Nicolò Ribaudo
a422ea64ee v7.6.4 2019-10-10 16:25:04 +02:00
Nicolò Ribaudo
34d30e28d6 Revert "chore: Upgrade source-map to 0.6.1 (#10446)" (#10536)
This reverts commit cc080417b9.
2019-10-10 09:03:49 -05:00
Huáng Jùnliàng
3ad4c70d3a fix prepublish-build (#10530) 2019-10-09 07:40:02 +02:00
Nicolò Ribaudo
34937f13d5 Trailing comma after rest - The final fix (#10491)
* [parser] Track trailing commas in extras instead of state

* Update existing tests

* Update test262 whitelist

* Improve error message and location

* nit

* Use lookaheadCharCode
2019-10-08 23:08:50 +02:00
Babel Bot
c7add11fdc Add v7.6.3 to CHANGELOG.md [skip ci] 2019-10-08 19:33:00 +00:00
Nicolò Ribaudo
d329156ebc v7.6.3 2019-10-08 21:31:40 +02:00
Nicolò Ribaudo
25b35261ca Update test262 [skip ci] 2019-10-08 20:39:07 +02:00
Huáng Jùnliàng
563874c06c Do not remove let bindings even they are wrapped in closure (#10343)
* fix: should not remove let binding even it is wrapped in closure

Fixes #10339

* fix: remove bindings defined in blockScope when wrapped in closure

* Move test assertions to the top level to ensure that they run
2019-10-08 19:43:12 +02:00
Tan Li Hau
b0acfb24dd add scope to TSModuleDeclaration (#10119) 2019-10-08 19:35:40 +02:00
Nicolò Ribaudo
599d2ff324 Update yarn.lock [skip ci] 2019-10-08 19:16:36 +02:00
Huáng Jùnliàng
0856618ed5 perf: replace lookahead by lookaheadCharCode (#10371)
* perf: replace lookahead by lookaheadCharCode

* fix: flow ignore

* refactor: add nextTokenStart method

* refactor: duplicated isNewLine code

* refactor: remove lookahead usage from babylon core
2019-10-08 19:09:05 +02:00
Jessica Franco
bc0966a46f Add declarations for more of @babel/types exports (#10504)
This adds lots of missing declarations to the types of @babel/types,
including many utility functions useful to plugin authors.

With the typescript types, I tried to make them as useful as possible
for control flow analysis / inference, but Flow doesn't seem to
support overloads and I'm not as familiar with it anyway so it has
simpler types.
2019-10-08 19:07:57 +02:00
Nicolò Ribaudo
3498195ae2 Do not hoist jsx referencing a mutable binding (#10529) 2019-10-08 18:50:03 +02:00
Henry Zhu
fbf3cb0ac4 Misc: also lock old PRs [skip ci] (#10524) 2019-10-03 15:46:07 -05:00
Brian Ng
e6264a0992 Bump jest@24.9.0 (#10520) 2019-10-02 18:32:34 -05:00
Huáng Jùnliàng
0b37ab0362 Use make -j for parallel build (#10506)
* build: add build-babel-types task

* chore: revamp Makefile to for parallel builds

* chore: style fix

* chore: skip install step as we handle yarn in makefile

* test job execution order
2019-10-03 00:17:04 +02:00
Brian Ng
57ae306457 Bump flow@0.108.0 (#10516) 2019-10-02 12:13:58 -05:00
David J. Hamilton
fa5a40c8d5 assertNoDuplicates throw with more context (#10419)
When users see errors like

```
Duplicate plugin/preset detected.
If you'd like to use two separate instances of a plugin,
they need separate names, e.g.

  plugins: [
    ['some-plugin', {}],
    ['some-plugin', {}, 'some unique name'],
  ]
```

It can be difficult to determine the source of the conflict, especially
in a larger build system.

This commit outputs what is known about the plugins that actually
conflict, which can be helpful for users to determine the root cause of
the conflict.

Partially addresses #9778
2019-10-02 16:45:03 +02:00
Nicolò Ribaudo
a219b6de7a Disallow await inside async arrow params (#10469)
* Disallow await inside async arrow params

* Use -1 as default for awaitPos/yieldPos
2019-10-02 07:37:40 +02:00
Huáng Jùnliàng
fa5057f9fb Flow: interface identifier should be declared in the scope (#10220)
* fix: typo

* declare name for flow interface

* add test case for export overload function, typescript

* test: add test

Fixes #10044

* test: update test

* test(flow): add multiple declarations regression test

* re-enable flow test case

# Conflicts:
#	packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/def-site-variance/input.js
#	packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-declare-statements/input.js
#	packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-interfaces-module-and-script/input.js
#	packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-iterator/input.js

* test: disable two flow dupl-decl test

* fix: do not declare name for declare function until we figure out a better way

* test: duplicate declare function and function would not throw
2019-10-02 07:32:42 +02:00
Brian Ng
02f2d17e83 Revert "Try different name for used-by feature again [skip ci]" (#10515)
This reverts commit b351f29033.
2019-10-01 23:29:04 -04:00
Henry Zhu
b351f29033 Try different name for used-by feature again [skip ci] (#10513) 2019-10-01 21:36:22 +02:00
Huáng Jùnliàng
298c9a6c33 Add filename to transform error (#10511)
* polish: use “unknown” as a default filename in buildCodeFrameError

* feat: add filename to transform error

* fix: incorrect warning message

* fix: add filename to generate phrase error message

* address review comment from Nicolò
2019-10-01 17:19:29 +02:00
Nicolò Ribaudo
80d99b4d4e Do not allow member expressions to start async arrows (#10332)
* Do not allow member expressions to start async arrows

* Boolean -> boolean
2019-10-01 11:40:42 +02:00
Huáng Jùnliàng
94fcabc4e3 Update test262 whitelist 2019-09-30 11:37:09 -04:00
Huáng Jùnliàng
5f1970433d chore: only apply lazy cjs module transform on cli and core (#10443) 2019-09-27 16:53:27 -04:00
Nicolò Ribaudo
b459f6a0a4 Add windows to travis (#10249)
* Add windows to travis

* Update

* Do not use sh file on windows

* Fix whitespace

* Unify command

* ./ doesn't work on windows

* Remove all ./ usages

* Run windows test before others

* fix: normalize filename when generating sources

sources should be URL.

* fix: replace normalized path to cwd

* chore: add nodePlatform task options

* fix: normalize preset-env filename output

* chore: replace normalized path to CWD on win32 platform

* limit transform-react-source to run on linux and darwin

* test: escapeRegExp on testcases

* test: add test for babel --filename on windows

* test: double babel-node/cli test timeout

* chore: workaround windows build does not stop

* chore: remove redundant condition

* refactor: rename `nodePlatform` to `os`
2019-09-26 20:59:17 +02:00
Michael J. Currie
66062c2a8c Template literal validation (#10492)
* add template literal validation

* avoid null/undefined error when validating

* simplify validation logic and fix tests

Co-authored-by: Michael J. Currie <michaeljcurrie136@gmail.com>
2019-09-26 19:58:36 +02:00
Phoenix
8d4f95de45 Fix grammar in doc/design/monorepo.md 🤓 (#10496) [skip ci] 2019-09-26 12:37:15 +02:00
Nicolò Ribaudo
d0f093e716 Update test262 whitelist 2019-09-25 02:03:58 +02:00
Gonzalo Rodríguez
490798a26d [parser] Disallow numeric separators in legacy octal like inte… (#10493)
* Disallow numeric separators in lols

* Update whitelist

* Rename test

* Better syntax when checking
2019-09-25 01:32:50 +02:00
Nicolò Ribaudo
eaa1474541 Enable optional chaining and nullish coalescing plugins (#10494)
* Add optional chaining plugin

* Nullish coalescing
2019-09-24 23:11:56 +02:00
Nicolò Ribaudo
0e9502685a [parser] Don't crash on comment after trailing comma after eli… (#10490) 2019-09-24 17:08:58 +02:00
Huáng Jùnliàng
26be14b24d chore: add access: public where missing (#10489) [skip ci]
* @babel/types
* @babel/plugin-transform-named-capturing-groups-regex
2019-09-24 14:04:54 +02:00
Huáng Jùnliàng
6f3460c767 chore: add access: public to babel parser publish config (#10487) [skip ci] 2019-09-24 10:03:07 +02:00
Corey Farrell
cc080417b9 chore: Upgrade source-map to 0.6.1 (#10446) 2019-09-24 02:01:32 +02:00
Nicolò Ribaudo
a00f371610 Update v7.6.2 changelog [skip ci] 2019-09-23 23:27:03 +02:00
Babel Bot
af66d521bd Add v7.6.2 to CHANGELOG.md [skip ci] 2019-09-23 21:16:32 +00:00
Nicolò Ribaudo
b9cb4af953 v7.6.2 2019-09-23 23:14:37 +02:00
Gonzalo Rodríguez
69d00dc5b0 [parser] Invalid NonOctal Decimal (#10467)
* Add test

* Add nonOctalDecimal verification

* Update regex and code style

* Refactor non octal detection

* Add numeric separator test

* Disallow numeric separators in non octals

* Update whitelist

* Better test naming

* Disallow numeric separators in non oct for all numbers

* Specific error above the general error

* Add test for invalid leading zero in num separator

* Add start position to error
2019-09-23 23:07:52 +02:00
Ivan Medina
f339d2d034 [parser] Disallow numeric separator in unicode scape sequences (#10468)
* [parser] Disallow numeric separator in unicode scape sequences (#10460)

* raise error only when numeric separator plugin is set

* Adds argument for checking numeric separator

* Fix condition for readability

* Add test for hex escape sequence and rephrase error message

* Remove exposure for allowNumSeparator in readHexChar method
2019-09-23 22:47:18 +02:00
Nicolò Ribaudo
3069747a81 Leave trailing comments after handling a possible trailing com… (#10445)
* Leave trailing comments aftre handling a possible trailing comma

* perf
2019-09-23 19:14:43 +02:00
Tomer Aberbach
962015f7e7 docs: updates docs of findParent and find (#10479) [skip ci]
Makes the documentation of `findParent` and `find` consistent and documents their `null` cases.
2019-09-22 23:00:13 +02:00
Vivek Nayyar
b7333ea97a added check to disallow super.private variable access and test case added (#10472)
* 🚀 added check to disallow super.private variable access and test case added

* ♻️ change the other linting change back to how it was

* ♻️ change the other linting change back to how it was

* ♻️ added newline at the end test output.json file

* ♻️ changed the linting style to the way it was

* ♻️ updated error message, removed super private member access test cases from whitelist of flow and test 262 suite

* ♻️ added newline in output.json
2019-09-21 00:22:37 +02:00
Nicolò Ribaudo
46c70ad734 Update PULL_REQUEST_TEMPLATE.md (#10473) [skip ci] 2019-09-20 11:27:49 -04:00
Nicolò Ribaudo
3a7b6e1c22 Force update of test262-stream
v1.2.0 doesn't support Test262 v4
2019-09-20 12:54:28 +02:00
Guy Waldman
9c1ad0a9f7 [parser] Disallow static fields named constructor (#10461)
* Disallow static fields named `constructor` in a class

    - Disallowed static fields named `constructor` in a class (previously only non-static were disallowed)
    - Updated the text for the error for one consolidated warning, for both static and non-static fields
    - Added a test
    - Updated an existing test in the `flow` test suite of the parser to reflect the parse error.
  Strangely, the test used to pass and started failing when inlining the `isNonstaticConstructor` method, without any changes.
  In that test, `constructor` was a field, so in theory it should never have passed.
  Would appreciate some feedback on this, as I'm not 100% sure if this is somehow related to Flow

* Update test262 whitelist

* Add comment and fix && operator
2019-09-18 01:19:45 +02:00
Huáng Jùnliàng
87dc201411 refactor: replace regexp-tree by regexpu (#10430) 2019-09-17 17:38:15 -05:00
Nicolò Ribaudo
0ef4972295 Ignore regexp tests from test262 (#10458) 2019-09-18 00:14:27 +02:00
Nicolò Ribaudo
cb881e6b3f [parser] Report escapes in kws only if they won't be used as i… (#10455)
We can do it by tokenizing escaped keywords as normal identifiers, so that they won't
be accidentally used as real keywords.
2019-09-18 00:13:51 +02:00
Nicolò Ribaudo
45a484f0a2 Enable optional chaining in test262 (#10457) 2019-09-17 12:10:57 -05:00
Nicolò Ribaudo
99f4f6c3b0 Update Test262 (#10448) 2019-09-17 02:14:14 +02:00
Nicolò Ribaudo
e4b4831100 Update GitHub actions to v2 (#10441)
* Update GitHub actions to v2 [skip ci]

* Only run when needed for issues [skip ci]
2019-09-16 22:38:12 +02:00
Huáng Jùnliàng
256fa5aa04 chore: bump regexpu-core to version 4.6.0 (#10439)
* chore: update test fixtures

* chore: test against regexpu-core 4.6.0

* chore: bump regexpu-core dependency
2019-09-13 17:51:24 +02:00
Huáng Jùnliàng
0ee2c42b55 chore: add lint-ts rule (#10427) 2019-09-11 20:24:08 +02:00
Huáng Jùnliàng
1b352ca8a1 chore: remove tryResolve dependency (#10428) 2019-09-11 12:25:18 +02:00
Huáng Jùnliàng
53af9e8b7a fix: allow the process to exit naturally (#10400) 2019-09-11 12:24:44 +02:00
Huáng Jùnliàng
af04f40ee0 fix: pass optionLoc when validating plugin object (#10402) 2019-09-11 12:23:20 +02:00
Bryan Wain
98b14843ba Remove babel polyfill dependency of babel-node (#10429) 2019-09-11 01:57:44 +02:00
Huáng Jùnliàng
4395c22f3a Miscellaneous perf tweak (#10421)
* refactor: early return on hot path

* refactor: read next2 only when next is dot

* perf: mini refactor
2019-09-10 19:47:52 +02:00
Nicolò Ribaudo
610d6bdc62 Do not guess relative execution status for exported fns (#10417) 2019-09-10 19:47:27 +02:00
Tan Li Hau
8027dca501 fix object rest in array pattern (#10275)
* fix object rest in array pattern

* update test fixtures

* early return

* use path.stop() at the right path
2019-09-10 15:18:45 +02:00
Huáng Jùnliàng
81831032c3 chore: remove trim-right dependency (#10420) 2019-09-10 15:17:22 +02:00
FND
daf25af47c Fix typo in changelog (#10409) [skip ci]
s/compliancy/compliancy/g - seems both correct and consistent with more
recent occurrences
2019-09-09 09:22:33 +02:00
Nicolò Ribaudo
6a5cee8f27 Remove circular dependency (#10405)
* Remove circular dependency

* Move @babel/runtime test to @babel/runtime
2019-09-08 22:53:42 +02:00
Nicolò Ribaudo
2096d0cfcb Update @babel deps (#10407)
* Update @babel deps

* Add core-js to transform-named-capturing-groups-regex devDeps

* Don't use fixed deps (they were added by yarn)

* Lockfile
2019-09-08 22:53:20 +02:00
Babel Bot
a79fbe62e4 Add v7.6.1 to CHANGELOG.md [skip ci] 2019-09-06 20:55:50 +00:00
Nicolò Ribaudo
381b066bd0 v7.6.1 2019-09-06 22:50:54 +02:00
Matt Forster
15b63bc89e fix(types): correct typescript function headers (#10404)
Flow maybe types state;

> Maybe types accept the provided type as well as null or undefined. So ?number would mean number, null, or undefined.

So in this case, explicitly allow the type, null, or undefined in the
typescript definition.

Fixes #10403
2019-09-06 22:38:21 +02:00
Dword
fc8e14264c Remove process.exit(1) from babel-node (#9758)
Because it breaked graceful shutdown of the sub process.
2019-09-06 14:32:45 -04:00
Babel Bot
7e4f48139c Add v7.6.0 to CHANGELOG.md [skip ci] 2019-09-06 17:36:19 +00:00
Nicolò Ribaudo
cbd5a26e57 v7.6.0 2019-09-06 19:25:16 +02:00
Nicolò Ribaudo
42e5974fd4 Remove old uglify option
It's false by default
2019-09-06 19:24:15 +02:00
Nicolò Ribaudo
735abc0ed8 Update lerna
v3.16 includes https://github.com/lerna/lerna/pull/2185,
which fixes an issue we had in the v7.5 releases
2019-09-06 18:40:06 +02:00
Corey Farrell
aa7678f32a Remove core-js from @babel/register. (#9847)
This module doesn't use core-js at all.
2019-09-06 18:11:38 +02:00
Huáng Jùnliàng
b64cb9aaf1 fix: early return when instance is not iterable (#10396)
* fix: early return when instance is not iterable

* chore: update test fixtures

* fix: gaurd against arguments for old browsers
2019-09-06 18:09:57 +02:00
Huáng Jùnliàng
8da9d8b4b8 feat(errors): validate preset when filename is absent (#10181)
* feat(errors): validate preset when filename is absent

Closes #10154

* fix: test overrides for filename compulsory

* docs: rewrite validate error message

per https://github.com/babel/babel/pull/10181#discussion_r301607986

* polish error message
2019-09-06 18:09:19 +02:00
Tim McClure
3e4889d649 Class Private Static Accessors (#10217)
* Remove error for static private accessors

* Private static accessors strict

* Add loose mode support

* Move `value` decl for early return

* Reuse getter/setter template

* Reuse getter/setter templates

* Use `buildUndefinedNode` in accessor templates

* Extract `isAccessor` variable
2019-09-06 18:08:10 +02:00
Huáng Jùnliàng
da0af5fd99 V8intrinsic syntax plugin (#10148)
* feat: v8intrinsic syntax plugin

Implement V8 Intrinsic Syntax Extension. Here we check the execution branch inside the parseSubscript to make sure the V8IntrinsicIdentifier is immediately followed by a call expression.

* feat: disable combining placeholders and v8intrisic

per https://github.com/babel/babel/issues/10104#issuecomment-506950969

* test: add more error cases

* refactor: parse v8 intrinsic in parseExprAtom

This approach is identical to V8’s implementation. Move the test cases as the behaviour changes.

* fix: plugin-name typo

* test: add yield-expression test case

* feat: require startsExpr on modulo for v8intrinsic

* perf: skip eof and braceR check as they must return false

* Print V8IntrinsicIdentifier

* feat: add v8intrinsic to parser typings

* Add generated type helpers

* fix: incorrect type definition

* fix: allow V8IntrinsicIdentifier to be callee
2019-09-06 17:43:19 +02:00
Vivek Nayyar
b02e35c19a Fix parenthesis for nullish coalescing (#10269)
* ♻️ added condition to check for left and right of nullish coalescing operator and if any is a logical expression without a paren then throw an error

* 🐛 bugs fixed and test cases updated for babel parser

* ♻️ code comments added

* 🐛 spell error rectified

* ♻️ failing test updated

* 🐛 push tests after make build

* Skip nullish-coalescing flow precedence tests

They're now incorrect

* ♻️ error message updated, binop priority of other logical operators +1 from ?? and

* ♻️ increaed the binOp for in and instanceOf, added logic to print the brackets in an ?? && || expression, test cases added

* 🐛 failing test fixed and comments updated

* ♻️ new lines added between tests

* ♻️ basic tests for checking the binOp of instanceOf, in and relational operators to be equal added

* ♻️ new lines added in between tests
2019-09-06 17:35:44 +02:00
Nicolò Ribaudo
3e8a5c5e28 Use "validateLogs" for preset-env's debug fixtures (#10401)
* Add ability to ignore output to the test runner

* Use normal fixtures instead of custom debug-fixtures in preset-env
2019-09-06 17:32:20 +02:00
Bin Xin
8769903284 Add supports for polyfill computed methods (#10398) 2019-09-06 01:35:03 +02:00
Bin Xin
5c859b1117 Don't polyfill if evaluation is not confident (#10397) 2019-09-06 00:29:19 +02:00
Huáng Jùnliàng
2e7bea4a6a fix: transform name capturing regex once (#10395)
* fix: transform name capturing regex once

* refactor: early return when pattern contains only lookbehind

* chore: simplify test regex

* chore: run test on >=8.0.0
2019-09-05 17:35:57 +02:00
Bin Xin
29734b924a Don't allow instance properties transformation on namespace (#10372) 2019-09-05 10:32:57 -05:00
Huáng Jùnliàng
6813ee02d7 chore: update regexp-tree to version 0.1.13 (#10376) 2019-09-05 10:07:18 -05:00
Adam Ramberg
fcb77de901 [preset-env] Include / exclude module plugins properly (#10218)
* Include / exclude module plugins properly

* Use filter-items to excl / incl module plugins

* Move transform selection to getModulesPluginNames

* Remove unnecessary spread operator

Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>

* Adjust tests to changes in #10218
2019-09-05 15:58:29 +02:00
Ajay Sagar
d05bd9edc8 Bumped chokidar dependency of babel-cli to 2.1.8 (#10394) 2019-09-04 21:33:31 -04:00
Nicolò Ribaudo
27ba292774 Silence remaining test warnings (#10392) 2019-09-04 22:56:47 +02:00
Tan Li Hau
a08e856804 fix typescript for babel-types (#10098)
* fix typescript for babel-types

* fix missing typescript/flow types for babel-types

* Add cloneNode to flow.js

* Add cloneNode to typescript.js
2019-09-04 15:35:19 +02:00
Shrey Banga
c0e3fa0081 Refactor trailing comma comment adjustment (#10380)
* Refactor trailing comment adjustment

Following up from https://github.com/babel/babel/pull/10369

- Unify the logic for adjusting trailing comments into a separate
  function
- Use it for all three cases, which fixes a bug for ObjectExpressions
  and CallExpressions
- Update tests to check for the fixed bug

* Fix tests

- Only modify trailingComments if necessary
- Update snapshots of a couple of affected tests

* Drop the underscore in adjustCommentsAfterTrailingComma_

* Handle ArrayPattern

* Handle ObjectPattern

* Handle import and export declarations

These have to be handled a bit differently, because the  node is visited after the  and before the declaration. So we intercept when we are going from the last specifier to the source node.

* Remove unnecessary check
2019-09-02 20:35:15 -04:00
Dylan Kirkby
e5afa57cca Allow setting 'allowNamespaces' in typescript preset (#10382)
* Support 'allowNamespaces' in typescript preset

* Remove default for allowNamespaces
2019-09-02 20:33:01 -04:00
Thiago Arrais
e7fa566442 Includes test for #8354 (#10385) 2019-09-02 21:58:54 +02:00
Nicolò Ribaudo
7c0333e12a Move preset-env old changelog
Fixes #9730
2019-09-02 12:41:55 +02:00
Shrey Banga
8a775a32ba Retain trailing comments in array expressions (#10369)
* Retain trailing comments in array expressions

This is a proposed fix for https://github.com/babel/babel/issues/10368
with a simple test.

* Move lastElement in the block where it's used

* Test trailing comment after array expression

* Don't move comments after the array expression

* Retain trailing comment after the array expression
2019-08-28 14:03:37 -04:00
dependabot[bot]
94e47c30a9 Bump eslint-utils from 1.4.0 to 1.4.2 (#10370)
Bumps [eslint-utils](https://github.com/mysticatea/eslint-utils) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/mysticatea/eslint-utils/releases)
- [Commits](https://github.com/mysticatea/eslint-utils/compare/v1.4.0...v1.4.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-08-27 09:50:33 +02:00
Justin Ridgewell
1664cce681 Don't allow JSXNamespacedName to chain (#10366)
Eg, `namespace:foo.bar` used to parse but is invalid in the [spec](https://facebook.github.io/jsx/).

Also, allow `JSXNamespacedName` in the `JSXOpeningElement`/`JSXClosingElement` builders.
2019-08-26 13:16:22 -04:00
Nicolò Ribaudo
a2bf68981f Add TSBigIntKeyword to @babel/types (#10341) 2019-08-20 17:31:45 -05:00
Nicolò Ribaudo
15aa511b8e Do not register ambient classes to the TS scope (#10352) 2019-08-20 17:22:47 -05:00
Henry Zhu
11ed2e2bf5 readme: links/contributing updates (#10206) [skip ci]
* readme: links/contributing updates

* Update README.md
2019-08-19 09:31:37 +02:00
Even Alander
eb3767d58b Add a builder definition including name for tsTypeParameter (#10319) 2019-08-15 19:59:08 +02:00
Nicolò Ribaudo
f0c2364d01 Do not delete "fake" source map comments from strings (#9960)
Instead of using `convert-source-map`'s `removeComments` method before
parsing the file, we can first parse the file with `@babel/parser` and then
analyze the comments.
This is needed because it is not possible to reliabily detect comments in
JavaScript without fully parsing the file:
https://github.com/thlorenz/convert-source-map/issues/63
2019-08-14 17:05:55 +02:00
Huáng Jùnliàng
ee344c3e4c Revert "chore: remove FORCE_COLOR workaround" (#10336)
This reverts commit 347ee036becdca3c9e158311d44a48ed89df9a94.
2019-08-14 16:58:01 +02:00
Ziad El Khoury Hanna
64041e1669 Fix flow comments plugin issues (#10329)
* Fix issues in flow-comments to preserve comments and there order (fixes #10324)

* Add support in flow-comments for extends in class declarations (fixes #10323, #10321)

* Refactoring and cleanup of flow-comments plugin

* Fix comments preservation logic of flow-comments

* Fix flow-comments where comments are class identifier and extends keyword
2019-08-14 15:46:26 +02:00
Nicolò Ribaudo
469a5a71cd Allow testing logs with @babel/helper-transform-fixture-test-runner (#10326)
* Add support for logs to transform-fixture-test-runner

* Test some warnings

* Use stderr/stdout, and add a validateLogs test option

* Normalize CWD in logs and rename vars

* Silence preset-env tests

* Restore old methods
2019-08-14 08:03:03 +02:00
Huáng Jùnliàng
75090f10e5 fix: assign comment to ObjectProperty only when inside an ObjectExpression (#10292)
Fixes #10230
2019-08-13 13:49:16 -05:00
Huáng Jùnliàng
22df2ae244 Commit generated code (#10331)
* update prettier generated artifacts

* chore: sync babel-helpers to artifacts
2019-08-13 16:31:28 +02:00
Nicolò Ribaudo
051965052c Update @lerna/collect-updates git hash 2019-08-13 12:03:34 +02:00
Thiago Arrais
ee397ff107 Adds note about two approval policy to PR template (#10313)
* Adds note about two approval policy to PR template

* Adds qualifier to approval policy

Because, although two approvals is the general case, some PRs maybe merged with more or fewer approvals

[skip ci]
2019-08-12 17:32:31 +02:00
Huáng Jùnliàng
15535cf52c Update preset-env text fixtures (#10318)
* chore: update preset-env text fixtures

* chore: remove FORCE_COLOR workaround
2019-08-12 00:55:27 +02:00
README Bot
682d9f9f09 Add CodeTriage badge to babel/babel (#10088) [skip ci]
Adds a badge showing the number of people helping this repo on CodeTriage.

[![Open Source Helpers](https://www.codetriage.com/babel/babel/badges/users.svg)](https://www.codetriage.com/babel/babel)

## What is CodeTriage?

CodeTriage is an Open Source app that is designed to make contributing to Open Source projects easier. It works by sending subscribers a few open issues in their inbox. If subscribers get busy, there is an algorithm that backs off issue load so they do not get overwhelmed

[Read more about the CodeTriage project](https://www.codetriage.com/what).

## Why am I getting this PR?

Your project was picked by the human, @schneems. They selected it from the projects submitted to https://www.codetriage.com and hand edited the PR. How did your project get added to [CodeTriage](https://www.codetriage.com/what)? Roughly over 3 years ago, [iamsolankiamit](https://github.com/iamsolankiamit) added this project to CodeTriage in order to start contributing. Since then, 94 people have subscribed to help this repo.

## What does adding a badge accomplish?

Adding a badge invites people to help contribute to your project. It also lets developers know that others are invested in the longterm success and maintainability of the project.

You can see an example of a CodeTriage badge on these popular OSS READMEs:

- [![Email clients like GMAIL do not render SVG images](https://www.codetriage.com/rails/rails/badges/users.svg)](https://www.codetriage.com/rails/rails) https://github.com/rails/rails
- [![Email clients like GMAIL do not render SVG images](https://www.codetriage.com/crystal-lang/crystal/badges/users.svg)](https://www.codetriage.com/crystal-lang/crystal) https://github.com/crystal-lang/crystal

## Have a question or comment?

While I am a bot, this PR was manually reviewed and monitored by a human - @schneems. My job is writing commit messages and handling PR logistics.

If you have any questions, you can reply back to this PR and they will be answered by @schneems. If you do not want a badge right now, no worries, close the PR, you will not hear from me again.

Thanks for making your project Open Source! Any feedback is greatly appreciated.
2019-08-09 19:18:18 +02:00
Serge Havas
a112be2fa0 [fix] jsx helper calls order (#10307)
imitate properly react createElement calls order
2019-08-08 22:43:57 +02:00
ifsnow
9ec26a7d3e Improves the logic to import objects in helpers (#10161)
* Improves the logic to import objects in helpers

* Modified to work with more cases.

* Modified by considering exception cases

* Fixed not using bundler's polyfill

Co-Authored-By: Jordan Harband <ljharb@gmail.com>

* Updated test output files

* Changes to cache logic

* Modified to use if statement
2019-08-08 11:11:50 +02:00
Thiago Arrais
ba2c0f7adf fix: register inserted class declaration (#10302)
* Decorators legacy: register inserted declaration

For compatibility with the Typescript plugin

Fixes #10264

* Register declaration but also keep replaceWithMultiple
2019-08-08 07:14:23 +02:00
Huáng Jùnliàng
5fb4d84a33 perf: always return void 0 as undefined node (#10243) 2019-08-01 09:53:40 +02:00
Tan Li Hau
3e4a9d588b Do expressions transform for switch statements (#10070)
* lint fix

* switch inside do expression

* review comments

* review comments

* make min diff

* adding more test

* review changes

* review changes

* handle block statement and added more test cases

* fix implementation and add more test cases

* fix last swtich case

* disable block fallthrough case

* fix nitpick reviews
2019-08-01 09:36:35 +02:00
Tan Li Hau
be2cbde560 remove finally from completion record in trystatement (#10277) 2019-08-01 09:24:08 +02:00
Ashwin Ramaswami
66727632e8 fix: replace es.string.reverse with es.array.reverse (#10284) 2019-08-01 09:20:52 +02:00
Brian Donovan
ba28f462bc Fix typo "to" → "so". (#10288) 2019-07-31 16:04:53 -04:00
Huáng Jùnliàng
f08062b1de chore: fix ESLint errors (#10278) 2019-07-29 10:14:11 -05:00
Daniel Tschinder
4f0840ab88 Update dev dependencies and fix linting errors (#10228)
* chore: Uppate dev dependencies

* chore: Fix lint errors

* chore: Format options.json files

* chore: Fix stupid flow errors

* Update test262 whitelist

Seems test262-stream was updated and now these tests work.
2019-07-27 15:09:30 +02:00
Tan Li Hau
6a9d2538e0 fix capturing group for matchAll (#10136)
* fix capturing group for matchAll

* update test case

* add core-js/features/string/match-all to test
2019-07-26 18:53:22 -04:00
Letladi Sebesho
f160522ab0 updated ParsePlugin type definition (#10259)
* added 'placeholders', 'logicalAssignment', 'partialApplication' to the ParserPlugin type. closes #10186

* put the ParserPlugin names in alphabetical order
2019-07-26 10:22:23 +02:00
Serhii Muryhin
4d30379d36 Add ";" token to the end of TS construct & call signature declaration (#10258)
* Add ";" token to the end of TS construct signature declaration

* Add ";" token to the end of TS call signature declaration. Update construct signature test fixtures
2019-07-25 10:14:35 +02:00
Letladi Sebesho
4d12c8971b added flow to babel cli (#10244)
* added flow to babel cli

* added 'SourceMapGenerator' as a argument to 'fromObject'
2019-07-25 09:59:41 +02:00
Yuri Karadzhov
4506590557 Add static parameter to class property builder (#10248) 2019-07-25 09:55:03 +02:00
Brian Donovan
1e7ed5c461 Add allowUndeclaredExports option to typings. (#10263)
This should have been included in https://github.com/babel/babel/pull/9864 but was not.
2019-07-25 09:53:56 +02:00
Nicolò Ribaudo
fced5cea43 Fix tdz checks in transform-block-scoping plugin (#9498)
* Better tdz tests

- Use jest's expect.toThrow/expect.not.toThrow
- Add input/output tests

* Fix basic tdz (a = 2; let a)

Fixes #6848

* Make _guessExecutionStatusRelativeTo more robust

* Add tests

* Return less "unkown" execution status

* "function" execution status does not exist

* Fix recursive functions

* Update helper version

* "finally" blocks are always executed

* Typo
2019-07-21 06:34:43 +02:00
Nicolò Ribaudo
9bc9571381 Extract release actions to babel/actions 2019-07-20 16:43:22 +02:00
Nicolò Ribaudo
fb910e063c [gh action] Release on tag push 2019-07-20 16:39:10 +02:00
Daniel Tschinder
3b4a86aea4 Separate workflows as otherwise they interfere with eachother 2019-07-20 15:26:52 +02:00
Daniel Tschinder
94b678c949 Fix workflow 2019-07-20 15:22:21 +02:00
Daniel Tschinder
c84a4c8bfa Use latest version of filter action 2019-07-20 15:14:07 +02:00
Daniel Tschinder
dfd59c183e Add 'Needs Info' workflow 2019-07-20 15:13:29 +02:00
Nicolò Ribaudo
718017d896 Use "release" event instead of "push" 2019-07-20 14:30:33 +02:00
Daniel Tschinder
a0cb7b1ab1 Rename github action 2019-07-19 15:46:51 +02:00
Daniel Tschinder
0b886418c8 Use github actions for welcome comment 2019-07-19 14:44:40 +02:00
Babel Bot
0371979a3e Add v7.5.5 to CHANGELOG.md [skip ci] 2019-07-17 21:29:47 +00:00
Nicolò Ribaudo
0407f034f0 v7.5.5 2019-07-17 23:08:08 +02:00
Nicolò Ribaudo
d919ecd254 Move lerna fork to the babel org 2019-07-17 00:02:41 +02:00
Daniel Tschinder
d8da63c929 Use correct extension for typescript fixtures (#10014)
* Use correct extension for typescript fixtures

* Change transform fixtures

* Adjust editorconfig for ts files

* Rename new tests

Co-authored-by: Nicolò Ribaudo (nicolo.ribaudo@gmail.com)
2019-07-15 22:46:03 +02:00
Tan Li Hau
eb3230f9db fix code-frame marker with highlighting (#10211) 2019-07-15 21:16:18 +02:00
Nicolò Ribaudo
7dc5fdb390 Workaround #10179 in proposal-object-rest-spread (#10200) 2019-07-15 19:01:29 +02:00
Tan Li Hau
ee68d6d1b0 add assertShape to validate templateElement (#10198)
* add assertShape to validate templateElement

* Update packages/babel-types/src/definitions/utils.js

Co-Authored-By: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>

* templateElement optional cooked
2019-07-15 01:03:50 +02:00
Tan Li Hau
d3fe22f0e1 destructuring private fields with array pattern / object patte… (#10017)
* destructuring private fields with array pattern / object pattern

* wip: new test cases

* destrucuring and rest for private properties

* test case for loose private-loose

* add transform-desturcturing for exec

* update test case

* remove getPrototypeOf imports from get and set

* wip: destructure super assignment

* throw "Destructuring to a super field is not supported yet."

* fix tests and fix assignment pattern

* remove CallExpression from AssignmentPattern
2019-07-15 01:00:20 +02:00
James DiGioia
7f47cb65d0 Add Pipeline nodes to ast.spec [skip ci] (#10214) 2019-07-13 19:11:51 +02:00
Tan Li Hau
8b9af1be2f fix transform-flow-comments for import types (#9901)
* fix transform-flow-comments for import types

* update: dependencies
2019-07-13 16:06:42 +02:00
Tan Li Hau
f5ca0587d1 always throw when add missing helpers (#10208) 2019-07-12 12:53:55 -05:00
Sagiv ben giat
a9660cf559 resolve #10205 (#10207) 2019-07-12 11:00:25 -05:00
dependabot[bot]
8107a6faa2 Bump lodash.template from 4.4.0 to 4.5.0 (#10204)
Bumps [lodash.template](https://github.com/lodash/lodash) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.4.0...4.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2019-07-12 10:29:48 +02:00
cybai
42000b9907 Upgrade lodash to 4.17.13 (#10191) 2019-07-12 10:29:06 +02:00
Huáng Jùnliàng
5d9a786b2f perf: match ownKeys perf to the one of objectSpread (#10189) 2019-07-10 21:03:01 -05:00
Huáng Jùnliàng
e88a569e83 fix: custom instOfHandler result should be cast to boolean (#10197) 2019-07-10 23:38:46 +02:00
Babel Bot
4eab157502 Add v7.5.4 to CHANGELOG.md [skip ci] 2019-07-09 18:58:16 +00:00
4560 changed files with 214394 additions and 19798 deletions

View File

@@ -1,4 +1,5 @@
version: 2
version: 2.1
aliases:
- &restore-node-modules-cache
keys:
@@ -30,15 +31,31 @@ aliases:
- &artifact_env_min
path: ~/babel/packages/babel-preset-env-standalone/babel-preset-env.min.js
jobs:
build:
working_directory: ~/babel
- &test262_workdir
working_directory: ~/babel/babel-test262-runner
- &artifact_test262_tap
path: ~/test262.tap
- &artifact_test262_xunit
path: ~/test-results
- &artifact_test262_diff_tap
path: ~/diff.tap
executors:
node-executor:
docker:
- image: circleci/node:12
- image: circleci/node:13
working_directory: ~/babel
jobs:
test:
executor: node-executor
steps:
- checkout
- restore-cache: *restore-yarn-cache
- restore-cache: *restore-node-modules-cache
- restore_cache: *restore-yarn-cache
- restore_cache: *restore-node-modules-cache
- run: yarn --version
- run: make test-ci-coverage
# Builds babel-standalone with the regular Babel config
@@ -54,3 +71,111 @@ jobs:
- store_artifacts: *artifact_env_min
- save_cache: *save-node-modules-cache
- save_cache: *save-yarn-cache
test262:
executor: node-executor
steps:
- checkout
- run:
name: Sync with latest master branch (only on PRs)
command: |
if [ -n "$CIRCLE_PULL_REQUEST" ]
then
git fetch origin refs/pull/$CIRCLE_PR_NUMBER/merge
git checkout -qf FETCH_HEAD
fi
- restore_cache: *restore-yarn-cache
- restore_cache: *restore-node-modules-cache
- run:
name: Build Babel
command: BABEL_ENV=test make bootstrap
- run:
name: Setup Test Runner
command: |
git clone --recurse-submodules https://github.com/babel/babel-test262-runner
cd babel-test262-runner
yarn
yarn add tap-mocha-reporter --dev
node lib/download-node
- run:
name: Download master branch Test262 artifact
command: node lib/download-master-artifact ~/master.tap
<<: *test262_workdir
- run:
name: Run Test262
command: BABEL_PATH=.. node lib/run-tests I_AM_SURE | tee ~/test262.tap
<<: *test262_workdir
- store_artifacts: *artifact_test262_tap
- run:
name: Output Test262 results
command: |
cat ~/test262.tap | $(npm bin)/tap-mocha-reporter spec || true
<<: *test262_workdir
- run:
name: Compare previous master branch & current job results
command: |
mkdir -p ~/test-results/test262
node lib/compare-results ~/master.tap ~/test262.tap | tee ~/diff.tap
<<: *test262_workdir
- store_artifacts: *artifact_test262_diff_tap
- run:
name: Output comparision results and report to CircleCI
command: |
mkdir -p ~/test-results/test262
cat ~/diff.tap | $(npm bin)/tap-merge | $(npm bin)/tap-mocha-reporter xunit | tee ~/test-results/test262/results.xml
<<: *test262_workdir
- store_test_results: *artifact_test262_xunit
publish-verdaccio:
executor: node-executor
steps:
- checkout
- run: yarn install
- run: ./scripts/integration-tests/publish-local.sh
- persist_to_workspace:
root: /tmp/verdaccio-workspace
paths:
- storage
- htpasswd
e2e-babel:
executor: node-executor
steps:
- checkout
- attach_workspace:
at: /tmp/verdaccio-workspace
- run: ./scripts/integration-tests/e2e-babel.sh
workflows:
version: 2
test:
jobs:
- test
test262-master:
jobs:
- test262:
filters:
branches:
only:
- master
test262:
jobs:
- approve-test262-run:
type: approval
filters:
branches:
ignore:
- master
- test262:
requires:
- approve-test262-run
filters:
branches:
ignore:
- master
e2e:
jobs:
- publish-verdaccio
- e2e-babel:
requires:
- publish-verdaccio

View File

@@ -6,7 +6,7 @@ charset = utf-8
trim_trailing_whitespace = true
end_of_line = lf
[*.{js,json}]
[*.{js,json,ts,tsx}]
indent_style = space
indent_size = 2

View File

@@ -24,3 +24,8 @@ packages/babel-preset-env-standalone/babel-preset-env.min.js
packages/babel-standalone/babel.js
packages/babel-standalone/babel.min.js
packages/babel-parser/test/expressions
eslint/*/lib
eslint/*/node_modules
eslint/*/test
eslint/*/tests

48
.eslintrc.js Normal file
View File

@@ -0,0 +1,48 @@
module.exports = {
root: true,
plugins: ["prettier", "@babel/development", "import"],
extends: "babel",
rules: {
"prettier/prettier": "error",
// TODO: remove after babel-eslint-config-internal is fully integrated into this repository.
"max-len": "off",
},
env: {
node: true,
},
overrides: [
{
files: [
"packages/*/src/**/*.js",
"codemods/*/src/**/*.js",
"eslint/*/src/**/*.js",
],
rules: {
"@babel/development/no-undefined-identifier": "error",
"@babel/development/no-deprecated-clone": "error",
"import/no-extraneous-dependencies": "error",
"guard-for-in": "error",
},
},
{
files: [
"packages/*/test/**/*.js",
"codemods/*/test/**/*.js",
"eslint/*/test/**/*.js",
"packages/babel-helper-transform-fixture-test-runner/src/helpers.js",
"test/**/*.js",
],
env: {
jest: true,
},
},
{
files: ["packages/babel-plugin-*/src/index.js"],
excludedFiles: ["packages/babel-plugin-transform-regenerator/**/*.js"],
rules: {
"@babel/development/plugin-name": "error",
eqeqeq: ["error", "always", { null: "ignore" }],
},
},
],
};

View File

@@ -1,41 +0,0 @@
{
"root": true,
"plugins": ["prettier", "@babel/development", "import"],
"extends": "babel",
"rules": {
"prettier/prettier": "error"
},
"env": {
"node": true
},
"overrides": [
{
"files": ["packages/*/src/**/*.js", "codemods/*/src/**/*.js"],
"rules": {
"@babel/development/no-undefined-identifier": "error",
"@babel/development/no-deprecated-clone": "error",
"import/no-extraneous-dependencies": "error",
"guard-for-in": "error"
}
},
{
"files": [
"packages/*/test/**/*.js",
"codemods/*/test/**/*.js",
"packages/babel-helper-transform-fixture-test-runner/src/helpers.js",
"test/**/*.js"
],
"env": {
"jest": true
}
},
{
"files": ["packages/babel-plugin-*/src/index.js"],
"excludedFiles": ["packages/babel-plugin-transform-regenerator/**/*.js"],
"rules": {
"@babel/development/plugin-name": "error",
"eqeqeq": ["error", "always", { "null": "ignore" }]
}
}
]
}

View File

@@ -24,4 +24,6 @@ suppress_comment= \\(.\\|\n\\)*\\$FlowIgnore
suppress_type=$FlowFixMe
suppress_type=$FlowSubtype
esproposal.export_star_as=enable
esproposal.optional_chaining=enable
esproposal.nullish_coalescing=enable
module.name_mapper='^@babel\/\([a-zA-Z0-9_\-]+\)$' -> '<PROJECT_ROOT>/packages/babel-\1/src/index'

View File

@@ -122,7 +122,7 @@
* Restructure transformers so they're only ran if the AST contains nodes that they need to worry about. Improves transpilation speed significantly.
* **Bug Fix**
* Fix source maps not tracking end of node locations.
* **Spec Compliancy**
* **Spec Compliance**
* Use static super references as the home object is actually done at definition time.
* **Polish**
* Force the `es6.destructuring` transformer to be whitelisted when the `es7.objectSpread` transformer is.
@@ -479,7 +479,7 @@
## 2.12.3
* **Spec Compliancy**
* **Spec Compliance**
* Optional `typeof` transformer checks for `undefined` before passing it to the helper.
* Class methods are now named.
@@ -551,7 +551,7 @@
* Add `classesFastSuper` optional transformer that doesn't support parent getters and prototype changing.
* Add `forOfFast` transformer that speeds up `for...of` on arrays but produces more code.
* Add `--react-compat` to `bin/6to5`.
* **Spec Compliancy**
* **Spec Compliance**
* Disallow setters without a single parameter.
* Add `configurable` and `writable` to defined properties.
* Use define instead of assignment for class methods.
@@ -619,7 +619,7 @@
## 2.7.0
* **Spec Compliancy**
* **Spec Compliance**
* Disallow reassignments of imports.
* **New Feature**
* `reactCompat` option to enable pre-v0.12 react components.
@@ -662,7 +662,7 @@
* **Polish**
* Move `"use strict";` to inside module bodies instead of at the top of the file.
* Better handling of dynamic imports.
* **Spec Compliancy**
* **Spec Compliance**
* Class inheritance now has a `function` or `null` type check.
* Add `interopRequireWildcard` around wildcard imports and exports to handle non-object exports.

View File

@@ -110,7 +110,7 @@
* Throw an error on different `babel` and `babel-runtime` versions.
* Replicate module environment for `babel-node` eval.
* Clean up classes output.
* **Spec Compliancy**
* **Spec Compliance**
* Make it illegal to use a rest parameter on a setter.
## 4.6.6
@@ -150,8 +150,8 @@
* **New Feature**
* Desugar sticky regexes to a new constructor expression so it can be handled by a polyfill.
* **Spec Compliancy**
* `for...of` now outputs in a lengthy `try...catch` this is to ensure spec compliancy in regards to iterator returns and abrupt completions. See [google/traceur-compiler#1773](https://github.com/google/traceur-compiler/issues/1773) and [babel/babel/#838](https://github.com/babel/babel/issues/838) for more information.
* **Spec Compliance**
* `for...of` now outputs in a lengthy `try...catch` this is to ensure spec compliance in regards to iterator returns and abrupt completions. See [google/traceur-compiler#1773](https://github.com/google/traceur-compiler/issues/1773) and [babel/babel/#838](https://github.com/babel/babel/issues/838) for more information.
* **Polish**
* Rest parameters that are only referred to via number properties on member expressions are desugared into a direct `arguments` reference. Thanks [@neVERberleRfellerER](https://github.com/neVERberleRfellerER)!
* `$ babel` no longer exits on syntax errors.

View File

@@ -12,7 +12,7 @@
## 5.8.24
* **Spec Compliancy**
* **Spec Compliance**
* Updated `optimisation.react.inlineElements` transformer to React 0.14 output. Thanks [@spicyj](https://github.com/spicyj)!
* **Polish**
* Add support for evaluating more static nodes. Thanks [@hzoo](https://github.com/hzoo)!
@@ -451,7 +451,7 @@ Issues with publish process.
![gifs lol](https://31.media.tumblr.com/568205a0e37ae15eca510fa639589a59/tumblr_n8kw8kpcSb1sg6cg8o1_500.gif)
* **Spec Compliancy**
* **Spec Compliance**
* Allow trailing param commas for methods when using the `es7.trailingCommas` transformer.
* **Bug Fix**
* Fix `es6.blockScoping` transformer not properly ignoring `break` in `SwitchCase`.
@@ -481,7 +481,7 @@ Issues with publish process.
* Fix correct function scope being passed to `nameMethod.property` when inferring the function name for class methods.
* Fix incorrect extensions reference causing weird issues when using the Babel CLI.
* Fix destructuring param reference replacements not inheriting from their original param.
* **Spec Compliancy**
* **Spec Compliance**
* Fix order that method decorators are ran in.
## 5.2.15
@@ -616,7 +616,7 @@ Issues with publish process.
* Fix `externalHelpers` option being incorrectly listed as type `string`.
* **Internal**
* Upgrade `core-js` to `0.9.0`.
* **Spec Compliancy**
* **Spec Compliance**
* Fix object decorators not using the `initializer` pattern.
* Remove property initializer descriptor reflection.

View File

@@ -22,7 +22,7 @@
> Backports for some folks (also other's when we accidentally merged PRs from both 6.x/master)
> Lesson learned: just use `master` and backport on another branch.
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-core`, `babel-generator`, `babel-plugin-transform-flow-comments`, `babel-plugin-transform-flow-strip-types`, `babel-traverse`, `babel-types`
* [#6081](https://github.com/babel/babel/pull/6081) Flow opaque type 6.x backport. ([@jbrown215](https://github.com/jbrown215))
@@ -1468,7 +1468,7 @@ It's a one-time use tool (helpful after the initial release when upgrading from
## v6.17.0 (2016-10-01)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-preset-stage-2`, `babel-preset-stage-3`
* [#4617](https://github.com/babel/babel/pull/4617) Move async-generators to stage-3. ([@hzoo](https://github.com/hzoo))
@@ -1476,7 +1476,7 @@ It's a one-time use tool (helpful after the initial release when upgrading from
Specification repo: https://github.com/tc39/proposal-async-iteration
Asynchronous Iteration was already added in [6.16.0](http://babeljs.io/blog/2016/09/28/6.16.0#spec-compliancy) under stage-2 but it was moved to stage-3 at the [latest TC-39 meeting](https://github.com/tc39/agendas/blob/master/2016/09.md#agenda-for-the-54th-meeting-of-ecma-tc39).
Asynchronous Iteration was already added in [6.16.0](http://babeljs.io/blog/2016/09/28/6.16.0#spec-compliance) under stage-2 but it was moved to stage-3 at the [latest TC-39 meeting](https://github.com/tc39/agendas/blob/master/2016/09.md#agenda-for-the-54th-meeting-of-ecma-tc39).
```js
// async generator syntax
@@ -1569,7 +1569,7 @@ First PR!
Babel 6.16: Happy 2nd Birthday 🎂!
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-core`, `babel-generator`, `babel-helper-remap-async-to-generator`, `babel-helpers`, `babel-plugin-transform-async-generator-functions`, `babel-types`, `babel-preset-stage-2`, ...
* [#3473](https://github.com/babel/babel/pull/3473) via [#4576](https://github.com/babel/babel/pull/4576) Implement support for async generator functions and for-await statements. ([@zenparsing](https://github.com/zenparsing))
@@ -2036,7 +2036,7 @@ It's also a lot folk's first PR (or first code PR)!
* `babel-generator`, `babel-types`
* [#3570](https://github.com/babel/babel/pull/3570) Add support for the new declare module.exports of flow. ([@danez](https://github.com/danez))
#### Spec Compliancy
#### Spec Compliance
* `babel-plugin-transform-es2015-modules-amd`, `babel-plugin-transform-es2015-modules-commonjs`, `babel-plugin-transform-es2015-modules-umd`
* [#3518](https://github.com/babel/babel/pull/3518) Throw error for multiple exports default. ([@kaicataldo](https://github.com/kaicataldo))
@@ -2332,7 +2332,7 @@ Length: The number of characters in the output code
* `babel-plugin-transform-react-jsx-self`, `babel-preset-react`
* [#3540](https://github.com/babel/babel/pull/3540) Added jsx-self babel transform plugin. ([@jimfb](https://github.com/jimfb))
#### Spec Compliancy
#### Spec Compliance
* `babel-plugin-transform-es2015-unicode-regex`
* [#3338](https://github.com/babel/babel/pull/3338) Update to `regexpu-core@2.0.0` for ES2016 compliance. ([@mathiasbynens](https://github.com/mathiasbynens))
@@ -3206,7 +3206,7 @@ Changes to note:
- Reverting the class properties semicolon parser error.
- Fix regression with plugin ordering with `babel-register`.
#### Spec Compliancy
#### Spec Compliance
* `babel-plugin-transform-class-properties`, `babylon`
* [#3332](https://github.com/babel/babel/pull/3332) Revert to standard ASI behavior for class properties. ([@loganfsmyth](https://github.com/loganfsmyth))
@@ -3628,7 +3628,7 @@ Thanks to @samwgoldman for all the new flow support!
* `babel-plugin-transform-es2015-parameters`: [#3191](https://github.com/babel/babel/pull/3191) Fix the order of arguments initialization (fixes [T6809](http://phabricator.babeljs.io/T6809))
* `babel-traverse`: [#3198](https://github.com/babel/babel/pull/3198) In `evaluate()`, it should not mistake lack of confidence for falsy
* **Spec Compliancy**
* **Spec Compliance**
* `babylon`, `babel-generator`, `babel-plugin-transform-regenerator`: [#3190](https://github.com/babel/babel/pull/3190): Remove `await *` from `babylon` and raise an error for that syntax since it was removed from the proposal and was causing an issue at runtime but not at compile time (fixes [T6688](http://phabricator.babeljs.io/T6688)).
* **Internal**
@@ -3863,7 +3863,7 @@ Thanks to @samwgoldman for all the new flow support!
* Move `children` prop pushing to after props to ensure correct order in the react inline elements plugin.
* Fix `buildExternalHelpers` script ignoring non-underscored helpers.
* Fix exported classes with static class properties.
* **Spec Compliancy**
* **Spec Compliance**
* Add support for computed mutators in `babel-plugin-transform-es2015-computed-properties`.
* **Polish**
* Make interop for plugins with the `__esModule` work for all plugins no matter how they're imported/specified.
@@ -3904,7 +3904,7 @@ Thanks to @samwgoldman for all the new flow support!
* **Polish**
* Add npm 3 check to `babel-doctor`.
* Autoclear the `babel/register` cache when it gets too big to be serialised.
* **Spec Compliancy**
* **Spec Compliance**
* Add support for flow existential type parameters.
## 6.1.1
@@ -3969,7 +3969,7 @@ Thanks to @samwgoldman for all the new flow support!
## 6.0.14
* **Spec Compliancy**
* **Spec Compliance**
* Update exponentiation operator precedence.
* Fix parser bug where arrow functions have a higher precedence than they should.
* **Bug Fix**

View File

@@ -9,6 +9,11 @@ assignees: ''
## Bug Report
<!--
@babel/eslint-parser:
If you are having issues with JSX you might want to check out eslint-plugin-react. If there's an issue with new experimental syntax you might need check if it's supported by @babel/eslint-plugin.
-->
**Current Behavior**
A clear and concise description of the behavior.
@@ -22,7 +27,8 @@ var your => (code) => here;
**Expected behavior/code**
A clear and concise description of what you expected to happen (or code).
**Babel Configuration (.babelrc, package.json, cli command)**
**Babel Configuration (babel.config.js, .babelrc, package.json#babel, cli command, .eslintrc)**
- Filename: `babel.config.js`
```js
{
@@ -31,6 +37,10 @@ A clear and concise description of what you expected to happen (or code).
```
**Environment**
<!--- Tip: Instead of filling out the questions below, you can run `npx envinfo --preset babel` and paste the result below ``` -->
```
```
- Babel version(s): [e.g. v6.0.0, v7.0.0-beta.34]
- Node/npm version: [e.g. Node 8/npm 5]
- OS: [e.g. OSX 10.13.4, Windows 10]

View File

@@ -26,7 +26,10 @@ A clear and concise description of what the regression is.
var your => (code) => here;
```
**Babel Configuration (.babelrc, package.json, cli command)**
**Expected behavior/code**
A clear and concise description of what you expected to happen (or code).
**Babel Configuration (babel.config.js, .babelrc, package.json#babel, cli command)**
```js
{
@@ -34,10 +37,11 @@ var your => (code) => here;
}
```
**Expected behavior/code**
A clear and concise description of what you expected to happen (or code).
**Environment**
<!--- Tip: Instead of filling out the questions below, you can run `npx envinfo --preset babel` and paste the result below ``` -->
```
```
- Babel version(s): [e.g. v6.0.0, v7.0.0-beta.34]
- Node/npm version: [e.g. Node 8/npm 5]
- OS: [e.g. OSX 10.13.4, Windows 10]

View File

@@ -2,6 +2,8 @@
Before making a PR, please read our contributing guidelines
https://github.com/babel/babel/blob/master/CONTRIBUTING.md
Please note that the Babel Team requires two approvals before merging most PRs.
For issue references: Add a comma-separated list of a [closing word](https://help.github.com/articles/closing-issues-via-commit-messages/) followed by the ticket number fixed by the PR. (it should be underlined in the preview if done correctly)
If you are making a change that should have a docs update: submit another PR to https://github.com/babel/website
@@ -9,7 +11,7 @@ If you are making a change that should have a docs update: submit another PR to
| Q                       | A <!--(Can use an emoji 👍) -->
| ------------------------ | ---
| Fixed Issues? | `Fixes #1, Fixes #2` <!-- remove the (`) quotes to link the issues -->
| Fixed Issues? | `Fixes #1, Fixes #2` <!-- remove the (`) quotes and write "Fixes" before the number to link the issues -->
| Patch: Bug Fix? |
| Major: Breaking Change? |
| Minor: New Feature? |

View File

@@ -1,16 +0,0 @@
FROM debian:stable-slim
LABEL "name"="create-release-tag"
LABEL "version"="0.0.1"
LABEL "com.github.actions.name"="Create release tag"
LABEL "com.github.actions.description"="Creates a release tag equal to the last commit message"
LABEL "com.github.actions.icon"="tag"
LABEL "com.github.actions.color"="gray-dark"
ADD entrypoint.sh /action/entrypoint.sh
RUN chmod +x /action/entrypoint.sh
RUN apt-get update && apt-get install -y --no-install-recommends git
ENTRYPOINT ["/action/entrypoint.sh"]

View File

@@ -1,14 +0,0 @@
#!/bin/sh
set -e
# GitHub doesn't support running actions on new tags yet: we need to run it on the commit.
# For this reason, we can't be sure that the tag already exists. We can use the commit
# message to create the tag. If the tag already exists locally, they won't conflict because
# they have the same name and are on the same commit.
echo "INFO: Getting release version..."
tag_name=$(git log --oneline --format=%B -1 $GITHUB_SHA)
echo "INFO: Creating new tag..."
(git tag $tag_name $GITHUB_SHA) || echo "INFO: Tag already exists"

View File

@@ -1,16 +0,0 @@
FROM debian:stable-slim
LABEL "name"="filter"
LABEL "version"="1.1.0"
LABEL "com.github.actions.name"="Filter commit message"
LABEL "com.github.actions.description"="Stop a workflow if the message of the current commit doesn't match the pattern"
LABEL "com.github.actions.icon"="filter"
LABEL "com.github.actions.color"="gray-dark"
ADD entrypoint.sh /action/entrypoint.sh
RUN chmod +x /action/entrypoint.sh
RUN apt-get update && apt-get install -y --no-install-recommends git
ENTRYPOINT ["/action/entrypoint.sh"]

View File

@@ -1,15 +0,0 @@
#!/bin/sh
set -e
pattern=$1
message=$(git log --oneline --format=%B -1 $GITHUB_SHA)
if echo "$message" | grep -Pq "$pattern"; then
echo "INFO: $message matches $pattern"
exit 0
else
echo "INFO: $message does not match $pattern"
# 78 is the "neutral" exit status
exit 78
fi

View File

@@ -1,19 +0,0 @@
FROM node:10
LABEL "name" = "trigger-github-release"
LABEL "version" = "0.0.1"
LABEL "com.github.actions.name" = "Trigger GitHub release"
LABEL "com.github.actions.description" = "Trigger a new GitHub release and generate the changelog using lerna-changelog."
LABEL "com.github.actions.icon" = "tag"
LABEL "com.github.actions.color" = "yellow"
ADD entrypoint.sh /action/entrypoint.sh
ADD package.json /action/package.json
ADD package-lock.json /action/package-lock.json
ADD release.js /action/release.js
ADD update-changelog.js /action/update-changelog.js
RUN chmod +x /action/entrypoint.sh
ENTRYPOINT ["/action/entrypoint.sh"]

View File

@@ -1,38 +0,0 @@
#!/bin/sh
set -e
echo "INFO: Installing action dependencies..."
(cd /action; npm ci)
echo "INFO: Getting release version..."
current_tag=$(git describe --abbrev=0 --tags $GITHUB_SHA)
last_tag=$(git describe --abbrev=0 --tags $current_tag^)
echo "INFO: New version is $current_tag; last version is $last_tag."
echo "INFO: Generating the changelog..."
# lerna-changelog expects the token to be provided as GITHUB_AUTH,
# but GitHub actions don't allow to predefine custom env vars prefixed with
# GITHUB_. We need to define it here.
changelog=$(
GITHUB_AUTH="$GITHUB_TOKEN" \
node /action/node_modules/.bin/lerna-changelog --tag-from $last_tag --tag-to $current_tag
)
echo "INFO: Publishing the new GitHub release..."
echo "$changelog" | node /action/release $current_tag
echo "INFO: Updating CHANGELOG.md..."
echo "$changelog" | node /action/update-changelog
echo "INFO: Committing changelog..."
git add CHANGELOG.md
git -c user.name="$COMMIT_AUTHOR_NAME" -c user.email="$COMMIT_AUTHOR_EMAIL" \
commit -m "Add $current_tag to CHANGELOG.md [skip ci]" --no-verify --quiet
echo "INFO: Pushing updates..."
git push "https://${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" master
echo "INFO: Done! Don't forget to thank new contributors :)"

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
{
"private": true,
"name": "@internal/trigger-github-release",
"version": "0.0.1",
"author": "Nicolò Ribaudo <nicolo.ribaudo@gmail.com>",
"license": "MIT",
"dependencies": {
"@octokit/rest": "^16.3.0",
"get-stdin": "^6.0.0",
"lerna-changelog": "^0.8.2"
}
}

View File

@@ -1,26 +0,0 @@
"use strict";
const [ /* node */, /* file */, tag ] = process.argv;
const getStdin = require("get-stdin");
const octokit = require("@octokit/rest")();
octokit.authenticate({
type: "token",
token: process.env.GITHUB_TOKEN
});
const [ repoOwner, repoName ] = process.env.GITHUB_REPOSITORY.split("/");
getStdin()
.then(changelog => octokit.repos.createRelease({
owner: repoOwner,
repo: repoName,
tag_name: tag,
body: changelog,
draft: true,
}))
.catch(err => {
console.error(err);
process.exit(1);
});

View File

@@ -1,31 +0,0 @@
"use strict";
const getStdin = require("get-stdin");
const fs = require("fs").promises;
const path = require("path");
const { GITHUB_WORKSPACE } = process.env;
const INSERTION_POINT = "<!-- insert-new-changelog-here -->";
const CHANGELOG = path.resolve(GITHUB_WORKSPACE, "CHANGELOG.md");
main();
async function main() {
let [stdin, changelog] = await Promise.all([
getStdin(),
fs.readFile(CHANGELOG, "utf8"),
]);
if (!changelog.includes(INSERTION_POINT)) {
throw new Error(`Missing "${INSERTION_POINT}" in CHANGELOG.md`);
}
// Remove committers
stdin = stdin.split("\n\n#### Committers")[0];
changelog = changelog.replace(
INSERTION_POINT,
INSERTION_POINT + "\n" + stdin
);
await fs.writeFile(CHANGELOG, changelog);
}

2
.github/lock.yml vendored
View File

@@ -4,7 +4,7 @@
daysUntilLock: 91
# Comment to post before locking. Set to `false` to disable
lockComment: false
only: issues
# The label to be applied when an issue is locked
lockLabel: 'outdated'
# Issues or pull requests with these labels will not be locked

53
.github/main.workflow vendored
View File

@@ -1,53 +0,0 @@
workflow "Release" {
on = "push"
resolves = [
"Trigger GitHub release",
# GitHub actions are too slow for this, it takes more than 15 mins.
# Publishing to npm from GH actions is a cool idea, but it's a lot faster to
# publish locally.
# "Publish to npm",
]
}
action "Trigger GitHub release" {
uses = "./.github/actions/trigger-github-release/"
secrets = ["GITHUB_TOKEN"]
env = {
COMMIT_AUTHOR_NAME = "Babel Bot"
COMMIT_AUTHOR_EMAIL = "babel-bot@users.noreply.github.com"
}
needs = ["Create release tag"]
}
action "Publish to npm" {
uses = "docker://node:10"
secrets = ["NPM_TOKEN"]
runs = "make"
args = "publish-ci"
env = {
CI = "true"
}
needs = ["Create release tag"]
}
# When GitHub Actions will support the "release" event for public
# repositories, we won't need this checks anymore.
action "Create release tag" {
uses = "./.github/actions/create-release-tag"
needs = [
"Is version commit",
"On master branch",
]
}
action "Is version commit" {
uses = "./.github/actions/filter-commit-message"
# This regex is run using "grep -P".
# The (-\\S+) part is for 7.0.0-beta.1 releases.
args = "^v(\\d+\\.){2}\\d+(-\\S+)?$"
}
action "On master branch" {
uses = "actions/bin/filter@master"
args = "branch master"
}

81
.github/workflows/issue-triage.yml vendored Normal file
View File

@@ -0,0 +1,81 @@
name: Issue Triage
on:
issues:
types: [opened, labeled]
jobs:
welcome:
name: Welcome comment
runs-on: ubuntu-latest
steps:
- name: Check if Babel member
id: is_babel_member
if: github.event.action == 'opened'
uses: babel/actions/is-org-member@v2
with:
org: babel
username: ${{ github.event.issue.user.login }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: Create Welcome Comment
uses: babel/actions/create-comment@v2
if: |
github.event.action == 'opened' &&
steps.is_babel_member.outputs.result == 0
with:
token: ${{ secrets.BOT_TOKEN }}
issue: ${{ github.event.issue.number }}
comment: >
Hey @${{ github.event.issue.user.login }}!
We really appreciate you taking the time to report an issue. The
collaborators on this project attempt to help as many people as
possible, but we're a limited number of volunteers, so it's
possible this won't be addressed swiftly.
If you need any help, or just have general Babel or JavaScript questions, we have a
vibrant [Slack community](https://babeljs.slack.com) that typically always has someone
willing to help. You can sign-up [here](https://slack.babeljs.io/) for an invite."
needs_info:
name: Needs Info
runs-on: ubuntu-latest
steps:
- name: Create Needs Info Comment
uses: babel/actions/create-comment@v2
if: |
github.event.action == 'labeled' &&
github.event.label.name == 'Needs Info'
with:
token: ${{ secrets.BOT_TOKEN }}
issue: ${{ github.event.issue.number }}
comment: >
Hi @${{ github.event.issue.user.login }}!
This issue is missing some important information we'll need
to be able to reproduce this issue.
Please understand that we receive a high volume of issues,
and there are only a limited number of volunteers that help
maintain this project. The easier it is for us to decipher an
issue with the info provided, the more likely it is that we'll
be able to help.
Please make sure you have the following information documented in
this ticket:
1. Your Babel configuration (typically from `.babelrc` or `babel.config.js`)
2. The current (incorrect) behavior you're seeing
3. The behavior you expect
4. A [short, self-contained example](http://sscce.org/)
Please provide either a link to the problem via the
[`repl`](https://babeljs.io/repl/), or if the `repl` is
insufficient, a new and minimal repository with instructions on
how to build/replicate the issue.

53
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,53 @@
name: Release
on:
push:
tags: ["v*"]
jobs:
github_release:
name: Trigger GitHub release
runs-on: ubuntu-latest
steps:
- name: Checkout the new tag
uses: actions/checkout@v1.0.0
- name: Get tag info
id: tags
uses: babel/actions/get-release-tags@v2
- name: Generate the changelog
id: changelog
uses: babel/actions/generate-lerna-changelog@v2
with:
from: ${{ steps.tags.outputs.old }}
to: ${{ steps.tags.outputs.new }}
env:
GITHUB_AUTH: ${{ secrets.GITHUB_TOKEN }}
- name: Create a draft GitHub release
uses: babel/actions/publish-github-release@v2
with:
tag: ${{ steps.tags.outputs.new }}
changelog: ${{ steps.changelog.outputs.changelog }}
token: ${{ secrets.BOT_TOKEN }}
- name: Check if releasing from master
id: is_master
uses: babel/actions/ref-matches-branch@v2
with:
name: master
- name: Update CHANGELOG.md
if: steps.is_master.outputs.result == 1
uses: babel/actions/update-changelog@v2
with:
changelog: ${{ steps.changelog.outputs.changelog }}
- name: Commit CHANGELOG.md
if: steps.is_master.outputs.result == 1
run: |
git add CHANGELOG.md
git -c user.name="Babel Bot" -c user.email="babel-bot@users.noreply.github.com" \
commit -m "Add ${{ steps.tags.outputs.new }} to CHANGELOG.md [skip ci]" --no-verify --quiet
git push "https://babel-bot:${{ secrets.BOT_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git" master

5
.gitignore vendored
View File

@@ -60,3 +60,8 @@ packages/babel-preset-env-standalone/babel-preset-env.min.js
/packages/babel-parser/build
.idea/
/.changelog
/eslint/*/lib
/eslint/*/node_modules
/eslint/*/LICENSE
!/packages/babel-eslint-plugin/LICENSE

View File

@@ -13,10 +13,12 @@
"**/codemods/*/src/**/*.js",
"**/codemods/*/test/**/*.js",
"**/packages/*/src/**/*.js",
"**/packages/*/test/**/*.js"
"**/packages/*/test/**/*.js",
"**/eslint/*/src/**/*.js",
"**/eslint/*/test/**/*.js"
],
"parser": "babylon",
"options": {
"parser": "babel",
"trailingComma": "all"
}
}]

View File

@@ -3,41 +3,43 @@ git:
language: node_js
cache:
yarn: true
node_js:
# We test the latest version on circleci
- '11'
- '10'
- '8'
- '6'
os: linux
env:
global:
- PATH=$HOME/.yarn/bin:$PATH
- JOB=test
before_install:
- curl -o- -L https://yarnpkg.com/install.sh | bash
install:
# the `make test-ci` script runs this command already
- if [ "$JOB" != "test" ] && [ "$JOB" != "lint" ]; then yarn install; fi
- if [ "$JOB" = "lint" ]; then make bootstrap; fi
install: skip
before_script:
- if [ "$JOB" = "babel-parser-flow-tests" ]; then make bootstrap-flow; fi
- if [ "$JOB" = "babel-parser-test262-tests" ]; then make bootstrap-test262; fi
- curl -o- -L https://yarnpkg.com/install.sh | bash
- if [ "$TRAVIS_OS_NAME" = "windows" ]; then choco install make; fi
script:
- if [ "$JOB" = "test" ]; then make test-ci; fi
- if [ "$JOB" = "lint" ]; then make lint && make flow; fi
- if [ "$JOB" = "babel-parser-flow-tests" ]; then make test-flow-ci; fi
- if [ "$JOB" = "babel-parser-test262-tests" ]; then make test-test262-ci; fi
- if [ "$JOB" = "test" ]; then make -j test-ci; fi
- if [ "$JOB" = "lint" ]; then make -j code-quality-ci; fi
- if [ "$JOB" = "babel-parser-flow-tests" ]; then make -j test-flow-ci; fi
- if [ "$JOB" = "babel-parser-test262-tests" ]; then make -j test-test262-ci; fi
matrix:
fast_finish: true
include:
- node_js: "node"
env: JOB=lint
# We test the latest version on circleci
- node_js: "12"
# Move `windows` build to be the third since it is slow
- os: windows
node_js: "node"
env:
- JOB=test
# https://travis-ci.community/t/build-doesnt-finish-after-completing-tests/288/9
- YARN_GPG=no
# Continue node_js matrix
- node_js: "6"
- node_js: "10"
- node_js: "8"
- node_js: "node"
env: JOB=babel-parser-flow-tests
- node_js: "node"

View File

@@ -2,7 +2,7 @@
> **Tags:**
> - :boom: [Breaking Change]
> - :eyeglasses: [Spec Compliancy]
> - :eyeglasses: [Spec Compliance]
> - :rocket: [New Feature]
> - :bug: [Bug Fix]
> - :memo: [Documentation]
@@ -13,11 +13,402 @@ _Note: Gaps between patch versions are faulty, broken or test releases._
See [CHANGELOG - v4](/.github/CHANGELOG-v4.md), [CHANGELOG - v5](/.github/CHANGELOG-v5.md), and [CHANGELOG - v6](/.github/CHANGELOG-v6.md) for v4.x-v6.x changes.
See [CHANGELOG - 6to5](/.github/CHANGELOG-6to5.md) for the pre-4.0.0 version changelog.
See [Babylon's CHANGELOG](packages/babylon/CHANGELOG.md) for the Babylon pre-7.0.0-beta.29 version changelog.
See [Babylon's CHANGELOG](packages/babel-parser/CHANGELOG.md) for the Babylon pre-7.0.0-beta.29 version changelog.
See [`babel-eslint`'s releases](https://github.com/babel/babel-eslint/releases) for the changelog before `@babel/eslint-parser` 7.8.0.
See [`eslint-plugin-babel`'s releases](https://github.com/babel/eslint-plugin-babel/releases) for the changelog before `@babel/eslint-plugin` 7.8.0.
<!-- DO NOT CHANGE THESE COMMENTS - See .github/actions/trigger-github-release/update-changelog.js -->
<!-- insert-new-changelog-here -->
## v7.7.4 (2019-11-23)
#### :bug: Bug Fix
* `babel-runtime-corejs2`, `babel-runtime-corejs3`, `babel-runtime`
* [#10748](https://github.com/babel/babel/pull/10748) Add support for native esm to @babel/runtime. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-preset-env`
* [#10742](https://github.com/babel/babel/pull/10742) Update preset-env mappings. ([@existentialism](https://github.com/existentialism))
* `babel-parser`
* [#10737](https://github.com/babel/babel/pull/10737) Flow enums: fix enum body location. ([@gkz](https://github.com/gkz))
* [#10657](https://github.com/babel/babel/pull/10657) Fix some incorrect typeof parsing in flow. ([@existentialism](https://github.com/existentialism))
* [#10582](https://github.com/babel/babel/pull/10582) [parser] Allow optional async methods. ([@gonzarodriguezt](https://github.com/gonzarodriguezt))
* [#10710](https://github.com/babel/babel/pull/10710) register import equals specifier. ([@JLHwung](https://github.com/JLHwung))
* [#10592](https://github.com/babel/babel/pull/10592) Allow TypeScript type assertions in array destructuring. ([@SakibulMowla](https://github.com/SakibulMowla))
* `babel-preset-env-standalone`
* [#10732](https://github.com/babel/babel/pull/10732) fix: add missing available plugins to babel-preset-env-standalone. ([@JLHwung](https://github.com/JLHwung))
* `babel-plugin-transform-function-name`, `babel-plugin-transform-modules-umd`, `babel-preset-env`
* [#10701](https://github.com/babel/babel/pull/10701) Circumvent typeof transform for umd build template. ([@JLHwung](https://github.com/JLHwung))
* `babel-cli`
* [#10698](https://github.com/babel/babel/pull/10698) Babel should not silently remove unknown options after commander arguments. ([@JLHwung](https://github.com/JLHwung))
* `babel-plugin-proposal-optional-chaining`
* [#10694](https://github.com/babel/babel/pull/10694) Fix optional method chaining in derived classes. ([@Shriram-Balaji](https://github.com/Shriram-Balaji))
* `babel-parser`, `babel-types`
* [#10677](https://github.com/babel/babel/pull/10677) Add `asserts this [is type]` parsing support. ([@JLHwung](https://github.com/JLHwung))
* `babel-traverse`
* [#10598](https://github.com/babel/babel/pull/10598) Fix parentheses on replaceWithMultiple for JSX. ([@khoumani](https://github.com/khoumani))
* `babel-helpers`, `babel-plugin-proposal-object-rest-spread`, `babel-preset-env`
* [#10683](https://github.com/babel/babel/pull/10683) Fix: Don't call Object.keys on non-objects (babel#10482). ([@chrishinrichs](https://github.com/chrishinrichs))
#### :nail_care: Polish
* `babel-plugin-proposal-nullish-coalescing-operator`
* [#10720](https://github.com/babel/babel/pull/10720) polish: skip creating extra reference for safely re-used node. ([@JLHwung](https://github.com/JLHwung))
#### :house: Internal
* Other
* [#10731](https://github.com/babel/babel/pull/10731) Removed duplicate key in package.json. ([@rajasekarm](https://github.com/rajasekarm))
* [#10718](https://github.com/babel/babel/pull/10718) chore: use loose mode of transform. ([@JLHwung](https://github.com/JLHwung))
* [#10579](https://github.com/babel/babel/pull/10579) Implement PR workflow for running test262 on babel PRs. ([@jbhoosreddy](https://github.com/jbhoosreddy))
* [#10648](https://github.com/babel/babel/pull/10648) bump @babel/* dev dependencies. ([@JLHwung](https://github.com/JLHwung))
* [#10569](https://github.com/babel/babel/pull/10569) E2E test Babel with itself before publishing. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-core`
* [#10668](https://github.com/babel/babel/pull/10668) Reduce standalone build size. ([@JLHwung](https://github.com/JLHwung))
* `babel-plugin-transform-literals`, `babel-preset-env-standalone`
* [#10725](https://github.com/babel/babel/pull/10725) fix typo [ci-skip]. ([@JLHwung](https://github.com/JLHwung))
* `babel-cli`
* [#10692](https://github.com/babel/babel/pull/10692) Add missing flow type to babel-cli for consistency. ([@ZYSzys](https://github.com/ZYSzys))
## v7.7.3 (2019-11-08)
#### :bug: Bug Fix
* `babel-parser`
* [#10682](https://github.com/babel/babel/pull/10682) Don't recover from "adjacent jsx elements" parser error ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
## v7.7.2 (2019-11-07)
#### :bug: Bug Fix
* `babel-parser`
* [#10669](https://github.com/babel/babel/pull/10669) Parse arrows with params annotations in conditional expressions ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-plugin-transform-typescript`
* [#10658](https://github.com/babel/babel/pull/10658) fix: remove accessibility of constructor ([@JLHwung](https://github.com/JLHwung))
* `babel-traverse`
* [#10656](https://github.com/babel/babel/pull/10656) fix: add inList setter for compatibility with babel-minify ([@JLHwung](https://github.com/JLHwung))
## v7.7.1 (2019-11-05)
#### :bug: Bug Fix
* `babel-types`
* [#10650](https://github.com/babel/babel/pull/10650) Revert "throw a TypeError if identifier validation fails (#10621)" ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-preset-env`
* [#10649](https://github.com/babel/babel/pull/10649) Fix(babel-preset-env): check api.caller is a function to avoid to thr… ([@love2me](https://github.com/love2me))
## v7.7.0 (2019-11-05)
#### :eyeglasses: Spec Compliance
* `babel-types`
* [#10621](https://github.com/babel/babel/pull/10621) throw a TypeError if identifier validation fails. ([@dentrado](https://github.com/dentrado))
* `babel-parser`
* [#10559](https://github.com/babel/babel/pull/10559) fix: Exclude catch clause from let identifier error. ([@gonzarodriguezt](https://github.com/gonzarodriguezt))
* [#10567](https://github.com/babel/babel/pull/10567) [parser] Exception to 8 and 9 in tagged template. ([@pnowak](https://github.com/pnowak))
* [#10532](https://github.com/babel/babel/pull/10532) Allow duplicate __proto__ keys in patterns, simple case (#6705). ([@alejo90](https://github.com/alejo90))
#### :rocket: New Feature
* `babel-generator`, `babel-helper-create-class-features-plugin`, `babel-parser`, `babel-plugin-transform-typescript`, `babel-preset-typescript`, `babel-types`
* [#10545](https://github.com/babel/babel/pull/10545) Add support for TS declare modifier on fields. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-core`, `babel-parser`, `babel-preset-typescript`
* [#10363](https://github.com/babel/babel/pull/10363) @babel/parser error recovery. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-core`
* [#10599](https://github.com/babel/babel/pull/10599) Add support for .cjs config files. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#10501](https://github.com/babel/babel/pull/10501) Add support for babel.config.json. ([@devongovett](https://github.com/devongovett))
* [#10361](https://github.com/babel/babel/pull/10361) feat: if code frame error is on a single line, highlight the whole path. ([@SimenB](https://github.com/SimenB))
* `babel-plugin-syntax-top-level-await`, `babel-preset-env`
* [#10573](https://github.com/babel/babel/pull/10573) Create @babel/plugin-syntax-top-level-await. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-helper-builder-react-jsx`, `babel-plugin-transform-react-jsx`, `babel-preset-react`
* [#10572](https://github.com/babel/babel/pull/10572) [transform-react-jsx] Add useSpread option to transform JSX. ([@ivandevp](https://github.com/ivandevp))
* `babel-generator`, `babel-parser`, `babel-plugin-proposal-decorators`, `babel-plugin-syntax-flow`, `babel-types`
* [#10344](https://github.com/babel/babel/pull/10344) Flow enums parsing. ([@gkz](https://github.com/gkz))
* `babel-plugin-transform-function-name`, `babel-plugin-transform-modules-umd`, `babel-preset-env`
* [#10477](https://github.com/babel/babel/pull/10477) Changes UMD callsite to be more likely to pass in the intended object.. ([@MicahZoltu](https://github.com/MicahZoltu))
* `babel-parser`
* [#10449](https://github.com/babel/babel/pull/10449) Create parser plugin "topLevelAwait". ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#10521](https://github.com/babel/babel/pull/10521) [parser] Enable "exportNamespaceFrom" by default. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#10483](https://github.com/babel/babel/pull/10483) [parser] Add support for private fields in TypeScript. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-generator`, `babel-parser`, `babel-types`
* [#10543](https://github.com/babel/babel/pull/10543) add assertions signature for TypeScript. ([@tanhauhau](https://github.com/tanhauhau))
* `babel-cli`, `babel-register`
* [#8622](https://github.com/babel/babel/pull/8622) Make dir for babel --out-file. ([@TrySound](https://github.com/TrySound))
* `babel-cli`
* [#10399](https://github.com/babel/babel/pull/10399) Closes [#8326](https://github.com/babel/babel/issues/8326), add back --quiet option.. ([@chris-peng-1244](https://github.com/chris-peng-1244))
#### :bug: Bug Fix
* `babel-helpers`, `babel-plugin-proposal-async-generator-functions`, `babel-plugin-proposal-function-sent`, `babel-preset-env`
* [#10422](https://github.com/babel/babel/pull/10422) Correctly delegate .return() in async generator. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-helper-module-transforms`, `babel-plugin-transform-modules-commonjs`
* [#10628](https://github.com/babel/babel/pull/10628) Don't throw when destructuring into a var named as an import. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-plugin-transform-modules-systemjs`
* [#10638](https://github.com/babel/babel/pull/10638) fix: remove ExportNamedDeclaration when the specifier is empty. ([@JLHwung](https://github.com/JLHwung))
* `babel-parser`
* [#10631](https://github.com/babel/babel/pull/10631) [TS] Parse calls with type args in optional chains. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#10607](https://github.com/babel/babel/pull/10607) fixed missing errors on assignment pattern in object expression. ([@vivek12345](https://github.com/vivek12345))
* [#10594](https://github.com/babel/babel/pull/10594) [parser] Parse only modifiers of actual methods. ([@gonzarodriguezt](https://github.com/gonzarodriguezt))
* `babel-plugin-transform-typescript`
* [#10555](https://github.com/babel/babel/pull/10555) [TS] Correctly transform computed strings and templates in enums. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-core`
* [#10623](https://github.com/babel/babel/pull/10623) Fix: inputSourceMap should work when it is an external file. ([@JLHwung](https://github.com/JLHwung))
* [#10539](https://github.com/babel/babel/pull/10539) fix: remove filename annotation in buildCodeFrameError. ([@JLHwung](https://github.com/JLHwung))
* `babel-plugin-proposal-decorators`
* [#10578](https://github.com/babel/babel/pull/10578) [decorators] fix: support string literal properties. ([@mwhitworth](https://github.com/mwhitworth))
* `babel-helpers`, `babel-plugin-proposal-dynamic-import`, `babel-plugin-transform-modules-commonjs`, `babel-preset-env`
* [#10574](https://github.com/babel/babel/pull/10574) fix: _interopRequireWildcard should only cache objects. ([@samMeow](https://github.com/samMeow))
* `babel-traverse`
* [#9777](https://github.com/babel/babel/pull/9777) [traverse] Allow skipping nodes inserted with .replaceWith(). ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-preset-env`
* [#10146](https://github.com/babel/babel/pull/10146) Inject core-js@3 imports in Program:exit instead of on post(). ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-generator`
* [#10519](https://github.com/babel/babel/pull/10519) Fix generator missing parens around an arrow returning function type. ([@existentialism](https://github.com/existentialism))
* `babel-plugin-transform-async-to-generator`, `babel-preset-env`, `babel-traverse`
* [#9939](https://github.com/babel/babel/pull/9939) Don't use args rest/spread to hoist super method calls. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :nail_care: Polish
* `babel-plugin-transform-classes`, `babel-plugin-transform-regenerator`, `babel-preset-env`
* [#9481](https://github.com/babel/babel/pull/9481) [preset-env] Don't use async-to-generator when already using regenerator. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-helpers`, `babel-plugin-transform-modules-commonjs`, `babel-preset-env`
* [#10585](https://github.com/babel/babel/pull/10585) fix(babelhelpers/interopRequireWildcard): Avoid double nullish check. ([@ExE-Boss](https://github.com/ExE-Boss))
* `babel-register`
* [#10557](https://github.com/babel/babel/pull/10557) fix: disable caching when babel could not read/write cache. ([@JLHwung](https://github.com/JLHwung))
#### :house: Internal
* `babel-cli`, `babel-node`
* [#10619](https://github.com/babel/babel/pull/10619) chore: remove output-file-sync dependency. ([@JLHwung](https://github.com/JLHwung))
* `babel-register`
* [#10614](https://github.com/babel/babel/pull/10614) chore: bump source-map-support to 0.5.14. ([@JLHwung](https://github.com/JLHwung))
* `babel-helper-create-regexp-features-plugin`, `babel-plugin-proposal-unicode-property-regex`, `babel-plugin-transform-dotall-regex`, `babel-plugin-transform-named-capturing-groups-regex`, `babel-plugin-transform-unicode-regex`, `babel-preset-env`
* [#10447](https://github.com/babel/babel/pull/10447) Merge multiple regex transform plugin. ([@JLHwung](https://github.com/JLHwung))
* `babel-preset-env`
* [#10612](https://github.com/babel/babel/pull/10612) chore: update web.immediate support fixtures. ([@JLHwung](https://github.com/JLHwung))
* `babel-helper-module-imports`
* [#10608](https://github.com/babel/babel/pull/10608) Use .find instead of .filter to get targetPath in ImportInjector. ([@Andarist](https://github.com/Andarist))
* Other
* [#10600](https://github.com/babel/babel/pull/10600) Test node@13 on circle. ([@existentialism](https://github.com/existentialism))
* [#10593](https://github.com/babel/babel/pull/10593) chore: replace outdated travis-ci.org badges [ci skip]. ([@JLHwung](https://github.com/JLHwung))
* [#10591](https://github.com/babel/babel/pull/10591) chore: test against Node.js 13. ([@JLHwung](https://github.com/JLHwung))
* [#10556](https://github.com/babel/babel/pull/10556) Add master branch workflow for test262 tests. ([@jbhoosreddy](https://github.com/jbhoosreddy))
* [#10553](https://github.com/babel/babel/pull/10553) chore: introduce envinfo into environment section. ([@JLHwung](https://github.com/JLHwung))
* `babel-runtime`
* [#10418](https://github.com/babel/babel/pull/10418) docs: add homepage link. ([@DanArthurGallagher](https://github.com/DanArthurGallagher))
* `babel-helper-annotate-as-pure`, `babel-helper-bindify-decorators`, `babel-helper-builder-binary-assignment-operator-visitor`, `babel-helper-builder-react-jsx`, `babel-helper-call-delegate`, `babel-helper-define-map`, `babel-helper-explode-assignable-expression`, `babel-helper-explode-class`, `babel-helper-function-name`, `babel-helper-get-function-arity`, `babel-helper-hoist-variables`, `babel-helper-member-expression-to-functions`, `babel-helper-module-imports`, `babel-helper-module-transforms`, `babel-helper-optimise-call-expression`, `babel-helper-remap-async-to-generator`, `babel-helper-replace-supers`, `babel-helper-simple-access`, `babel-helper-split-export-declaration`, `babel-helper-wrap-function`, `babel-helpers`, `babel-template`
* [#10568](https://github.com/babel/babel/pull/10568) Bump babel-types to ^7.6.3. ([@JLHwung](https://github.com/JLHwung))
#### :running_woman: Performance
* `babel-traverse`
* [#10480](https://github.com/babel/babel/pull/10480) Traverse performance. ([@JLHwung](https://github.com/JLHwung))
## v7.6.4 (2019-10-10)
#### :eyeglasses: Spec Compliance
* `babel-parser`
* [#10491](https://github.com/babel/babel/pull/10491) Trailing comma after rest - The final fix ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :bug: Bug Fix
* `babel-cli`, `babel-core`, `babel-generator`, `babel-helper-transform-fixture-test-runner`
* [#10536](https://github.com/babel/babel/pull/10536) Revert "chore: Upgrade source-map to 0.6.1 (#10446)" ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
## v7.6.3 (2019-10-08)
#### :eyeglasses: Spec Compliance
* `babel-parser`
* [#10469](https://github.com/babel/babel/pull/10469) Disallow await inside async arrow params ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#10493](https://github.com/babel/babel/pull/10493) [parser] Disallow numeric separators in legacy octal like integers ([@gonzarodriguezt](https://github.com/gonzarodriguezt))
#### :rocket: New Feature
* `babel-types`
* [#10504](https://github.com/babel/babel/pull/10504) Add declarations for more of @babel/types exports ([@Jessidhia](https://github.com/Jessidhia))
#### :bug: Bug Fix
* `babel-plugin-transform-block-scoping`
* [#10343](https://github.com/babel/babel/pull/10343) Do not remove let bindings even they are wrapped in closure ([@JLHwung](https://github.com/JLHwung))
* `babel-parser`
* [#10119](https://github.com/babel/babel/pull/10119) add scope to TSModuleDeclaration ([@tanhauhau](https://github.com/tanhauhau))
* [#10332](https://github.com/babel/babel/pull/10332) Do not allow member expressions to start async arrows ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#10490](https://github.com/babel/babel/pull/10490) [parser] Don't crash on comment after trailing comma after elision ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-plugin-transform-react-constant-elements`, `babel-traverse`
* [#10529](https://github.com/babel/babel/pull/10529) Do not hoist jsx referencing a mutable binding ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-generator`, `babel-parser`, `babel-plugin-transform-block-scoping`, `babel-plugin-transform-flow-comments`, `babel-plugin-transform-flow-strip-types`, `babel-plugin-transform-typescript`
* [#10220](https://github.com/babel/babel/pull/10220) Flow: interface identifier should be declared in the scope ([@JLHwung](https://github.com/JLHwung))
#### :nail_care: Polish
* `babel-core`
* [#10419](https://github.com/babel/babel/pull/10419) assertNoDuplicates throw with more context ([@hjdivad](https://github.com/hjdivad))
* [#10511](https://github.com/babel/babel/pull/10511) Add filename to transform error ([@JLHwung](https://github.com/JLHwung))
#### :house: Internal
* Other
* [#10506](https://github.com/babel/babel/pull/10506) Use `make -j` for parallel build ([@JLHwung](https://github.com/JLHwung))
* [#10443](https://github.com/babel/babel/pull/10443) perf: only apply lazy cjs module transform on cli and core ([@JLHwung](https://github.com/JLHwung))
* [#10494](https://github.com/babel/babel/pull/10494) Enable optional chaining and nullish coalescing plugins ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-cli`, `babel-core`, `babel-generator`, `babel-helper-fixtures`, `babel-helper-transform-fixture-test-runner`, `babel-node`, `babel-plugin-transform-react-jsx-source`, `babel-plugin-transform-runtime`, `babel-preset-env`, `babel-preset-react`
* [#10249](https://github.com/babel/babel/pull/10249) Add windows to travis ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :running_woman: Performance
* `babel-parser`
* [#10371](https://github.com/babel/babel/pull/10371) perf: replace lookahead by lookaheadCharCode ([@JLHwung](https://github.com/JLHwung))
* Other
* [#10443](https://github.com/babel/babel/pull/10443) perf: only apply lazy cjs module transform on cli and core ([@JLHwung](https://github.com/JLHwung))
## v7.6.2 (2019-09-23)
#### :eyeglasses: Spec Compliance
* `babel-parser`
* [#10472](https://github.com/babel/babel/pull/10472) added check to disallow super.private variable access and test case added. ([@vivek12345](https://github.com/vivek12345))
* [#10468](https://github.com/babel/babel/pull/10468) [parser] Disallow numeric separator in unicode scape sequences. ([@ivandevp](https://github.com/ivandevp))
* [#10467](https://github.com/babel/babel/pull/10467) [parser] Invalid NonOctal Decimal. ([@gonzarodriguezt](https://github.com/gonzarodriguezt))
* [#10461](https://github.com/babel/babel/pull/10461) [parser] Disallow static fields named `constructor`. ([@guywaldman](https://github.com/guywaldman))
* [#10455](https://github.com/babel/babel/pull/10455) [parser] Report escapes in kws only if they won't be used as identifiers. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :bug: Bug Fix
* `babel-parser`
* [#10445](https://github.com/babel/babel/pull/10445) Leave trailing comments after handling a possible trailing comma. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-cli`
* [#10400](https://github.com/babel/babel/pull/10400) fix: allow the process to exit naturally. ([@JLHwung](https://github.com/JLHwung))
* `babel-core`
* [#10402](https://github.com/babel/babel/pull/10402) fix: pass optionLoc when validating plugin object. ([@JLHwung](https://github.com/JLHwung))
* `babel-plugin-transform-block-scoping`, `babel-plugin-transform-spread`, `babel-traverse`
* [#10417](https://github.com/babel/babel/pull/10417) Do not guess relative execution status for exported fns. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-plugin-proposal-object-rest-spread`, `babel-preset-env`
* [#10275](https://github.com/babel/babel/pull/10275) fix object rest in array pattern. ([@tanhauhau](https://github.com/tanhauhau))
#### :house: Internal
* `babel-plugin-transform-named-capturing-groups-regex`
* [#10430](https://github.com/babel/babel/pull/10430) refactor: replace regexp-tree by regexpu. ([@JLHwung](https://github.com/JLHwung))
* Other
* [#10441](https://github.com/babel/babel/pull/10441) Update GitHub actions to v2. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#10427](https://github.com/babel/babel/pull/10427) chore: add lint-ts rule. ([@JLHwung](https://github.com/JLHwung))
* `babel-helper-fixtures`
* [#10428](https://github.com/babel/babel/pull/10428) chore: remove tryResolve dependency. ([@JLHwung](https://github.com/JLHwung))
* `babel-node`
* [#10429](https://github.com/babel/babel/pull/10429) Remove babel polyfill dependency of babel-node. ([@bdwain](https://github.com/bdwain))
* `babel-generator`, `babel-helper-fixtures`
* [#10420](https://github.com/babel/babel/pull/10420) chore: remove trim-right dependency. ([@JLHwung](https://github.com/JLHwung))
* `babel-core`, `babel-plugin-transform-runtime`, `babel-register`
* [#10405](https://github.com/babel/babel/pull/10405) Remove circular dependency. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :running_woman: Performance
* `babel-parser`
* [#10421](https://github.com/babel/babel/pull/10421) Miscellaneous perf tweak. ([@JLHwung](https://github.com/JLHwung))
## v7.6.1 (2019-09-06)
#### :bug: Bug Fix
* `babel-types`
* [#10404](https://github.com/babel/babel/pull/10404) fix(types): correct typescript function headers ([@forstermatth](https://github.com/forstermatth))
* `babel-node`
* [#9758](https://github.com/babel/babel/pull/9758) Remove process.exit(1) from babel-node ([@dword-design](https://github.com/dword-design))
## v7.6.0 (2019-09-06)
#### :eyeglasses: Spec Compliance
* `babel-generator`, `babel-parser`
* [#10269](https://github.com/babel/babel/pull/10269) Fix parenthesis for nullish coalescing ([@vivek12345](https://github.com/vivek12345))
* `babel-helpers`, `babel-plugin-transform-block-scoping`, `babel-traverse`
* [#9498](https://github.com/babel/babel/pull/9498) Fix tdz checks in transform-block-scoping plugin ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
#### :rocket: New Feature
* `babel-core`
* [#10181](https://github.com/babel/babel/pull/10181) feat(errors): validate preset when filename is absent ([@JLHwung](https://github.com/JLHwung))
* `babel-helper-create-class-features-plugin`, `babel-helpers`, `babel-plugin-proposal-private-methods`
* [#10217](https://github.com/babel/babel/pull/10217) Class Private Static Accessors ([@tim-mc](https://github.com/tim-mc))
* `babel-generator`, `babel-parser`, `babel-types`
* [#10148](https://github.com/babel/babel/pull/10148) V8intrinsic syntax plugin ([@JLHwung](https://github.com/JLHwung))
* `babel-preset-typescript`
* [#10382](https://github.com/babel/babel/pull/10382) Allow setting 'allowNamespaces' in typescript preset ([@dsgkirkby](https://github.com/dsgkirkby))
* `babel-parser`
* [#10352](https://github.com/babel/babel/pull/10352) Do not register ambient classes to the TS scope ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-types`
* [#10248](https://github.com/babel/babel/pull/10248) Add static to class property builder ([@yuri-karadzhov](https://github.com/yuri-karadzhov))
#### :bug: Bug Fix
* `babel-helpers`, `babel-plugin-transform-destructuring`, `babel-plugin-transform-modules-commonjs`, `babel-preset-env`
* [#10396](https://github.com/babel/babel/pull/10396) fix: early return when instance is not iterable ([@JLHwung](https://github.com/JLHwung))
* `babel-plugin-transform-runtime`
* [#10398](https://github.com/babel/babel/pull/10398) Add supports for polyfill computed methods ([@rhyzx](https://github.com/rhyzx))
* `babel-preset-env`
* [#10397](https://github.com/babel/babel/pull/10397) Don't polyfill when evaluation is not confident ([@rhyzx](https://github.com/rhyzx))
* [#10218](https://github.com/babel/babel/pull/10218) [preset-env] Include / exclude module plugins properly ([@AdamRamberg](https://github.com/AdamRamberg))
* [#10284](https://github.com/babel/babel/pull/10284) Replace es.string.reverse with es.array.reverse ([@epicfaace](https://github.com/epicfaace))
* `babel-plugin-transform-named-capturing-groups-regex`
* [#10395](https://github.com/babel/babel/pull/10395) fix: transform name capturing regex once ([@JLHwung](https://github.com/JLHwung))
* `babel-types`
* [#10098](https://github.com/babel/babel/pull/10098) fix typescript for babel-types ([@tanhauhau](https://github.com/tanhauhau))
* [#10319](https://github.com/babel/babel/pull/10319) Add a builder definition including name for tsTypeParameter ([@deificx](https://github.com/deificx))
* `babel-parser`
* [#10380](https://github.com/babel/babel/pull/10380) Refactor trailing comment adjustment ([@banga](https://github.com/banga))
* [#10369](https://github.com/babel/babel/pull/10369) Retain trailing comments in array expressions ([@banga](https://github.com/banga))
* [#10292](https://github.com/babel/babel/pull/10292) fix: assign trailing comment to ObjectProperty only when inside an ObjectExpression ([@JLHwung](https://github.com/JLHwung))
* `babel-parser`, `babel-types`
* [#10366](https://github.com/babel/babel/pull/10366) Don't allow JSXNamespacedName to chain ([@jridgewell](https://github.com/jridgewell))
* `babel-generator`, `babel-plugin-transform-typescript`, `babel-types`
* [#10341](https://github.com/babel/babel/pull/10341) Add TSBigIntKeyword to @babel/types ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-core`, `babel-types`
* [#9960](https://github.com/babel/babel/pull/9960) Do not delete "fake" source map comments from strings ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-plugin-transform-flow-comments`
* [#10329](https://github.com/babel/babel/pull/10329) Fix flow comments plugin issues ([@zaygraveyard](https://github.com/zaygraveyard))
* `babel-helpers`, `babel-plugin-transform-react-constant-elements`
* [#10307](https://github.com/babel/babel/pull/10307) [fix] jsx helper calls order ([@Sinewyk](https://github.com/Sinewyk))
* `babel-plugin-proposal-decorators`
* [#10302](https://github.com/babel/babel/pull/10302) fix: register inserted class declaration ([@thiagoarrais](https://github.com/thiagoarrais))
* `babel-plugin-proposal-do-expressions`, `babel-traverse`
* [#10070](https://github.com/babel/babel/pull/10070) Do expressions transform for switch statements ([@tanhauhau](https://github.com/tanhauhau))
* [#10277](https://github.com/babel/babel/pull/10277) remove finally from completion record in try statement ([@tanhauhau](https://github.com/tanhauhau))
* `babel-helpers`, `babel-plugin-transform-named-capturing-groups-regex`
* [#10136](https://github.com/babel/babel/pull/10136) fix capturing group for matchAll ([@tanhauhau](https://github.com/tanhauhau))
#### :nail_care: Polish
* `babel-plugin-transform-runtime`, `babel-preset-env`
* [#10372](https://github.com/babel/babel/pull/10372) Don't allow instance properties transformation on namespace ([@rhyzx](https://github.com/rhyzx))
#### :memo: Documentation
* [#10313](https://github.com/babel/babel/pull/10313) Adds note about two approval policy to PR template ([@thiagoarrais](https://github.com/thiagoarrais))
#### :house: Internal
* `babel-register`
* [#9847](https://github.com/babel/babel/pull/9847) Remove core-js dependency from @babel/register ([@coreyfarrell](https://github.com/coreyfarrell))
* `babel-helper-fixtures`, `babel-helper-transform-fixture-test-runner`, `babel-preset-env`
* [#10401](https://github.com/babel/babel/pull/10401) Use "validateLogs" for preset-env's debug fixtures ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-parser`
* [#10380](https://github.com/babel/babel/pull/10380) Refactor trailing comment adjustment ([@banga](https://github.com/banga))
* `babel-helper-fixtures`, `babel-helper-transform-fixture-test-runner`, `babel-plugin-proposal-dynamic-import`, `babel-preset-env`
* [#10326](https://github.com/babel/babel/pull/10326) Allow testing logs with `@babel/helper-transform-fixture-test-runner` ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-runtime-corejs2`, `babel-runtime`, `babel-types`
* [#10331](https://github.com/babel/babel/pull/10331) Commit generated code ([@JLHwung](https://github.com/JLHwung))
* `babel-cli`, `babel-core`, `babel-generator`, `babel-helper-create-class-features-plugin`, `babel-helper-fixtures`, `babel-node`, `babel-parser`, `babel-plugin-proposal-do-expressions`, `babel-plugin-proposal-pipeline-operator`, `babel-plugin-transform-modules-commonjs`, `babel-plugin-transform-runtime`, `babel-preset-env`, `babel-standalone`, `babel-template`, `babel-traverse`, `babel-types`
* [#10228](https://github.com/babel/babel/pull/10228) Update dev dependencies and fix linting errors ([@danez](https://github.com/danez))
* `babel-cli`
* [#10244](https://github.com/babel/babel/pull/10244) added flow to babel cli ([@Letladi](https://github.com/Letladi))
#### :running_woman: Performance
* `babel-helpers`, `babel-plugin-transform-modules-commonjs`, `babel-preset-env`
* [#10161](https://github.com/babel/babel/pull/10161) Improves the logic to import objects in helpers ([@ifsnow](https://github.com/ifsnow))
* `babel-traverse`
* [#10243](https://github.com/babel/babel/pull/10243) perf: always return `void 0` as undefined node ([@JLHwung](https://github.com/JLHwung))
## v7.5.5 (2019-07-17)
#### :bug: Bug Fix
* `babel-code-frame`
* [#10211](https://github.com/babel/babel/pull/10211) fix code-frame marker with highlighting ([@tanhauhau](https://github.com/tanhauhau))
* `babel-plugin-proposal-object-rest-spread`
* [#10200](https://github.com/babel/babel/pull/10200) Workaround #10179 in proposal-object-rest-spread ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-types`
* [#10198](https://github.com/babel/babel/pull/10198) add assertShape to validate templateElement ([@tanhauhau](https://github.com/tanhauhau))
* `babel-helper-create-class-features-plugin`, `babel-helper-member-expression-to-functions`, `babel-helper-replace-supers`, `babel-helpers`, `babel-plugin-proposal-class-properties`, `babel-plugin-transform-classes`, `babel-plugin-transform-object-super`, `babel-types`
* [#10017](https://github.com/babel/babel/pull/10017) destructuring private fields with array pattern / object pattern ([@tanhauhau](https://github.com/tanhauhau))
* `babel-plugin-transform-flow-comments`
* [#9901](https://github.com/babel/babel/pull/9901) fix transform-flow-comments for import types ([@tanhauhau](https://github.com/tanhauhau))
* `babel-core`, `babel-helpers`
* [#10208](https://github.com/babel/babel/pull/10208) always throw when add missing helpers ([@tanhauhau](https://github.com/tanhauhau))
* `babel-plugin-transform-runtime`
* [#10207](https://github.com/babel/babel/pull/10207) Closes [#10205](https://github.com/babel/babel/issues/10205) ([@sag1v](https://github.com/sag1v))
* `babel-helpers`, `babel-plugin-transform-instanceof`
* [#10197](https://github.com/babel/babel/pull/10197) fix: custom instOfHandler result should be cast to boolean ([@JLHwung](https://github.com/JLHwung))
#### :house: Internal
* `babel-parser`, `babel-plugin-transform-typescript`
* [#10014](https://github.com/babel/babel/pull/10014) Use correct extension for typescript fixtures ([@danez](https://github.com/danez))
#### :running_woman: Performance
* `babel-helpers`, `babel-plugin-proposal-object-rest-spread`, `babel-preset-env`
* [#10189](https://github.com/babel/babel/pull/10189) perf: match ownKeys perf to the one of objectSpread ([@JLHwung](https://github.com/JLHwung))
## v7.5.4 (2019-07-09)
#### :bug: Bug Fix
* `babel-helpers`, `babel-plugin-proposal-object-rest-spread`, `babel-preset-env`
* [#10188](https://github.com/babel/babel/pull/10188) Fix _objectSpread2 for real ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
## v7.5.3 (2019-07-09)
#### :bug: Bug Fix
@@ -355,7 +746,7 @@ See [Babylon's CHANGELOG](packages/babylon/CHANGELOG.md) for the Babylon pre-7.0
## v7.3.3 (2019-02-15)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-generator`
* [#9501](https://github.com/babel/babel/pull/9501) Correctly output escapes in directives ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
@@ -377,11 +768,11 @@ See [Babylon's CHANGELOG](packages/babylon/CHANGELOG.md) for the Babylon pre-7.0
* [#9491](https://github.com/babel/babel/pull/9491) Better error output in parser tests ([@danez](https://github.com/danez))
## v7.3.2 (2019-02-04)
Various spec compliancy fixes and better support for smart pipelines and private methods.
Various spec compliance fixes and better support for smart pipelines and private methods.
Thanks @gverni, @naffiq, @spondbob and @dstaley for their first PRs!
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-parser`
* [#9403](https://github.com/babel/babel/pull/9403) Fix line continuation with Unicode line terminators. ([@danez](https://github.com/danez))
* [#9400](https://github.com/babel/babel/pull/9400) Make yield a contextual keyword. ([@danez](https://github.com/danez))
@@ -429,7 +820,7 @@ This release fixes some regressions introduced in v7.3.0
Thanks to @jamesgeorge007 and @armano2 for their first PR!
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-parser`
* [#9314](https://github.com/babel/babel/pull/9314) Disallow async functions as loop body. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* [#9315](https://github.com/babel/babel/pull/9315) Parse class heritage as strict mode code. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
@@ -650,7 +1041,7 @@ You can read more about this release at https://babeljs.io/blog/2018/12/03/7.2.0
## v7.1.5 (2018-11-06)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-parser`, `babylon`
* [#7727](https://github.com/babel/babel/pull/7727) Fix await in function name and parameters. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
@@ -1113,7 +1504,7 @@ Fixed a peerDep issue
Mostly bug fixes and some decorator updates
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-plugin-proposal-unicode-property-regex`
* [#8127](https://github.com/babel/babel/pull/8127) Update plugin-proposal-unicode-property-regex for Unicode v11. ([@mathiasbynens](https://github.com/mathiasbynens))
* `babel-parser`
@@ -1213,7 +1604,7 @@ Mostly bugfix release for a regression in decorators, and a quick fix for some n
- Fix IE10 class regression
- Various fixes, many TS fixes
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-parser`, `babel-plugin-proposal-json-strings`, `babel-plugin-syntax-json-strings`, `babel-preset-stage-3`
* [#7985](https://github.com/babel/babel/pull/7985) Subsume json. ([@jridgewell](https://github.com/jridgewell))
@@ -1403,7 +1794,7 @@ Mostly bugfix release for a regression in decorators, and a quick fix for some n
* `babel-generator`, `babel-helper-define-map`, `babel-plugin-syntax-class-properties`, `babel-plugin-transform-parameters`, `babel-plugin-transform-react-constant-elements`, `babel-traverse`, `babel-types`
* [#7666](https://github.com/babel/babel/pull/7666) Private Properties phase 1. ([@jridgewell](https://github.com/jridgewell))
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-helper-simple-access`, `babel-plugin-transform-modules-commonjs`, `babel-plugin-transform-modules-systemjs`
* [#7766](https://github.com/babel/babel/pull/7766) Correct update expression Number coercion. ([@jridgewell](https://github.com/jridgewell))
* `babel-core`, `babel-generator`, `babel-plugin-proposal-decorators`, `babel-types`, `babylon`
@@ -1491,7 +1882,7 @@ Mostly bugfix release for a regression in decorators, and a quick fix for some n
Various fixes, also lazy-load `@babel/core` dependencies (should make config lookup and other API methods fast for other projects to use).
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-plugin-proposal-logical-assignment-operators`
* [#7604](https://github.com/babel/babel/pull/7604) Logical Assignment: ensure computed key isn't recomputed. ([@jridgewell](https://github.com/jridgewell))
@@ -1590,7 +1981,7 @@ We'll need to update tooling for this ^. Also published `gulp-babel@8.0.0-beta.2
* `babel-register`
* [#7416](https://github.com/babel/babel/pull/7416) Replace instead of merging babel-register options, and resolve cwd up front. ([@loganfsmyth](https://github.com/loganfsmyth))
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babylon`
* [#7503](https://github.com/babel/babel/pull/7503) Update test262 test script and a few keyword escape fixes. ([@existentialism](https://github.com/existentialism))
* [#7498](https://github.com/babel/babel/pull/7498) Disallow setters to have RestElement. ([@danez](https://github.com/danez))
@@ -1738,7 +2129,7 @@ We'll need to update tooling for this ^. Also published `gulp-babel@8.0.0-beta.2
## v7.0.0-beta.39 (2018-01-30)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-plugin-proposal-optional-chaining`
* [#6345](https://github.com/babel/babel/pull/6345) Remove old optional chain features. ([@jridgewell](https://github.com/jridgewell))
@@ -1951,7 +2342,7 @@ Fixes + [overrides](https://github.com/babel/babel/pull/7091) config feature
Various bug fixes, first version of Babel to use the MIT version of `regenerator`
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babylon`
* [#6986](https://github.com/babel/babel/pull/6986) Fix destructuring assignment spec violation. ([@ksashikumar](https://github.com/ksashikumar))
* `babel-helper-replace-supers`, `babel-helpers`, `babel-plugin-proposal-class-properties`, `babel-plugin-transform-classes`, `babel-plugin-transform-parameters`
@@ -2004,7 +2395,7 @@ Various bug fixes, first version of Babel to use the MIT version of `regenerator
* `babel-preset-stage-1`, `babel-preset-stage-2`
* [#6949](https://github.com/babel/babel/pull/6949) Fix stage refs to exportNamespaceFrom and exportDefaultFrom. ([@existentialism](https://github.com/existentialism))
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-preset-stage-0`, `babel-preset-stage-1`
* [#6943](https://github.com/babel/babel/pull/6943) Moving Do expression to stage 1. ([@rajzshkr](https://github.com/rajzshkr))
@@ -2018,7 +2409,7 @@ Various bug fixes, first version of Babel to use the MIT version of `regenerator
## v7.0.0-beta.33 (2017-12-01)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-generator`, `babel-plugin-proposal-export-default-from`, `babel-plugin-proposal-export-default`, `babel-plugin-proposal-export-namespace-from`, `babel-plugin-proposal-export-namespace`, `babel-plugin-syntax-export-default-from`, `babel-plugin-syntax-export-extensions`, `babel-plugin-syntax-export-namespace-from`, `babel-standalone`, `babylon`
* [#6920](https://github.com/babel/babel/pull/6920) Split exportExtensions into exportDefault and exportNamespace plugins…. ([@existentialism](https://github.com/existentialism))
* `babylon`
@@ -2203,7 +2594,7 @@ Various bug fixes, first version of Babel to use the MIT version of `regenerator
> Note: don't use ^ in your dependencies when using a beta. It can still break between (we should try not to do it but it can), so pin all the packages like `"@babel/cli" : "7.0.0-beta.4"`
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-plugin-transform-optional-chaining`
* [#6525](https://github.com/babel/babel/pull/6525) Optional Chaining: Account for document.all. ([@azz](https://github.com/azz))
* `babel-preset-env`, `babel-helper-remap-async-to-generator`, `babel-helpers`, `babel-plugin-transform-async-generator-functions`, `babel-plugin-transform-async-to-generator`, `babel-plugin-transform-function-sent`
@@ -2483,7 +2874,7 @@ let {...{}} = {}; let {...[]} = {};
- Add `--config-file` CLI flag to explicitly pass a config location
- Move `babel-standalone` into the repo (another form of this used to be `babel-browser`)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-plugin-transform-async-to-generator`, `babel-*`
* [#6094](https://github.com/babel/babel/pull/6094) Spec compatibility for iteratorClose condition.. ([@yavorsky](https://github.com/yavorsky))
* `babel-helpers`, `babel-plugin-transform-es2015-computed-properties`
@@ -2619,7 +3010,7 @@ Initial release of typescript equivalent of how Babel handles flow with a new `b
## v7.0.0-alpha.18 (2017-08-03)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-generator`, `babel-plugin-transform-flow-comments`, `babel-plugin-transform-flow-strip-types`, `babel-types`
* [#5990](https://github.com/babel/babel/pull/5990) Flow opaque type aliases. ([@jbrown215](https://github.com/jbrown215))
* `babel-preset-stage-3`
@@ -2668,9 +3059,9 @@ Initial release of typescript equivalent of how Babel handles flow with a new `b
- Optional catch binding `try {} catch {}`: `babel-plugin-transform-optional-catch-binding`
- es2015-parameters `loose` mode that doesn't use `arguments`
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-plugin-check-es2015-constants`
* [#5930](https://github.com/babel/babel/pull/5930) Spec compliancy of check-es2015-constants plugin. ([@maurobringolf](https://github.com/maurobringolf))
* [#5930](https://github.com/babel/babel/pull/5930) Spec compliance of check-es2015-constants plugin. ([@maurobringolf](https://github.com/maurobringolf))
> Instead of throwing a compile time error when const is violated, Babel should insert a throw statement before the violation.
@@ -2975,7 +3366,7 @@ var A = function A() {
## v7.0.0-alpha.12 (2017-05-31)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-core`, `babel-generator`, `babel-plugin-syntax-numeric-separator`, `babel-plugin-transform-numeric-separator`, `babel-preset-stage-1`, `babel-template`, `babel-traverse`, `babel-types`
* [#5793](https://github.com/babel/babel/pull/5793) Support for NumericLiteralSeparator, Stage 1 feature. ([@rwaldron](https://github.com/rwaldron))
@@ -3016,7 +3407,7 @@ var A = function A() {
Update Babylon: https://github.com/babel/babylon/releases/tag/v7.0.0-beta.9, https://github.com/babel/babylon/releases/tag/v7.0.0-beta.10
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-generator`, `babel-plugin-transform-flow-strip-types`, `babel-types`
* [#5525](https://github.com/babel/babel/pull/5525) Add support for object type spread. ([@conartist6](https://github.com/conartist6))
@@ -3090,7 +3481,7 @@ Update Babylon: https://github.com/babel/babylon/releases/tag/v7.0.0-beta.9, htt
## v7.0.0-alpha.8 (2017-04-17)
#### :eyeglasses: Spec Compliancy
#### :eyeglasses: Spec Compliance
* `babel-preset-stage-2`, `babel-preset-stage-3`
* [#5610](https://github.com/babel/babel/pull/5610) Move syntax-dynamic-import to stage-3. ([@dkaoster](https://github.com/dkaoster))

View File

@@ -32,6 +32,7 @@ contributing, please read the
- Follow along with what we are working on by joining our [Slack](https://babeljs.slack.com) (you can sign-up [here](https://slack.babeljs.io/)
for an invite), following our announcements on [Twitter](https://twitter.com/babeljs), and reading (or participating!) in our [meeting notes](https://github.com/babel/notes).
- Check out our [website](http://babeljs.io/) and the [repo](https://github.com/babel/website)
- You can contribute by triaging issues which may include reproducing bug reports or asking for vital information, such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to [subscribe to babel on CodeTriage](https://www.codetriage.com/babel/babel). [![Open Source Helpers](https://www.codetriage.com/babel/babel/badges/users.svg)](https://www.codetriage.com/babel/babel)
## Chat

View File

@@ -11,25 +11,20 @@ const filter = require("gulp-filter");
const gulp = require("gulp");
const path = require("path");
const webpack = require("webpack");
const merge = require("merge-stream");
const rollup = require("rollup");
const rollupBabel = require("rollup-plugin-babel");
const rollupNodeResolve = require("rollup-plugin-node-resolve");
const rollupReplace = require("rollup-plugin-replace");
const { registerStandalonePackageTask } = require("./scripts/gulp-tasks");
const sources = ["codemods", "packages"];
const defaultSourcesGlob = "./@(codemods|packages|eslint)/*/src/**/*.js";
function swapSrcWithLib(srcPath) {
const parts = srcPath.split(path.sep);
parts[1] = "lib";
parts[2] = "lib";
return parts.join(path.sep);
}
function getGlobFromSource(source) {
return `./${source}/*/src/**/*.js`;
}
function getIndexFromPackage(name) {
return `${name}/src/index.js`;
}
@@ -56,32 +51,28 @@ function rename(fn) {
});
}
function buildBabel(exclude) {
return merge(
sources.map(source => {
const base = path.join(__dirname, source);
function buildBabel(exclude, sourcesGlob = defaultSourcesGlob) {
const base = __dirname;
let stream = gulp.src(getGlobFromSource(source), { base: base });
let stream = gulp.src(sourcesGlob, { base: __dirname });
if (exclude) {
const filters = exclude.map(p => `!**/${p}/**`);
filters.unshift("**");
stream = stream.pipe(filter(filters));
}
if (exclude) {
const filters = exclude.map(p => `!**/${p}/**`);
filters.unshift("**");
stream = stream.pipe(filter(filters));
}
return stream
.pipe(errorsLogger())
.pipe(newer({ dest: base, map: swapSrcWithLib }))
.pipe(compilationLogger())
.pipe(babel())
.pipe(
// Passing 'file.relative' because newer() above uses a relative
// path and this keeps it consistent.
rename(file => path.resolve(file.base, swapSrcWithLib(file.relative)))
)
.pipe(gulp.dest(base));
})
);
return stream
.pipe(errorsLogger())
.pipe(newer({ dest: base, map: swapSrcWithLib }))
.pipe(compilationLogger())
.pipe(babel())
.pipe(
// Passing 'file.relative' because newer() above uses a relative
// path and this keeps it consistent.
rename(file => path.resolve(file.base, swapSrcWithLib(file.relative)))
)
.pipe(gulp.dest(base));
}
function buildRollup(packages) {
@@ -118,6 +109,9 @@ const bundles = ["packages/babel-parser"];
gulp.task("build-rollup", () => buildRollup(bundles));
gulp.task("build-babel", () => buildBabel(/* exclude */ bundles));
gulp.task("build-babel-types", () =>
buildBabel(/* exclude */ bundles, "packages/babel-types/src/**/*.js")
);
gulp.task("build", gulp.parallel("build-rollup", "build-babel"));
gulp.task("default", gulp.series("build"));
@@ -128,7 +122,7 @@ gulp.task(
"watch",
gulp.series("build-no-bundle", function watch() {
gulpWatch(
sources.map(getGlobFromSource),
defaultSourcesGlob,
{ debounceDelay: 200 },
gulp.task("build-no-bundle")
);

237
Makefile
View File

@@ -1,67 +1,125 @@
MAKEFLAGS = -j1
FLOW_COMMIT = 09669846b7a7ca5a6c23c12d56bb3bebdafd67e9
TEST262_COMMIT = de567d3aa5de4eaa11e00131d26b9fe77997dfb0
TEST262_COMMIT = 8688c4ab79059c3097098605e69f1ee5eda6c409
FORCE_PUBLISH = "@babel/runtime,@babel/runtime-corejs2,@babel/runtime-corejs3,@babel/standalone,@babel/preset-env-standalone"
# Fix color output until TravisCI fixes https://github.com/travis-ci/travis-ci/issues/7967
export FORCE_COLOR = true
SOURCES = packages codemods
SOURCES = packages codemods eslint
COMMA := ,
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
COMMA_SEPARATED_SOURCES = $(subst $(SPACE),$(COMMA),$(SOURCES))
.PHONY: build build-dist watch lint fix clean test-clean test-only test test-ci publish bootstrap
build: clean clean-lib
./node_modules/.bin/gulp build
node ./packages/babel-standalone/scripts/generate.js
node ./packages/babel-types/scripts/generateTypeHelpers.js
# call build again as the generated files might need to be compiled again.
./node_modules/.bin/gulp build
# generate flow and typescript typings
node packages/babel-types/scripts/generators/flow.js > ./packages/babel-types/lib/index.js.flow
node packages/babel-types/scripts/generators/typescript.js > ./packages/babel-types/lib/index.d.ts
build: build-bundle
ifneq ("$(BABEL_COVERAGE)", "true")
make build-standalone
make build-preset-env-standalone
$(MAKE) build-standalone
endif
build-standalone:
./node_modules/.bin/gulp build-babel-standalone
build-bundle: clean clean-lib
yarn gulp build
$(MAKE) generate-standalone generate-type-helpers
# call build again as the generated files might need to be compiled again.
yarn gulp build
$(MAKE) build-typings
$(MAKE) build-dist
build-bundle-ci: bootstrap-only
$(MAKE) build-bundle
generate-standalone:
node packages/babel-standalone/scripts/generate.js
generate-type-helpers:
node packages/babel-types/scripts/generateTypeHelpers.js
build-typings: build-flow-typings build-typescript-typings
build-flow-typings:
node packages/babel-types/scripts/generators/flow.js > packages/babel-types/lib/index.js.flow
build-typescript-typings:
node packages/babel-types/scripts/generators/typescript.js > packages/babel-types/lib/index.d.ts
build-standalone: build-babel-standalone build-preset-env-standalone
build-standalone-ci: build-bundle-ci
$(MAKE) build-standalone
build-babel-standalone:
yarn gulp build-babel-standalone
build-preset-env-standalone:
./node_modules/.bin/gulp build-babel-preset-env-standalone
yarn gulp build-babel-preset-env-standalone
prepublish-build-standalone:
BABEL_ENV=production IS_PUBLISH=true ./node_modules/.bin/gulp build-babel-standalone
BABEL_ENV=production IS_PUBLISH=true yarn gulp build-babel-standalone
prepublish-build-preset-env-standalone:
BABEL_ENV=production IS_PUBLISH=true ./node_modules/.bin/gulp build-babel-preset-env-standalone
BABEL_ENV=production IS_PUBLISH=true yarn gulp build-babel-preset-env-standalone
build-dist: build
build-dist: build-polyfill-dist build-plugin-transform-runtime-dist
build-polyfill-dist:
cd packages/babel-polyfill; \
scripts/build-dist.sh
build-plugin-transform-runtime-dist:
cd packages/babel-plugin-transform-runtime; \
node scripts/build-dist.js
watch: clean clean-lib
build-no-bundle: clean clean-lib
BABEL_ENV=development yarn gulp build-no-bundle
# Ensure that build artifacts for types are created during local
# development too.
BABEL_ENV=development ./node_modules/.bin/gulp build-no-bundle
node ./packages/babel-types/scripts/generateTypeHelpers.js
node packages/babel-types/scripts/generators/flow.js > ./packages/babel-types/lib/index.js.flow
node packages/babel-types/scripts/generators/typescript.js > ./packages/babel-types/lib/index.d.ts
BABEL_ENV=development ./node_modules/.bin/gulp watch
$(MAKE) generate-type-helpers
$(MAKE) build-typings
watch: build-no-bundle
BABEL_ENV=development yarn gulp watch
code-quality-ci: flowcheck-ci lint-ci
flowcheck-ci: bootstrap-flowcheck
$(MAKE) flow
code-quality: flow lint
flow:
./node_modules/.bin/flow check --strip-root
yarn flow check --strip-root
lint:
./node_modules/.bin/eslint scripts $(SOURCES) '*.js' --format=codeframe
bootstrap-flowcheck: bootstrap-only
yarn gulp build-babel-types
$(MAKE) build-typings
fix: fix-json
./node_modules/.bin/eslint scripts $(SOURCES) '*.js' --format=codeframe --fix
lint-ci: lint-js-ci lint-ts-ci
lint-js-ci: bootstrap-only
$(MAKE) lint-js
lint-ts-ci: bootstrap-flowcheck
$(MAKE) lint-ts
lint: lint-js lint-ts
lint-js:
yarn eslint scripts $(SOURCES) '*.js' --format=codeframe
lint-ts:
scripts/tests/typescript/lint.sh
fix: fix-json fix-js
fix-js:
yarn eslint scripts $(SOURCES) '*.js' --format=codeframe --fix
fix-json:
./node_modules/.bin/prettier "{packages,codemod}/*/test/fixtures/**/options.json" --write --loglevel warn
yarn prettier "{$(COMMA_SEPARATED_SOURCES)}/*/test/fixtures/**/options.json" --write --loglevel warn
clean: test-clean
rm -f .npmrc
@@ -74,72 +132,83 @@ test-clean:
$(foreach source, $(SOURCES), \
$(call clean-source-test, $(source)))
# Does not work on Windows; use "yarn jest" instead
test-only:
BABEL_ENV=test ./scripts/test.sh
make test-clean
$(MAKE) test-clean
test: lint test-only
test-ci: bootstrap test-only
test-ci: jest-ci
jest-ci: build-standalone-ci
BABEL_ENV=test yarn jest --maxWorkers=4 --ci
$(MAKE) test-clean
# Does not work on Windows
test-ci-coverage: SHELL:=/bin/bash
test-ci-coverage:
BABEL_COVERAGE=true BABEL_ENV=test make bootstrap
BABEL_COVERAGE=true BABEL_ENV=test $(MAKE) bootstrap
BABEL_ENV=test TEST_TYPE=cov ./scripts/test-cov.sh
bash <(curl -s https://codecov.io/bash) -f coverage/coverage-final.json
bootstrap-flow:
rm -rf ./build/flow
mkdir -p ./build
git clone --branch=master --single-branch --shallow-since=2018-11-01 https://github.com/facebook/flow.git ./build/flow
rm -rf build/flow
mkdir -p build
git clone --branch=master --single-branch --shallow-since=2018-11-01 https://github.com/facebook/flow.git build/flow
cd build/flow && git checkout $(FLOW_COMMIT)
test-flow:
node scripts/tests/flow/run_babel_parser_flow_tests.js
test-flow-ci: bootstrap test-flow
test-flow-ci: build-bundle-ci bootstrap-flow
$(MAKE) test-flow
test-flow-update-whitelist:
node scripts/tests/flow/run_babel_parser_flow_tests.js --update-whitelist
bootstrap-test262:
rm -rf ./build/test262
mkdir -p ./build
git clone --branch=master --single-branch --shallow-since=2019-01-01 https://github.com/tc39/test262.git ./build/test262
rm -rf build/test262
mkdir -p build
git clone --branch=master --single-branch --shallow-since=2019-09-01 https://github.com/tc39/test262.git build/test262
cd build/test262 && git checkout $(TEST262_COMMIT)
test-test262:
node scripts/tests/test262/run_babel_parser_test262.js
test-test262-ci: bootstrap test-test262
test-test262-ci: build-bundle-ci bootstrap-test262
$(MAKE) test-test262
test-test262-update-whitelist:
node scripts/tests/test262/run_babel_parser_test262.js --update-whitelist
# Does not work on Windows
clone-license:
./scripts/clone-license.sh
prepublish-build:
make clean-lib
rm -rf packages/babel-runtime/helpers
rm -rf packages/babel-runtime-corejs2/helpers
rm -rf packages/babel-runtime-corejs2/core-js
NODE_ENV=production BABEL_ENV=production make build-dist
make clone-license
prepublish-build: clean-lib clean-runtime-helpers
NODE_ENV=production BABEL_ENV=production $(MAKE) build
$(MAKE) clone-license
prepublish:
make bootstrap-only
make prepublish-build
make test
$(MAKE) bootstrap-only
$(MAKE) prepublish-build
$(MAKE) test
new-version:
git pull --rebase
./node_modules/.bin/lerna version --force-publish="@babel/runtime,@babel/runtime-corejs2,@babel/runtime-corejs3,@babel/standalone,@babel/preset-env-standalone"
yarn lerna version --force-publish=$(FORCE_PUBLISH)
version-cerxes:
yarn lerna version prerelease --allow-branch initializer-fix-v7.7.4 --preid csx
publish-cerxes: prepublish
yarn lerna publish --registry="https://npm.cerxes.net" --force-publish --allow-branch initializer-fix-v7.7.4 --canary --preid csx --dist-tag csx
# NOTE: Run make new-version first
publish: prepublish
./node_modules/.bin/lerna publish from-git --require-scripts
make clean
yarn lerna publish from-git
$(MAKE) clean
publish-ci: prepublish
ifneq ("$(NPM_TOKEN)", "")
@@ -148,22 +217,48 @@ else
echo "Missing NPM_TOKEN env var"
exit 1
endif
./node_modules/.bin/lerna publish from-git --require-scripts --yes
yarn lerna publish from-git --yes
rm -f .npmrc
make clean
$(MAKE) clean
bootstrap-only: clean-all
publish-test:
ifneq ("$(I_AM_USING_VERDACCIO)", "I_AM_SURE")
echo "You probably don't know what you are doing"
exit 1
endif
$(MAKE) prepublish-build
yarn lerna version patch --force-publish=$(FORCE_PUBLISH) --no-push --yes --tag-version-prefix="version-e2e-test-"
yarn lerna publish from-git --registry http://localhost:4873 --yes --tag-version-prefix="version-e2e-test-"
$(MAKE) clean
publish-eslint:
$(call set-json-field, ./eslint/$(PKG)/package.json, private, false)
cd eslint/$(PKG); yarn publish
$(call set-json-field, ./eslint/$(PKG)/package.json, private, true)
bootstrap-only: lerna-bootstrap
yarn-install: clean-all
yarn --ignore-engines
./node_modules/.bin/lerna bootstrap -- --ignore-engines
lerna-bootstrap: yarn-install
# todo: remove `-- -- --ignore-engines` in Babel 8
yarn lerna bootstrap -- -- --ignore-engines
bootstrap: bootstrap-only
make build
cd packages/babel-plugin-transform-runtime; \
node scripts/build-dist.js
$(MAKE) build
clean-lib:
# TODO: Don't delete eslint/*/lib when they use src
$(foreach source, $(SOURCES), \
$(call clean-source-lib, $(source)))
$(if $(filter-out $(source), eslint), \
$(call clean-source-lib, $(source))))
clean-runtime-helpers:
rm -f packages/babel-runtime/helpers/**/*.js
rm -f packages/babel-runtime-corejs2/helpers/**/*.js
rm -f packages/babel-runtime-corejs3/helpers/**/*.js
rm -rf packages/babel-runtime-corejs2/core-js
clean-all:
rm -rf node_modules
@@ -173,7 +268,7 @@ clean-all:
$(foreach source, $(SOURCES), \
$(call clean-source-all, $(source)))
make clean
$(MAKE) clean
define clean-source-lib
rm -rf $(1)/*/lib
@@ -187,8 +282,16 @@ define clean-source-test
endef
define clean-source-all
rm -rf $(1)/*/lib
# TODO: Don't delete eslint/*/lib when they use src
$(if $(filter-out $1, eslint), $(call clean-source-lib, $1))
rm -rf $(1)/*/node_modules
rm -rf $(1)/*/package-lock.json
endef
define set-json-field
node -e "\
require('fs').writeFileSync('$1'.trim(), \
JSON.stringify({ ...require('$1'.trim()), $2: $3 }, null, 2) + '\\n' \
)"
endef

View File

@@ -13,7 +13,7 @@
<a href="https://www.npmjs.com/package/babel-core"><img alt="v6 npm Downloads" src="https://img.shields.io/npm/dm/babel-core.svg?maxAge=43200&label=v6%20downloads"></a>
</p>
<p align="center">
<a href="https://travis-ci.org/babel/babel"><img alt="Travis Status" src="https://img.shields.io/travis/babel/babel/master.svg?label=travis&maxAge=43200"></a>
<a href="https://travis-ci.com/babel/babel"><img alt="Travis Status" src="https://img.shields.io/travis/com/babel/babel/master.svg?label=travis&maxAge=43200"></a>
<a href="https://circleci.com/gh/babel/babel"><img alt="CircleCI Status" src="https://img.shields.io/circleci/project/github/babel/babel/master.svg?label=circle&maxAge=43200"></a>
<a href="https://codecov.io/github/babel/babel"><img alt="Coverage Status" src="https://img.shields.io/codecov/c/github/babel/babel/master.svg?maxAge=43200"></a>
<a href="https://slack.babeljs.io/"><img alt="Slack Status" src="https://slack.babeljs.io/badge.svg"></a>
@@ -80,14 +80,14 @@ Try it out at our [REPL](https://babeljs.io/repl/build/master#?code_lz=NoRgNATGD
Mostly a handful of volunteers, funded by you! Please check out our [team page](https://babeljs.io/team)!
### Looking for support?
For questions and support please join our [Slack Community](https://slack.babeljs.io/) (you can sign-up [here](https://slack.babeljs.io/) for an invite), ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/babeljs), or ping us on [Twitter](https://twitter.com/babeljs).
### Is there a Babel song?
I'm so glad you asked: [Hallelujah —— In Praise of Babel](SONG.md) by [@angus-c](https://github.com/angus-c), [audio version](https://youtu.be/40abpedBKK8) by [@swyx](https://twitter.com/@swyx). Tweet us your recordings!
### Looking for support?
For questions and support please join our [Slack Community](https://slack.babeljs.io/) (you can sign-up [here](https://slack.babeljs.io/) for an invite), ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/babeljs), or ping us on [Twitter](https://twitter.com/babeljs).
### Where are the docs?
Check out our website: [babeljs.io](https://babeljs.io/), and report issues/features at [babel/website](https://github.com/babel/website/issues).
@@ -98,12 +98,19 @@ Please read through our [CONTRIBUTING.md](CONTRIBUTING.md) and fill out the issu
### Want to contribute to Babel?
Check out our [CONTRIBUTING.md](CONTRIBUTING.md) to get started with setting up the repo.
Check out:
- If you have already joined Slack, join our [#development](https://babeljs.slack.com/messages/development) channel and say hi!
- Check out the issues with the [good first issue](https://github.com/babel/babel/labels/good%20first%20issue) and [help wanted](https://github.com/babel/babel/labels/help%20wanted) label. We suggest also looking at the closed ones to get a sense of the kinds of issues you can tackle.
- Our [#development](https://babeljs.slack.com/messages/development) Slack channel and say hi ([signup](https://slack.babeljs.io))!
- Issues with the [good first issue](https://github.com/babel/babel/labels/good%20first%20issue) and [help wanted](https://github.com/babel/babel/labels/help%20wanted) label. We suggest also looking at the [closed ones](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aclosed+label%3A%22good+first+issue%22) to get a sense of the kinds of issues you can tackle.
Some resources:
- Our [CONTRIBUTING.md](CONTRIBUTING.md) to get started with setting up the repo.
- Our discussions/notes/roadmap: [babel/notes](https://github.com/babel/notes)
- Our progress on TC39 proposals: [babel/proposals](https://github.com/babel/proposals)
- Our blog which contains release posts and explanations: [/blog](https://babeljs.io/blog)
- Our videos page with talks about open source and Babel: [/videos](https://babeljs.io/videos)
- Our [podcast](https://podcast.babeljs.io)
### How is the repo structured?

View File

@@ -11,6 +11,7 @@ module.exports = function(api) {
exclude: ["transform-typeof-symbol"],
};
const envOpts = Object.assign({}, envOptsNoTargets);
let transformRuntimeOpts = null;
let convertESM = true;
let ignoreLib = true;
@@ -50,6 +51,17 @@ module.exports = function(api) {
break;
}
if (includeRuntime) {
const babelRuntimePackageJSONPath = require.resolve(
"@babel/runtime/package.json"
);
const path = require("path");
transformRuntimeOpts = {
version: require(babelRuntimePackageJSONPath).version,
absoluteRuntime: path.dirname(babelRuntimePackageJSONPath),
};
}
const config = {
// Our dependencies are all standard CommonJS, along with all sorts of
// other random files in Babel's codebase, so we use script as the default,
@@ -77,9 +89,10 @@ module.exports = function(api) {
"@babel/proposal-object-rest-spread",
{ useBuiltIns: true, loose: true },
],
["@babel/plugin-proposal-optional-chaining", { loose: true }],
["@babel/plugin-proposal-nullish-coalescing-operator", { loose: true }],
// Explicitly use the lazy version of CommonJS modules.
convertESM ? ["@babel/transform-modules-commonjs", { lazy: true }] : null,
convertESM ? "@babel/transform-modules-commonjs" : null,
].filter(Boolean),
overrides: [
{
@@ -90,18 +103,17 @@ module.exports = function(api) {
],
},
{
test: "./packages/babel-register",
test: ["./packages/babel-cli", "./packages/babel-core"],
plugins: [
// Override the root options to disable lazy imports for babel-register
// because otherwise the require hook will try to lazy-import things
// leading to dependency cycles.
convertESM ? "@babel/transform-modules-commonjs" : null,
// Explicitly use the lazy version of CommonJS modules.
convertESM
? ["@babel/transform-modules-commonjs", { lazy: true }]
: null,
].filter(Boolean),
},
{
test: "./packages/babel-polyfill",
presets: [["@babel/env", envOptsNoTargets]],
plugins: [["@babel/transform-modules-commonjs", { lazy: false }]],
},
{
// The vast majority of our src files are modules, but we use
@@ -112,6 +124,8 @@ module.exports = function(api) {
"packages/*/test",
"codemods/*/src",
"codemods/*/test",
"eslint/*/src",
"eslint/*/test",
],
sourceType: "unambiguous",
},
@@ -123,7 +137,7 @@ module.exports = function(api) {
],
plugins: [
includeRuntime
? ["@babel/transform-runtime", { version: "7.4.4" }]
? ["@babel/transform-runtime", transformRuntimeOpts]
: null,
].filter(Boolean),
},

View File

@@ -1,6 +1,6 @@
{
"name": "@babel/plugin-codemod-object-assign-to-object-spread",
"version": "7.0.0",
"version": "7.7.4-csx.0",
"description": "Transforms Object.assign into object spread syntax",
"repository": "https://github.com/babel/babel/tree/master/codemods/babel-plugin-codemod-object-assign-to-object-spread",
"license": "MIT",
@@ -13,16 +13,13 @@
"@babel/plugin"
],
"dependencies": {
"@babel/plugin-syntax-object-rest-spread": "^7.0.0"
"@babel/plugin-syntax-object-rest-spread": "^7.7.4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
"@babel/core": "^7.0.0-0 || csx"
},
"devDependencies": {
"@babel/core": "^7.0.0",
"@babel/helper-plugin-test-runner": "^7.0.0"
},
"publishConfig": {
"access": "public"
"@babel/core": "^7.7.4",
"@babel/helper-plugin-test-runner": "^7.7.4"
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@babel/plugin-codemod-optional-catch-binding",
"version": "7.0.0",
"version": "7.7.4-csx.0",
"description": "Remove unused catch bindings",
"repository": "https://github.com/babel/babel/tree/master/codemods/babel-plugin-codemod-remove-unused-catch-binding",
"license": "MIT",
@@ -13,13 +13,13 @@
"@babel/plugin"
],
"dependencies": {
"@babel/plugin-syntax-optional-catch-binding": "^7.0.0"
"@babel/plugin-syntax-optional-catch-binding": "^7.7.4"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0"
"@babel/core": "^7.0.0-0 || csx"
},
"devDependencies": {
"@babel/core": "^7.0.0",
"@babel/helper-plugin-test-runner": "^7.0.0"
"@babel/core": "^7.7.4",
"@babel/helper-plugin-test-runner": "^7.7.4"
}
}

View File

@@ -1,3 +1,3 @@
{
"plugins": ["../../../../lib"]
}
"plugins": ["../../../../lib"]
}

View File

@@ -15,7 +15,7 @@ This is quite taboo but let's look at the pros and cons:
* Easy to coordinate changes across modules.
* Single place to report issues.
* Easier to setup a development environment.
* Tests across modules are run together which finds bugs that touch multiple modules easier.
* Tests across modules are run together which finds bugs that touch multiple modules more easily.
**Cons:**

View File

@@ -0,0 +1,4 @@
src
test
.*
*.log

View File

@@ -0,0 +1,4 @@
## @babel/eslint-config-internal
---
ESLint config for the Babel codebase (originally taken from `eslint-config-kittens`)

View File

@@ -0,0 +1,49 @@
"use strict";
module.exports = {
parser: "babel-eslint",
extends: "eslint:recommended",
plugins: ["flowtype"],
parserOptions: {
ecmaVersion: 2020,
sourceType: "module",
},
globals: {
// Flow
Iterator: true,
$Keys: true,
},
env: {
node: true,
es2020: true,
browser: true,
},
rules: {
camelcase: "off",
"consistent-return": "off",
curly: ["error", "multi-line"],
"linebreak-style": ["error", "unix"],
"new-cap": "off",
"no-case-declarations": "error",
"no-cond-assign": "off",
"no-confusing-arrow": "error",
"no-console": "off",
"no-constant-condition": "off",
"no-empty": "off",
"no-fallthrough": "off",
"no-inner-declarations": "off",
"no-labels": "off",
"no-loop-func": "off",
"no-process-exit": "off",
"no-return-assign": "off",
"no-shadow": "off",
"no-underscore-dangle": "off",
"no-unreachable": "off",
"no-use-before-define": "off",
"no-var": "error",
"prefer-const": "error",
strict: "off",
"flowtype/define-flow-type": "warn",
"flowtype/use-flow-type": "warn",
},
};

View File

@@ -0,0 +1,15 @@
{
"name": "@babel/eslint-config-internal",
"version": "0.0.0",
"description": "The Babel Team's ESLint configuration. Since it's internal, it might not respect semver.",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",
"license": "MIT",
"private": true,
"repository": "https://github.com/babel/babel/tree/master/eslint/babel-eslint-config-internal",
"main": "lib/index.js",
"peerDependencies": {
"babel-eslint": "^10.0.0 || ^11.0.0-0",
"eslint-plugin-flowtype": "^3.0.0"
}
}

View File

@@ -0,0 +1,4 @@
src
test
.*
*.log

View File

@@ -0,0 +1,128 @@
# babel-eslint [![npm](https://img.shields.io/npm/v/babel-eslint.svg)](https://www.npmjs.com/package/babel-eslint) [![travis](https://img.shields.io/travis/babel/babel-eslint/master.svg)](https://travis-ci.org/babel/babel-eslint) [![npm-downloads](https://img.shields.io/npm/dm/babel-eslint.svg)](https://www.npmjs.com/package/babel-eslint)
**babel-eslint** allows you to lint **ALL** valid Babel code with the fantastic
[ESLint](https://github.com/eslint/eslint).
## Breaking change in v11.x.x
As of the v11.x.x release, babel-eslint now requires Babel as a peer dependency and expects a valid [Babel configuration file](https://babeljs.io/docs/en/configuration) to exist. This ensures that the same Babel configuration is used during both linting and compilation.
## When should I use babel-eslint?
ESLint's default parser and core rules [only support the latest final ECMAScript standard](https://github.com/eslint/eslint/blob/a675c89573836adaf108a932696b061946abf1e6/README.md#what-about-experimental-features) and do not support experimental (such as new features) and non-standard (such as Flow or TypeScript types) syntax provided by Babel. babel-eslint is a parser that allows ESLint to run on source code that is transformed by Babel.
**Note:** You only need to use babel-eslint if you are using Babel to transform your code. If this is not the case, please use the relevant parser for your chosen flavor of ECMAScript (note that the default parser supports all non-experimental syntax as well as JSX).
## How does it work?
ESLint allows for the use of [custom parsers](https://eslint.org/docs/developer-guide/working-with-custom-parsers). When using this plugin, your code is parsed by Babel's parser (using the configuration specified in your [Babel configuration file](https://babeljs.io/docs/en/configuration)) and the resulting AST is
transformed into an [ESTree](https://github.com/estree/estree)-compliant structure that ESLint can understand. All location info such as line numbers,
columns is also retained so you can track down errors with ease.
**Note:** ESLint's core rules do not support experimental syntax and may therefore not work as expected when using babel-eslint. Please use the companion [`eslint-plugin-babel`](https://github.com/babel/eslint-plugin-babel) plugin for core rules that you have issues with.
## Usage
### Installation
```sh
$ npm install eslint babel-eslint --save-dev
# or
$ yarn add eslint babel-eslint -D
```
**Note:** babel-eslint requires `babel/core@>=7.2.0` and a valid Babel configuration file to run. If you do not have this already set up, please see the [Babel Usage Guide](https://babeljs.io/docs/en/usage).
### Setup
To use babel-eslint, `"babel-eslint"` must be specified as the `parser` in your ESLint configuration file (see [here](https://eslint.org/docs/user-guide/configuring#specifying-parser) for more detailed information).
**.eslintrc.js**
```js
module.exports = {
parser: "babel-eslint",
};
```
With the parser set, your configuration can be configured as described in the [Configuring ESLint](https://eslint.org/docs/user-guide/configuring) documentation.
**Note:** The `parserOptions` described in the [official documentation](https://eslint.org/docs/user-guide/configuring#specifying-parser-options) are for the default parser and are not necessarily supported by babel-eslint. Please see the section directly below for supported `parserOptions`.
### Additional parser configuration
Additional configuration options can be set in your ESLint configuration under the `parserOptions` key. Please note that the `ecmaFeatures` config property may still be required for ESLint to work properly with features not in ECMAScript 5 by default.
- `requireConfigFile` (default `true`) can be set to `false` to allow babel-eslint to run on files that do not have a Babel configuration associated with them. This can be useful for linting files that are not transformed by Babel (such as tooling configuration files), though we recommend using the default parser via [glob-based configuration](https://eslint.org/docs/user-guide/configuring#configuration-based-on-glob-patterns). Note: babel-eslint will not parse any experimental syntax when no configuration file is found.
- `sourceType` can be set to `"module"`(default) or `"script"` if your code isn't using ECMAScript modules.
- `allowImportExportEverywhere` (default `false`) can be set to `true` to allow import and export declarations to appear anywhere a statement is allowed if your build environment supports that. Otherwise import and export declarations can only appear at a program's top level.
- `ecmaFeatures.globalReturn` (default `false`) allow return statements in the global scope when used with `sourceType: "script"`.
- `babelOptions` passes through Babel's configuration [loading](https://babeljs.io/docs/en/options#config-loading-options) and [merging](https://babeljs.io/docs/en/options#config-merging-options) options (for instance, in case of a monorepo). When not defined, babel-eslint will use Babel's default configuration file resolution logic.
**.eslintrc.js**
```js
module.exports = {
parser: "babel-eslint",
parserOptions: {
sourceType: "module",
allowImportExportEverywhere: false,
ecmaFeatures: {
globalReturn: false,
},
babelOptions: {
configFile: "path/to/config.js",
},
},
};
```
**.eslintrc.js using glob-based configuration**
This configuration would use the default parser for all files except for those found by the `"files/transformed/by/babel/*.js"` glob.
```js
module.exports = {
rules: {
indent: "error"
},
overrides: [
{
files: ["files/transformed/by/babel/*.js"],
parser: "babel-eslint",
}
]
};
```
### Run
```sh
$ ./node_modules/.bin/eslint yourfile.js
```
## Known issues
Flow:
> Check out [eslint-plugin-flowtype](https://github.com/gajus/eslint-plugin-flowtype): An `eslint` plugin that makes flow type annotations global variables and marks declarations as used. Solves the problem of false positives with `no-undef` and `no-unused-vars`.
- `no-undef` for global flow types: `ReactElement`, `ReactClass` [#130](https://github.com/babel/babel-eslint/issues/130#issuecomment-111215076)
- Workaround: define types as globals in `.eslintrc` or define types and import them `import type ReactElement from './types'`
- `no-unused-vars/no-undef` with Flow declarations (`declare module A {}`) [#132](https://github.com/babel/babel-eslint/issues/132#issuecomment-112815926)
Modules/strict mode
- `no-unused-vars: ["error", { vars: local }]` [#136](https://github.com/babel/babel-eslint/issues/136)
Please check out [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) for React/JSX issues.
- `no-unused-vars` with jsx
Please check out [eslint-plugin-babel](https://github.com/babel/eslint-plugin-babel) for other issues.
## Questions and support
If you have an issue, please first check if it can be reproduced with the default parser and with the latest versions of `eslint` and `babel-eslint`. If it is not reproducible with the default parser, it is most likely an issue with babel-eslint.
For questions and support please visit the [`#discussion`](https://babeljs.slack.com/messages/discussion/) Babel Slack channel (sign up [here](https://github.com/babel/notes/issues/38)) or the ESLint [Gitter](https://gitter.im/eslint/eslint).

View File

@@ -0,0 +1,51 @@
{
"name": "babel-eslint",
"version": "7.7.4-csx.1",
"description": "Custom parser for ESLint",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"license": "MIT",
"private": true,
"repository": {
"type": "git",
"url": "https://github.com/babel/babel-eslint.git"
},
"bugs": {
"url": "https://github.com/babel/babel-eslint/issues"
},
"homepage": "https://github.com/babel/babel-eslint",
"scripts": {
"changelog": "git log `git describe --tags --abbrev=0`..HEAD --pretty=format:' * %s (%an)' | grep -v 'Merge pull request'"
},
"engines": {
"node": ">=6"
},
"main": "lib/index.js",
"peerDependencies": {
"@babel/core": ">=7.2.0",
"eslint": ">= 4.12.1"
},
"dependencies": {
"eslint-scope": "3.7.1",
"eslint-visitor-keys": "^1.0.0",
"semver": "^6.3.0"
},
"devDependencies": {
"@babel/core": "7.7.4-csx.1",
"@babel/plugin-proposal-class-properties": "7.7.4-csx.1",
"@babel/plugin-proposal-decorators": "7.7.4-csx.1",
"@babel/plugin-proposal-nullish-coalescing-operator": "7.7.4-csx.1",
"@babel/plugin-proposal-optional-chaining": "7.7.4-csx.1",
"@babel/plugin-proposal-pipeline-operator": "7.7.4-csx.1",
"@babel/plugin-syntax-dynamic-import": "7.7.4-csx.1",
"@babel/plugin-syntax-export-default-from": "7.7.4-csx.1",
"@babel/plugin-syntax-export-namespace-from": "7.7.4-csx.1",
"@babel/plugin-syntax-import-meta": "7.7.4-csx.1",
"@babel/plugin-syntax-numeric-separator": "7.7.4-csx.1",
"@babel/preset-env": "7.7.4-csx.1",
"@babel/preset-flow": "7.7.4-csx.1",
"@babel/preset-react": "7.7.4-csx.1",
"dedent": "^0.7.0",
"eslint": "^6.0.1",
"espree": "^6.0.0"
}
}

View File

@@ -0,0 +1,338 @@
"use strict";
const t = require("@babel/core").types;
const escope = require("eslint-scope");
const Definition = require("eslint-scope/lib/definition").Definition;
const OriginalPatternVisitor = require("eslint-scope/lib/pattern-visitor");
const OriginalReferencer = require("eslint-scope/lib/referencer");
const fallback = require("eslint-visitor-keys").getKeys;
const childVisitorKeys = require("./visitor-keys");
const flowFlippedAliasKeys = t.FLIPPED_ALIAS_KEYS.Flow.concat([
"ArrayPattern",
"ClassDeclaration",
"ClassExpression",
"FunctionDeclaration",
"FunctionExpression",
"Identifier",
"ObjectPattern",
"RestElement",
]);
const visitorKeysMap = Object.keys(t.VISITOR_KEYS).reduce(function(acc, key) {
const value = t.VISITOR_KEYS[key];
if (flowFlippedAliasKeys.indexOf(value) === -1) {
acc[key] = value;
}
return acc;
}, {});
const propertyTypes = {
// loops
callProperties: { type: "loop", values: ["value"] },
indexers: { type: "loop", values: ["key", "value"] },
properties: { type: "loop", values: ["argument", "value"] },
types: { type: "loop" },
params: { type: "loop" },
// single property
argument: { type: "single" },
elementType: { type: "single" },
qualification: { type: "single" },
rest: { type: "single" },
returnType: { type: "single" },
// others
typeAnnotation: { type: "typeAnnotation" },
typeParameters: { type: "typeParameters" },
id: { type: "id" },
};
class PatternVisitor extends OriginalPatternVisitor {
ArrayPattern(node) {
node.elements.forEach(this.visit, this);
}
ObjectPattern(node) {
node.properties.forEach(this.visit, this);
}
}
class Referencer extends OriginalReferencer {
// inherits.
visitPattern(node, options, callback) {
if (!node) {
return;
}
// Visit type annotations.
this._checkIdentifierOrVisit(node.typeAnnotation);
if (t.isAssignmentPattern(node)) {
this._checkIdentifierOrVisit(node.left.typeAnnotation);
}
// Overwrite `super.visitPattern(node, options, callback)` in order to not visit `ArrayPattern#typeAnnotation` and `ObjectPattern#typeAnnotation`.
if (typeof options === "function") {
callback = options;
options = { processRightHandNodes: false };
}
const visitor = new PatternVisitor(this.options, node, callback);
visitor.visit(node);
// Process the right hand nodes recursively.
if (options.processRightHandNodes) {
visitor.rightHandNodes.forEach(this.visit, this);
}
}
// inherits.
visitClass(node) {
// Decorators.
this._visitArray(node.decorators);
// Flow type parameters.
const typeParamScope = this._nestTypeParamScope(node);
// Flow super types.
this._visitTypeAnnotation(node.implements);
this._visitTypeAnnotation(
node.superTypeParameters && node.superTypeParameters.params,
);
// Basic.
super.visitClass(node);
// Close the type parameter scope.
if (typeParamScope) {
this.close(node);
}
}
// inherits.
visitFunction(node) {
const typeParamScope = this._nestTypeParamScope(node);
// Flow return types.
this._checkIdentifierOrVisit(node.returnType);
// Basic.
super.visitFunction(node);
// Close the type parameter scope.
if (typeParamScope) {
this.close(node);
}
}
// inherits.
visitProperty(node) {
if (node.value && node.value.type === "TypeCastExpression") {
this._visitTypeAnnotation(node.value);
}
this._visitArray(node.decorators);
super.visitProperty(node);
}
InterfaceDeclaration(node) {
this._createScopeVariable(node, node.id);
const typeParamScope = this._nestTypeParamScope(node);
// TODO: Handle mixins
this._visitArray(node.extends);
this.visit(node.body);
if (typeParamScope) {
this.close(node);
}
}
TypeAlias(node) {
this._createScopeVariable(node, node.id);
const typeParamScope = this._nestTypeParamScope(node);
this.visit(node.right);
if (typeParamScope) {
this.close(node);
}
}
ClassProperty(node) {
this._visitClassProperty(node);
}
ClassPrivateProperty(node) {
this._visitClassProperty(node);
}
DeclareModule(node) {
this._visitDeclareX(node);
}
DeclareFunction(node) {
this._visitDeclareX(node);
}
DeclareVariable(node) {
this._visitDeclareX(node);
}
DeclareClass(node) {
this._visitDeclareX(node);
}
// visit OptionalMemberExpression as a MemberExpression.
OptionalMemberExpression(node) {
super.MemberExpression(node);
}
_visitClassProperty(node) {
this._visitTypeAnnotation(node.typeAnnotation);
this.visitProperty(node);
}
_visitDeclareX(node) {
if (node.id) {
this._createScopeVariable(node, node.id);
}
const typeParamScope = this._nestTypeParamScope(node);
if (typeParamScope) {
this.close(node);
}
}
_createScopeVariable(node, name) {
this.currentScope().variableScope.__define(
name,
new Definition("Variable", name, node, null, null, null),
);
}
_nestTypeParamScope(node) {
if (!node.typeParameters) {
return null;
}
const parentScope = this.scopeManager.__currentScope;
const scope = new escope.Scope(
this.scopeManager,
"type-parameters",
parentScope,
node,
false,
);
this.scopeManager.__nestScope(scope);
for (let j = 0; j < node.typeParameters.params.length; j++) {
const name = node.typeParameters.params[j];
scope.__define(name, new Definition("TypeParameter", name, name));
if (name.typeAnnotation) {
this._checkIdentifierOrVisit(name);
}
}
scope.__define = function() {
return parentScope.__define.apply(parentScope, arguments);
};
return scope;
}
_visitTypeAnnotation(node) {
if (!node) {
return;
}
if (Array.isArray(node)) {
node.forEach(this._visitTypeAnnotation, this);
return;
}
// get property to check (params, id, etc...)
const visitorValues = visitorKeysMap[node.type];
if (!visitorValues) {
return;
}
// can have multiple properties
for (let i = 0; i < visitorValues.length; i++) {
const visitorValue = visitorValues[i];
const propertyType = propertyTypes[visitorValue];
const nodeProperty = node[visitorValue];
// check if property or type is defined
if (propertyType == null || nodeProperty == null) {
continue;
}
if (propertyType.type === "loop") {
for (let j = 0; j < nodeProperty.length; j++) {
if (Array.isArray(propertyType.values)) {
for (let k = 0; k < propertyType.values.length; k++) {
const loopPropertyNode = nodeProperty[j][propertyType.values[k]];
if (loopPropertyNode) {
this._checkIdentifierOrVisit(loopPropertyNode);
}
}
} else {
this._checkIdentifierOrVisit(nodeProperty[j]);
}
}
} else if (propertyType.type === "single") {
this._checkIdentifierOrVisit(nodeProperty);
} else if (propertyType.type === "typeAnnotation") {
this._visitTypeAnnotation(node.typeAnnotation);
} else if (propertyType.type === "typeParameters") {
for (let l = 0; l < node.typeParameters.params.length; l++) {
this._checkIdentifierOrVisit(node.typeParameters.params[l]);
}
} else if (propertyType.type === "id") {
if (node.id.type === "Identifier") {
this._checkIdentifierOrVisit(node.id);
} else {
this._visitTypeAnnotation(node.id);
}
}
}
}
_checkIdentifierOrVisit(node) {
if (node && node.typeAnnotation) {
this._visitTypeAnnotation(node.typeAnnotation);
} else if (node && node.type === "Identifier") {
this.visit(node);
} else {
this._visitTypeAnnotation(node);
}
}
_visitArray(nodeList) {
if (nodeList) {
for (const node of nodeList) {
this.visit(node);
}
}
}
}
module.exports = function(ast, parserOptions) {
const options = {
ignoreEval: true,
optimistic: false,
directive: false,
nodejsScope:
ast.sourceType === "script" &&
(parserOptions.ecmaFeatures &&
parserOptions.ecmaFeatures.globalReturn) === true,
impliedStrict: false,
sourceType: ast.sourceType,
ecmaVersion: parserOptions.ecmaVersion,
fallback,
};
options.childVisitorKeys = childVisitorKeys;
const scopeManager = new escope.ScopeManager(options);
const referencer = new Referencer(options, scopeManager);
referencer.visit(ast);
return scopeManager;
};

View File

@@ -0,0 +1,99 @@
"use strict";
const t = require("@babel/core").types;
const convertProgramNode = require("./convertProgramNode");
module.exports = function(ast, traverse, code) {
const state = { source: code };
// Monkey patch visitor keys in order to be able to traverse the estree nodes
t.VISITOR_KEYS.Property = t.VISITOR_KEYS.ObjectProperty;
t.VISITOR_KEYS.MethodDefinition = [
"key",
"value",
"decorators",
"returnType",
"typeParameters",
];
traverse(ast, astTransformVisitor, null, state);
delete t.VISITOR_KEYS.Property;
delete t.VISITOR_KEYS.MethodDefinition;
convertProgramNode(ast);
};
const astTransformVisitor = {
noScope: true,
enter(path) {
const node = path.node;
// private var to track original node type
node._babelType = node.type;
if (node.innerComments) {
delete node.innerComments;
}
if (node.trailingComments) {
delete node.trailingComments;
}
if (node.leadingComments) {
delete node.leadingComments;
}
},
exit(path) {
const node = path.node;
if (path.isTypeParameter()) {
node.type = "Identifier";
node.typeAnnotation = node.bound;
delete node.bound;
}
// flow: prevent "no-undef"
// for "Component" in: "let x: React.Component"
if (path.isQualifiedTypeIdentifier()) {
delete node.id;
}
// for "b" in: "var a: { b: Foo }"
if (path.isObjectTypeProperty()) {
delete node.key;
}
// for "indexer" in: "var a: {[indexer: string]: number}"
if (path.isObjectTypeIndexer()) {
delete node.id;
}
// for "param" in: "var a: { func(param: Foo): Bar };"
if (path.isFunctionTypeParam()) {
delete node.name;
}
// modules
if (path.isImportDeclaration()) {
delete node.isType;
}
// template string range fixes
if (path.isTemplateLiteral()) {
for (let j = 0; j < node.quasis.length; j++) {
const q = node.quasis[j];
q.range[0] -= 1;
if (q.tail) {
q.range[1] += 1;
} else {
q.range[1] += 2;
}
q.loc.start.column -= 1;
if (q.tail) {
q.loc.end.column += 1;
} else {
q.loc.end.column += 2;
}
}
}
},
};

View File

@@ -0,0 +1,17 @@
"use strict";
module.exports = function(comments) {
for (let i = 0; i < comments.length; i++) {
const comment = comments[i];
if (comment.type === "CommentBlock") {
comment.type = "Block";
} else if (comment.type === "CommentLine") {
comment.type = "Line";
}
// sometimes comments don't get ranges computed,
// even with options.ranges === true
if (!comment.range) {
comment.range = [comment.start, comment.end];
}
}
};

View File

@@ -0,0 +1,40 @@
"use strict";
module.exports = function(ast) {
ast.type = "Program";
ast.sourceType = ast.program.sourceType;
ast.directives = ast.program.directives;
ast.body = ast.program.body;
delete ast.program;
if (ast.comments.length) {
const lastComment = ast.comments[ast.comments.length - 1];
if (!ast.tokens.length) {
// if no tokens, the program starts at the end of the last comment
ast.start = lastComment.end;
ast.loc.start.line = lastComment.loc.end.line;
ast.loc.start.column = lastComment.loc.end.column;
} else {
const lastToken = ast.tokens[ast.tokens.length - 1];
if (lastComment.end > lastToken.end) {
// If there is a comment after the last token, the program ends at the
// last token and not the comment
ast.range[1] = lastToken.end;
ast.loc.end.line = lastToken.loc.end.line;
ast.loc.end.column = lastToken.loc.end.column;
}
}
} else {
if (!ast.tokens.length) {
ast.loc.start.line = 1;
ast.loc.end.line = 1;
}
}
if (ast.body && ast.body.length > 0) {
ast.loc.start.line = ast.body[0].loc.start.line;
ast.range[0] = ast.body[0].start;
}
};

View File

@@ -0,0 +1,92 @@
"use strict";
module.exports = function(tokens, tt) {
let curlyBrace = null;
let templateTokens = [];
const result = [];
function addTemplateType() {
const start = templateTokens[0];
const end = templateTokens[templateTokens.length - 1];
const value = templateTokens.reduce((result, token) => {
if (token.value) {
result += token.value;
} else if (token.type !== tt.template) {
result += token.type.label;
}
return result;
}, "");
result.push({
type: "Template",
value: value,
start: start.start,
end: end.end,
loc: {
start: start.loc.start,
end: end.loc.end,
},
});
templateTokens = [];
}
tokens.forEach(token => {
switch (token.type) {
case tt.backQuote:
if (curlyBrace) {
result.push(curlyBrace);
curlyBrace = null;
}
templateTokens.push(token);
if (templateTokens.length > 1) {
addTemplateType();
}
break;
case tt.dollarBraceL:
templateTokens.push(token);
addTemplateType();
break;
case tt.braceR:
if (curlyBrace) {
result.push(curlyBrace);
}
curlyBrace = token;
break;
case tt.template:
if (curlyBrace) {
templateTokens.push(curlyBrace);
curlyBrace = null;
}
templateTokens.push(token);
break;
case tt.eof:
if (curlyBrace) {
result.push(curlyBrace);
}
break;
default:
if (curlyBrace) {
result.push(curlyBrace);
curlyBrace = null;
}
result.push(token);
}
});
return result;
};

View File

@@ -0,0 +1,85 @@
"use strict";
module.exports = function(token, tt, source) {
const type = token.type;
token.range = [token.start, token.end];
if (type === tt.name) {
token.type = "Identifier";
} else if (
type === tt.semi ||
type === tt.comma ||
type === tt.parenL ||
type === tt.parenR ||
type === tt.braceL ||
type === tt.braceR ||
type === tt.slash ||
type === tt.dot ||
type === tt.bracketL ||
type === tt.bracketR ||
type === tt.ellipsis ||
type === tt.arrow ||
type === tt.pipeline ||
type === tt.star ||
type === tt.incDec ||
type === tt.colon ||
type === tt.question ||
type === tt.questionDot ||
type === tt.template ||
type === tt.backQuote ||
type === tt.dollarBraceL ||
type === tt.at ||
type === tt.logicalOR ||
type === tt.logicalAND ||
type === tt.nullishCoalescing ||
type === tt.bitwiseOR ||
type === tt.bitwiseXOR ||
type === tt.bitwiseAND ||
type === tt.equality ||
type === tt.relational ||
type === tt.bitShift ||
type === tt.plusMin ||
type === tt.modulo ||
type === tt.exponent ||
type === tt.bang ||
type === tt.tilde ||
type === tt.doubleColon ||
type === tt.hash ||
type.isAssign
) {
token.type = "Punctuator";
if (!token.value) token.value = type.label;
} else if (type === tt.jsxTagStart) {
token.type = "Punctuator";
token.value = "<";
} else if (type === tt.jsxTagEnd) {
token.type = "Punctuator";
token.value = ">";
} else if (type === tt.jsxName) {
token.type = "JSXIdentifier";
} else if (type === tt.jsxText) {
token.type = "JSXText";
} else if (type.keyword === "null") {
token.type = "Null";
} else if (type.keyword === "false" || type.keyword === "true") {
token.type = "Boolean";
} else if (type.keyword) {
token.type = "Keyword";
} else if (type === tt.num) {
token.type = "Numeric";
token.value = source.slice(token.start, token.end);
} else if (type === tt.string) {
token.type = "String";
token.value = source.slice(token.start, token.end);
} else if (type === tt.regexp) {
token.type = "RegularExpression";
const value = token.value;
token.regex = {
pattern: value.pattern,
flags: value.flags,
};
token.value = `/${value.pattern}/${value.flags}`;
}
return token;
};

View File

@@ -0,0 +1,10 @@
"use strict";
const convertTemplateType = require("./convertTemplateType");
const convertToken = require("./convertToken");
module.exports = function(tokens, tt, code) {
return convertTemplateType(tokens, tt)
.filter(t => t.type !== "CommentLine" && t.type !== "CommentBlock")
.map(t => convertToken(t, tt, code));
};

View File

@@ -0,0 +1,11 @@
"use strict";
const convertTokens = require("./convertTokens");
const convertComments = require("./convertComments");
const convertAST = require("./convertAST");
module.exports = function(ast, traverse, tt, code) {
ast.tokens = convertTokens(ast.tokens, tt, code);
convertComments(ast.comments);
convertAST(ast, traverse, code);
};

View File

@@ -0,0 +1,33 @@
"use strict";
const semver = require("semver");
const babelCore = require("@babel/core");
const packageJson = require("../package.json");
const CURRENT_BABEL_VERSION = babelCore.version;
const SUPPORTED_BABEL_VERSION_RANGE =
packageJson.peerDependencies["@babel/core"];
const IS_RUNNING_SUPPORTED_VERSION = semver.satisfies(
semver.coerce(CURRENT_BABEL_VERSION).raw,
SUPPORTED_BABEL_VERSION_RANGE,
);
exports.parse = function(code, options) {
return exports.parseForESLint(code, options).ast;
};
exports.parseForESLint = function(code, options = {}) {
if (!IS_RUNNING_SUPPORTED_VERSION) {
throw new Error(
`babel-eslint@${packageJson.version} does not support @babel/core@${CURRENT_BABEL_VERSION}. Please downgrade to babel-eslint@^10 or upgrade to @babel/core@${SUPPORTED_BABEL_VERSION_RANGE}`,
);
}
options.babelOptions = options.babelOptions || {};
options.ecmaVersion = options.ecmaVersion || 2018;
options.sourceType = options.sourceType || "module";
options.allowImportExportEverywhere =
options.allowImportExportEverywhere || false;
return require("./parse-with-scope")(code, options);
};

View File

@@ -0,0 +1,12 @@
"use strict";
const visitorKeys = require("./visitor-keys");
const analyzeScope = require("./analyze-scope");
const parse = require("./parse");
module.exports = function(code, options) {
const ast = parse(code, options);
const scopeManager = analyzeScope(ast, options);
return { ast, scopeManager, visitorKeys };
};

View File

@@ -0,0 +1,73 @@
"use strict";
const babylonToEspree = require("./babylon-to-espree");
const {
parseSync: parse,
tokTypes: tt,
traverse,
loadPartialConfig,
} = require("@babel/core");
module.exports = function(code, options) {
let opts = {
sourceType: options.sourceType,
filename: options.filePath,
cwd: options.babelOptions.cwd,
root: options.babelOptions.root,
rootMode: options.babelOptions.rootMode,
envName: options.babelOptions.envName,
configFile: options.babelOptions.configFile,
babelrc: options.babelOptions.babelrc,
babelrcRoots: options.babelOptions.babelrcRoots,
extends: options.babelOptions.extends,
env: options.babelOptions.env,
overrides: options.babelOptions.overrides,
test: options.babelOptions.test,
include: options.babelOptions.include,
exclude: options.babelOptions.exclude,
ignore: options.babelOptions.ignore,
only: options.babelOptions.only,
parserOpts: {
allowImportExportEverywhere: options.allowImportExportEverywhere, // consistent with espree
allowReturnOutsideFunction: true,
allowSuperOutsideMethod: true,
ranges: true,
tokens: true,
plugins: ["estree"],
},
caller: {
name: "babel-eslint",
},
};
if (options.requireConfigFile !== false) {
const config = loadPartialConfig(opts);
if (config !== null) {
if (!config.hasFilesystemConfig()) {
throw new Error(
`No Babel config file detected for ${config.options.filename}. Either disable config file checking with requireConfigFile: false, or configure Babel so that it can find the config files.`,
);
}
opts = config.options;
}
}
let ast;
try {
ast = parse(code, opts);
} catch (err) {
if (err instanceof SyntaxError) {
err.lineNumber = err.loc.line;
err.column = err.loc.column;
}
throw err;
}
babylonToEspree(ast, traverse, tt, code);
return ast;
};

View File

@@ -0,0 +1,15 @@
"use strict";
const BABEL_VISITOR_KEYS = require("@babel/core").types.VISITOR_KEYS;
const ESLINT_VISITOR_KEYS = require("eslint-visitor-keys").KEYS;
module.exports = Object.assign(
{
Literal: ESLINT_VISITOR_KEYS.Literal,
MethodDefinition: ["decorators"].concat(
ESLINT_VISITOR_KEYS.MethodDefinition,
),
Property: ["decorators"].concat(ESLINT_VISITOR_KEYS.Property),
},
BABEL_VISITOR_KEYS,
);

View File

@@ -0,0 +1,527 @@
"use strict";
const assert = require("assert");
const path = require("path");
const babelEslint = require("../");
const espree = require("espree");
const escope = require("eslint-scope");
const unpad = require("dedent");
const assertImplementsAST = require("./helpers/assert-implements-ast");
const babelOptions = {
configFile: path.resolve(
__dirname,
"./fixtures/config/babel.config.js"
),
}
function parseAndAssertSame(code) {
code = unpad(code);
const esAST = espree.parse(code, {
ecmaFeatures: {
// enable JSX parsing
jsx: true,
// enable return in global scope
globalReturn: true,
// enable implied strict mode (if ecmaVersion >= 5)
impliedStrict: true,
// allow experimental object rest/spread
experimentalObjectRestSpread: true,
},
tokens: true,
loc: true,
range: true,
comment: true,
ecmaVersion: 2018,
sourceType: "module",
});
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assertImplementsAST(esAST, babylonAST);
}
describe("babylon-to-espree", () => {
describe("compatibility", () => {
it("should allow ast.analyze to be called without options", function() {
const esAST = babelEslint.parseForESLint("`test`", {
eslintScopeManager: true,
eslintVisitorKeys: true,
babelOptions,
}).ast;
expect(() => {
escope.analyze(esAST)
}).not.toThrow(new TypeError('Should allow no options argument.'));
});
});
describe("templates", () => {
it("empty template string", () => {
parseAndAssertSame("``");
});
it("template string", () => {
parseAndAssertSame("`test`");
});
it("template string using $", () => {
parseAndAssertSame("`$`");
});
it("template string with expression", () => {
parseAndAssertSame("`${a}`");
});
it("template string with multiple expressions", () => {
parseAndAssertSame("`${a}${b}${c}`");
});
it("template string with expression and strings", () => {
parseAndAssertSame("`a${a}a`");
});
it("template string with binary expression", () => {
parseAndAssertSame("`a${a + b}a`");
});
it("tagged template", () => {
parseAndAssertSame("jsx`<Button>Click</Button>`");
});
it("tagged template with expression", () => {
parseAndAssertSame("jsx`<Button>Hi ${name}</Button>`");
});
it("tagged template with new operator", () => {
parseAndAssertSame("new raw`42`");
});
it("template with nested function/object", () => {
parseAndAssertSame(
"`outer${{x: {y: 10}}}bar${`nested${function(){return 1;}}endnest`}end`"
);
});
it("template with braces inside and outside of template string #96", () => {
parseAndAssertSame(
"if (a) { var target = `{}a:${webpackPort}{}}}}`; } else { app.use(); }"
);
});
it("template also with braces #96", () => {
parseAndAssertSame(`
export default function f1() {
function f2(foo) {
const bar = 3;
return \`\${foo} \${bar}\`;
}
return f2;
}
`);
});
it("template with destructuring #31", () => {
parseAndAssertSame(`
module.exports = {
render() {
var {name} = this.props;
return Math.max(null, \`Name: \${name}, Name: \${name}\`);
}
};
`);
});
it("template with arrow returning template #603", () => {
parseAndAssertSame(`
var a = \`\${() => {
\`\${''}\`
}}\`;
`);
});
it("template string with object with template string inside", () => {
parseAndAssertSame("`${ { a:`${2}` } }`");
});
});
it("simple expression", () => {
parseAndAssertSame("a = 1");
});
it("logical NOT", () => {
parseAndAssertSame("!0");
});
it("bitwise NOT", () => {
parseAndAssertSame("~0");
});
it("class declaration", () => {
parseAndAssertSame("class Foo {}");
});
it("class expression", () => {
parseAndAssertSame("var a = class Foo {}");
});
it("jsx expression", () => {
parseAndAssertSame("<App />");
});
it("jsx expression with 'this' as identifier", () => {
parseAndAssertSame("<this />");
});
it("jsx expression with a dynamic attribute", () => {
parseAndAssertSame("<App foo={bar} />");
});
it("jsx expression with a member expression as identifier", () => {
parseAndAssertSame("<foo.bar />");
});
it("jsx expression with spread", () => {
parseAndAssertSame("var myDivElement = <div {...this.props} />;");
});
it("empty jsx text", () => {
parseAndAssertSame("<a></a>");
});
it("jsx text with content", () => {
parseAndAssertSame("<a>Hello, world!</a>");
});
it("nested jsx", () => {
parseAndAssertSame("<div>\n<h1>Wat</h1>\n</div>");
});
it("default import", () => {
parseAndAssertSame('import foo from "foo";');
});
it("import specifier", () => {
parseAndAssertSame('import { foo } from "foo";');
});
it("import specifier with name", () => {
parseAndAssertSame('import { foo as bar } from "foo";');
});
it("import bare", () => {
parseAndAssertSame('import "foo";');
});
it("export default class declaration", () => {
parseAndAssertSame("export default class Foo {}");
});
it("export default class expression", () => {
parseAndAssertSame("export default class {}");
});
it("export default function declaration", () => {
parseAndAssertSame("export default function Foo() {}");
});
it("export default function expression", () => {
parseAndAssertSame("export default function () {}");
});
it("export all", () => {
parseAndAssertSame('export * from "foo";');
});
it("export named", () => {
parseAndAssertSame("var foo = 1;export { foo };");
});
it("export named alias", () => {
parseAndAssertSame("var foo = 1;export { foo as bar };");
});
// Espree doesn't support the optional chaining operator yet
it("optional chaining operator (token)", () => {
const code = "foo?.bar";
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assert.strictEqual(babylonAST.tokens[1].type, "Punctuator");
});
// Espree doesn't support the nullish coalescing operator yet
it("nullish coalescing operator (token)", () => {
const code = "foo ?? bar";
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assert.strictEqual(babylonAST.tokens[1].type, "Punctuator");
});
// Espree doesn't support the pipeline operator yet
it("pipeline operator (token)", () => {
const code = "foo |> bar";
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assert.strictEqual(babylonAST.tokens[1].type, "Punctuator");
});
// Espree doesn't support the private fields yet
it("hash (token)", () => {
const code = "class A { #x }";
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assert.strictEqual(babylonAST.tokens[3].type, "Punctuator");
assert.strictEqual(babylonAST.tokens[3].value, "#");
});
it.skip("empty program with line comment", () => {
parseAndAssertSame("// single comment");
});
it.skip("empty program with block comment", () => {
parseAndAssertSame(" /* multiline\n * comment\n*/");
});
it("line comments", () => {
parseAndAssertSame(`
// single comment
var foo = 15; // comment next to statement
// second comment after statement
`);
});
it("block comments", () => {
parseAndAssertSame(`
/* single comment */
var foo = 15; /* comment next to statement */
/*
* multiline
* comment
*/
`);
});
it("block comments #124", () => {
parseAndAssertSame(`
React.createClass({
render() {
// return (
// <div />
// ); // <-- this is the line that is reported
}
});
`);
});
it("null", () => {
parseAndAssertSame("null");
});
it("boolean", () => {
parseAndAssertSame("if (true) {} else if (false) {}");
});
it("regexp", () => {
parseAndAssertSame("/affix-top|affix-bottom|affix|[a-z]/");
});
it("regexp", () => {
parseAndAssertSame("const foo = /foo/;");
});
it("regexp y flag", () => {
parseAndAssertSame("const foo = /foo/y;");
});
it("regexp u flag", () => {
parseAndAssertSame("const foo = /foo/u;");
});
it("regexp in a template string", () => {
parseAndAssertSame('`${/\\d/.exec("1")[0]}`');
});
it("first line is empty", () => {
parseAndAssertSame('\nimport Immutable from "immutable";');
});
it("empty", () => {
parseAndAssertSame("");
});
it("jsdoc", () => {
parseAndAssertSame(`
/**
* @param {object} options
* @return {number}
*/
const test = function({ a, b, c }) {
return a + b + c;
};
module.exports = test;
`);
});
it("empty block with comment", () => {
parseAndAssertSame(`
function a () {
try {
b();
} catch (e) {
// asdf
}
}
`);
});
describe("babel tests", () => {
it("MethodDefinition", () => {
parseAndAssertSame(`
export default class A {
a() {}
}
`);
});
it("MethodDefinition 2", () => {
parseAndAssertSame(
"export default class Bar { get bar() { return 42; }}"
);
});
it("ClassMethod", () => {
parseAndAssertSame(`
class A {
constructor() {
}
}
`);
});
it("ClassMethod multiple params", () => {
parseAndAssertSame(`
class A {
constructor(a, b, c) {
}
}
`);
});
it("ClassMethod multiline", () => {
parseAndAssertSame(`
class A {
constructor (
a,
b,
c
)
{
}
}
`);
});
it("ClassMethod oneline", () => {
parseAndAssertSame("class A { constructor(a, b, c) {} }");
});
it("ObjectMethod", () => {
parseAndAssertSame(`
var a = {
b(c) {
}
}
`);
});
it("do not allow import export everywhere", () => {
assert.throws(() => {
parseAndAssertSame('function F() { import a from "a"; }');
}, /SyntaxError: 'import' and 'export' may only appear at the top level/);
});
it("return outside function", () => {
parseAndAssertSame("return;");
});
it("super outside method", () => {
assert.throws(() => {
parseAndAssertSame("function F() { super(); }");
}, /SyntaxError: 'super' keyword outside a method/);
});
it("StringLiteral", () => {
parseAndAssertSame("");
parseAndAssertSame("");
parseAndAssertSame("a");
});
it("getters and setters", () => {
parseAndAssertSame("class A { get x ( ) { ; } }");
parseAndAssertSame(`
class A {
get x(
)
{
;
}
}
`);
parseAndAssertSame("class A { set x (a) { ; } }");
parseAndAssertSame(`
class A {
set x(a
)
{
;
}
}
`);
parseAndAssertSame(`
var B = {
get x () {
return this.ecks;
},
set x (ecks) {
this.ecks = ecks;
}
};
`);
});
it("RestOperator", () => {
parseAndAssertSame("var { a, ...b } = c");
parseAndAssertSame("var [ a, ...b ] = c");
parseAndAssertSame("var a = function (...b) {}");
});
it("SpreadOperator", () => {
parseAndAssertSame("var a = { b, ...c }");
parseAndAssertSame("var a = [ a, ...b ]");
parseAndAssertSame("var a = sum(...b)");
});
it("Async/Await", () => {
parseAndAssertSame(`
async function a() {
await 1;
}
`);
});
});
});

View File

@@ -0,0 +1,6 @@
"use strict";
module.exports = {
presets: [["@babel/preset-env", { forceAllTransforms: true }]],
plugins: [["@babel/plugin-proposal-decorators", { legacy: true }]],
};

View File

@@ -0,0 +1,21 @@
"use strict";
module.exports = {
presets: [
["@babel/preset-env", { forceAllTransforms: true }],
["@babel/preset-flow", { all: true }],
"@babel/preset-react",
],
plugins: [
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
"@babel/plugin-syntax-export-default-from",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-nullish-coalescing-operator",
"@babel/plugin-proposal-optional-chaining",
"@babel/plugin-syntax-numeric-separator",
"@babel/plugin-syntax-export-namespace-from",
["@babel/plugin-proposal-decorators", { decoratorsBeforeExport: false }],
["@babel/plugin-proposal-pipeline-operator", { proposal: "minimal" }],
],
};

View File

@@ -0,0 +1,11 @@
root: true
# babel-eslint
parser: ../../../lib/index.js
# use eslint-plugin-import
plugins:
- import
rules:
import/no-named-as-default: error
no-unused-vars: error

View File

@@ -0,0 +1 @@
export default function foo() { }

View File

@@ -0,0 +1 @@
import foo from './a.js';

View File

@@ -0,0 +1,4 @@
// @flow
type Foo = {};
const FlowTypeButton = ({ }: Foo) => { };

View File

@@ -0,0 +1,3 @@
function x () {
"use strict";
}

View File

@@ -0,0 +1 @@
function x () {}

View File

@@ -0,0 +1,5 @@
"use strict";
function x () {
"use strict";
}

View File

@@ -0,0 +1,3 @@
"use strict";
function x () {}

View File

@@ -0,0 +1,6 @@
"use strict";
/*
The empty statement is intentional. As of now, ESLint won't enforce
string: [2, "global"] on a program with an empty body. A test for that without
massaging the AST to ESlint's input format should fail.
*/

View File

@@ -0,0 +1 @@
"no use strict anywhere";

View File

@@ -0,0 +1,6 @@
class ClassName {
constructor() {
},
aMethod() {}
}

View File

@@ -0,0 +1,42 @@
"use strict";
// Checks if the source ast implements the target ast. Ignores extra keys on source ast
module.exports = function assertImplementsAST(target, source, path) {
if (!path) {
path = [];
}
function error(text) {
const err = new Error(`At ${path.join(".")}: ${text}:`);
err.depth = path.length + 1;
throw err;
}
const typeA = target === null ? "null" : typeof target;
const typeB = source === null ? "null" : typeof source;
if (typeA !== typeB) {
error(
`have different types (${typeA} !== ${typeB}) (${target} !== ${source})`
);
} else if (
typeA === "object" &&
["RegExp"].indexOf(target.constructor.name) !== -1 &&
target.constructor.name !== source.constructor.name
) {
error(
`object have different constructors (${target.constructor.name} !== ${source.constructor.name}`
);
} else if (typeA === "object") {
const keysTarget = Object.keys(target);
for (const i in keysTarget) {
const key = keysTarget[i];
path.push(key);
assertImplementsAST(target[key], source[key], path);
path.pop();
}
} else if (target !== source) {
error(
`are different (${JSON.stringify(target)} !== ${JSON.stringify(source)})`
);
}
};

View File

@@ -0,0 +1,238 @@
"use strict";
const eslint = require("eslint");
const fs = require("fs");
const path = require("path");
const parser = require("../");
eslint.linter.defineParser("current-babel-eslint", parser);
const paths = {
fixtures: path.join(__dirname, "fixtures", "rules"),
};
const encoding = "utf8";
const errorLevel = 2;
const baseEslintOpts = {
parser: "current-babel-eslint",
parserOptions: {
sourceType: "script",
},
};
/**
* Load a fixture and run eslint.linter.verify() on it.
* Pass the return value to done().
* @param object opts
* @param function done
*/
function lint(opts, done) {
readFixture(opts.fixture, (err, src) => {
if (err) return done(err);
done(null, eslint.linter.verify(src, opts.eslint));
});
}
/**
* Read a fixture file, passing the content to done().
* @param string|array id
* @param function done
*/
function readFixture(id, done) {
if (Array.isArray(id)) id = path.join.apply(path, id);
if (!path.extname(id)) id += ".js";
fs.readFile(path.join(paths.fixtures, id), encoding, done);
}
// readFixture
describe("Rules:", () => {
describe("`strict`", strictSuite);
});
// describe
function strictSuite() {
const ruleId = "strict";
describe("when set to 'never'", () => {
const eslintOpts = Object.assign({}, baseEslintOpts, {
rules: {},
});
eslintOpts.rules[ruleId] = [errorLevel, "never"];
["global-with", "function-with"].forEach(fixture => {
it(`should error on ${fixture.match(/^[^-]+/)[0]} directive`, done => {
lint(
{
fixture: ["strict", fixture],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
expect(report[0].ruleId).toBe(ruleId);
done();
}
);
});
// it
});
});
// describe
describe("when set to 'global'", () => {
const eslintOpts = Object.assign({}, baseEslintOpts, {
rules: {},
});
eslintOpts.rules[ruleId] = [errorLevel, "global"];
it("shouldn't error on single global directive", done => {
lint(
{
fixture: ["strict", "global-with"],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
expect(report.length).toBe(0);
done();
}
);
});
// it
it("should error twice on global directive: no and function directive: yes", done => {
lint(
{
fixture: ["strict", "function-with"],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
[0, 1].forEach(i => {
expect(report[0].ruleId).toBe(ruleId);
});
done();
}
);
});
// it
it("should error on function directive", done => {
lint(
{
fixture: ["strict", "global-with-function-with"],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
expect(report[0].ruleId).toBe(ruleId);
// This is to make sure the test fails prior to adapting Babel AST
// directive representation to ESLint format. Otherwise it reports an
// error for missing global directive that masquerades as the expected
// result of the previous assertion.
expect(report[0].nodeType).not.toBe("Program");
done();
}
);
});
// it
it("should error on no directive", done => {
lint(
{
fixture: ["strict", "none"],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
expect(report[0].ruleId).toBe(ruleId);
done();
}
);
});
// it
});
// describe
describe("when set to 'function'", () => {
const eslintOpts = Object.assign({}, baseEslintOpts, {
rules: {},
});
eslintOpts.rules[ruleId] = [errorLevel, "function"];
it("shouldn't error on single function directive", done => {
lint(
{
fixture: ["strict", "function-with"],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
expect(report.length).toBe(0);
done();
}
);
});
// it
it("should error twice on function directive: no and global directive: yes", done => {
lint(
{
fixture: ["strict", "global-with-function-without"],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
[0, 1].forEach(i => {
expect(report[i].ruleId).toBe(ruleId);
});
done();
}
);
});
// it
it("should error on only global directive", done => {
lint(
{
fixture: ["strict", "global-with"],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
expect(report[0].ruleId).toBe(ruleId);
done();
}
);
});
// it
it("should error on extraneous global directive", done => {
lint(
{
fixture: ["strict", "global-with-function-with"],
eslint: eslintOpts,
},
(err, report) => {
if (err) return done(err);
expect(report[0].ruleId).toBe(ruleId);
expect(report[0].nodeType.indexOf("Function")).toBe(-1);
done();
}
);
});
// it
});
}
describe("https://github.com/babel/babel-eslint/issues/558", () => {
it("doesn't crash with eslint-plugin-import", () => {
const engine = new eslint.CLIEngine({ ignore: false });
const files = ['a.js', 'b.js', 'c.js'];
let fileWithPath = files.map(file =>
path.resolve(__dirname, `./fixtures/eslint-plugin-import/${file}`));
engine.executeOnFiles(fileWithPath);
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
src
test
.*
*.log

View File

@@ -0,0 +1,38 @@
# @babel/eslint-plugin-development
A set of eslint rules to enforce best practices in the development of Babel plugins.
## Installation
You'll first need to install [ESLint](http://eslint.org):
```
$ npm install --save-dev eslint
```
Next, install `@babel/eslint-plugin-development`:
```
$ npm install --save-dev @babel/eslint-plugin-development
```
Then, load the plugin in your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:
```json
{
"plugins": ["@babel/development"]
}
```
## Supported Rules
> Note: Rules marked with :wrench: are autofixable.
* `@babel/development/no-deprecated-clone` (:wrench:): Disallows using the deprecated
`t.clone(node)` and `t.cloneDeep(node)` methods from `@babel/types`. Those
calls are replaced with `t.cloneNode(node)` when using `eslint --fix`.
* `@babel/development/no-undefined-identifier`: Disallows using
`t.identifier("undefined")` to create a node which represents an `undefined`
value, since it might cause problem if `undefined` is redeclared.
* `@babel/development/plugin-name`: Requires plugins to have a `name` property, which
can be useful for debugging purposes.

View File

@@ -0,0 +1,31 @@
{
"name": "@babel/eslint-plugin-development",
"version": "1.0.1",
"description": "A set of eslint rules to enforce best practices in the development of Babel plugins.",
"private": true,
"keywords": [
"eslint",
"eslintplugin",
"eslint-plugin"
],
"author": {
"name": "Nicolò Ribaudo",
"email": "nicolo.ribaudo@gmail.com",
"url": "https://github.com/nicolo-ribaudo"
},
"main": "lib/index.js",
"devDependencies": {
"eslint": "^5.9.0"
},
"engines": {
"node": ">=8.0.0"
},
"publishConfig": {
"access": "public"
},
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/babel/eslint-plugin-babel-plugin.git"
}
}

View File

@@ -0,0 +1,9 @@
"use strict";
module.exports = {
rules: {
"no-deprecated-clone": require("./rules/no-deprecated-clone"),
"no-undefined-identifier": require("./rules/no-undefined-identifier"),
"plugin-name": require("./rules/plugin-name"),
},
};

View File

@@ -0,0 +1,41 @@
"use strict";
const getReferenceOrigin = require("../utils/get-reference-origin");
const isFromBabelTypes = require("../utils/is-from-babel-types");
module.exports = {
meta: {
schema: [],
fixable: "code",
},
create(context) {
return {
CallExpression(node) {
const { callee } = node;
const scope = context.getScope();
const origin = getReferenceOrigin(callee, scope);
if (!origin) return;
const { name } = origin;
if (
(name === "clone" || name === "cloneDeep") &&
isFromBabelTypes(origin, scope)
) {
const isMemberExpression = callee.type === "MemberExpression";
const id = isMemberExpression ? callee.property : callee;
context.report({
node: id,
message: `t.${name}() is deprecated. Use t.cloneNode() instead.`,
fix(fixer) {
if (isMemberExpression) {
return fixer.replaceText(id, "cloneNode");
}
},
});
}
},
};
},
};

View File

@@ -0,0 +1,41 @@
"use strict";
const getReferenceOrigin = require("../utils/get-reference-origin");
const isFromBabelTypes = require("../utils/is-from-babel-types");
function firstArgumentIsUndefinedString(argumentsArray) {
return (
argumentsArray.length > 0 &&
argumentsArray[0].type === "Literal" &&
argumentsArray[0].value === "undefined"
);
}
module.exports = {
meta: {
schema: [],
},
create(context) {
return {
CallExpression(node) {
const { callee } = node;
const scope = context.getScope();
const origin = getReferenceOrigin(callee, scope);
if (!origin) return;
const { name } = origin;
if (
(name === "identifier" || name === "Identifier") &&
firstArgumentIsUndefinedString(node.arguments) &&
isFromBabelTypes(origin, scope)
) {
context.report(
node,
"Use path.scope.buildUndefinedNode() to create an undefined identifier directly.",
);
}
},
};
},
};

View File

@@ -0,0 +1,52 @@
"use strict";
const isBabelPluginFactory = require("../utils/is-babel-plugin-factory");
function getReturnValue(node) {
const { body } = node;
if (body.type === "BlockStatement") {
const returnNode = body.body.find(n => n.type === "ReturnStatement");
return returnNode && returnNode.argument;
}
// Arrow functions with implicit return
return body;
}
module.exports = {
meta: {
schema: [],
},
create(context /*: Context */) {
let pluginFound = false;
return {
FunctionDeclaration: functionVisitor,
FunctionExpression: functionVisitor,
ArrowFunctionExpression: functionVisitor,
"Program:exit"(node) {
if (!pluginFound) {
context.report(node, "This file does not export a Babel plugin.");
}
},
};
function functionVisitor(node) {
if (!isBabelPluginFactory(node, context.getScope())) return;
const returnValue = getReturnValue(node);
if (!returnValue || returnValue.type !== "ObjectExpression") return;
pluginFound = true;
if (!returnValue.properties.some(p => p.key.name === "name")) {
context.report(
returnValue,
"This Babel plugin doesn't have a 'name' property.",
);
}
}
},
};

View File

@@ -0,0 +1,24 @@
"use strict";
module.exports = function getExportName(node) {
const { parent } = node;
if (parent.type === "ExportDefaultDeclaration") {
return "default";
}
if (parent.type === "ExportNamedDeclaration") {
return node.id.name;
}
if (
parent.type === "AssignmentExpression" &&
parent.left.type === "MemberExpression" &&
parent.left.object.type === "Identifier" &&
parent.left.object.name === "module" &&
parent.left.property.type === "Identifier" &&
parent.left.property.name === "exports"
) {
return "module.exports";
}
};

View File

@@ -0,0 +1,142 @@
"use strict";
module.exports = getReferenceOrigin;
/*::
type ReferenceOriginImport = { kind: "import", source: string, name: string };
type ReferenceOriginParam = {
kind: "param",
index: number,
functionNode: Node,
};
type ReferenceOrigin =
| ReferenceOriginImport
| ReferenceOriginParam
| { kind: "import *", source: string }
| {
kind: "property",
base: ReferenceOriginImport | ReferenceOriginParam,
path: string,
name: string,
};
*/
// Given a node and a context, returns a description of where its value comes
// from.
// It resolves imports, parameters of exported functions and property accesses.
// See the ReferenceOrigin type for more informations.
function getReferenceOrigin(node, scope) /*: ?ReferenceOrigin */ {
if (node.type === "Identifier") {
const variable = getVariableDefinition(node.name, scope);
if (!variable) return null;
const definition = variable.definition;
const defNode = definition.node;
if (definition.type === "ImportBinding") {
if (defNode.type === "ImportSpecifier") {
return {
kind: "import",
source: definition.parent.source.value,
name: defNode.imported.name,
};
}
if (defNode.type === "ImportNamespaceSpecifier") {
return {
kind: "import *",
source: definition.parent.source.value,
};
}
}
if (definition.type === "Variable" && defNode.init) {
const origin = getReferenceOrigin(defNode.init, variable.scope);
return origin && patternToProperty(definition.name, origin);
}
if (definition.type === "Parameter") {
return patternToProperty(definition.name, {
kind: "param",
index: definition.index,
functionNode: definition.node,
});
}
}
if (node.type === "MemberExpression" && !node.computed) {
const origin = getReferenceOrigin(node.object, scope);
return origin && addProperty(origin, node.property.name);
}
return null;
}
function getVariableDefinition(name, scope) {
let currentScope = scope;
do {
const variable = currentScope.set.get(name);
if (variable && variable.defs[0]) {
return { scope: currentScope, definition: variable.defs[0] };
}
} while ((currentScope = currentScope.upper));
}
function patternToProperty(id, base) {
const path = getPatternPath(id);
return path && path.reduce(addProperty, base);
}
// Adds a property to a given origin. If it was a namespace import it becomes
// a named import, so that `import * as x from "foo"; x.bar` and
// `import { bar } from "foo"` have the same origin.
function addProperty(origin, name) {
if (origin.kind === "import *") {
return {
kind: "import",
source: origin.source,
name,
};
}
if (origin.kind === "property") {
return {
kind: "property",
base: origin.base,
path: origin.path + "." + name,
name,
};
}
return {
kind: "property",
base: origin,
path: name,
name,
};
}
// if "node" is c of { a: { b: c } }, the result is ["a","b"]
function getPatternPath(node) {
let current = node;
const path = [];
// Unshift keys to path while going up
do {
const property = current.parent;
if (
property.type === "ArrayPattern" ||
property.type === "AssignmentPattern" ||
property.computed
) {
// These nodes are not supported.
return null;
}
if (property.type === "Property") {
path.unshift(property.key.name);
} else {
// The destructuring pattern is finished
break;
}
} while ((current = current.parent.parent));
return path;
}

View File

@@ -0,0 +1,26 @@
"use strict";
const getReferenceOrigin = require("./get-reference-origin");
const getExportName = require("./get-export-name");
module.exports = function isBabelPluginFactory(node, scope) {
const { parent } = node;
if (parent.type === "CallExpression") {
const calleeOrigin = getReferenceOrigin(parent.callee, scope);
// Using "declare" from "@babel/helper-plugin-utils"
return !!(
calleeOrigin &&
calleeOrigin.kind === "import" &&
calleeOrigin.name === "declare" &&
calleeOrigin.source === "@babel/helper-plugin-utils"
);
}
const exportName = getExportName(node);
// export default function ({ types: t }) {}
// module.exports = function ({ types: t }) {}
return exportName === "default" || exportName === "module.exports";
};

View File

@@ -0,0 +1,35 @@
"use strict";
const isBabelPluginFactory = require("./is-babel-plugin-factory");
// Check if a ReferenceOrigin (returned by ./get-reference-origin.js)
// is a reference to a @babel/types export.
module.exports = function isFromBabelTypes(
origin /*: ReferenceOrigin */,
scope /*: Scope */,
) {
if (origin.kind === "import" && origin.source === "@babel/types") {
// imported from @babel/types
return true;
}
if (
origin.kind === "property" &&
origin.base.kind === "import" &&
origin.base.name === "types" &&
origin.base.source === "@babel/core"
) {
// imported from @babel/core
return true;
}
if (
origin.kind === "property" &&
origin.base.kind === "param" &&
origin.base.index === 0
) {
return isBabelPluginFactory(origin.base.functionNode, scope);
}
return false;
};

View File

@@ -0,0 +1,138 @@
"use strict";
const rule = require("../../src/rules/no-deprecated-clone");
const { RuleTester } = require("eslint");
const cloneError = "t.clone() is deprecated. Use t.cloneNode() instead.";
const cloneDeepError =
"t.cloneDeep() is deprecated. Use t.cloneNode() instead.";
const ruleTester = new RuleTester({
parserOptions: { sourceType: "module" },
});
ruleTester.run("no-deprecated-clone", rule, {
valid: [
`_.clone(obj)`,
`_.cloneDeep(obj)`,
`import * as t from "lib"; t.clone();`,
`import * as t from "lib"; t.cloneDeep();`,
`function f(_) { _.types.clone(); }`,
`function f(_) { _.types.cloneDeep(); }`,
`import * as t from "@babel/types"; t.cloneNode();`,
],
invalid: [
{
code: `import { clone } from "@babel/types"; clone();`,
errors: [cloneError],
},
{
code: `import { cloneDeep } from "@babel/types"; cloneDeep();`,
errors: [cloneDeepError],
},
{
code: `import { clone } from "@babel/types"; var clone2 = clone; clone2();`,
errors: [cloneError],
},
{
code: `import { cloneDeep } from "@babel/types"; var cloneDeep2 = cloneDeep; cloneDeep2();`,
errors: [cloneDeepError],
},
{
code: `import * as t from "@babel/types"; t.clone();`,
errors: [cloneError],
},
{
code: `import * as t from "@babel/types"; t.cloneDeep();`,
errors: [cloneDeepError],
},
{
code: `import * as t from "@babel/types"; var { clone } = t; clone();`,
errors: [cloneError],
},
{
code: `import * as t from "@babel/types"; var { cloneDeep } = t; cloneDeep();`,
errors: [cloneDeepError],
},
{
code: `import { clone as c } from "@babel/types"; c();`,
errors: [cloneError],
},
{
code: `import { cloneDeep as cD } from "@babel/types"; cD();`,
errors: [cloneDeepError],
},
{
code: `import * as babel from "@babel/core"; babel.types.clone();`,
errors: [cloneError],
},
{
code: `import * as babel from "@babel/core"; babel.types.cloneDeep();`,
errors: [cloneDeepError],
},
{
code: `import { types } from "@babel/core"; types.clone();`,
errors: [cloneError],
},
{
code: `import { types } from "@babel/core"; types.cloneDeep();`,
errors: [cloneDeepError],
},
{
code: `import { types as t } from "@babel/core"; t.clone();`,
errors: [cloneError],
},
{
code: `import { types as t } from "@babel/core"; t.cloneDeep();`,
errors: [cloneDeepError],
},
{
code: `export default function plugin(babel) { babel.types.clone() }`,
errors: [cloneError],
},
{
code: `export default function plugin(babel) { babel.types.cloneDeep() }`,
errors: [cloneDeepError],
},
{
code: `export default function plugin({ types }) { types.clone() }`,
errors: [cloneError],
},
{
code: `export default function plugin({ types }) { types.cloneDeep() }`,
errors: [cloneDeepError],
},
{
code: `export default function plugin({ types: t }) { t.clone() }`,
errors: [cloneError],
},
{
code: `export default function plugin({ types: t }) { t.cloneDeep() }`,
errors: [cloneDeepError],
},
{
code: `export default ({ types }) => { types.clone() }`,
errors: [cloneError],
},
{
code: `export default ({ types }) => { types.cloneDeep() }`,
errors: [cloneDeepError],
},
{
code: `module.exports = function plugin({ types }) { types.clone() }`,
errors: [cloneError],
},
{
code: `module.exports = function plugin({ types }) { types.cloneDeep() }`,
errors: [cloneDeepError],
},
{
code: `import { declare } from "@babel/helper-plugin-utils"; declare(({ types }) => { types.clone() });`,
errors: [cloneError],
},
{
code: `import { declare } from "@babel/helper-plugin-utils"; declare(({ types }) => { types.cloneDeep() });`,
errors: [cloneDeepError],
},
],
});

View File

@@ -0,0 +1,80 @@
"use strict";
const rule = require("../../src/rules/no-undefined-identifier");
const { RuleTester } = require("eslint");
const error =
"Use path.scope.buildUndefinedNode() to create an undefined identifier directly.";
const ruleTester = new RuleTester({
parserOptions: { sourceType: "module" },
});
ruleTester.run("no-undefined-identifier", rule, {
valid: [
`_.identifier("undefined")`,
`_.Identifier("undefined")`,
`import * as t from "lib"; t.identifier("undefined");`,
`function f(_) { _.types.identifier("undefined"); }`,
`import * as t from "@babel/types"; t.identifier("not_undefined");`,
`path.scope.buildUndefinedNode();`,
],
invalid: [
{
code: `import { identifier } from "@babel/types"; identifier("undefined");`,
errors: [error],
},
{
code: `import { Identifier } from "@babel/types"; Identifier("undefined");`,
errors: [error],
},
{
code: `import * as t from "@babel/types"; t.identifier("undefined");`,
errors: [error],
},
{
code: `import * as t from "@babel/types"; var { identifier } = t; identifier("undefined");`,
errors: [error],
},
{
code: `import { identifier as id } from "@babel/types"; id("undefined");`,
errors: [error],
},
{
code: `import * as babel from "@babel/core"; babel.types.identifier("undefined");`,
errors: [error],
},
{
code: `import { types } from "@babel/core"; types.identifier("undefined");`,
errors: [error],
},
{
code: `import { types as t } from "@babel/core"; t.identifier("undefined");`,
errors: [error],
},
{
code: `export default function plugin(babel) { babel.types.identifier("undefined") }`,
errors: [error],
},
{
code: `export default function plugin({ types }) { types.identifier("undefined") }`,
errors: [error],
},
{
code: `export default function plugin({ types: t }) { t.identifier("undefined") }`,
errors: [error],
},
{
code: `export default ({ types }) => { types.identifier("undefined") }`,
errors: [error],
},
{
code: `module.exports = function plugin({ types }) { types.identifier("undefined") }`,
errors: [error],
},
{
code: `import { declare } from "@babel/helper-plugin-utils"; declare(({ types }) => { types.identifier("undefined") });`,
errors: [error],
},
],
});

View File

@@ -0,0 +1,54 @@
"use strict";
const rule = require("../../src/rules/plugin-name");
const { RuleTester } = require("eslint");
const missingPluginError = "This file does not export a Babel plugin.";
const missingNameError = "This Babel plugin doesn't have a 'name' property.";
const ruleTester = new RuleTester({
parserOptions: { sourceType: "module" },
});
ruleTester.run("plugin-name", rule, {
valid: [
`export default function () { return { name: "test-plugin" } }`,
`import { declare } from "@babel/helper-plugin-utils"; declare(() => { return { name: "test-plugin" } })`,
`import { declare } from "@babel/helper-plugin-utils"; declare(() => ({ name: "test-plugin" }))`,
`module.exports = function () { return { name: "foo" }; }`,
],
invalid: [
{
code: `function fn() { return { name: "foo" } }`,
errors: [missingPluginError],
},
{
code: `export function fn() { return { name: "foo" } }`,
errors: [missingPluginError],
},
{
code: `(function fn() { return { name: "foo" } })`,
errors: [missingPluginError],
},
{
code: `() => { return { name: "foo" } }`,
errors: [missingPluginError],
},
{
code: `export default function fn() {}`,
errors: [missingPluginError],
},
{
code: `export default function fn() { return {} }`,
errors: [missingNameError],
},
{
code: `import { declare } from "@babel/helper-plugin-utils"; declare(() => ({}))`,
errors: [missingNameError],
},
{
code: `module.exports = function () { return {} }`,
errors: [missingNameError],
},
],
});

View File

@@ -0,0 +1,4 @@
src
test
.*
*.log

View File

@@ -0,0 +1,23 @@
Copyright (c) 2014-2015 Jason Quense <jason@quense.me>
Original work by respective rule authors; copywrites noted in files.
MIT License
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,67 @@
# eslint-plugin-babel
An `eslint` plugin companion to `babel-eslint`. `babel-eslint` does a great job at adapting `eslint`
for use with Babel, but it can't change the built in rules to support experimental features.
`eslint-plugin-babel` re-implements problematic rules so they do not give false positives or negatives.
> Requires Node 4 or greater
### Install
```sh
npm install eslint-plugin-babel --save-dev
```
Load the plugin in your `.eslintrc` file:
```json
{
"plugins": [
"babel"
]
}
```
Finally enable all the rules you would like to use (remember to disable the
original ones as well!).
```json
{
"rules": {
"babel/new-cap": 1,
"babel/camelcase": 1,
"babel/no-invalid-this": 1,
"babel/object-curly-spacing": 1,
"babel/quotes": 1,
"babel/semi": 1,
"babel/no-unused-expressions": 1,
"babel/valid-typeof": 1
}
}
```
### Rules
Each rule corresponds to a core `eslint` rule, and has the same options.
🛠: means it's autofixable with `--fix`.
- `babel/new-cap`: Ignores capitalized decorators (`@Decorator`)
- `babel/camelcase: doesn't complain about optional chaining (`var foo = bar?.a_b;`)
- `babel/no-invalid-this`: doesn't fail when inside class properties (`class A { a = this.b; }`)
- `babel/object-curly-spacing`: doesn't complain about `export x from "mod";` or `export * as x from "mod";` (🛠)
- `babel/quotes`: doesn't complain about JSX fragment shorthand syntax (`<>foo</>;`)
- `babel/semi`: doesn't fail when using `for await (let something of {})`. Includes class properties (🛠)
- `babel/no-unused-expressions`: doesn't fail when using `do` expressions or [optional chaining](https://github.com/tc39/proposal-optional-chaining) (`a?.b()`).
- `babel/valid-typeof`: doesn't complain when used with [BigInt](https://github.com/tc39/proposal-bigint) (`typeof BigInt(9007199254740991) === 'bigint'`).
#### Deprecated
| Rule | Notes |
|:---------------------------------|:-----------------------------------|
| `babel/generator-star-spacing` | Use [`generator-star-spacing`](http://eslint.org/docs/rules/generator-star-spacing) since eslint@3.6.0 |
| `babel/object-shorthand` | Use [`object-shorthand`](http://eslint.org/docs/rules/object-shorthand) since eslint@0.20.0 |
| `babel/arrow-parens` | Use [`arrow-parens`](http://eslint.org/docs/rules/arrow-parens) since eslint@3.10.0 |
| `babel/func-params-comma-dangle` | Use [`comma-dangle`](http://eslint.org/docs/rules/comma-dangle) since eslint@3.8.0 |
| `babel/array-bracket-spacing` | Use [`array-bracket-spacing`](http://eslint.org/docs/rules/array-bracket-spacing) since eslint@3.9.0 |
| `babel/flow-object-type` | Use [`flowtype/object-type-delimiter`](https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-delimiter) since eslint-plugin-flowtype@2.23.0 |
| `babel/no-await-in-loop` | Use [`no-await-in-loop`](http://eslint.org/docs/rules/no-await-in-loop) since eslint@3.12.0 |

View File

@@ -0,0 +1,38 @@
{
"name": "eslint-plugin-babel",
"version": "5.3.0",
"description": "an eslint rule plugin companion to babel-eslint",
"main": "lib/index.js",
"repository": {
"type": "git",
"url": "git+https://github.com/babel/eslint-plugin-babel.git"
},
"keywords": [
"babel",
"eslint",
"eslintplugin",
"eslint-plugin",
"babel-eslint"
],
"author": "Jason Quense @monasticpanic",
"license": "MIT",
"private": true,
"engines": {
"node": ">=4"
},
"bugs": {
"url": "https://github.com/babel/eslint-plugin-babel/issues"
},
"homepage": "https://github.com/babel/eslint-plugin-babel#readme",
"peerDependencies": {
"eslint": ">=4.0.0"
},
"dependencies": {
"eslint-rule-composer": "^0.3.0"
},
"devDependencies": {
"babel-eslint": "^8.2.2",
"eslint": "^4.19.1",
"lodash.clonedeep": "^4.5.0"
}
}

View File

@@ -0,0 +1,38 @@
"use strict";
module.exports = {
rules: {
"array-bracket-spacing": require("./rules/array-bracket-spacing"),
"arrow-parens": require("./rules/arrow-parens"),
"flow-object-type": require("./rules/flow-object-type"),
"func-params-comma-dangle": require("./rules/func-params-comma-dangle"),
"generator-star-spacing": require("./rules/generator-star-spacing"),
"new-cap": require("./rules/new-cap"),
camelcase: require("./rules/camelcase"),
"no-await-in-loop": require("./rules/no-await-in-loop"),
"no-invalid-this": require("./rules/no-invalid-this"),
"no-unused-expressions": require("./rules/no-unused-expressions"),
"object-curly-spacing": require("./rules/object-curly-spacing"),
"object-shorthand": require("./rules/object-shorthand"),
quotes: require("./rules/quotes"),
semi: require("./rules/semi"),
"valid-typeof": require("./rules/valid-typeof"),
},
rulesConfig: {
"array-bracket-spacing": 0,
"arrow-parens": 0,
camelcase: 0,
"flow-object-type": 0,
"func-params-comma-dangle": 0,
"generator-star-spacing": 0,
"new-cap": 0,
"no-await-in-loop": 0,
"no-invalid-this": 0,
"no-unused-expressions": 0,
"object-curly-spacing": 0,
"object-shorthand": 0,
quotes: 0,
semi: 0,
"valid-typeof": 0,
},
};

View File

@@ -0,0 +1,46 @@
"use strict";
let isWarnedForDeprecation = false;
module.exports = {
meta: {
deprecated: true,
schema: [
{
enum: ["always", "never"],
},
{
type: "object",
properties: {
singleValue: {
type: "boolean",
},
objectsInArrays: {
type: "boolean",
},
arraysInArrays: {
type: "boolean",
},
},
additionalProperties: false,
},
],
},
create: function() {
return {
Program: function() {
if (
isWarnedForDeprecation ||
/=-(f|-format)=/.test(process.argv.join("="))
) {
return;
}
console.log(
"The babel/array-bracket-spacing rule is deprecated. Please " +
"use the built in array-bracket-spacing rule instead.",
);
isWarnedForDeprecation = true;
},
};
},
};

View File

@@ -0,0 +1,31 @@
"use strict";
let isWarnedForDeprecation = false;
module.exports = {
meta: {
deprecated: true,
schema: [
{
enum: ["always", "as-needed"],
},
],
},
create: function() {
return {
Program: function() {
if (
isWarnedForDeprecation ||
/=-(f|-format)=/.test(process.argv.join("="))
) {
return;
}
console.log(
"The babel/arrow-parens rule is deprecated. Please " +
"use the built in arrow-parens rule instead.",
);
isWarnedForDeprecation = true;
},
};
},
};

View File

@@ -0,0 +1,231 @@
/**
* @fileoverview Rule to flag non-camelcased identifiers
* @author Nicholas C. Zakas
*/
"use strict";
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = {
meta: {
docs: {
description: "enforce camelcase naming convention",
category: "Stylistic Issues",
recommended: false,
url: "https://eslint.org/docs/rules/camelcase",
},
schema: [
{
type: "object",
properties: {
ignoreDestructuring: {
type: "boolean",
},
properties: {
enum: ["always", "never"],
},
},
additionalProperties: false,
},
],
messages: {
notCamelCase: "Identifier '{{name}}' is not in camel case.",
},
},
create(context) {
//--------------------------------------------------------------------------
// Helpers
//--------------------------------------------------------------------------
// contains reported nodes to avoid reporting twice on destructuring with shorthand notation
const reported = [];
const ALLOWED_PARENT_TYPES = new Set(["CallExpression", "NewExpression"]);
const MEMBER_EXPRESSIONS = ["MemberExpression", "OptionalMemberExpression"];
/**
* Checks if expression is supported member expression.
*
* @param {string} expression - An expression to check.
* @returns {boolean} `true` if the expression type is supported
*/
function isMemberExpression(expression) {
return MEMBER_EXPRESSIONS.indexOf(expression) >= 0;
}
/**
* Checks if a string contains an underscore and isn't all upper-case
* @param {string} name The string to check.
* @returns {boolean} if the string is underscored
* @private
*/
function isUnderscored(name) {
// if there's an underscore, it might be A_CONSTANT, which is okay
return name.indexOf("_") > -1 && name !== name.toUpperCase();
}
/**
* Checks if a parent of a node is an ObjectPattern.
* @param {ASTNode} node The node to check.
* @returns {boolean} if the node is inside an ObjectPattern
* @private
*/
function isInsideObjectPattern(node) {
let { parent } = node;
while (parent) {
if (parent.type === "ObjectPattern") {
return true;
}
parent = parent.parent;
}
return false;
}
/**
* Reports an AST node as a rule violation.
* @param {ASTNode} node The node to report.
* @returns {void}
* @private
*/
function report(node) {
if (reported.indexOf(node.parent) < 0) {
reported.push(node.parent);
context.report({
node,
messageId: "notCamelCase",
data: { name: node.name },
});
}
}
const options = context.options[0] || {};
let properties = options.properties || "";
const ignoreDestructuring = options.ignoreDestructuring || false;
if (properties !== "always" && properties !== "never") {
properties = "always";
}
return {
Identifier(node) {
/*
* Leading and trailing underscores are commonly used to flag
* private/protected identifiers, strip them
*/
const name = node.name.replace(/^_+|_+$/g, ""),
effectiveParent = isMemberExpression(node.parent.type)
? node.parent.parent
: node.parent;
// MemberExpressions get special rules
if (isMemberExpression(node.parent.type)) {
// "never" check properties
if (properties === "never") {
return;
}
// Always report underscored object names
if (
node.parent.object.type === "Identifier" &&
node.parent.object.name === node.name &&
isUnderscored(name)
) {
report(node);
// Report AssignmentExpressions only if they are the left side of the assignment
} else if (
effectiveParent.type === "AssignmentExpression" &&
isUnderscored(name) &&
(!isMemberExpression(effectiveParent.right.type) ||
(isMemberExpression(effectiveParent.left.type) &&
effectiveParent.left.property.name === node.name))
) {
report(node);
}
/*
* Properties have their own rules, and
* AssignmentPattern nodes can be treated like Properties:
* e.g.: const { no_camelcased = false } = bar;
*/
} else if (
node.parent.type === "Property" ||
node.parent.type === "AssignmentPattern"
) {
if (
node.parent.parent &&
node.parent.parent.type === "ObjectPattern"
) {
const assignmentKeyEqualsValue =
node.parent.key.name === node.parent.value.name;
// prevent checking righthand side of destructured object
if (node.parent.key === node && node.parent.value !== node) {
return;
}
const valueIsUnderscored =
node.parent.value.name && isUnderscored(name);
// ignore destructuring if the option is set, unless a new identifier is created
if (
valueIsUnderscored &&
!(assignmentKeyEqualsValue && ignoreDestructuring)
) {
report(node);
}
}
// "never" check properties or always ignore destructuring
if (
properties === "never" ||
(ignoreDestructuring && isInsideObjectPattern(node))
) {
return;
}
// don't check right hand side of AssignmentExpression to prevent duplicate warnings
if (
isUnderscored(name) &&
!ALLOWED_PARENT_TYPES.has(effectiveParent.type) &&
!(node.parent.right === node)
) {
report(node);
}
// Check if it's an import specifier
} else if (
[
"ImportSpecifier",
"ImportNamespaceSpecifier",
"ImportDefaultSpecifier",
].indexOf(node.parent.type) >= 0
) {
// Report only if the local imported identifier is underscored
if (
node.parent.local &&
node.parent.local.name === node.name &&
isUnderscored(name)
) {
report(node);
}
// Report anything that is underscored that isn't a CallExpression
} else if (
isUnderscored(name) &&
!ALLOWED_PARENT_TYPES.has(effectiveParent.type)
) {
report(node);
}
},
};
},
};

View File

@@ -0,0 +1,34 @@
"use strict";
let isWarnedForDeprecation = false;
module.exports = {
meta: {
deprecated: true,
schema: [
{
enum: ["semicolon", "comma"],
},
],
},
create: function() {
return {
Program: function() {
if (
isWarnedForDeprecation ||
/=-(f|-format)=/.test(process.argv.join("="))
) {
return;
}
console.log(
"The babel/flow-object-type rule is deprecated. Please " +
"use the flowtype/object-type-delimiter rule instead.\n" +
// eslint-disable-next-line
"Check out https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-delimiter"
);
isWarnedForDeprecation = true;
},
};
},
};

Some files were not shown because too many files have changed in this diff Show More