Compare commits
337 Commits
v7.4.4
...
initialize
| Author | SHA1 | Date | |
|---|---|---|---|
| 4fd9f6e6a2 | |||
| 08550a076c | |||
| d50037be8f | |||
| fd2c2f61bb | |||
| 0e5c224ff1 | |||
| b0b6a92b90 | |||
| a5c141ea85 | |||
| e488c32244 | |||
| 0febc4f55f | |||
| 5415a390a9 | |||
| 7dd772001d | |||
| d314e28457 | |||
| b248b3f4e9 | |||
| c8c6ff7c4c | |||
|
|
8e5f2dc929 | ||
|
|
2b082601a7 | ||
|
|
70c0ed512a | ||
|
|
8c2ed89aaa | ||
|
|
e315d65a7a | ||
|
|
0287c0f02f | ||
|
|
c2bace4b73 | ||
|
|
35f4d12763 | ||
|
|
9082e68d6f | ||
|
|
bdb4318f47 | ||
|
|
3ab035bab6 | ||
|
|
2cd5ad0c80 | ||
|
|
2640e5a27c | ||
|
|
0f949990c3 | ||
|
|
f544753bb8 | ||
|
|
d3db02da30 | ||
|
|
42c8e0fb2f | ||
|
|
bf48fca6a0 | ||
|
|
f8eb290da1 | ||
|
|
5f2240e7ab | ||
|
|
97faa83953 | ||
|
|
cdbffe3990 | ||
|
|
b114486bc1 | ||
|
|
e9c1bce50f | ||
|
|
87feda7c2a | ||
|
|
d25262ec4b | ||
|
|
861844761f | ||
|
|
43aa7e262c | ||
|
|
5e24016623 | ||
|
|
d023e105b7 | ||
|
|
abce0ef49d | ||
|
|
5c0d8a9de7 | ||
|
|
bea1b0d0af | ||
|
|
58a646be59 | ||
|
|
c7d8b8a377 | ||
|
|
d08702c9d2 | ||
|
|
a2b5437b01 | ||
|
|
0b0edc3e3d | ||
|
|
e419e5fe42 | ||
|
|
4e6a4b08bb | ||
|
|
3d2f365074 | ||
|
|
8ffca0475a | ||
|
|
ec3345bb57 | ||
|
|
4b3a19ea9f | ||
|
|
198b4a0fbd | ||
|
|
143d159982 | ||
|
|
63f9a3c946 | ||
|
|
3a5e8a8dd4 | ||
|
|
38a3063111 | ||
|
|
4cd93ab5f3 | ||
|
|
d248e2d188 | ||
|
|
f47fbd5f39 | ||
|
|
be0fcaaf49 | ||
|
|
4e5ac1fd5c | ||
|
|
1d1fab4ea2 | ||
|
|
f1bc6c4e18 | ||
|
|
b6ef9689b2 | ||
|
|
01927babe2 | ||
|
|
9ada30c207 | ||
|
|
43065a9e24 | ||
|
|
fce1b74105 | ||
|
|
562b6c3bbb | ||
|
|
1770dace34 | ||
|
|
5b40845afe | ||
|
|
fe258dec04 | ||
|
|
78cd63d9cf | ||
|
|
43b623c1f1 | ||
|
|
b5b8055cc0 | ||
|
|
da9c9a64c2 | ||
|
|
8c94b3f209 | ||
|
|
095f28a913 | ||
|
|
487f10f84d | ||
|
|
5800fc97b3 | ||
|
|
2254542010 | ||
|
|
d234ff6572 | ||
|
|
800eccc046 | ||
|
|
cd5d3abc32 | ||
|
|
272d85d0ad | ||
|
|
686186cabc | ||
|
|
06313a6288 | ||
|
|
dcf7d89b8e | ||
|
|
1b19608a5a | ||
|
|
e28c8ac612 | ||
|
|
99035ca96e | ||
|
|
c455d2af86 | ||
|
|
a422ea64ee | ||
|
|
34d30e28d6 | ||
|
|
3ad4c70d3a | ||
|
|
34937f13d5 | ||
|
|
c7add11fdc | ||
|
|
d329156ebc | ||
|
|
25b35261ca | ||
|
|
563874c06c | ||
|
|
b0acfb24dd | ||
|
|
599d2ff324 | ||
|
|
0856618ed5 | ||
|
|
bc0966a46f | ||
|
|
3498195ae2 | ||
|
|
fbf3cb0ac4 | ||
|
|
e6264a0992 | ||
|
|
0b37ab0362 | ||
|
|
57ae306457 | ||
|
|
fa5a40c8d5 | ||
|
|
a219b6de7a | ||
|
|
fa5057f9fb | ||
|
|
02f2d17e83 | ||
|
|
b351f29033 | ||
|
|
298c9a6c33 | ||
|
|
80d99b4d4e | ||
|
|
94fcabc4e3 | ||
|
|
5f1970433d | ||
|
|
b459f6a0a4 | ||
|
|
66062c2a8c | ||
|
|
8d4f95de45 | ||
|
|
d0f093e716 | ||
|
|
490798a26d | ||
|
|
eaa1474541 | ||
|
|
0e9502685a | ||
|
|
26be14b24d | ||
|
|
6f3460c767 | ||
|
|
cc080417b9 | ||
|
|
a00f371610 | ||
|
|
af66d521bd | ||
|
|
b9cb4af953 | ||
|
|
69d00dc5b0 | ||
|
|
f339d2d034 | ||
|
|
3069747a81 | ||
|
|
962015f7e7 | ||
|
|
b7333ea97a | ||
|
|
46c70ad734 | ||
|
|
3a7b6e1c22 | ||
|
|
9c1ad0a9f7 | ||
|
|
87dc201411 | ||
|
|
0ef4972295 | ||
|
|
cb881e6b3f | ||
|
|
45a484f0a2 | ||
|
|
99f4f6c3b0 | ||
|
|
e4b4831100 | ||
|
|
256fa5aa04 | ||
|
|
0ee2c42b55 | ||
|
|
1b352ca8a1 | ||
|
|
53af9e8b7a | ||
|
|
af04f40ee0 | ||
|
|
98b14843ba | ||
|
|
4395c22f3a | ||
|
|
610d6bdc62 | ||
|
|
8027dca501 | ||
|
|
81831032c3 | ||
|
|
daf25af47c | ||
|
|
6a5cee8f27 | ||
|
|
2096d0cfcb | ||
|
|
a79fbe62e4 | ||
|
|
381b066bd0 | ||
|
|
15b63bc89e | ||
|
|
fc8e14264c | ||
|
|
7e4f48139c | ||
|
|
cbd5a26e57 | ||
|
|
42e5974fd4 | ||
|
|
735abc0ed8 | ||
|
|
aa7678f32a | ||
|
|
b64cb9aaf1 | ||
|
|
8da9d8b4b8 | ||
|
|
3e4889d649 | ||
|
|
da0af5fd99 | ||
|
|
b02e35c19a | ||
|
|
3e8a5c5e28 | ||
|
|
8769903284 | ||
|
|
5c859b1117 | ||
|
|
2e7bea4a6a | ||
|
|
29734b924a | ||
|
|
6813ee02d7 | ||
|
|
fcb77de901 | ||
|
|
d05bd9edc8 | ||
|
|
27ba292774 | ||
|
|
a08e856804 | ||
|
|
c0e3fa0081 | ||
|
|
e5afa57cca | ||
|
|
e7fa566442 | ||
|
|
7c0333e12a | ||
|
|
8a775a32ba | ||
|
|
94e47c30a9 | ||
|
|
1664cce681 | ||
|
|
a2bf68981f | ||
|
|
15aa511b8e | ||
|
|
11ed2e2bf5 | ||
|
|
eb3767d58b | ||
|
|
f0c2364d01 | ||
|
|
ee344c3e4c | ||
|
|
64041e1669 | ||
|
|
469a5a71cd | ||
|
|
75090f10e5 | ||
|
|
22df2ae244 | ||
|
|
051965052c | ||
|
|
ee397ff107 | ||
|
|
15535cf52c | ||
|
|
682d9f9f09 | ||
|
|
a112be2fa0 | ||
|
|
9ec26a7d3e | ||
|
|
ba2c0f7adf | ||
|
|
5fb4d84a33 | ||
|
|
3e4a9d588b | ||
|
|
be2cbde560 | ||
|
|
66727632e8 | ||
|
|
ba28f462bc | ||
|
|
f08062b1de | ||
|
|
4f0840ab88 | ||
|
|
6a9d2538e0 | ||
|
|
f160522ab0 | ||
|
|
4d30379d36 | ||
|
|
4d12c8971b | ||
|
|
4506590557 | ||
|
|
1e7ed5c461 | ||
|
|
fced5cea43 | ||
|
|
9bc9571381 | ||
|
|
fb910e063c | ||
|
|
3b4a86aea4 | ||
|
|
94b678c949 | ||
|
|
c84a4c8bfa | ||
|
|
dfd59c183e | ||
|
|
718017d896 | ||
|
|
a0cb7b1ab1 | ||
|
|
0b886418c8 | ||
|
|
0371979a3e | ||
|
|
0407f034f0 | ||
|
|
d919ecd254 | ||
|
|
d8da63c929 | ||
|
|
eb3230f9db | ||
|
|
7dc5fdb390 | ||
|
|
ee68d6d1b0 | ||
|
|
d3fe22f0e1 | ||
|
|
7f47cb65d0 | ||
|
|
8b9af1be2f | ||
|
|
f5ca0587d1 | ||
|
|
a9660cf559 | ||
|
|
8107a6faa2 | ||
|
|
42000b9907 | ||
|
|
5d9a786b2f | ||
|
|
e88a569e83 | ||
|
|
4eab157502 | ||
|
|
a9a7f4e690 | ||
|
|
fa5ec75c43 | ||
|
|
b961d39a4d | ||
|
|
759ff4d6df | ||
|
|
9e65472377 | ||
|
|
25f040caa4 | ||
|
|
0dbf99bedb | ||
|
|
f48b47c1f7 | ||
|
|
406a65c894 | ||
|
|
075a50242d | ||
|
|
c777e81e06 | ||
|
|
d0519fa907 | ||
|
|
019fbca3f6 | ||
|
|
24dde2e8e8 | ||
|
|
bff79e198a | ||
|
|
106bb41d47 | ||
|
|
d19f053482 | ||
|
|
49da9a07c8 | ||
|
|
b06663320e | ||
|
|
d50e78d45b | ||
|
|
5b86353b35 | ||
|
|
f588e4ec47 | ||
|
|
cbb482e2f9 | ||
|
|
595a349174 | ||
|
|
0bf0ae3410 | ||
|
|
ef3f555be9 | ||
|
|
38f8bbac1a | ||
|
|
a4170b5e32 | ||
|
|
6b8a37c413 | ||
|
|
0a98814329 | ||
|
|
8bf9714d69 | ||
|
|
ca67637da4 | ||
|
|
77fd7cd4c4 | ||
|
|
1d3f9815df | ||
|
|
31fc1d06bc | ||
|
|
b8bb93a838 | ||
|
|
8f8a457798 | ||
|
|
11fa2461ce | ||
|
|
505b2cc18d | ||
|
|
dcdf7c8fdd | ||
|
|
fdbbb743b6 | ||
|
|
6852bf6415 | ||
|
|
f92c2ae830 | ||
|
|
d7801c644c | ||
|
|
84961ebb05 | ||
|
|
3144ed131a | ||
|
|
ce4c374924 | ||
|
|
8d492b159b | ||
|
|
b4c9cb0222 | ||
|
|
a596da2822 | ||
|
|
1cfb92d66a | ||
|
|
888b9f6940 | ||
|
|
b6486a22cb | ||
|
|
a6392bd636 | ||
|
|
9dd8825eff | ||
|
|
ecf4667305 | ||
|
|
87fb6c4a8b | ||
|
|
58cf1a7d48 | ||
|
|
c96aef17e1 | ||
|
|
fc38638aeb | ||
|
|
33ab4f1661 | ||
|
|
54d257c105 | ||
|
|
9c06e4ed4d | ||
|
|
f5b8140580 | ||
|
|
0430a48775 | ||
|
|
45ca6751fa | ||
|
|
b1826bf0a0 | ||
|
|
2080042808 | ||
|
|
3f0590de2a | ||
|
|
5661de5908 | ||
|
|
c2d303f8be | ||
|
|
4da7a01aa9 | ||
|
|
47eb1ddfe0 | ||
|
|
9febf63882 | ||
|
|
85432e2c44 | ||
|
|
1969e6b6aa | ||
|
|
7942dc0f07 | ||
|
|
354666aa17 | ||
|
|
9e9b62f77a | ||
|
|
5da94bff87 | ||
|
|
eae7a33316 | ||
|
|
16e17c560b | ||
|
|
555d50a08c | ||
|
|
18ace84b88 |
@ -30,11 +30,20 @@ aliases:
|
|||||||
- &artifact_env_min
|
- &artifact_env_min
|
||||||
path: ~/babel/packages/babel-preset-env-standalone/babel-preset-env.min.js
|
path: ~/babel/packages/babel-preset-env-standalone/babel-preset-env.min.js
|
||||||
|
|
||||||
|
- &test262_workdir
|
||||||
|
working_directory: ~/babel/babel-test262-runner
|
||||||
|
|
||||||
|
- &artifact_test262_tap
|
||||||
|
path: ~/test262.tap
|
||||||
|
|
||||||
|
- &artifact_test262_xunit
|
||||||
|
path: ~/test-results
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
test:
|
||||||
working_directory: ~/babel
|
working_directory: ~/babel
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/node:12
|
- image: circleci/node:13
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- restore-cache: *restore-yarn-cache
|
- restore-cache: *restore-yarn-cache
|
||||||
@ -54,3 +63,59 @@ jobs:
|
|||||||
- store_artifacts: *artifact_env_min
|
- store_artifacts: *artifact_env_min
|
||||||
- save_cache: *save-node-modules-cache
|
- save_cache: *save-node-modules-cache
|
||||||
- save_cache: *save-yarn-cache
|
- save_cache: *save-yarn-cache
|
||||||
|
test262:
|
||||||
|
working_directory: ~/babel
|
||||||
|
docker:
|
||||||
|
- image: circleci/node:12
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- restore-cache: *restore-yarn-cache
|
||||||
|
- restore-cache: *restore-node-modules-cache
|
||||||
|
- run:
|
||||||
|
name: Build Babel
|
||||||
|
command: BABEL_ENV=test make bootstrap
|
||||||
|
- run:
|
||||||
|
name: Link Babel
|
||||||
|
command: |
|
||||||
|
cd packages
|
||||||
|
for package in */; do
|
||||||
|
cd $package
|
||||||
|
yarn link
|
||||||
|
cd ..
|
||||||
|
done
|
||||||
|
- 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
|
||||||
|
curl -L https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 > jq
|
||||||
|
chmod +x ./jq
|
||||||
|
for package in ../packages/*/package.json; do
|
||||||
|
yarn link $(./jq -j ".name" $package)
|
||||||
|
done
|
||||||
|
node lib/download-node
|
||||||
|
- run:
|
||||||
|
name: Run Test262
|
||||||
|
command: 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
|
||||||
|
|
||||||
|
workflows:
|
||||||
|
version: 2
|
||||||
|
test:
|
||||||
|
jobs:
|
||||||
|
- test
|
||||||
|
master:
|
||||||
|
jobs:
|
||||||
|
- test262:
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
|||||||
@ -6,7 +6,7 @@ charset = utf-8
|
|||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
|
|
||||||
[*.{js,json}]
|
[*.{js,json,ts,tsx}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
|||||||
@ -24,4 +24,6 @@ suppress_comment= \\(.\\|\n\\)*\\$FlowIgnore
|
|||||||
suppress_type=$FlowFixMe
|
suppress_type=$FlowFixMe
|
||||||
suppress_type=$FlowSubtype
|
suppress_type=$FlowSubtype
|
||||||
esproposal.export_star_as=enable
|
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'
|
module.name_mapper='^@babel\/\([a-zA-Z0-9_\-]+\)$' -> '<PROJECT_ROOT>/packages/babel-\1/src/index'
|
||||||
|
|||||||
18
.github/CHANGELOG-6to5.md
vendored
18
.github/CHANGELOG-6to5.md
vendored
@ -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.
|
* Restructure transformers so they're only ran if the AST contains nodes that they need to worry about. Improves transpilation speed significantly.
|
||||||
* **Bug Fix**
|
* **Bug Fix**
|
||||||
* Fix source maps not tracking end of node locations.
|
* 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.
|
* Use static super references as the home object is actually done at definition time.
|
||||||
* **Polish**
|
* **Polish**
|
||||||
* Force the `es6.destructuring` transformer to be whitelisted when the `es7.objectSpread` transformer is.
|
* Force the `es6.destructuring` transformer to be whitelisted when the `es7.objectSpread` transformer is.
|
||||||
@ -474,12 +474,12 @@
|
|||||||
* **Polish**
|
* **Polish**
|
||||||
* Rest parameters now allocate the array before populating.
|
* Rest parameters now allocate the array before populating.
|
||||||
* **Internal**
|
* **Internal**
|
||||||
* `for...in` loops have been changed to optimized `for` loops - better performance and no enumeration of protoype keys.
|
* `for...in` loops have been changed to optimized `for` loops - better performance and no enumeration of prototype keys.
|
||||||
* Parts of the code generator have now been optimized thanks to [gaearon](https://github.com/gaearon).
|
* Parts of the code generator have now been optimized thanks to [gaearon](https://github.com/gaearon).
|
||||||
|
|
||||||
## 2.12.3
|
## 2.12.3
|
||||||
|
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Optional `typeof` transformer checks for `undefined` before passing it to the helper.
|
* Optional `typeof` transformer checks for `undefined` before passing it to the helper.
|
||||||
* Class methods are now named.
|
* Class methods are now named.
|
||||||
|
|
||||||
@ -551,7 +551,7 @@
|
|||||||
* Add `classesFastSuper` optional transformer that doesn't support parent getters and prototype changing.
|
* 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 `forOfFast` transformer that speeds up `for...of` on arrays but produces more code.
|
||||||
* Add `--react-compat` to `bin/6to5`.
|
* Add `--react-compat` to `bin/6to5`.
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Disallow setters without a single parameter.
|
* Disallow setters without a single parameter.
|
||||||
* Add `configurable` and `writable` to defined properties.
|
* Add `configurable` and `writable` to defined properties.
|
||||||
* Use define instead of assignment for class methods.
|
* Use define instead of assignment for class methods.
|
||||||
@ -619,7 +619,7 @@
|
|||||||
|
|
||||||
## 2.7.0
|
## 2.7.0
|
||||||
|
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Disallow reassignments of imports.
|
* Disallow reassignments of imports.
|
||||||
* **New Feature**
|
* **New Feature**
|
||||||
* `reactCompat` option to enable pre-v0.12 react components.
|
* `reactCompat` option to enable pre-v0.12 react components.
|
||||||
@ -643,7 +643,7 @@
|
|||||||
|
|
||||||
* **Bug Fix**
|
* **Bug Fix**
|
||||||
* Better handling of number literal property keys.
|
* Better handling of number literal property keys.
|
||||||
* Handle `NewExpression` paren insertion edegcases better.
|
* Handle `NewExpression` paren insertion edge cases better.
|
||||||
* **Internal**
|
* **Internal**
|
||||||
* Fix incorrect AST node `identifier("this")`.
|
* Fix incorrect AST node `identifier("this")`.
|
||||||
* Better `toIdentifier` method that handles reserved words.
|
* Better `toIdentifier` method that handles reserved words.
|
||||||
@ -662,7 +662,7 @@
|
|||||||
* **Polish**
|
* **Polish**
|
||||||
* Move `"use strict";` to inside module bodies instead of at the top of the file.
|
* Move `"use strict";` to inside module bodies instead of at the top of the file.
|
||||||
* Better handling of dynamic imports.
|
* Better handling of dynamic imports.
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Class inheritance now has a `function` or `null` type check.
|
* Class inheritance now has a `function` or `null` type check.
|
||||||
* Add `interopRequireWildcard` around wildcard imports and exports to handle non-object exports.
|
* Add `interopRequireWildcard` around wildcard imports and exports to handle non-object exports.
|
||||||
|
|
||||||
@ -850,7 +850,7 @@
|
|||||||
|
|
||||||
## 1.14.10
|
## 1.14.10
|
||||||
|
|
||||||
* Fix let scoping unneccesary override.
|
* Fix let scoping unnecessary override.
|
||||||
|
|
||||||
## 1.14.6
|
## 1.14.6
|
||||||
|
|
||||||
@ -973,7 +973,7 @@
|
|||||||
|
|
||||||
## 1.12.21
|
## 1.12.21
|
||||||
|
|
||||||
* Fix unneccesary let scoping replacement.
|
* Fix unnecessary let scoping replacement.
|
||||||
* Add `commonInterop` module formatter. Thanks [@Naddiseo](https://github.com/Naddiseo).
|
* Add `commonInterop` module formatter. Thanks [@Naddiseo](https://github.com/Naddiseo).
|
||||||
* Fix `return` outside of function body bug. Thanks [@brentburg](https://github.com/brentburg).
|
* Fix `return` outside of function body bug. Thanks [@brentburg](https://github.com/brentburg).
|
||||||
* Add more flexible option types.
|
* Add more flexible option types.
|
||||||
|
|||||||
10
.github/CHANGELOG-v4.md
vendored
10
.github/CHANGELOG-v4.md
vendored
@ -110,7 +110,7 @@
|
|||||||
* Throw an error on different `babel` and `babel-runtime` versions.
|
* Throw an error on different `babel` and `babel-runtime` versions.
|
||||||
* Replicate module environment for `babel-node` eval.
|
* Replicate module environment for `babel-node` eval.
|
||||||
* Clean up classes output.
|
* Clean up classes output.
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Make it illegal to use a rest parameter on a setter.
|
* Make it illegal to use a rest parameter on a setter.
|
||||||
|
|
||||||
## 4.6.6
|
## 4.6.6
|
||||||
@ -127,7 +127,7 @@
|
|||||||
## 4.6.4
|
## 4.6.4
|
||||||
|
|
||||||
* **Bug Fix**
|
* **Bug Fix**
|
||||||
* Fix `ForOfStatement` not proplery inheriting labels.
|
* Fix `ForOfStatement` not properly inheriting labels.
|
||||||
* When in closure mode in block scoping transformer, properly check for variable shadowing.
|
* When in closure mode in block scoping transformer, properly check for variable shadowing.
|
||||||
* **New Feature**
|
* **New Feature**
|
||||||
* New `utility.inlineEnvironmentVariables` and `utility.inlineExpression` transformers.
|
* New `utility.inlineEnvironmentVariables` and `utility.inlineExpression` transformers.
|
||||||
@ -150,10 +150,10 @@
|
|||||||
|
|
||||||
* **New Feature**
|
* **New Feature**
|
||||||
* Desugar sticky regexes to a new constructor expression so it can be handled by a polyfill.
|
* Desugar sticky regexes to a new constructor expression so it can be handled by a polyfill.
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* `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.
|
* `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**
|
* **Polish**
|
||||||
* Rest parameters that are only refered to via number properties on member expressions are desugared into a direct `arguments` reference. Thanks [@neVERberleRfellerER](https://github.com/neVERberleRfellerER)!
|
* 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.
|
* `$ babel` no longer exits on syntax errors.
|
||||||
* **Internal**
|
* **Internal**
|
||||||
* Upgrade `browserify`.
|
* Upgrade `browserify`.
|
||||||
|
|||||||
21
.github/CHANGELOG-v5.md
vendored
21
.github/CHANGELOG-v5.md
vendored
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
## 5.8.24
|
## 5.8.24
|
||||||
|
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Updated `optimisation.react.inlineElements` transformer to React 0.14 output. Thanks [@spicyj](https://github.com/spicyj)!
|
* Updated `optimisation.react.inlineElements` transformer to React 0.14 output. Thanks [@spicyj](https://github.com/spicyj)!
|
||||||
* **Polish**
|
* **Polish**
|
||||||
* Add support for evaluating more static nodes. Thanks [@hzoo](https://github.com/hzoo)!
|
* Add support for evaluating more static nodes. Thanks [@hzoo](https://github.com/hzoo)!
|
||||||
@ -262,8 +262,8 @@ Issues with publish process.
|
|||||||
* Register labels as bindings to fix undeclared variable checks.
|
* Register labels as bindings to fix undeclared variable checks.
|
||||||
* **Polish**
|
* **Polish**
|
||||||
* Remove unnecessary string binary expressions when transforming template literals.
|
* Remove unnecessary string binary expressions when transforming template literals.
|
||||||
* Support module live bindings in arbitary positions not in Program statement position.
|
* Support module live bindings in arbitrary positions not in Program statement position.
|
||||||
* Throw error when attemping to replace a `Program` root node with another node not of type `Program`.
|
* Throw error when attempting to replace a `Program` root node with another node not of type `Program`.
|
||||||
* Optimise rest parameters in spread element position and allocate rest array at the earliest common ancestor of all references.
|
* Optimise rest parameters in spread element position and allocate rest array at the earliest common ancestor of all references.
|
||||||
* Generate original number representation when value was not changed.
|
* Generate original number representation when value was not changed.
|
||||||
* Check for invalid binding identifiers when generating inferred method names.
|
* Check for invalid binding identifiers when generating inferred method names.
|
||||||
@ -451,7 +451,7 @@ Issues with publish process.
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Allow trailing param commas for methods when using the `es7.trailingCommas` transformer.
|
* Allow trailing param commas for methods when using the `es7.trailingCommas` transformer.
|
||||||
* **Bug Fix**
|
* **Bug Fix**
|
||||||
* Fix `es6.blockScoping` transformer not properly ignoring `break` in `SwitchCase`.
|
* 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 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 incorrect extensions reference causing weird issues when using the Babel CLI.
|
||||||
* Fix destructuring param reference replacements not inheriting from their original param.
|
* Fix destructuring param reference replacements not inheriting from their original param.
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Fix order that method decorators are ran in.
|
* Fix order that method decorators are ran in.
|
||||||
|
|
||||||
## 5.2.15
|
## 5.2.15
|
||||||
@ -543,12 +543,12 @@ Issues with publish process.
|
|||||||
* **Internal**
|
* **Internal**
|
||||||
* Removed native inheritance support from classes.
|
* Removed native inheritance support from classes.
|
||||||
* Added `replaceWithSourceString` path API.
|
* Added `replaceWithSourceString` path API.
|
||||||
* Split up `es3.propertyLiterals` and `es3.memberExpressionLiterals` transformers to `minfication.propertyLiterals` and `es3.memberExpressionLiterals`.
|
* Split up `es3.propertyLiterals` and `es3.memberExpressionLiterals` transformers to `minification.propertyLiterals` and `es3.memberExpressionLiterals`.
|
||||||
|
|
||||||
## 5.2.6
|
## 5.2.6
|
||||||
|
|
||||||
* **Internal**
|
* **Internal**
|
||||||
* Fix transformer aliases being accidently set as deprecated ones.
|
* Fix transformer aliases being accidentally set as deprecated ones.
|
||||||
* Expose `Pipeline` as `TransformerPipeline` instead.
|
* Expose `Pipeline` as `TransformerPipeline` instead.
|
||||||
|
|
||||||
## 5.2.5
|
## 5.2.5
|
||||||
@ -616,7 +616,7 @@ Issues with publish process.
|
|||||||
* Fix `externalHelpers` option being incorrectly listed as type `string`.
|
* Fix `externalHelpers` option being incorrectly listed as type `string`.
|
||||||
* **Internal**
|
* **Internal**
|
||||||
* Upgrade `core-js` to `0.9.0`.
|
* Upgrade `core-js` to `0.9.0`.
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Fix object decorators not using the `initializer` pattern.
|
* Fix object decorators not using the `initializer` pattern.
|
||||||
* Remove property initializer descriptor reflection.
|
* Remove property initializer descriptor reflection.
|
||||||
|
|
||||||
@ -824,10 +824,10 @@ Issues with publish process.
|
|||||||
* Save register cache on tick instead of `SIGINT`.
|
* Save register cache on tick instead of `SIGINT`.
|
||||||
* Enable strict mode on babel-node eval flag.
|
* Enable strict mode on babel-node eval flag.
|
||||||
* **Bug Fixes**
|
* **Bug Fixes**
|
||||||
* Add support for live bindings. This change also increases the reliablity of export specifier renaming.
|
* Add support for live bindings. This change also increases the reliability of export specifier renaming.
|
||||||
* Add support for super update and non equals assignment expressions.
|
* Add support for super update and non equals assignment expressions.
|
||||||
* Rename shadow constructor binding in classes.
|
* Rename shadow constructor binding in classes.
|
||||||
* Seed next iteration bindings with previous fresh bindings when reassinging loop block scoped variables.
|
* Seed next iteration bindings with previous fresh bindings when reassigning loop block scoped variables.
|
||||||
* Fix new expression spread referencing the wrong constructor.
|
* Fix new expression spread referencing the wrong constructor.
|
||||||
* Call `resolveModuleSource` on dynamic imports.
|
* Call `resolveModuleSource` on dynamic imports.
|
||||||
* Added `param` to list of duplicate declaration kinds.
|
* Added `param` to list of duplicate declaration kinds.
|
||||||
@ -836,4 +836,3 @@ Issues with publish process.
|
|||||||
* ES7 Abstract References have been removed.
|
* ES7 Abstract References have been removed.
|
||||||
* Experimental option has been removed in favor of a stage option.
|
* Experimental option has been removed in favor of a stage option.
|
||||||
* Rename `returnUsedHelpers` to `metadataUsedHelpers`.
|
* Rename `returnUsedHelpers` to `metadataUsedHelpers`.
|
||||||
|
|
||||||
36
.github/CHANGELOG-v6.md
vendored
36
.github/CHANGELOG-v6.md
vendored
@ -19,10 +19,10 @@
|
|||||||
|
|
||||||
## 6.26.0 (2017-08-16)
|
## 6.26.0 (2017-08-16)
|
||||||
|
|
||||||
> Backports for some folks (also other's when we accidently merged PRs from both 6.x/master)
|
> 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.
|
> 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`
|
* `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))
|
* [#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)
|
## v6.17.0 (2016-10-01)
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-preset-stage-2`, `babel-preset-stage-3`
|
* `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))
|
* [#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
|
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
|
```js
|
||||||
// async generator syntax
|
// async generator syntax
|
||||||
@ -1569,7 +1569,7 @@ First PR!
|
|||||||
|
|
||||||
Babel 6.16: Happy 2nd Birthday 🎂!
|
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`, ...
|
* `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))
|
* [#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))
|
||||||
@ -1767,7 +1767,7 @@ typeof Symbol.prototype === 'object'
|
|||||||
* [#3456](https://github.com/babel/babel/pull/3456) Use the real sourcemap API and handle input sourcemaps - Fixes [#7259](https://github.com/babel/babel/issues/7259). ([@loganfsmyth](https://github.com/loganfsmyth))
|
* [#3456](https://github.com/babel/babel/pull/3456) Use the real sourcemap API and handle input sourcemaps - Fixes [#7259](https://github.com/babel/babel/issues/7259). ([@loganfsmyth](https://github.com/loganfsmyth))
|
||||||
* [#4507](https://github.com/babel/babel/pull/4507) Only set options in cli if different from default. ([@danez](https://github.com/danez))
|
* [#4507](https://github.com/babel/babel/pull/4507) Only set options in cli if different from default. ([@danez](https://github.com/danez))
|
||||||
|
|
||||||
Fix an issue with defaults not being overidden. This was causing options like `comments: false` not to work correctly.
|
Fix an issue with defaults not being overridden. This was causing options like `comments: false` not to work correctly.
|
||||||
|
|
||||||
* [#4508](https://github.com/babel/babel/pull/4508) Support custom ports for V8 --inspect. ([@andykant](https://github.com/andykant))
|
* [#4508](https://github.com/babel/babel/pull/4508) Support custom ports for V8 --inspect. ([@andykant](https://github.com/andykant))
|
||||||
* [#4562](https://github.com/babel/babel/pull/4562) Fixes [#2299](https://github.com/babel/babel/issues/2299): Prevent REPL from printing implicit 'use strict'. ([@hzoo](https://github.com/hzoo))
|
* [#4562](https://github.com/babel/babel/pull/4562) Fixes [#2299](https://github.com/babel/babel/issues/2299): Prevent REPL from printing implicit 'use strict'. ([@hzoo](https://github.com/hzoo))
|
||||||
@ -2036,7 +2036,7 @@ It's also a lot folk's first PR (or first code PR)!
|
|||||||
* `babel-generator`, `babel-types`
|
* `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))
|
* [#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`
|
* `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))
|
* [#3518](https://github.com/babel/babel/pull/3518) Throw error for multiple exports default. ([@kaicataldo](https://github.com/kaicataldo))
|
||||||
|
|
||||||
@ -2084,7 +2084,7 @@ Also added more tests and will update Babel to use the new preset options after
|
|||||||
|
|
||||||
## v6.13.1 (2016-08-04)
|
## v6.13.1 (2016-08-04)
|
||||||
|
|
||||||
We had a regression in our new babel-preset-es2015@6.13.0 that made it unexpectedly backward-incompatible. This release introduces a new alternative plugin-options approach that is uglier but supports backward-compatiblity. Ideally new plugins would use the new `module.exports = function(babel, options){ }` approach and simple skip supporting `babel-core@<6.13.x`.
|
We had a regression in our new babel-preset-es2015@6.13.0 that made it unexpectedly backward-incompatible. This release introduces a new alternative plugin-options approach that is uglier but supports backward-compatibility. Ideally new plugins would use the new `module.exports = function(babel, options){ }` approach and simple skip supporting `babel-core@<6.13.x`.
|
||||||
|
|
||||||
#### Bug Fix
|
#### Bug Fix
|
||||||
* `babel-core`, `babel-preset-es2015`
|
* `babel-core`, `babel-preset-es2015`
|
||||||
@ -2092,7 +2092,7 @@ We had a regression in our new babel-preset-es2015@6.13.0 that made it unexpecte
|
|||||||
|
|
||||||
## v6.13.0 (2016-08-04)
|
## v6.13.0 (2016-08-04)
|
||||||
|
|
||||||
> Since the last release we've created https://github.com/babel/notes to track discussions on our slack and high level features/changes that could be added - definetely check it out if you're interested in Babel's development!
|
> Since the last release we've created https://github.com/babel/notes to track discussions on our slack and high level features/changes that could be added - definitely check it out if you're interested in Babel's development!
|
||||||
|
|
||||||
Some small but very important additions in this release:
|
Some small but very important additions in this release:
|
||||||
|
|
||||||
@ -2332,7 +2332,7 @@ Length: The number of characters in the output code
|
|||||||
* `babel-plugin-transform-react-jsx-self`, `babel-preset-react`
|
* `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))
|
* [#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`
|
* `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))
|
* [#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.
|
- Reverting the class properties semicolon parser error.
|
||||||
- Fix regression with plugin ordering with `babel-register`.
|
- Fix regression with plugin ordering with `babel-register`.
|
||||||
|
|
||||||
#### Spec Compliancy
|
#### Spec Compliance
|
||||||
* `babel-plugin-transform-class-properties`, `babylon`
|
* `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))
|
* [#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-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
|
* `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)).
|
* `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**
|
* **Internal**
|
||||||
@ -3817,7 +3817,7 @@ Thanks to @samwgoldman for all the new flow support!
|
|||||||
* **New Feature**
|
* **New Feature**
|
||||||
* Add support for `function.sent`.
|
* Add support for `function.sent`.
|
||||||
* **Internal**
|
* **Internal**
|
||||||
* Bump `invariant` depenency version.
|
* Bump `invariant` dependency version.
|
||||||
* **Polish**
|
* **Polish**
|
||||||
* Infer filename from the base directory when resolving plugins and presets.
|
* Infer filename from the base directory when resolving plugins and presets.
|
||||||
* Allow JSX pragma to be specified in line comments.
|
* Allow JSX pragma to be specified in line comments.
|
||||||
@ -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.
|
* 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 `buildExternalHelpers` script ignoring non-underscored helpers.
|
||||||
* Fix exported classes with static class properties.
|
* Fix exported classes with static class properties.
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Add support for computed mutators in `babel-plugin-transform-es2015-computed-properties`.
|
* Add support for computed mutators in `babel-plugin-transform-es2015-computed-properties`.
|
||||||
* **Polish**
|
* **Polish**
|
||||||
* Make interop for plugins with the `__esModule` work for all plugins no matter how they're imported/specified.
|
* Make interop for plugins with the `__esModule` work for all plugins no matter how they're imported/specified.
|
||||||
@ -3887,7 +3887,7 @@ Thanks to @samwgoldman for all the new flow support!
|
|||||||
## 6.1.2
|
## 6.1.2
|
||||||
|
|
||||||
* **Bug Fix**
|
* **Bug Fix**
|
||||||
* Fix bug where the parser wouldn't allow typed annotated default parametesr in arrow functions.
|
* Fix bug where the parser wouldn't allow typed annotated default parameters in arrow functions.
|
||||||
* Add existence check to `NodePath#has` to ensure safeness when making comparisons.
|
* Add existence check to `NodePath#has` to ensure safeness when making comparisons.
|
||||||
* Protect against replacing a class expression with a name inferred version that would
|
* Protect against replacing a class expression with a name inferred version that would
|
||||||
result in it never being transformed.
|
result in it never being transformed.
|
||||||
@ -3904,7 +3904,7 @@ Thanks to @samwgoldman for all the new flow support!
|
|||||||
* **Polish**
|
* **Polish**
|
||||||
* Add npm 3 check to `babel-doctor`.
|
* Add npm 3 check to `babel-doctor`.
|
||||||
* Autoclear the `babel/register` cache when it gets too big to be serialised.
|
* Autoclear the `babel/register` cache when it gets too big to be serialised.
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Add support for flow existential type parameters.
|
* Add support for flow existential type parameters.
|
||||||
|
|
||||||
## 6.1.1
|
## 6.1.1
|
||||||
@ -3969,14 +3969,14 @@ Thanks to @samwgoldman for all the new flow support!
|
|||||||
|
|
||||||
## 6.0.14
|
## 6.0.14
|
||||||
|
|
||||||
* **Spec Compliancy**
|
* **Spec Compliance**
|
||||||
* Update exponentiation operator precedence.
|
* Update exponentiation operator precedence.
|
||||||
* Fix parser bug where arrow functions have a higher precedence than they should.
|
* Fix parser bug where arrow functions have a higher precedence than they should.
|
||||||
* **Bug Fix**
|
* **Bug Fix**
|
||||||
* Fix SystemJS module formatter exporting function parameters.
|
* Fix SystemJS module formatter exporting function parameters.
|
||||||
* Ensure that invalid identifier JSX attribute keys are quoted when transforming to calls.
|
* Ensure that invalid identifier JSX attribute keys are quoted when transforming to calls.
|
||||||
* Fix ES3 property literal plugin.
|
* Fix ES3 property literal plugin.
|
||||||
* Fix parameters after defaults in arrow functions refering to the wrong `arguments`.
|
* Fix parameters after defaults in arrow functions referring to the wrong `arguments`.
|
||||||
|
|
||||||
## 6.0.13
|
## 6.0.13
|
||||||
|
|
||||||
|
|||||||
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -2,6 +2,8 @@
|
|||||||
Before making a PR, please read our contributing guidelines
|
Before making a PR, please read our contributing guidelines
|
||||||
https://github.com/babel/babel/blob/master/CONTRIBUTING.md
|
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)
|
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
|
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 👍) -->
|
| 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? |
|
| Patch: Bug Fix? |
|
||||||
| Major: Breaking Change? |
|
| Major: Breaking Change? |
|
||||||
| Minor: New Feature? |
|
| Minor: New Feature? |
|
||||||
|
|||||||
16
.github/actions/create-release-tag/Dockerfile
vendored
16
.github/actions/create-release-tag/Dockerfile
vendored
@ -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"]
|
|
||||||
14
.github/actions/create-release-tag/entrypoint.sh
vendored
14
.github/actions/create-release-tag/entrypoint.sh
vendored
@ -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"
|
|
||||||
16
.github/actions/filter-commit-message/Dockerfile
vendored
16
.github/actions/filter-commit-message/Dockerfile
vendored
@ -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"]
|
|
||||||
@ -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
|
|
||||||
@ -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"]
|
|
||||||
@ -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 :)"
|
|
||||||
1415
.github/actions/trigger-github-release/package-lock.json
generated
vendored
1415
.github/actions/trigger-github-release/package-lock.json
generated
vendored
File diff suppressed because it is too large
Load Diff
@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -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);
|
|
||||||
});
|
|
||||||
@ -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
2
.github/lock.yml
vendored
@ -4,7 +4,7 @@
|
|||||||
daysUntilLock: 91
|
daysUntilLock: 91
|
||||||
# Comment to post before locking. Set to `false` to disable
|
# Comment to post before locking. Set to `false` to disable
|
||||||
lockComment: false
|
lockComment: false
|
||||||
only: issues
|
# The label to be applied when an issue is locked
|
||||||
lockLabel: 'outdated'
|
lockLabel: 'outdated'
|
||||||
|
|
||||||
# Issues or pull requests with these labels will not be locked
|
# Issues or pull requests with these labels will not be locked
|
||||||
|
|||||||
53
.github/main.workflow
vendored
53
.github/main.workflow
vendored
@ -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
81
.github/workflows/issue-triage.yml
vendored
Normal 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
53
.github/workflows/release.yml
vendored
Normal 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
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@ -35,7 +35,7 @@ package-lock.json
|
|||||||
!/packages/babel-runtime-corejs2/helpers/temporalRef.js
|
!/packages/babel-runtime-corejs2/helpers/temporalRef.js
|
||||||
/packages/babel-runtime-corejs2/helpers/esm/*.js
|
/packages/babel-runtime-corejs2/helpers/esm/*.js
|
||||||
!/packages/babel-runtime-corejs2/helpers/esm/toArray.js
|
!/packages/babel-runtime-corejs2/helpers/esm/toArray.js
|
||||||
!/packages/babel-runtime-corejs2/helpers/esm/iterableToArray.js
|
/packages/babel-runtime-corejs2/helpers/esm/iterableToArray.js
|
||||||
!/packages/babel-runtime-corejs2/helpers/esm/temporalRef.js
|
!/packages/babel-runtime-corejs2/helpers/esm/temporalRef.js
|
||||||
/packages/babel-runtime-corejs2/core-js/**/*.js
|
/packages/babel-runtime-corejs2/core-js/**/*.js
|
||||||
!/packages/babel-runtime-corejs2/core-js/map.js
|
!/packages/babel-runtime-corejs2/core-js/map.js
|
||||||
|
|||||||
42
.travis.yml
42
.travis.yml
@ -3,41 +3,43 @@ git:
|
|||||||
language: node_js
|
language: node_js
|
||||||
cache:
|
cache:
|
||||||
yarn: true
|
yarn: true
|
||||||
node_js:
|
|
||||||
# We test the latest version on circleci
|
os: linux
|
||||||
- '11'
|
|
||||||
- '10'
|
|
||||||
- '8'
|
|
||||||
- '6'
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- PATH=$HOME/.yarn/bin:$PATH
|
- PATH=$HOME/.yarn/bin:$PATH
|
||||||
- JOB=test
|
- JOB=test
|
||||||
|
|
||||||
before_install:
|
install: skip
|
||||||
- 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
|
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- if [ "$JOB" = "babel-parser-flow-tests" ]; then make bootstrap-flow; fi
|
- curl -o- -L https://yarnpkg.com/install.sh | bash
|
||||||
- if [ "$JOB" = "babel-parser-test262-tests" ]; then make bootstrap-test262; fi
|
- if [ "$TRAVIS_OS_NAME" = "windows" ]; then choco install make; fi
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- if [ "$JOB" = "test" ]; then make test-ci; fi
|
- if [ "$JOB" = "test" ]; then make -j test-ci; fi
|
||||||
- if [ "$JOB" = "lint" ]; then make lint && make flow; fi
|
- if [ "$JOB" = "lint" ]; then make -j code-quality-ci; fi
|
||||||
- if [ "$JOB" = "babel-parser-flow-tests" ]; then make test-flow-ci; fi
|
- if [ "$JOB" = "babel-parser-flow-tests" ]; then make -j test-flow-ci; fi
|
||||||
- if [ "$JOB" = "babel-parser-test262-tests" ]; then make test-test262-ci; fi
|
- if [ "$JOB" = "babel-parser-test262-tests" ]; then make -j test-test262-ci; fi
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
include:
|
include:
|
||||||
- node_js: "node"
|
- node_js: "node"
|
||||||
env: JOB=lint
|
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"
|
- node_js: "node"
|
||||||
env: JOB=babel-parser-flow-tests
|
env: JOB=babel-parser-flow-tests
|
||||||
- node_js: "node"
|
- node_js: "node"
|
||||||
|
|||||||
529
CHANGELOG.md
529
CHANGELOG.md
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> **Tags:**
|
> **Tags:**
|
||||||
> - :boom: [Breaking Change]
|
> - :boom: [Breaking Change]
|
||||||
> - :eyeglasses: [Spec Compliancy]
|
> - :eyeglasses: [Spec Compliance]
|
||||||
> - :rocket: [New Feature]
|
> - :rocket: [New Feature]
|
||||||
> - :bug: [Bug Fix]
|
> - :bug: [Bug Fix]
|
||||||
> - :memo: [Documentation]
|
> - :memo: [Documentation]
|
||||||
@ -17,6 +17,487 @@ See [Babylon's CHANGELOG](packages/babylon/CHANGELOG.md) for the Babylon pre-7.0
|
|||||||
|
|
||||||
<!-- DO NOT CHANGE THESE COMMENTS - See .github/actions/trigger-github-release/update-changelog.js -->
|
<!-- DO NOT CHANGE THESE COMMENTS - See .github/actions/trigger-github-release/update-changelog.js -->
|
||||||
<!-- insert-new-changelog-here -->
|
<!-- insert-new-changelog-here -->
|
||||||
|
## 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(babel‑helpers/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
|
||||||
|
* `babel-helpers`, `babel-plugin-proposal-object-rest-spread`, `babel-preset-env`
|
||||||
|
* [#10180](https://github.com/babel/babel/pull/10180) [_objectSpread2] Do not use hoisted var from prev iteration ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
|
||||||
|
## v7.5.2 (2019-07-08)
|
||||||
|
|
||||||
|
#### :bug: Bug Fix
|
||||||
|
* `babel-plugin-transform-typescript`
|
||||||
|
* [#10174](https://github.com/babel/babel/pull/10174) Do not trust Scope when removing TypeScript types ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* `babel-helpers`, `babel-plugin-proposal-object-rest-spread`, `babel-preset-env`
|
||||||
|
* [#10171](https://github.com/babel/babel/pull/10171) Don't rely on getOwnPropertyDescriptors in objectSpread2 ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* `babel-plugin-proposal-export-default-from`, `babel-plugin-proposal-export-namespace-from`
|
||||||
|
* [#10172](https://github.com/babel/babel/pull/10172) fix: register injected importDeclaration ([@JLHwung](https://github.com/JLHwung))
|
||||||
|
|
||||||
|
## v7.5.1 (2019-07-06)
|
||||||
|
|
||||||
|
#### :bug: Bug Fix
|
||||||
|
* `babel-helpers`, `babel-plugin-proposal-object-rest-spread`
|
||||||
|
* [#10170](https://github.com/babel/babel/pull/10170) Fix objectSpread2 backward compatibility ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* `babel-plugin-transform-typescript`
|
||||||
|
* [#10167](https://github.com/babel/babel/pull/10167) Retain typescript export-from-source ([@Wolvereness](https://github.com/Wolvereness))
|
||||||
|
|
||||||
|
## v7.5.0 (2019-07-04)
|
||||||
|
|
||||||
|
#### :eyeglasses: Spec Compliance
|
||||||
|
* `babel-parser`
|
||||||
|
* [#10099](https://github.com/babel/babel/pull/10099) Disallow "let" as name at lexical bindings ([@g-plane](https://github.com/g-plane))
|
||||||
|
|
||||||
|
#### :rocket: New Feature
|
||||||
|
* `babel-parser`
|
||||||
|
* [#10091](https://github.com/babel/babel/pull/10091) BigInt type for Flow ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* [#9450](https://github.com/babel/babel/pull/9450) Implement f# pipeline in parser ([@mAAdhaTTah](https://github.com/mAAdhaTTah))
|
||||||
|
* [#9912](https://github.com/babel/babel/pull/9912) [legacy decorators] Allow decorating generator methods ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* [#9864](https://github.com/babel/babel/pull/9864) [@babel/parser] Add "allowUndeclaredExports" option ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* `babel-plugin-proposal-dynamic-import`, `babel-preset-env-standalone`, `babel-preset-env`
|
||||||
|
* [#10109](https://github.com/babel/babel/pull/10109) Add @babel/plugin-proposal-dynamic-import to @babel/preset-env ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* `babel-plugin-proposal-dynamic-import`, `babel-plugin-transform-modules-amd`, `babel-plugin-transform-modules-commonjs`, `babel-plugin-transform-modules-systemjs`
|
||||||
|
* [#9552](https://github.com/babel/babel/pull/9552) Create @babel/plugin-proposal-dynamic-import ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* `babel-plugin-proposal-pipeline-operator`, `babel-plugin-syntax-pipeline-operator`
|
||||||
|
* [#9984](https://github.com/babel/babel/pull/9984) Transform for F# Pipeline ([@thiagoarrais](https://github.com/thiagoarrais))
|
||||||
|
* `babel-plugin-transform-typescript`, `babel-types`
|
||||||
|
* [#9785](https://github.com/babel/babel/pull/9785) Implement TypeScript namespace support ([@Wolvereness](https://github.com/Wolvereness))
|
||||||
|
|
||||||
|
#### :bug: Bug Fix
|
||||||
|
* `babel-plugin-proposal-do-expressions`, `babel-traverse`
|
||||||
|
* [#10072](https://github.com/babel/babel/pull/10072) fix await and yield for do expression ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* `babel-helpers`, `babel-plugin-transform-react-constant-elements`
|
||||||
|
* [#10155](https://github.com/babel/babel/pull/10155) Added es3 backward compatibility for react helper code ([@sormy](https://github.com/sormy))
|
||||||
|
* `babel-preset-env`
|
||||||
|
* [#10127](https://github.com/babel/babel/pull/10127) Bump compat-table and updating preset-env mappings ([@existentialism](https://github.com/existentialism))
|
||||||
|
* [#8897](https://github.com/babel/babel/pull/8897) Allow `defaults` query in preset-env ([@existentialism](https://github.com/existentialism))
|
||||||
|
* `babel-parser`
|
||||||
|
* [#10132](https://github.com/babel/babel/pull/10132) fix import typeof in declare module ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* [#10084](https://github.com/babel/babel/pull/10084) flow - allow type parameter defaults in function declarations ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* `babel-types`
|
||||||
|
* [#10126](https://github.com/babel/babel/pull/10126) fix exportKind declaration in babel-types ([@zxbodya](https://github.com/zxbodya))
|
||||||
|
* `babel-node`
|
||||||
|
* [#9951](https://github.com/babel/babel/pull/9951) Prevents exception on PnP ([@arcanis](https://github.com/arcanis))
|
||||||
|
* `babel-generator`
|
||||||
|
* [#10041](https://github.com/babel/babel/pull/10041) Fix printer for explicitly inexact Flow types ([@mrtnzlml](https://github.com/mrtnzlml))
|
||||||
|
* `babel-plugin-transform-typescript`
|
||||||
|
* [#10034](https://github.com/babel/babel/pull/10034) Use scope for typescript export removals ([@Wolvereness](https://github.com/Wolvereness))
|
||||||
|
* [#10019](https://github.com/babel/babel/pull/10019) fix(typescript): erase default export if exporting a TS type ([@airato](https://github.com/airato))
|
||||||
|
* `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-class-properties`, `babel-traverse`
|
||||||
|
* [#10029](https://github.com/babel/babel/pull/10029) Fixed computed keys for class expression ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* `babel-helpers`, `babel-plugin-proposal-object-rest-spread`, `babel-preset-env`
|
||||||
|
* [#9384](https://github.com/babel/babel/pull/9384) Retry to fix object spread helper compatibility ([@saschanaz](https://github.com/saschanaz))
|
||||||
|
* `babel-plugin-transform-destructuring`
|
||||||
|
* [#10013](https://github.com/babel/babel/pull/10013) fix destructuring rest with template literal ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* `babel-helper-create-class-features-plugin`, `babel-plugin-transform-typescript`
|
||||||
|
* [#9610](https://github.com/babel/babel/pull/9610) Use `injectInitialization` to generate ts parameter properties ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
|
||||||
|
#### :nail_care: Polish
|
||||||
|
* `babel-core`
|
||||||
|
* [#10157](https://github.com/babel/babel/pull/10157) Fix incorrect usage of $o instead of %o in debug ([@ChlorideCull](https://github.com/ChlorideCull))
|
||||||
|
* `babel-helpers`
|
||||||
|
* [#10117](https://github.com/babel/babel/pull/10117) Simplify the helpers for classPrivateField{Get,Set} ([@arv](https://github.com/arv))
|
||||||
|
* `babel-plugin-transform-typescript`
|
||||||
|
* [#10047](https://github.com/babel/babel/pull/10047) Refactor isImportTypeOnly helper function ([@Andarist](https://github.com/Andarist))
|
||||||
|
|
||||||
|
#### :memo: Documentation
|
||||||
|
* `babel-plugin-proposal-partial-application`, `babel-plugin-syntax-partial-application`
|
||||||
|
* [#10103](https://github.com/babel/babel/pull/10103) docs: update readmes ([@xtuc](https://github.com/xtuc))
|
||||||
|
|
||||||
|
## v7.4.5 (2019-05-21)
|
||||||
|
|
||||||
|
#### :bug: Bug Fix
|
||||||
|
* `babel-parser`
|
||||||
|
* [#9998](https://github.com/babel/babel/pull/9998) Fix location for optional params in arrow functions ([@danez](https://github.com/danez))
|
||||||
|
* [#9982](https://github.com/babel/babel/pull/9982) Avoid unnecessary work during lookahead ([@danez](https://github.com/danez))
|
||||||
|
* [#9922](https://github.com/babel/babel/pull/9922) fix: allow shebang directive ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* `babel-preset-env`
|
||||||
|
* [#10002](https://github.com/babel/babel/pull/10002) Update preset-env dependencies and fix fixtures ([@danez](https://github.com/danez))
|
||||||
|
* [#9978](https://github.com/babel/babel/pull/9978) Fix mobile browsers support in preset-env ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* [#9902](https://github.com/babel/babel/pull/9902) Fix destructuring assignments being transpiled for edge 15 ([@eps1lon](https://github.com/eps1lon))
|
||||||
|
* `babel-plugin-transform-typescript`
|
||||||
|
* [#9944](https://github.com/babel/babel/pull/9944) fix(typescript): erase type exports ([@airato](https://github.com/airato))
|
||||||
|
|
||||||
|
#### :nail_care: Polish
|
||||||
|
* `babel-parser`
|
||||||
|
* [#9995](https://github.com/babel/babel/pull/9995) Do not use lookahead when parsing construct signature declarations in TS ([@danez](https://github.com/danez))
|
||||||
|
* [#9989](https://github.com/babel/babel/pull/9989) Only compute Position if not already in state ([@danez](https://github.com/danez))
|
||||||
|
* [#9988](https://github.com/babel/babel/pull/9988) Do not use lookahead when parsing jsx expression containers ([@danez](https://github.com/danez))
|
||||||
|
* [#9987](https://github.com/babel/babel/pull/9987) Do not use lookahead when parsing imports in declare module in flow ([@danez](https://github.com/danez))
|
||||||
|
* [#9985](https://github.com/babel/babel/pull/9985) Do not use lookahead when parsing declare module or declare module.exports in flow ([@danez](https://github.com/danez))
|
||||||
|
* [#9983](https://github.com/babel/babel/pull/9983) Do not use lookahead when parsing dynamic import or import.meta ([@danez](https://github.com/danez))
|
||||||
|
* [#9979](https://github.com/babel/babel/pull/9979) Remove guardedHandlers from ASTs ([@danez](https://github.com/danez))
|
||||||
|
* `babel-preset-env`
|
||||||
|
* [#9992](https://github.com/babel/babel/pull/9992) use console.warn for warning ([@schu34](https://github.com/schu34))
|
||||||
|
* `babel-core`
|
||||||
|
* [#9945](https://github.com/babel/babel/pull/9945) Fixed null error in plugin opts and added a test for it ([@divbhasin](https://github.com/divbhasin))
|
||||||
|
* `babel-core`, `babel-traverse`
|
||||||
|
* [#9909](https://github.com/babel/babel/pull/9909) Add missing space in error messages ([@pnavarrc](https://github.com/pnavarrc))
|
||||||
|
|
||||||
|
#### :house: Internal
|
||||||
|
* `babel-node`
|
||||||
|
* [#9914](https://github.com/babel/babel/pull/9914) [babel-node] Do not hardcode node flags ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
|
||||||
|
## v7.4.4 (2019-04-26)
|
||||||
|
|
||||||
|
#### :bug: Bug Fix
|
||||||
|
* `babel-plugin-transform-flow-comments`
|
||||||
|
* [#9897](https://github.com/babel/babel/pull/9897) fix flow-comments - class type paramters and implements ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* [#9893](https://github.com/babel/babel/pull/9893) fix flow-comment - object destructuring ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* `babel-parser`
|
||||||
|
* [#9766](https://github.com/babel/babel/pull/9766) Add TS support to @babel/parser's Scope ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* [#9865](https://github.com/babel/babel/pull/9865) Always register global bindings as exportable ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
* [#9887](https://github.com/babel/babel/pull/9887) Fix TypeScript readonly error location ([@existentialism](https://github.com/existentialism))
|
||||||
|
* [#9869](https://github.com/babel/babel/pull/9869) ! remove constant context assertions ([@tanhauhau](https://github.com/tanhauhau))
|
||||||
|
* [#9890](https://github.com/babel/babel/pull/9890) Fix parsing typescript bodiless methods with the estree plugin also enabled ([@devongovett](https://github.com/devongovett))
|
||||||
|
* `babel-traverse`
|
||||||
|
* [#9870](https://github.com/babel/babel/pull/9870) Fix flow types in traverse/path/family and enable flow ([@danez](https://github.com/danez))
|
||||||
|
* `babel-plugin-proposal-class-properties`, `babel-plugin-transform-modules-commonjs`, `babel-types`
|
||||||
|
* [#9861](https://github.com/babel/babel/pull/9861) Fix: PrivateName Identifier should not be isReferenced. ([@coreyfarrell](https://github.com/coreyfarrell))
|
||||||
|
* `babel-types`
|
||||||
|
* [#9832](https://github.com/babel/babel/pull/9832) Fix typo in cloneNode. ([@evandervalk](https://github.com/evandervalk))
|
||||||
|
|
||||||
|
|
||||||
## v7.4.3 (2019-04-02)
|
## v7.4.3 (2019-04-02)
|
||||||
@ -216,7 +697,7 @@ See [Babylon's CHANGELOG](packages/babylon/CHANGELOG.md) for the Babylon pre-7.0
|
|||||||
|
|
||||||
## v7.3.3 (2019-02-15)
|
## v7.3.3 (2019-02-15)
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-generator`
|
* `babel-generator`
|
||||||
* [#9501](https://github.com/babel/babel/pull/9501) Correctly output escapes in directives ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
* [#9501](https://github.com/babel/babel/pull/9501) Correctly output escapes in directives ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
|
||||||
@ -238,11 +719,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))
|
* [#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)
|
## 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!
|
Thanks @gverni, @naffiq, @spondbob and @dstaley for their first PRs!
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-parser`
|
* `babel-parser`
|
||||||
* [#9403](https://github.com/babel/babel/pull/9403) Fix line continuation with Unicode line terminators. ([@danez](https://github.com/danez))
|
* [#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))
|
* [#9400](https://github.com/babel/babel/pull/9400) Make yield a contextual keyword. ([@danez](https://github.com/danez))
|
||||||
@ -290,7 +771,7 @@ This release fixes some regressions introduced in v7.3.0
|
|||||||
|
|
||||||
Thanks to @jamesgeorge007 and @armano2 for their first PR!
|
Thanks to @jamesgeorge007 and @armano2 for their first PR!
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-parser`
|
* `babel-parser`
|
||||||
* [#9314](https://github.com/babel/babel/pull/9314) Disallow async functions as loop body. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
* [#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))
|
* [#9315](https://github.com/babel/babel/pull/9315) Parse class heritage as strict mode code. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
@ -382,7 +863,7 @@ Half of the commits in this release are made by first time contributors! Thanks
|
|||||||
|
|
||||||
## v7.2.2 (2018-12-15)
|
## v7.2.2 (2018-12-15)
|
||||||
|
|
||||||
Mostrly bug fixes and internal changes.
|
Mostly bug fixes and internal changes.
|
||||||
Thanks to @paleite, @saschanaz and @joeldenning for their first PRs!
|
Thanks to @paleite, @saschanaz and @joeldenning for their first PRs!
|
||||||
|
|
||||||
#### :bug: Bug Fix
|
#### :bug: Bug Fix
|
||||||
@ -511,7 +992,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)
|
## v7.1.5 (2018-11-06)
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-parser`, `babylon`
|
* `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))
|
* [#7727](https://github.com/babel/babel/pull/7727) Fix await in function name and parameters. ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo))
|
||||||
|
|
||||||
@ -974,7 +1455,7 @@ Fixed a peerDep issue
|
|||||||
|
|
||||||
Mostly bug fixes and some decorator updates
|
Mostly bug fixes and some decorator updates
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-plugin-proposal-unicode-property-regex`
|
* `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))
|
* [#8127](https://github.com/babel/babel/pull/8127) Update plugin-proposal-unicode-property-regex for Unicode v11. ([@mathiasbynens](https://github.com/mathiasbynens))
|
||||||
* `babel-parser`
|
* `babel-parser`
|
||||||
@ -1074,7 +1555,7 @@ Mostly bugfix release for a regression in decorators, and a quick fix for some n
|
|||||||
- Fix IE10 class regression
|
- Fix IE10 class regression
|
||||||
- Various fixes, many TS fixes
|
- 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`
|
* `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))
|
* [#7985](https://github.com/babel/babel/pull/7985) Subsume json. ([@jridgewell](https://github.com/jridgewell))
|
||||||
|
|
||||||
@ -1264,7 +1745,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`
|
* `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))
|
* [#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`
|
* `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))
|
* [#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`
|
* `babel-core`, `babel-generator`, `babel-plugin-proposal-decorators`, `babel-types`, `babylon`
|
||||||
@ -1352,7 +1833,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).
|
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`
|
* `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))
|
* [#7604](https://github.com/babel/babel/pull/7604) Logical Assignment: ensure computed key isn't recomputed. ([@jridgewell](https://github.com/jridgewell))
|
||||||
|
|
||||||
@ -1451,7 +1932,7 @@ We'll need to update tooling for this ^. Also published `gulp-babel@8.0.0-beta.2
|
|||||||
* `babel-register`
|
* `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))
|
* [#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`
|
* `babylon`
|
||||||
* [#7503](https://github.com/babel/babel/pull/7503) Update test262 test script and a few keyword escape fixes. ([@existentialism](https://github.com/existentialism))
|
* [#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))
|
* [#7498](https://github.com/babel/babel/pull/7498) Disallow setters to have RestElement. ([@danez](https://github.com/danez))
|
||||||
@ -1599,7 +2080,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)
|
## v7.0.0-beta.39 (2018-01-30)
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-plugin-proposal-optional-chaining`
|
* `babel-plugin-proposal-optional-chaining`
|
||||||
* [#6345](https://github.com/babel/babel/pull/6345) Remove old optional chain features. ([@jridgewell](https://github.com/jridgewell))
|
* [#6345](https://github.com/babel/babel/pull/6345) Remove old optional chain features. ([@jridgewell](https://github.com/jridgewell))
|
||||||
|
|
||||||
@ -1812,7 +2293,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`
|
Various bug fixes, first version of Babel to use the MIT version of `regenerator`
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babylon`
|
* `babylon`
|
||||||
* [#6986](https://github.com/babel/babel/pull/6986) Fix destructuring assignment spec violation. ([@ksashikumar](https://github.com/ksashikumar))
|
* [#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`
|
* `babel-helper-replace-supers`, `babel-helpers`, `babel-plugin-proposal-class-properties`, `babel-plugin-transform-classes`, `babel-plugin-transform-parameters`
|
||||||
@ -1865,7 +2346,7 @@ Various bug fixes, first version of Babel to use the MIT version of `regenerator
|
|||||||
* `babel-preset-stage-1`, `babel-preset-stage-2`
|
* `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))
|
* [#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`
|
* `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))
|
* [#6943](https://github.com/babel/babel/pull/6943) Moving Do expression to stage 1. ([@rajzshkr](https://github.com/rajzshkr))
|
||||||
|
|
||||||
@ -1879,7 +2360,7 @@ Various bug fixes, first version of Babel to use the MIT version of `regenerator
|
|||||||
|
|
||||||
## v7.0.0-beta.33 (2017-12-01)
|
## 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`
|
* `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))
|
* [#6920](https://github.com/babel/babel/pull/6920) Split exportExtensions into exportDefault and exportNamespace plugins…. ([@existentialism](https://github.com/existentialism))
|
||||||
* `babylon`
|
* `babylon`
|
||||||
@ -2064,7 +2545,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"`
|
> 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`
|
* `babel-plugin-transform-optional-chaining`
|
||||||
* [#6525](https://github.com/babel/babel/pull/6525) Optional Chaining: Account for document.all. ([@azz](https://github.com/azz))
|
* [#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`
|
* `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`
|
||||||
@ -2344,7 +2825,7 @@ let {...{}} = {}; let {...[]} = {};
|
|||||||
- Add `--config-file` CLI flag to explicitly pass a config location
|
- 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`)
|
- 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-*`
|
* `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))
|
* [#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`
|
* `babel-helpers`, `babel-plugin-transform-es2015-computed-properties`
|
||||||
@ -2480,7 +2961,7 @@ Initial release of typescript equivalent of how Babel handles flow with a new `b
|
|||||||
|
|
||||||
## v7.0.0-alpha.18 (2017-08-03)
|
## 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`
|
* `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))
|
* [#5990](https://github.com/babel/babel/pull/5990) Flow opaque type aliases. ([@jbrown215](https://github.com/jbrown215))
|
||||||
* `babel-preset-stage-3`
|
* `babel-preset-stage-3`
|
||||||
@ -2529,9 +3010,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`
|
- Optional catch binding `try {} catch {}`: `babel-plugin-transform-optional-catch-binding`
|
||||||
- es2015-parameters `loose` mode that doesn't use `arguments`
|
- es2015-parameters `loose` mode that doesn't use `arguments`
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-plugin-check-es2015-constants`
|
* `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.
|
> Instead of throwing a compile time error when const is violated, Babel should insert a throw statement before the violation.
|
||||||
|
|
||||||
@ -2836,7 +3317,7 @@ var A = function A() {
|
|||||||
|
|
||||||
## v7.0.0-alpha.12 (2017-05-31)
|
## 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`
|
* `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))
|
* [#5793](https://github.com/babel/babel/pull/5793) Support for NumericLiteralSeparator, Stage 1 feature. ([@rwaldron](https://github.com/rwaldron))
|
||||||
|
|
||||||
@ -2877,7 +3358,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
|
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`
|
* `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))
|
* [#5525](https://github.com/babel/babel/pull/5525) Add support for object type spread. ([@conartist6](https://github.com/conartist6))
|
||||||
|
|
||||||
@ -2951,7 +3432,7 @@ Update Babylon: https://github.com/babel/babylon/releases/tag/v7.0.0-beta.9, htt
|
|||||||
|
|
||||||
## v7.0.0-alpha.8 (2017-04-17)
|
## v7.0.0-alpha.8 (2017-04-17)
|
||||||
|
|
||||||
#### :eyeglasses: Spec Compliancy
|
#### :eyeglasses: Spec Compliance
|
||||||
* `babel-preset-stage-2`, `babel-preset-stage-3`
|
* `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))
|
* [#5610](https://github.com/babel/babel/pull/5610) Move syntax-dynamic-import to stage-3. ([@dkaoster](https://github.com/dkaoster))
|
||||||
|
|
||||||
|
|||||||
@ -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/)
|
- 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).
|
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)
|
- 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). [](https://www.codetriage.com/babel/babel)
|
||||||
|
|
||||||
## Chat
|
## Chat
|
||||||
|
|
||||||
|
|||||||
29
Gulpfile.js
29
Gulpfile.js
@ -11,24 +11,20 @@ const filter = require("gulp-filter");
|
|||||||
const gulp = require("gulp");
|
const gulp = require("gulp");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const webpack = require("webpack");
|
const webpack = require("webpack");
|
||||||
const merge = require("merge-stream");
|
|
||||||
const rollup = require("rollup");
|
const rollup = require("rollup");
|
||||||
const rollupBabel = require("rollup-plugin-babel");
|
const rollupBabel = require("rollup-plugin-babel");
|
||||||
const rollupNodeResolve = require("rollup-plugin-node-resolve");
|
const rollupNodeResolve = require("rollup-plugin-node-resolve");
|
||||||
|
const rollupReplace = require("rollup-plugin-replace");
|
||||||
const { registerStandalonePackageTask } = require("./scripts/gulp-tasks");
|
const { registerStandalonePackageTask } = require("./scripts/gulp-tasks");
|
||||||
|
|
||||||
const sources = ["codemods", "packages"];
|
const defaultSourcesGlob = "./@(codemods|packages)/*/src/**/*.js";
|
||||||
|
|
||||||
function swapSrcWithLib(srcPath) {
|
function swapSrcWithLib(srcPath) {
|
||||||
const parts = srcPath.split(path.sep);
|
const parts = srcPath.split(path.sep);
|
||||||
parts[1] = "lib";
|
parts[2] = "lib";
|
||||||
return parts.join(path.sep);
|
return parts.join(path.sep);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getGlobFromSource(source) {
|
|
||||||
return `./${source}/*/src/**/*.js`;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getIndexFromPackage(name) {
|
function getIndexFromPackage(name) {
|
||||||
return `${name}/src/index.js`;
|
return `${name}/src/index.js`;
|
||||||
}
|
}
|
||||||
@ -55,12 +51,10 @@ function rename(fn) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildBabel(exclude) {
|
function buildBabel(exclude, sourcesGlob = defaultSourcesGlob) {
|
||||||
return merge(
|
const base = __dirname;
|
||||||
sources.map(source => {
|
|
||||||
const base = path.join(__dirname, source);
|
|
||||||
|
|
||||||
let stream = gulp.src(getGlobFromSource(source), { base: base });
|
let stream = gulp.src(sourcesGlob, { base: __dirname });
|
||||||
|
|
||||||
if (exclude) {
|
if (exclude) {
|
||||||
const filters = exclude.map(p => `!**/${p}/**`);
|
const filters = exclude.map(p => `!**/${p}/**`);
|
||||||
@ -79,8 +73,6 @@ function buildBabel(exclude) {
|
|||||||
rename(file => path.resolve(file.base, swapSrcWithLib(file.relative)))
|
rename(file => path.resolve(file.base, swapSrcWithLib(file.relative)))
|
||||||
)
|
)
|
||||||
.pipe(gulp.dest(base));
|
.pipe(gulp.dest(base));
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildRollup(packages) {
|
function buildRollup(packages) {
|
||||||
@ -92,6 +84,9 @@ function buildRollup(packages) {
|
|||||||
.rollup({
|
.rollup({
|
||||||
input,
|
input,
|
||||||
plugins: [
|
plugins: [
|
||||||
|
rollupReplace({
|
||||||
|
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
|
||||||
|
}),
|
||||||
rollupBabel({
|
rollupBabel({
|
||||||
envName: "babel-parser",
|
envName: "babel-parser",
|
||||||
}),
|
}),
|
||||||
@ -103,6 +98,7 @@ function buildRollup(packages) {
|
|||||||
file: path.join(pkg, "lib/index.js"),
|
file: path.join(pkg, "lib/index.js"),
|
||||||
format: "cjs",
|
format: "cjs",
|
||||||
name: "babel-parser",
|
name: "babel-parser",
|
||||||
|
sourcemap: process.env.NODE_ENV !== "production",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
@ -113,6 +109,9 @@ const bundles = ["packages/babel-parser"];
|
|||||||
|
|
||||||
gulp.task("build-rollup", () => buildRollup(bundles));
|
gulp.task("build-rollup", () => buildRollup(bundles));
|
||||||
gulp.task("build-babel", () => buildBabel(/* exclude */ 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("build", gulp.parallel("build-rollup", "build-babel"));
|
||||||
|
|
||||||
gulp.task("default", gulp.series("build"));
|
gulp.task("default", gulp.series("build"));
|
||||||
@ -123,7 +122,7 @@ gulp.task(
|
|||||||
"watch",
|
"watch",
|
||||||
gulp.series("build-no-bundle", function watch() {
|
gulp.series("build-no-bundle", function watch() {
|
||||||
gulpWatch(
|
gulpWatch(
|
||||||
sources.map(getGlobFromSource),
|
defaultSourcesGlob,
|
||||||
{ debounceDelay: 200 },
|
{ debounceDelay: 200 },
|
||||||
gulp.task("build-no-bundle")
|
gulp.task("build-no-bundle")
|
||||||
);
|
);
|
||||||
|
|||||||
195
Makefile
195
Makefile
@ -1,6 +1,5 @@
|
|||||||
MAKEFLAGS = -j1
|
FLOW_COMMIT = 09669846b7a7ca5a6c23c12d56bb3bebdafd67e9
|
||||||
FLOW_COMMIT = 2ac56861e3ceff9ca406ae586fbafb3480c6c0b7
|
TEST262_COMMIT = 8688c4ab79059c3097098605e69f1ee5eda6c409
|
||||||
TEST262_COMMIT = de567d3aa5de4eaa11e00131d26b9fe77997dfb0
|
|
||||||
|
|
||||||
# Fix color output until TravisCI fixes https://github.com/travis-ci/travis-ci/issues/7967
|
# Fix color output until TravisCI fixes https://github.com/travis-ci/travis-ci/issues/7967
|
||||||
export FORCE_COLOR = true
|
export FORCE_COLOR = true
|
||||||
@ -9,59 +8,110 @@ SOURCES = packages codemods
|
|||||||
|
|
||||||
.PHONY: build build-dist watch lint fix clean test-clean test-only test test-ci publish bootstrap
|
.PHONY: build build-dist watch lint fix clean test-clean test-only test test-ci publish bootstrap
|
||||||
|
|
||||||
build: clean clean-lib
|
build: build-bundle
|
||||||
./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
|
|
||||||
ifneq ("$(BABEL_COVERAGE)", "true")
|
ifneq ("$(BABEL_COVERAGE)", "true")
|
||||||
make build-standalone
|
$(MAKE) build-standalone
|
||||||
make build-preset-env-standalone
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
build-standalone:
|
build-bundle: clean clean-lib
|
||||||
./node_modules/.bin/gulp build-babel-standalone
|
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:
|
build-preset-env-standalone:
|
||||||
./node_modules/.bin/gulp build-babel-preset-env-standalone
|
yarn gulp build-babel-preset-env-standalone
|
||||||
|
|
||||||
prepublish-build-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:
|
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; \
|
cd packages/babel-polyfill; \
|
||||||
scripts/build-dist.sh
|
scripts/build-dist.sh
|
||||||
|
|
||||||
|
build-plugin-transform-runtime-dist:
|
||||||
cd packages/babel-plugin-transform-runtime; \
|
cd packages/babel-plugin-transform-runtime; \
|
||||||
node scripts/build-dist.js
|
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
|
# Ensure that build artifacts for types are created during local
|
||||||
# development too.
|
# development too.
|
||||||
BABEL_ENV=development ./node_modules/.bin/gulp build-no-bundle
|
$(MAKE) generate-type-helpers
|
||||||
node ./packages/babel-types/scripts/generateTypeHelpers.js
|
$(MAKE) build-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
|
watch: build-no-bundle
|
||||||
BABEL_ENV=development ./node_modules/.bin/gulp watch
|
BABEL_ENV=development yarn gulp watch
|
||||||
|
|
||||||
|
code-quality-ci: flowcheck-ci lint-ci
|
||||||
|
|
||||||
|
flowcheck-ci: bootstrap-flowcheck
|
||||||
|
$(MAKE) flow
|
||||||
|
|
||||||
|
code-quality: flow lint
|
||||||
|
|
||||||
flow:
|
flow:
|
||||||
./node_modules/.bin/flow check --strip-root
|
yarn flow check --strip-root
|
||||||
|
|
||||||
lint:
|
bootstrap-flowcheck: bootstrap-only
|
||||||
./node_modules/.bin/eslint scripts $(SOURCES) '*.js' --format=codeframe
|
yarn gulp build-babel-types
|
||||||
|
$(MAKE) build-typings
|
||||||
|
|
||||||
fix: fix-json
|
lint-ci: lint-js-ci lint-ts-ci
|
||||||
./node_modules/.bin/eslint scripts $(SOURCES) '*.js' --format=codeframe --fix
|
|
||||||
|
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:
|
fix-json:
|
||||||
./node_modules/.bin/prettier "{packages,codemod}/*/test/fixtures/**/options.json" --write --loglevel warn
|
yarn prettier "{packages,codemod}/*/test/fixtures/**/options.json" --write --loglevel warn
|
||||||
|
|
||||||
clean: test-clean
|
clean: test-clean
|
||||||
rm -f .npmrc
|
rm -f .npmrc
|
||||||
@ -74,72 +124,80 @@ test-clean:
|
|||||||
$(foreach source, $(SOURCES), \
|
$(foreach source, $(SOURCES), \
|
||||||
$(call clean-source-test, $(source)))
|
$(call clean-source-test, $(source)))
|
||||||
|
|
||||||
|
# Does not work on Windows; use "yarn jest" instead
|
||||||
test-only:
|
test-only:
|
||||||
BABEL_ENV=test ./scripts/test.sh
|
BABEL_ENV=test ./scripts/test.sh
|
||||||
make test-clean
|
$(MAKE) test-clean
|
||||||
|
|
||||||
test: lint test-only
|
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: SHELL:=/bin/bash
|
||||||
test-ci-coverage:
|
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
|
BABEL_ENV=test TEST_TYPE=cov ./scripts/test-cov.sh
|
||||||
bash <(curl -s https://codecov.io/bash) -f coverage/coverage-final.json
|
bash <(curl -s https://codecov.io/bash) -f coverage/coverage-final.json
|
||||||
|
|
||||||
bootstrap-flow:
|
bootstrap-flow:
|
||||||
rm -rf ./build/flow
|
rm -rf build/flow
|
||||||
mkdir -p ./build
|
mkdir -p build
|
||||||
git clone --branch=master --single-branch --shallow-since=2018-11-01 https://github.com/facebook/flow.git ./build/flow
|
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)
|
cd build/flow && git checkout $(FLOW_COMMIT)
|
||||||
|
|
||||||
test-flow:
|
test-flow:
|
||||||
node scripts/tests/flow/run_babel_parser_flow_tests.js
|
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:
|
test-flow-update-whitelist:
|
||||||
node scripts/tests/flow/run_babel_parser_flow_tests.js --update-whitelist
|
node scripts/tests/flow/run_babel_parser_flow_tests.js --update-whitelist
|
||||||
|
|
||||||
bootstrap-test262:
|
bootstrap-test262:
|
||||||
rm -rf ./build/test262
|
rm -rf build/test262
|
||||||
mkdir -p ./build
|
mkdir -p build
|
||||||
git clone --branch=master --single-branch --shallow-since=2019-01-01 https://github.com/tc39/test262.git ./build/test262
|
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)
|
cd build/test262 && git checkout $(TEST262_COMMIT)
|
||||||
|
|
||||||
test-test262:
|
test-test262:
|
||||||
node scripts/tests/test262/run_babel_parser_test262.js
|
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:
|
test-test262-update-whitelist:
|
||||||
node scripts/tests/test262/run_babel_parser_test262.js --update-whitelist
|
node scripts/tests/test262/run_babel_parser_test262.js --update-whitelist
|
||||||
|
|
||||||
|
# Does not work on Windows
|
||||||
clone-license:
|
clone-license:
|
||||||
./scripts/clone-license.sh
|
./scripts/clone-license.sh
|
||||||
|
|
||||||
prepublish-build:
|
prepublish-build: clean-lib clean-runtime-helpers
|
||||||
make clean-lib
|
NODE_ENV=production BABEL_ENV=production $(MAKE) build
|
||||||
rm -rf packages/babel-runtime/helpers
|
$(MAKE) clone-license
|
||||||
rm -rf packages/babel-runtime-corejs2/helpers
|
|
||||||
rm -rf packages/babel-runtime-corejs2/core-js
|
|
||||||
BABEL_ENV=production make build-dist
|
|
||||||
make clone-license
|
|
||||||
|
|
||||||
prepublish:
|
prepublish:
|
||||||
make bootstrap-only
|
$(MAKE) bootstrap-only
|
||||||
make prepublish-build
|
$(MAKE) prepublish-build
|
||||||
make test
|
$(MAKE) test
|
||||||
|
|
||||||
new-version:
|
new-version:
|
||||||
git pull --rebase
|
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="@babel/runtime,@babel/runtime-corejs2,@babel/runtime-corejs3,@babel/standalone,@babel/preset-env-standalone"
|
||||||
|
|
||||||
|
publish-cerxes: prepublish
|
||||||
|
yarn lerna publish --registry="https://npm.cerxes.net" --force-publish --allow-branch initializers-fix --canary --preid csx --dist-tag csx
|
||||||
|
|
||||||
# NOTE: Run make new-version first
|
# NOTE: Run make new-version first
|
||||||
publish: prepublish
|
publish: prepublish
|
||||||
./node_modules/.bin/lerna publish from-git --require-scripts
|
yarn lerna publish from-git
|
||||||
make clean
|
$(MAKE) clean
|
||||||
|
|
||||||
publish-ci: prepublish
|
publish-ci: prepublish
|
||||||
ifneq ("$(NPM_TOKEN)", "")
|
ifneq ("$(NPM_TOKEN)", "")
|
||||||
@ -148,23 +206,30 @@ else
|
|||||||
echo "Missing NPM_TOKEN env var"
|
echo "Missing NPM_TOKEN env var"
|
||||||
exit 1
|
exit 1
|
||||||
endif
|
endif
|
||||||
./node_modules/.bin/lerna publish from-git --require-scripts --yes
|
yarn lerna publish from-git --yes
|
||||||
rm -f .npmrc
|
rm -f .npmrc
|
||||||
make clean
|
$(MAKE) clean
|
||||||
|
|
||||||
bootstrap-only: clean-all
|
bootstrap-only: lerna-bootstrap
|
||||||
|
|
||||||
|
yarn-install: clean-all
|
||||||
yarn --ignore-engines
|
yarn --ignore-engines
|
||||||
./node_modules/.bin/lerna bootstrap -- --ignore-engines
|
|
||||||
|
lerna-bootstrap: yarn-install
|
||||||
|
yarn lerna bootstrap
|
||||||
|
|
||||||
bootstrap: bootstrap-only
|
bootstrap: bootstrap-only
|
||||||
make build
|
$(MAKE) build
|
||||||
cd packages/babel-plugin-transform-runtime; \
|
|
||||||
node scripts/build-dist.js
|
|
||||||
|
|
||||||
clean-lib:
|
clean-lib:
|
||||||
$(foreach source, $(SOURCES), \
|
$(foreach source, $(SOURCES), \
|
||||||
$(call clean-source-lib, $(source)))
|
$(call clean-source-lib, $(source)))
|
||||||
|
|
||||||
|
clean-runtime-helpers:
|
||||||
|
rm -rf packages/babel-runtime/helpers
|
||||||
|
rm -rf packages/babel-runtime-corejs2/helpers
|
||||||
|
rm -rf packages/babel-runtime-corejs2/core-js
|
||||||
|
|
||||||
clean-all:
|
clean-all:
|
||||||
rm -rf node_modules
|
rm -rf node_modules
|
||||||
rm -rf package-lock.json
|
rm -rf package-lock.json
|
||||||
@ -173,7 +238,7 @@ clean-all:
|
|||||||
$(foreach source, $(SOURCES), \
|
$(foreach source, $(SOURCES), \
|
||||||
$(call clean-source-all, $(source)))
|
$(call clean-source-all, $(source)))
|
||||||
|
|
||||||
make clean
|
$(MAKE) clean
|
||||||
|
|
||||||
define clean-source-lib
|
define clean-source-lib
|
||||||
rm -rf $(1)/*/lib
|
rm -rf $(1)/*/lib
|
||||||
|
|||||||
30
README.md
30
README.md
@ -4,16 +4,23 @@
|
|||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<span style="color:darkred">
|
||||||
|
<b><i>WARNING</i> This is a fork of babel to test a fix for initializer-variables with class-properties (proposals-stuff)</b>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
The compiler for writing next generation JavaScript.
|
The compiler for writing next generation JavaScript.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://www.npmjs.com/package/@babel/core"><img alt="v7 npm Downloads" src="https://img.shields.io/npm/dm/@babel/core.svg?maxAge=43200&label=v7%20downloads"></a>
|
<a href="https://www.npmjs.com/package/@babel/core"><img alt="v7 npm Downloads" src="https://img.shields.io/npm/dm/@babel/core.svg?maxAge=43200&label=v7%20downloads"></a>
|
||||||
<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>
|
<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>
|
||||||
<p align="center">
|
<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://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://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>
|
<a href="https://slack.babeljs.io/"><img alt="Slack Status" src="https://slack.babeljs.io/badge.svg"></a>
|
||||||
@ -80,14 +87,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)!
|
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?
|
### 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!
|
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?
|
### 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).
|
Check out our website: [babeljs.io](https://babeljs.io/), and report issues/features at [babel/website](https://github.com/babel/website/issues).
|
||||||
@ -98,12 +105,19 @@ Please read through our [CONTRIBUTING.md](CONTRIBUTING.md) and fill out the issu
|
|||||||
|
|
||||||
### Want to contribute to Babel?
|
### 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!
|
- Our [#development](https://babeljs.slack.com/messages/development) Slack channel and say hi ([signup](https://slack.babeljs.io))!
|
||||||
- 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.
|
- 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 discussions/notes/roadmap: [babel/notes](https://github.com/babel/notes)
|
||||||
- Our progress on TC39 proposals: [babel/proposals](https://github.com/babel/proposals)
|
- Our progress on TC39 proposals: [babel/proposals](https://github.com/babel/proposals)
|
||||||
|
- Our blog which contains release posts and explainations: [/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?
|
### How is the repo structured?
|
||||||
|
|
||||||
|
|||||||
19
SECURITY.md
Normal file
19
SECURITY.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
This is the list of versions of `babel` which are
|
||||||
|
currently being supported with security updates.
|
||||||
|
|
||||||
|
| Version | Supported |
|
||||||
|
| -------- | ------------------ |
|
||||||
|
| 7.x | :white_check_mark: |
|
||||||
|
| 6.26.x | :white_check_mark: |
|
||||||
|
| < 6.26.0 | :x: |
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
To report a vulnerability please send an email with the details to security@babeljs.io.
|
||||||
|
This will help us to assess the risk and start the necessary steps.
|
||||||
|
|
||||||
|
Thanks for helping to keep babel secure.
|
||||||
@ -77,9 +77,10 @@ module.exports = function(api) {
|
|||||||
"@babel/proposal-object-rest-spread",
|
"@babel/proposal-object-rest-spread",
|
||||||
{ useBuiltIns: true, loose: true },
|
{ useBuiltIns: true, loose: true },
|
||||||
],
|
],
|
||||||
|
"@babel/plugin-proposal-optional-chaining",
|
||||||
|
"@babel/plugin-proposal-nullish-coalescing-operator",
|
||||||
|
|
||||||
// Explicitly use the lazy version of CommonJS modules.
|
convertESM ? "@babel/transform-modules-commonjs" : null,
|
||||||
convertESM ? ["@babel/transform-modules-commonjs", { lazy: true }] : null,
|
|
||||||
].filter(Boolean),
|
].filter(Boolean),
|
||||||
overrides: [
|
overrides: [
|
||||||
{
|
{
|
||||||
@ -90,18 +91,17 @@ module.exports = function(api) {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: "./packages/babel-register",
|
test: ["./packages/babel-cli", "./packages/babel-core"],
|
||||||
plugins: [
|
plugins: [
|
||||||
// Override the root options to disable lazy imports for babel-register
|
// Explicitly use the lazy version of CommonJS modules.
|
||||||
// because otherwise the require hook will try to lazy-import things
|
convertESM
|
||||||
// leading to dependency cycles.
|
? ["@babel/transform-modules-commonjs", { lazy: true }]
|
||||||
convertESM ? "@babel/transform-modules-commonjs" : null,
|
: null,
|
||||||
].filter(Boolean),
|
].filter(Boolean),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: "./packages/babel-polyfill",
|
test: "./packages/babel-polyfill",
|
||||||
presets: [["@babel/env", envOptsNoTargets]],
|
presets: [["@babel/env", envOptsNoTargets]],
|
||||||
plugins: [["@babel/transform-modules-commonjs", { lazy: false }]],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// The vast majority of our src files are modules, but we use
|
// The vast majority of our src files are modules, but we use
|
||||||
@ -123,7 +123,7 @@ module.exports = function(api) {
|
|||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
includeRuntime
|
includeRuntime
|
||||||
? ["@babel/transform-runtime", { version: "7.4.0" }]
|
? ["@babel/transform-runtime", { version: "7.4.4" }]
|
||||||
: null,
|
: null,
|
||||||
].filter(Boolean),
|
].filter(Boolean),
|
||||||
},
|
},
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
"@babel/plugin-syntax-object-rest-spread": "^7.0.0"
|
"@babel/plugin-syntax-object-rest-spread": "^7.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": "^7.0.0-0"
|
"@babel/core": "^7.0.0-0 || csx"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.0.0",
|
"@babel/core": "^7.0.0",
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
"@babel/plugin-syntax-optional-catch-binding": "^7.0.0"
|
"@babel/plugin-syntax-optional-catch-binding": "^7.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": "^7.0.0-0"
|
"@babel/core": "^7.0.0-0 || csx"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.0.0",
|
"@babel/core": "^7.0.0",
|
||||||
|
|||||||
@ -15,7 +15,7 @@ This is quite taboo but let's look at the pros and cons:
|
|||||||
* Easy to coordinate changes across modules.
|
* Easy to coordinate changes across modules.
|
||||||
* Single place to report issues.
|
* Single place to report issues.
|
||||||
* Easier to setup a development environment.
|
* 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:**
|
**Cons:**
|
||||||
|
|
||||||
|
|||||||
10
lerna.json
10
lerna.json
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "7.4.4",
|
"version": "7.7.3",
|
||||||
"changelog": {
|
"changelog": {
|
||||||
"repo": "babel/babel",
|
"repo": "babel/babel",
|
||||||
"cacheDir": ".changelog",
|
"cacheDir": ".changelog",
|
||||||
@ -10,7 +10,8 @@
|
|||||||
"PR: Bug Fix :bug:": ":bug: Bug Fix",
|
"PR: Bug Fix :bug:": ":bug: Bug Fix",
|
||||||
"PR: Polish :nail_care:": ":nail_care: Polish",
|
"PR: Polish :nail_care:": ":nail_care: Polish",
|
||||||
"PR: Docs :memo:": ":memo: Documentation",
|
"PR: Docs :memo:": ":memo: Documentation",
|
||||||
"PR: Internal :house:": ":house: Internal"
|
"PR: Internal :house:": ":house: Internal",
|
||||||
|
"PR: Performance :running_woman:": ":running_woman: Performance"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"command": {
|
"command": {
|
||||||
@ -32,5 +33,8 @@
|
|||||||
"npmClient": "yarn",
|
"npmClient": "yarn",
|
||||||
"npmClientArgs": [
|
"npmClientArgs": [
|
||||||
"--no-lockfile"
|
"--no-lockfile"
|
||||||
]
|
],
|
||||||
|
"publishConfig": {
|
||||||
|
"registry": "https://npm.cerxes.net"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -165,7 +165,7 @@ declare module "source-map" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
declare module "convert-source-map" {
|
declare module "convert-source-map" {
|
||||||
import type { SourceMap } from "source-map";
|
import type { SourceMap, SourceMapGenerator } from "source-map";
|
||||||
|
|
||||||
declare class Converter {
|
declare class Converter {
|
||||||
toJSON(): string;
|
toJSON(): string;
|
||||||
@ -177,11 +177,11 @@ declare module "convert-source-map" {
|
|||||||
declare module.exports: {
|
declare module.exports: {
|
||||||
SourceMap: SourceMap,
|
SourceMap: SourceMap,
|
||||||
Converter: Converter,
|
Converter: Converter,
|
||||||
fromObject(obj: SourceMap): Converter,
|
fromObject(obj: SourceMap | SourceMapGenerator): Converter,
|
||||||
fromJSON(str: string): Converter,
|
fromJSON(str: string): Converter,
|
||||||
fromBase64(str: string): Converter,
|
fromBase64(str: string): Converter,
|
||||||
fromComment(str: string): Converter,
|
fromComment(str: string): Converter,
|
||||||
fromMapFileComment(str: string): Converter,
|
fromMapFileComment(str: string, dir: string): Converter,
|
||||||
fromSource(str: string): Converter,
|
fromSource(str: string): Converter,
|
||||||
fromMapFileSource(str: string, dir: string): Converter,
|
fromMapFileSource(str: string, dir: string): Converter,
|
||||||
removeComments(str: string): string,
|
removeComments(str: string): string,
|
||||||
|
|||||||
67
package.json
67
package.json
@ -9,38 +9,40 @@
|
|||||||
"test": "make test"
|
"test": "make test"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.2.3",
|
"@babel/cli": "^7.6.0",
|
||||||
"@babel/core": "^7.4.0",
|
"@babel/core": "^7.6.0",
|
||||||
"@babel/eslint-plugin-development": "^1.0.1",
|
"@babel/eslint-plugin-development": "^1.0.1",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.4.0",
|
"@babel/plugin-proposal-class-properties": "^7.5.5",
|
||||||
"@babel/plugin-proposal-export-namespace-from": "^7.2.0",
|
"@babel/plugin-proposal-export-namespace-from": "^7.5.2",
|
||||||
|
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.4.4",
|
||||||
"@babel/plugin-proposal-numeric-separator": "^7.2.0",
|
"@babel/plugin-proposal-numeric-separator": "^7.2.0",
|
||||||
"@babel/plugin-transform-modules-commonjs": "^7.4.0",
|
"@babel/plugin-proposal-optional-chaining": "^7.6.0",
|
||||||
"@babel/plugin-transform-runtime": "^7.4.0",
|
"@babel/plugin-transform-modules-commonjs": "^7.6.0",
|
||||||
"@babel/preset-env": "^7.4.1",
|
"@babel/plugin-transform-runtime": "^7.6.0",
|
||||||
|
"@babel/preset-env": "^7.6.0",
|
||||||
"@babel/preset-flow": "^7.0.0",
|
"@babel/preset-flow": "^7.0.0",
|
||||||
"@babel/register": "^7.4.0",
|
"@babel/register": "^7.6.0",
|
||||||
"@babel/runtime": "^7.4.0",
|
"@babel/runtime": "^7.6.0",
|
||||||
"babel-eslint": "^11.0.0-beta.0",
|
"babel-eslint": "^11.0.0-beta.0",
|
||||||
"babel-jest": "^24.5.0",
|
"babel-jest": "^24.9.0",
|
||||||
"babel-loader": "^8.0.5",
|
"babel-loader": "^8.0.6",
|
||||||
"babel-plugin-transform-charcodes": "^0.2.0",
|
"babel-plugin-transform-charcodes": "^0.2.0",
|
||||||
"browserify": "^16.2.3",
|
"browserify": "^16.2.3",
|
||||||
"bundle-collapser": "^1.2.1",
|
"bundle-collapser": "^1.2.1",
|
||||||
"chalk": "^2.3.2",
|
"chalk": "^2.4.2",
|
||||||
"charcodes": "^0.2.0",
|
"charcodes": "^0.2.0",
|
||||||
"derequire": "^2.0.2",
|
"derequire": "^2.0.2",
|
||||||
"duplicate-package-checker-webpack-plugin": "^2.1.0",
|
"duplicate-package-checker-webpack-plugin": "^2.1.0",
|
||||||
"enhanced-resolve": "^3.0.0",
|
"enhanced-resolve": "^3.0.0",
|
||||||
"eslint": "^5.15.1",
|
"eslint": "^6.0.1",
|
||||||
"eslint-config-babel": "^9.0.0",
|
"eslint-config-babel": "^9.0.0",
|
||||||
"eslint-plugin-flowtype": "^3.2.1",
|
"eslint-plugin-flowtype": "^3.8.2",
|
||||||
"eslint-plugin-import": "^2.16.0",
|
"eslint-plugin-import": "^2.17.2",
|
||||||
"eslint-plugin-prettier": "^3.0.1",
|
"eslint-plugin-prettier": "^3.1.0",
|
||||||
"fancy-log": "^1.3.3",
|
"fancy-log": "^1.3.3",
|
||||||
"flow-bin": "^0.94.0",
|
"flow-bin": "^0.108.0",
|
||||||
"graceful-fs": "^4.1.15",
|
"graceful-fs": "^4.1.15",
|
||||||
"gulp": "^4.0.0",
|
"gulp": "^4.0.2",
|
||||||
"gulp-babel": "^8.0.0",
|
"gulp-babel": "^8.0.0",
|
||||||
"gulp-filter": "^5.1.0",
|
"gulp-filter": "^5.1.0",
|
||||||
"gulp-newer": "^1.0.0",
|
"gulp-newer": "^1.0.0",
|
||||||
@ -48,32 +50,33 @@
|
|||||||
"gulp-rename": "^1.4.0",
|
"gulp-rename": "^1.4.0",
|
||||||
"gulp-uglify": "^3.0.2",
|
"gulp-uglify": "^3.0.2",
|
||||||
"gulp-watch": "^5.0.1",
|
"gulp-watch": "^5.0.1",
|
||||||
"husky": "^1.3.1",
|
"husky": "^3.0.0",
|
||||||
"jest": "^24.5.0",
|
"jest": "^24.9.0",
|
||||||
"lerna": "^3.6.0",
|
"lerna": "^3.16.0",
|
||||||
"lerna-changelog": "^0.5.0",
|
"lerna-changelog": "^0.5.0",
|
||||||
"lint-staged": "^8.1.0",
|
"lint-staged": "^9.2.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.13",
|
||||||
"merge-stream": "^1.0.1",
|
|
||||||
"output-file-sync": "^2.0.0",
|
"output-file-sync": "^2.0.0",
|
||||||
"prettier": "^1.16.1",
|
"prettier": "^1.17.1",
|
||||||
"pump": "^3.0.0",
|
"pump": "^3.0.0",
|
||||||
"rimraf": "^2.6.3",
|
"rimraf": "^2.6.3",
|
||||||
"rollup": "^1.6.0",
|
"rollup": "^1.12.0",
|
||||||
"rollup-plugin-babel": "^4.0.0",
|
"rollup-plugin-babel": "^4.0.0",
|
||||||
"rollup-plugin-node-resolve": "^4.0.1",
|
"rollup-plugin-node-resolve": "^5.0.0",
|
||||||
"test262-stream": "^1.2.0",
|
"rollup-plugin-replace": "^2.2.0",
|
||||||
|
"test262-stream": "^1.3.0",
|
||||||
"through2": "^2.0.0",
|
"through2": "^2.0.0",
|
||||||
|
"typescript": "^3.6.3",
|
||||||
"warnings-to-errors-webpack-plugin": "^2.0.0",
|
"warnings-to-errors-webpack-plugin": "^2.0.0",
|
||||||
"webpack": "^3.4.1",
|
"webpack": "^3.4.1",
|
||||||
"webpack-dependency-suite": "^2.4.4",
|
"webpack-dependency-suite": "^2.4.4",
|
||||||
"webpack-stream": "^4.0.0"
|
"webpack-stream": "^4.0.0"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"@lerna/**/@lerna/collect-updates": "https://github.com/nicolo-ribaudo/lerna.git#babel-collect-updates"
|
"@lerna/**/@lerna/collect-updates": "https://github.com/babel/lerna.git#babel-collect-updates"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 6.9.0 < 13.0.0",
|
"node": ">= 6.9.0 < 14.0.0",
|
||||||
"npm": ">= 3.x <= 6.x",
|
"npm": ">= 3.x <= 6.x",
|
||||||
"yarn": ">=0.27.5 || >=1.0.0-20170811"
|
"yarn": ">=0.27.5 || >=1.0.0-20170811"
|
||||||
},
|
},
|
||||||
@ -113,6 +116,7 @@
|
|||||||
],
|
],
|
||||||
"transformIgnorePatterns": [
|
"transformIgnorePatterns": [
|
||||||
"/node_modules/",
|
"/node_modules/",
|
||||||
|
"/packages/babel-standalone/babel.js",
|
||||||
"<rootDir>/packages/babel-standalone/babel(\\.min)?\\.js",
|
"<rootDir>/packages/babel-standalone/babel(\\.min)?\\.js",
|
||||||
"<rootDir>/packages/babel-preset-env-standalone/babel-preset-env(\\.min)?\\.js",
|
"<rootDir>/packages/babel-preset-env-standalone/babel-preset-env(\\.min)?\\.js",
|
||||||
"/test/(fixtures|tmp|__data__)/",
|
"/test/(fixtures|tmp|__data__)/",
|
||||||
@ -133,6 +137,5 @@
|
|||||||
"moduleNameMapper": {
|
"moduleNameMapper": {
|
||||||
"^@babel/([a-zA-Z0-9_-]+)$": "<rootDir>/packages/babel-$1/"
|
"^@babel/([a-zA-Z0-9_-]+)$": "<rootDir>/packages/babel-$1/"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"dependencies": {}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@babel/cli",
|
"name": "@babel/cli",
|
||||||
"version": "7.4.4",
|
"version": "7.7.0",
|
||||||
"description": "Babel command line.",
|
"description": "Babel command line.",
|
||||||
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
||||||
"homepage": "https://babeljs.io/",
|
"homepage": "https://babeljs.io/",
|
||||||
@ -23,21 +23,20 @@
|
|||||||
"convert-source-map": "^1.1.0",
|
"convert-source-map": "^1.1.0",
|
||||||
"fs-readdir-recursive": "^1.1.0",
|
"fs-readdir-recursive": "^1.1.0",
|
||||||
"glob": "^7.0.0",
|
"glob": "^7.0.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.13",
|
||||||
"mkdirp": "^0.5.1",
|
"make-dir": "^2.1.0",
|
||||||
"output-file-sync": "^2.0.0",
|
|
||||||
"slash": "^2.0.0",
|
"slash": "^2.0.0",
|
||||||
"source-map": "^0.5.0"
|
"source-map": "^0.5.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"chokidar": "^2.0.4"
|
"chokidar": "^2.1.8"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@babel/core": "^7.0.0-0"
|
"@babel/core": "^7.0.0-0 || csx"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.4.4",
|
"@babel/core": "^7.7.0",
|
||||||
"@babel/helper-fixtures": "^7.4.4"
|
"@babel/helper-fixtures": "^7.6.3"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"babel": "./bin/babel.js",
|
"babel": "./bin/babel.js",
|
||||||
|
|||||||
@ -1,7 +1,12 @@
|
|||||||
|
// @flow
|
||||||
|
|
||||||
import commander from "commander";
|
import commander from "commander";
|
||||||
import { buildExternalHelpers } from "@babel/core";
|
import { buildExternalHelpers } from "@babel/core";
|
||||||
|
|
||||||
function collect(value, previousValue): Array<string> {
|
function collect(
|
||||||
|
value: string | any,
|
||||||
|
previousValue: Array<string>,
|
||||||
|
): Array<string> {
|
||||||
// If the user passed the option with no value, like "babel-external-helpers --whitelist", do nothing.
|
// If the user passed the option with no value, like "babel-external-helpers --whitelist", do nothing.
|
||||||
if (typeof value !== "string") return previousValue;
|
if (typeof value !== "string") return previousValue;
|
||||||
|
|
||||||
|
|||||||
@ -1,16 +1,26 @@
|
|||||||
|
// @flow
|
||||||
|
|
||||||
import defaults from "lodash/defaults";
|
import defaults from "lodash/defaults";
|
||||||
import outputFileSync from "output-file-sync";
|
import { sync as makeDirSync } from "make-dir";
|
||||||
import { sync as mkdirpSync } from "mkdirp";
|
|
||||||
import slash from "slash";
|
import slash from "slash";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
|
||||||
import * as util from "./util";
|
import * as util from "./util";
|
||||||
|
import { type CmdOptions } from "./options";
|
||||||
|
|
||||||
export default async function({ cliOptions, babelOptions }) {
|
function outputFileSync(filePath: string, data: string | Buffer): void {
|
||||||
|
makeDirSync(path.dirname(filePath));
|
||||||
|
fs.writeFileSync(filePath, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function({
|
||||||
|
cliOptions,
|
||||||
|
babelOptions,
|
||||||
|
}: CmdOptions): Promise<void> {
|
||||||
const filenames = cliOptions.filenames;
|
const filenames = cliOptions.filenames;
|
||||||
|
|
||||||
async function write(src, base) {
|
async function write(src: string, base: string): Promise<boolean> {
|
||||||
let relative = path.relative(base, src);
|
let relative = path.relative(base, src);
|
||||||
|
|
||||||
if (!util.isCompilableExtension(relative, cliOptions.extensions)) {
|
if (!util.isCompilableExtension(relative, cliOptions.extensions)) {
|
||||||
@ -65,14 +75,14 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDest(filename, base) {
|
function getDest(filename: string, base: string): string {
|
||||||
if (cliOptions.relative) {
|
if (cliOptions.relative) {
|
||||||
return path.join(base, cliOptions.outDir, filename);
|
return path.join(base, cliOptions.outDir, filename);
|
||||||
}
|
}
|
||||||
return path.join(cliOptions.outDir, filename);
|
return path.join(cliOptions.outDir, filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleFile(src, base) {
|
async function handleFile(src: string, base: string): Promise<boolean> {
|
||||||
const written = await write(src, base);
|
const written = await write(src, base);
|
||||||
|
|
||||||
if (!written && cliOptions.copyFiles) {
|
if (!written && cliOptions.copyFiles) {
|
||||||
@ -84,7 +94,7 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
return written;
|
return written;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handle(filenameOrDir) {
|
async function handle(filenameOrDir: string): Promise<number> {
|
||||||
if (!fs.existsSync(filenameOrDir)) return 0;
|
if (!fs.existsSync(filenameOrDir)) return 0;
|
||||||
|
|
||||||
const stat = fs.statSync(filenameOrDir);
|
const stat = fs.statSync(filenameOrDir);
|
||||||
@ -116,19 +126,21 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
util.deleteDir(cliOptions.outDir);
|
util.deleteDir(cliOptions.outDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
mkdirpSync(cliOptions.outDir);
|
makeDirSync(cliOptions.outDir);
|
||||||
|
|
||||||
let compiledFiles = 0;
|
let compiledFiles = 0;
|
||||||
for (const filename of cliOptions.filenames) {
|
for (const filename of cliOptions.filenames) {
|
||||||
compiledFiles += await handle(filename);
|
compiledFiles += await handle(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!cliOptions.quiet) {
|
||||||
console.log(
|
console.log(
|
||||||
`Successfully compiled ${compiledFiles} ${
|
`Successfully compiled ${compiledFiles} ${
|
||||||
compiledFiles !== 1 ? "files" : "file"
|
compiledFiles !== 1 ? "files" : "file"
|
||||||
} with Babel.`,
|
} with Babel.`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (cliOptions.watch) {
|
if (cliOptions.watch) {
|
||||||
const chokidar = util.requireChokidar();
|
const chokidar = util.requireChokidar();
|
||||||
|
|||||||
@ -1,14 +1,26 @@
|
|||||||
|
// @flow
|
||||||
|
|
||||||
import convertSourceMap from "convert-source-map";
|
import convertSourceMap from "convert-source-map";
|
||||||
import defaults from "lodash/defaults";
|
import defaults from "lodash/defaults";
|
||||||
import sourceMap from "source-map";
|
import sourceMap from "source-map";
|
||||||
import slash from "slash";
|
import slash from "slash";
|
||||||
|
import { sync as makeDirSync } from "make-dir";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
|
||||||
import * as util from "./util";
|
import * as util from "./util";
|
||||||
|
import { type CmdOptions } from "./options";
|
||||||
|
|
||||||
export default async function({ cliOptions, babelOptions }) {
|
type CompilationOutput = {
|
||||||
function buildResult(fileResults) {
|
code: string,
|
||||||
|
map: Object,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default async function({
|
||||||
|
cliOptions,
|
||||||
|
babelOptions,
|
||||||
|
}: CmdOptions): Promise<void> {
|
||||||
|
function buildResult(fileResults: Array<Object>): CompilationOutput {
|
||||||
const map = new sourceMap.SourceMapGenerator({
|
const map = new sourceMap.SourceMapGenerator({
|
||||||
file:
|
file:
|
||||||
cliOptions.sourceMapTarget ||
|
cliOptions.sourceMapTarget ||
|
||||||
@ -74,10 +86,12 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function output(fileResults) {
|
function output(fileResults: Array<string>): void {
|
||||||
const result = buildResult(fileResults);
|
const result = buildResult(fileResults);
|
||||||
|
|
||||||
if (cliOptions.outFile) {
|
if (cliOptions.outFile) {
|
||||||
|
makeDirSync(path.dirname(cliOptions.outFile));
|
||||||
|
|
||||||
// we've requested for a sourcemap to be written to disk
|
// we've requested for a sourcemap to be written to disk
|
||||||
if (babelOptions.sourceMaps && babelOptions.sourceMaps !== "inline") {
|
if (babelOptions.sourceMaps && babelOptions.sourceMaps !== "inline") {
|
||||||
const mapLoc = cliOptions.outFile + ".map";
|
const mapLoc = cliOptions.outFile + ".map";
|
||||||
@ -91,14 +105,15 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function readStdin() {
|
function readStdin(): Promise<string> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve: Function, reject: Function): void => {
|
||||||
let code = "";
|
let code = "";
|
||||||
|
|
||||||
process.stdin.setEncoding("utf8");
|
process.stdin.setEncoding("utf8");
|
||||||
|
|
||||||
process.stdin.on("readable", function() {
|
process.stdin.on("readable", function() {
|
||||||
const chunk = process.stdin.read();
|
const chunk = process.stdin.read();
|
||||||
|
// $FlowIgnore
|
||||||
if (chunk !== null) code += chunk;
|
if (chunk !== null) code += chunk;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -109,7 +124,7 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function stdin() {
|
async function stdin(): Promise<void> {
|
||||||
const code = await readStdin();
|
const code = await readStdin();
|
||||||
|
|
||||||
const res = await util.transform(
|
const res = await util.transform(
|
||||||
@ -126,7 +141,7 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
output([res]);
|
output([res]);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function walk(filenames) {
|
async function walk(filenames: Array<string>): Promise<void> {
|
||||||
const _filenames = [];
|
const _filenames = [];
|
||||||
|
|
||||||
filenames.forEach(function(filename) {
|
filenames.forEach(function(filename) {
|
||||||
@ -151,7 +166,7 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const results = await Promise.all(
|
const results = await Promise.all(
|
||||||
_filenames.map(async function(filename) {
|
_filenames.map(async function(filename: string): Promise<Object> {
|
||||||
let sourceFilename = filename;
|
let sourceFilename = filename;
|
||||||
if (cliOptions.outFile) {
|
if (cliOptions.outFile) {
|
||||||
sourceFilename = path.relative(
|
sourceFilename = path.relative(
|
||||||
@ -168,7 +183,7 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
{
|
{
|
||||||
sourceFileName: sourceFilename,
|
sourceFileName: sourceFilename,
|
||||||
// Since we're compiling everything to be merged together,
|
// Since we're compiling everything to be merged together,
|
||||||
// "inline" applies to the final output file, but to the individual
|
// "inline" applies to the final output file, but not to the individual
|
||||||
// files being concatenated.
|
// files being concatenated.
|
||||||
sourceMaps:
|
sourceMaps:
|
||||||
babelOptions.sourceMaps === "inline"
|
babelOptions.sourceMaps === "inline"
|
||||||
@ -192,7 +207,7 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
output(results);
|
output(results);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function files(filenames) {
|
async function files(filenames: Array<string>): Promise<void> {
|
||||||
if (!cliOptions.skipInitialBuild) {
|
if (!cliOptions.skipInitialBuild) {
|
||||||
await walk(filenames);
|
await walk(filenames);
|
||||||
}
|
}
|
||||||
@ -208,7 +223,7 @@ export default async function({ cliOptions, babelOptions }) {
|
|||||||
pollInterval: 10,
|
pollInterval: 10,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.on("all", function(type, filename) {
|
.on("all", function(type: string, filename: string) {
|
||||||
if (!util.isCompilableExtension(filename, cliOptions.extensions)) {
|
if (!util.isCompilableExtension(filename, cliOptions.extensions)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,8 +6,12 @@ import fileCommand from "./file";
|
|||||||
|
|
||||||
const opts = parseArgv(process.argv);
|
const opts = parseArgv(process.argv);
|
||||||
|
|
||||||
|
if (opts) {
|
||||||
const fn = opts.cliOptions.outDir ? dirCommand : fileCommand;
|
const fn = opts.cliOptions.outDir ? dirCommand : fileCommand;
|
||||||
fn(opts).catch(err => {
|
fn(opts).catch(err => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
process.exit(1);
|
process.exitCode = 1;
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
process.exitCode = 2;
|
||||||
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
// @flow
|
||||||
|
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
|
||||||
import commander from "commander";
|
import commander from "commander";
|
||||||
@ -10,19 +12,19 @@ import pkg from "../../package.json";
|
|||||||
// Standard Babel input configs.
|
// Standard Babel input configs.
|
||||||
commander.option(
|
commander.option(
|
||||||
"-f, --filename [filename]",
|
"-f, --filename [filename]",
|
||||||
"filename to use when reading from stdin - this will be used in source-maps, errors etc",
|
"The filename to use when reading from stdin. This will be used in source-maps, errors etc.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--presets [list]",
|
"--presets [list]",
|
||||||
"comma-separated list of preset names",
|
"A comma-separated list of preset names.",
|
||||||
collect,
|
collect,
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--plugins [list]",
|
"--plugins [list]",
|
||||||
"comma-separated list of plugin names",
|
"A comma-separated list of plugin names.",
|
||||||
collect,
|
collect,
|
||||||
);
|
);
|
||||||
commander.option("--config-file [path]", "Path to a .babelrc file to use");
|
commander.option("--config-file [path]", "Path to a .babelrc file to use.");
|
||||||
commander.option(
|
commander.option(
|
||||||
"--env-name [name]",
|
"--env-name [name]",
|
||||||
"The name of the 'env' to use when loading configs and plugins. " +
|
"The name of the 'env' to use when loading configs and plugins. " +
|
||||||
@ -38,97 +40,101 @@ commander.option(
|
|||||||
commander.option("--source-type [script|module]", "");
|
commander.option("--source-type [script|module]", "");
|
||||||
commander.option(
|
commander.option(
|
||||||
"--no-babelrc",
|
"--no-babelrc",
|
||||||
"Whether or not to look up .babelrc and .babelignore files",
|
"Whether or not to look up .babelrc and .babelignore files.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--ignore [list]",
|
"--ignore [list]",
|
||||||
"list of glob paths to **not** compile",
|
"List of glob paths to **not** compile.",
|
||||||
collect,
|
collect,
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--only [list]",
|
"--only [list]",
|
||||||
"list of glob paths to **only** compile",
|
"List of glob paths to **only** compile.",
|
||||||
collect,
|
collect,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Misc babel config.
|
// Misc babel config.
|
||||||
commander.option(
|
commander.option(
|
||||||
"--no-highlight-code",
|
"--no-highlight-code",
|
||||||
"enable/disable ANSI syntax highlighting of code frames (on by default)",
|
"Enable or disable ANSI syntax highlighting of code frames. (on by default)",
|
||||||
);
|
);
|
||||||
|
|
||||||
// General output formatting.
|
// General output formatting.
|
||||||
commander.option(
|
commander.option(
|
||||||
"--no-comments",
|
"--no-comments",
|
||||||
"write comments to generated output (true by default)",
|
"Write comments to generated output. (true by default)",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--retain-lines",
|
"--retain-lines",
|
||||||
"retain line numbers - will result in really ugly code",
|
"Retain line numbers. This will result in really ugly code.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--compact [true|false|auto]",
|
"--compact [true|false|auto]",
|
||||||
"do not include superfluous whitespace characters and line terminators",
|
"Do not include superfluous whitespace characters and line terminators.",
|
||||||
booleanify,
|
booleanify,
|
||||||
);
|
);
|
||||||
commander.option("--minified", "save as much bytes when printing [true|false]");
|
commander.option(
|
||||||
|
"--minified [true|false]",
|
||||||
|
"Save as many bytes when printing.",
|
||||||
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--auxiliary-comment-before [string]",
|
"--auxiliary-comment-before [string]",
|
||||||
"print a comment before any injected non-user code",
|
"Print a comment before any injected non-user code.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--auxiliary-comment-after [string]",
|
"--auxiliary-comment-after [string]",
|
||||||
"print a comment after any injected non-user code",
|
"Print a comment after any injected non-user code.",
|
||||||
);
|
);
|
||||||
|
|
||||||
// General source map formatting.
|
// General source map formatting.
|
||||||
commander.option("-s, --source-maps [true|false|inline|both]", "", booleanify);
|
commander.option("-s, --source-maps [true|false|inline|both]", "", booleanify);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--source-map-target [string]",
|
"--source-map-target [string]",
|
||||||
"set `file` on returned source map",
|
"Set `file` on returned source map.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--source-file-name [string]",
|
"--source-file-name [string]",
|
||||||
"set `sources[0]` on returned source map",
|
"Set `sources[0]` on returned source map.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--source-root [filename]",
|
"--source-root [filename]",
|
||||||
"the root from which all sources are relative",
|
"The root from which all sources are relative.",
|
||||||
);
|
);
|
||||||
|
|
||||||
// Config params for certain module output formats.
|
// Config params for certain module output formats.
|
||||||
commander.option(
|
commander.option(
|
||||||
"--module-root [filename]",
|
"--module-root [filename]",
|
||||||
"optional prefix for the AMD module formatter that will be prepend to the filename on module definitions",
|
// eslint-disable-next-line max-len
|
||||||
|
"Optional prefix for the AMD module formatter that will be prepended to the filename on module definitions.",
|
||||||
);
|
);
|
||||||
commander.option("-M, --module-ids", "insert an explicit id for modules");
|
commander.option("-M, --module-ids", "Insert an explicit id for modules.");
|
||||||
commander.option(
|
commander.option(
|
||||||
"--module-id [string]",
|
"--module-id [string]",
|
||||||
"specify a custom name for module ids",
|
"Specify a custom name for module ids.",
|
||||||
);
|
);
|
||||||
|
|
||||||
// "babel" command specific arguments that are not passed to @babel/core.
|
// "babel" command specific arguments that are not passed to @babel/core.
|
||||||
commander.option(
|
commander.option(
|
||||||
"-x, --extensions [extensions]",
|
"-x, --extensions [extensions]",
|
||||||
"List of extensions to compile when a directory has been input [.es6,.js,.es,.jsx,.mjs]",
|
"List of extensions to compile when a directory has been the input. [.es6,.js,.es,.jsx,.mjs]",
|
||||||
collect,
|
collect,
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--keep-file-extension",
|
"--keep-file-extension",
|
||||||
"Preserve the file extensions of the input files",
|
"Preserve the file extensions of the input files.",
|
||||||
);
|
);
|
||||||
commander.option("-w, --watch", "Recompile files on changes");
|
commander.option("-w, --watch", "Recompile files on changes.");
|
||||||
commander.option(
|
commander.option(
|
||||||
"--skip-initial-build",
|
"--skip-initial-build",
|
||||||
"Do not compile files before watching",
|
"Do not compile files before watching.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"-o, --out-file [out]",
|
"-o, --out-file [out]",
|
||||||
"Compile all input files into a single file",
|
"Compile all input files into a single file.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"-d, --out-dir [out]",
|
"-d, --out-dir [out]",
|
||||||
"Compile an input directory of modules into an output directory",
|
"Compile an input directory of modules into an output directory.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--relative",
|
"--relative",
|
||||||
@ -136,22 +142,34 @@ commander.option(
|
|||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"-D, --copy-files",
|
"-D, --copy-files",
|
||||||
"When compiling a directory copy over non-compilable files",
|
"When compiling a directory copy over non-compilable files.",
|
||||||
);
|
);
|
||||||
commander.option(
|
commander.option(
|
||||||
"--include-dotfiles",
|
"--include-dotfiles",
|
||||||
"Include dotfiles when compiling and copying non-compilable files",
|
"Include dotfiles when compiling and copying non-compilable files.",
|
||||||
|
);
|
||||||
|
commander.option(
|
||||||
|
"--verbose",
|
||||||
|
"Log everything. This option conflicts with --quiet",
|
||||||
|
);
|
||||||
|
commander.option(
|
||||||
|
"--quiet",
|
||||||
|
"Don't log anything. This option conflicts with --verbose",
|
||||||
);
|
);
|
||||||
commander.option("--verbose", "Log everything");
|
|
||||||
commander.option(
|
commander.option(
|
||||||
"--delete-dir-on-start",
|
"--delete-dir-on-start",
|
||||||
"Delete the out directory before compilation",
|
"Delete the out directory before compilation.",
|
||||||
);
|
);
|
||||||
|
|
||||||
commander.version(pkg.version + " (@babel/core " + version + ")");
|
commander.version(pkg.version + " (@babel/core " + version + ")");
|
||||||
commander.usage("[options] <files ...>");
|
commander.usage("[options] <files ...>");
|
||||||
|
|
||||||
export default function parseArgv(args: Array<string>) {
|
export type CmdOptions = {
|
||||||
|
babelOptions: Object,
|
||||||
|
cliOptions: Object,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function parseArgv(args: Array<string>): CmdOptions | null {
|
||||||
//
|
//
|
||||||
commander.parse(args);
|
commander.parse(args);
|
||||||
|
|
||||||
@ -200,6 +218,10 @@ export default function parseArgv(args: Array<string>) {
|
|||||||
errors.push("--delete-dir-on-start requires --out-dir");
|
errors.push("--delete-dir-on-start requires --out-dir");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (commander.verbose && commander.quiet) {
|
||||||
|
errors.push("--verbose and --quiet cannot be used together");
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!commander.outDir &&
|
!commander.outDir &&
|
||||||
filenames.length === 0 &&
|
filenames.length === 0 &&
|
||||||
@ -216,7 +238,7 @@ export default function parseArgv(args: Array<string>) {
|
|||||||
errors.forEach(function(e) {
|
errors.forEach(function(e) {
|
||||||
console.error(" " + e);
|
console.error(" " + e);
|
||||||
});
|
});
|
||||||
process.exit(2);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const opts = commander.opts();
|
const opts = commander.opts();
|
||||||
@ -275,6 +297,7 @@ export default function parseArgv(args: Array<string>) {
|
|||||||
copyFiles: opts.copyFiles,
|
copyFiles: opts.copyFiles,
|
||||||
includeDotfiles: opts.includeDotfiles,
|
includeDotfiles: opts.includeDotfiles,
|
||||||
verbose: opts.verbose,
|
verbose: opts.verbose,
|
||||||
|
quiet: opts.quiet,
|
||||||
deleteDirOnStart: opts.deleteDirOnStart,
|
deleteDirOnStart: opts.deleteDirOnStart,
|
||||||
sourceMapTarget: opts.sourceMapTarget,
|
sourceMapTarget: opts.sourceMapTarget,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,10 +1,12 @@
|
|||||||
|
// @flow
|
||||||
|
|
||||||
import readdirRecursive from "fs-readdir-recursive";
|
import readdirRecursive from "fs-readdir-recursive";
|
||||||
import * as babel from "@babel/core";
|
import * as babel from "@babel/core";
|
||||||
import includes from "lodash/includes";
|
import includes from "lodash/includes";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
|
||||||
export function chmod(src, dest) {
|
export function chmod(src: string, dest: string): void {
|
||||||
fs.chmodSync(dest, fs.statSync(src).mode);
|
fs.chmodSync(dest, fs.statSync(src).mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -13,8 +15,8 @@ type ReaddirFilter = (filename: string) => boolean;
|
|||||||
export function readdir(
|
export function readdir(
|
||||||
dirname: string,
|
dirname: string,
|
||||||
includeDotfiles: boolean,
|
includeDotfiles: boolean,
|
||||||
filter: ReaddirFilter,
|
filter?: ReaddirFilter,
|
||||||
) {
|
): Array<string> {
|
||||||
return readdirRecursive(dirname, (filename, _index, currentDirectory) => {
|
return readdirRecursive(dirname, (filename, _index, currentDirectory) => {
|
||||||
const stat = fs.statSync(path.join(currentDirectory, filename));
|
const stat = fs.statSync(path.join(currentDirectory, filename));
|
||||||
|
|
||||||
@ -30,7 +32,7 @@ export function readdirForCompilable(
|
|||||||
dirname: string,
|
dirname: string,
|
||||||
includeDotfiles: boolean,
|
includeDotfiles: boolean,
|
||||||
altExts?: Array<string>,
|
altExts?: Array<string>,
|
||||||
) {
|
): Array<string> {
|
||||||
return readdir(dirname, includeDotfiles, function(filename) {
|
return readdir(dirname, includeDotfiles, function(filename) {
|
||||||
return isCompilableExtension(filename, altExts);
|
return isCompilableExtension(filename, altExts);
|
||||||
});
|
});
|
||||||
@ -48,7 +50,7 @@ export function isCompilableExtension(
|
|||||||
return includes(exts, ext);
|
return includes(exts, ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addSourceMappingUrl(code, loc) {
|
export function addSourceMappingUrl(code: string, loc: string): string {
|
||||||
return code + "\n//# sourceMappingURL=" + path.basename(loc);
|
return code + "\n//# sourceMappingURL=" + path.basename(loc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +58,11 @@ const CALLER = {
|
|||||||
name: "@babel/cli",
|
name: "@babel/cli",
|
||||||
};
|
};
|
||||||
|
|
||||||
export function transform(filename, code, opts) {
|
export function transform(
|
||||||
|
filename: string,
|
||||||
|
code: string,
|
||||||
|
opts: Object,
|
||||||
|
): Promise<Object> {
|
||||||
opts = {
|
opts = {
|
||||||
...opts,
|
...opts,
|
||||||
caller: CALLER,
|
caller: CALLER,
|
||||||
@ -71,7 +77,10 @@ export function transform(filename, code, opts) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function compile(filename, opts) {
|
export function compile(
|
||||||
|
filename: string,
|
||||||
|
opts: Object | Function,
|
||||||
|
): Promise<Object> {
|
||||||
opts = {
|
opts = {
|
||||||
...opts,
|
...opts,
|
||||||
caller: CALLER,
|
caller: CALLER,
|
||||||
@ -85,7 +94,7 @@ export function compile(filename, opts) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteDir(path) {
|
export function deleteDir(path: string): void {
|
||||||
if (fs.existsSync(path)) {
|
if (fs.existsSync(path)) {
|
||||||
fs.readdirSync(path).forEach(function(file) {
|
fs.readdirSync(path).forEach(function(file) {
|
||||||
const curPath = path + "/" + file;
|
const curPath = path + "/" + file;
|
||||||
@ -103,10 +112,10 @@ export function deleteDir(path) {
|
|||||||
|
|
||||||
process.on("uncaughtException", function(err) {
|
process.on("uncaughtException", function(err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
process.exit(1);
|
process.exitCode = 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
export function requireChokidar() {
|
export function requireChokidar(): Object {
|
||||||
try {
|
try {
|
||||||
return require("chokidar");
|
return require("chokidar");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@ -118,7 +127,10 @@ export function requireChokidar() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function adjustRelative(relative, keepFileExtension) {
|
export function adjustRelative(
|
||||||
|
relative: string,
|
||||||
|
keepFileExtension: boolean,
|
||||||
|
): string {
|
||||||
if (keepFileExtension) {
|
if (keepFileExtension) {
|
||||||
return relative;
|
return relative;
|
||||||
}
|
}
|
||||||
|
|||||||
1
packages/babel-cli/test/fixtures/babel/filename --out-file deep/in-files/script.js
vendored
Normal file
1
packages/babel-cli/test/fixtures/babel/filename --out-file deep/in-files/script.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
arr.map(x => x * MULTIPLIER);
|
||||||
3
packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json
vendored
Normal file
3
packages/babel-cli/test/fixtures/babel/filename --out-file deep/options.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"args": ["script.js", "--out-file", "folder/nested/script.js"]
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
arr.map(function (x) {
|
||||||
|
return x * MULTIPLIER;
|
||||||
|
});
|
||||||
5
packages/babel-cli/test/fixtures/babel/stdin --filename windows/options.json
vendored
Normal file
5
packages/babel-cli/test/fixtures/babel/stdin --filename windows/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"args": ["--filename", "test.js"],
|
||||||
|
"stderrContains": true,
|
||||||
|
"os": ["win32"]
|
||||||
|
}
|
||||||
1
packages/babel-cli/test/fixtures/babel/stdin --filename windows/stderr.txt
vendored
Normal file
1
packages/babel-cli/test/fixtures/babel/stdin --filename windows/stderr.txt
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
SyntaxError: <CWD>\test.js: Unexpected token, expected ";" (2:10)
|
||||||
3
packages/babel-cli/test/fixtures/babel/stdin --filename windows/stdin.txt
vendored
Normal file
3
packages/babel-cli/test/fixtures/babel/stdin --filename windows/stdin.txt
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
arr.map(function () {
|
||||||
|
return $]!;
|
||||||
|
});
|
||||||
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
"args": ["--filename", "test.js"],
|
"args": ["--filename", "test.js"],
|
||||||
"stderrContains": true
|
"stderrContains": true,
|
||||||
|
"os": ["linux", "darwin"]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
const readdir = require("fs-readdir-recursive");
|
const readdir = require("fs-readdir-recursive");
|
||||||
const helper = require("@babel/helper-fixtures");
|
const helper = require("@babel/helper-fixtures");
|
||||||
const rimraf = require("rimraf");
|
const rimraf = require("rimraf");
|
||||||
const outputFileSync = require("output-file-sync");
|
const { sync: makeDirSync } = require("make-dir");
|
||||||
const child = require("child_process");
|
const child = require("child_process");
|
||||||
const merge = require("lodash/merge");
|
const merge = require("lodash/merge");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
@ -14,6 +14,11 @@ const fileFilter = function(x) {
|
|||||||
return x !== ".DS_Store";
|
return x !== ".DS_Store";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const outputFileSync = function(filePath, data) {
|
||||||
|
makeDirSync(path.dirname(filePath));
|
||||||
|
fs.writeFileSync(filePath, data);
|
||||||
|
};
|
||||||
|
|
||||||
const presetLocs = [path.join(__dirname, "../../babel-preset-react")];
|
const presetLocs = [path.join(__dirname, "../../babel-preset-react")];
|
||||||
|
|
||||||
const pluginLocs = [
|
const pluginLocs = [
|
||||||
@ -86,13 +91,13 @@ const assertTest = function(stdout, stderr, opts, cwd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (opts.outFiles) {
|
if (opts.outFiles) {
|
||||||
const actualFiles = readDir(path.join(tmpLoc), fileFilter);
|
const actualFiles = readDir(tmpLoc, fileFilter);
|
||||||
|
|
||||||
Object.keys(actualFiles).forEach(function(filename) {
|
Object.keys(actualFiles).forEach(function(filename) {
|
||||||
if (
|
if (
|
||||||
// saveInFiles always creates an empty .babelrc, so lets exclude for now
|
// saveInFiles always creates an empty .babelrc, so lets exclude for now
|
||||||
filename !== ".babelrc" &&
|
filename !== ".babelrc" &&
|
||||||
!opts.inFiles.hasOwnProperty(filename)
|
!Object.prototype.hasOwnProperty.call(opts.inFiles, filename)
|
||||||
) {
|
) {
|
||||||
const expected = opts.outFiles[filename];
|
const expected = opts.outFiles[filename];
|
||||||
const actual = actualFiles[filename];
|
const actual = actualFiles[filename];
|
||||||
@ -115,13 +120,6 @@ const buildTest = function(binName, testName, opts) {
|
|||||||
const binLoc = path.join(__dirname, "../lib", binName);
|
const binLoc = path.join(__dirname, "../lib", binName);
|
||||||
|
|
||||||
return function(callback) {
|
return function(callback) {
|
||||||
const dir = process.cwd();
|
|
||||||
|
|
||||||
process.chdir(__dirname);
|
|
||||||
if (fs.existsSync(tmpLoc)) rimraf.sync(tmpLoc);
|
|
||||||
fs.mkdirSync(tmpLoc);
|
|
||||||
process.chdir(tmpLoc);
|
|
||||||
|
|
||||||
saveInFiles(opts.inFiles);
|
saveInFiles(opts.inFiles);
|
||||||
|
|
||||||
let args = [binLoc];
|
let args = [binLoc];
|
||||||
@ -159,7 +157,6 @@ const buildTest = function(binName, testName, opts) {
|
|||||||
args.map(arg => `"${arg}"`).join(" ") + ": " + err.message;
|
args.map(arg => `"${arg}"`).join(" ") + ": " + err.message;
|
||||||
}
|
}
|
||||||
|
|
||||||
process.chdir(dir);
|
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -171,12 +168,32 @@ const buildTest = function(binName, testName, opts) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
fs.readdirSync(fixtureLoc).forEach(function(binName) {
|
fs.readdirSync(fixtureLoc).forEach(function(binName) {
|
||||||
if (binName[0] === ".") return;
|
if (binName.startsWith(".")) return;
|
||||||
|
|
||||||
const suiteLoc = path.join(fixtureLoc, binName);
|
const suiteLoc = path.join(fixtureLoc, binName);
|
||||||
describe("bin/" + binName, function() {
|
describe("bin/" + binName, function() {
|
||||||
|
let cwd;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cwd = process.cwd();
|
||||||
|
|
||||||
|
if (fs.existsSync(tmpLoc)) {
|
||||||
|
for (const child of fs.readdirSync(tmpLoc)) {
|
||||||
|
rimraf.sync(path.join(tmpLoc, child));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fs.mkdirSync(tmpLoc);
|
||||||
|
}
|
||||||
|
|
||||||
|
process.chdir(tmpLoc);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
process.chdir(cwd);
|
||||||
|
});
|
||||||
|
|
||||||
fs.readdirSync(suiteLoc).forEach(function(testName) {
|
fs.readdirSync(suiteLoc).forEach(function(testName) {
|
||||||
if (testName[0] === ".") return;
|
if (testName.startsWith(".")) return;
|
||||||
|
|
||||||
const testLoc = path.join(suiteLoc, testName);
|
const testLoc = path.join(suiteLoc, testName);
|
||||||
|
|
||||||
@ -185,7 +202,29 @@ fs.readdirSync(fixtureLoc).forEach(function(binName) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const optionsLoc = path.join(testLoc, "options.json");
|
const optionsLoc = path.join(testLoc, "options.json");
|
||||||
if (fs.existsSync(optionsLoc)) merge(opts, require(optionsLoc));
|
if (fs.existsSync(optionsLoc)) {
|
||||||
|
const taskOpts = require(optionsLoc);
|
||||||
|
if (taskOpts.os) {
|
||||||
|
let os = taskOpts.os;
|
||||||
|
|
||||||
|
if (!Array.isArray(os) && typeof os !== "string") {
|
||||||
|
throw new Error(
|
||||||
|
`'os' should be either string or string array: ${taskOpts.os}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof os === "string") {
|
||||||
|
os = [os];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!os.includes(process.platform)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
delete taskOpts.os;
|
||||||
|
}
|
||||||
|
merge(opts, taskOpts);
|
||||||
|
}
|
||||||
|
|
||||||
["stdout", "stdin", "stderr"].forEach(function(key) {
|
["stdout", "stdin", "stderr"].forEach(function(key) {
|
||||||
const loc = path.join(testLoc, key + ".txt");
|
const loc = path.join(testLoc, key + ".txt");
|
||||||
@ -205,7 +244,7 @@ fs.readdirSync(fixtureLoc).forEach(function(binName) {
|
|||||||
opts.inFiles[".babelrc"] = helper.readFile(babelrcLoc);
|
opts.inFiles[".babelrc"] = helper.readFile(babelrcLoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
it(testName, buildTest(binName, testName, opts));
|
it(testName, buildTest(binName, testName, opts), 20000);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@babel/code-frame",
|
"name": "@babel/code-frame",
|
||||||
"version": "7.0.0",
|
"version": "7.5.5",
|
||||||
"description": "Generate errors that contain a code frame that point to source locations.",
|
"description": "Generate errors that contain a code frame that point to source locations.",
|
||||||
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
||||||
"homepage": "https://babeljs.io/",
|
"homepage": "https://babeljs.io/",
|
||||||
|
|||||||
@ -76,7 +76,7 @@ function getMarkerLines(
|
|||||||
} else if (i === 0) {
|
} else if (i === 0) {
|
||||||
const sourceLength = source[lineNumber - 1].length;
|
const sourceLength = source[lineNumber - 1].length;
|
||||||
|
|
||||||
markerLines[lineNumber] = [startColumn, sourceLength - startColumn];
|
markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
|
||||||
} else if (i === lineDiff) {
|
} else if (i === lineDiff) {
|
||||||
markerLines[lineNumber] = [0, endColumn];
|
markerLines[lineNumber] = [0, endColumn];
|
||||||
} else {
|
} else {
|
||||||
@ -112,15 +112,16 @@ export function codeFrameColumns(
|
|||||||
const maybeHighlight = (chalkFn, string) => {
|
const maybeHighlight = (chalkFn, string) => {
|
||||||
return highlighted ? chalkFn(string) : string;
|
return highlighted ? chalkFn(string) : string;
|
||||||
};
|
};
|
||||||
if (highlighted) rawLines = highlight(rawLines, opts);
|
|
||||||
|
|
||||||
const lines = rawLines.split(NEWLINE);
|
const lines = rawLines.split(NEWLINE);
|
||||||
const { start, end, markerLines } = getMarkerLines(loc, lines, opts);
|
const { start, end, markerLines } = getMarkerLines(loc, lines, opts);
|
||||||
const hasColumns = loc.start && typeof loc.start.column === "number";
|
const hasColumns = loc.start && typeof loc.start.column === "number";
|
||||||
|
|
||||||
const numberMaxWidth = String(end).length;
|
const numberMaxWidth = String(end).length;
|
||||||
|
|
||||||
let frame = lines
|
const highlightedLines = highlighted ? highlight(rawLines, opts) : rawLines;
|
||||||
|
|
||||||
|
let frame = highlightedLines
|
||||||
|
.split(NEWLINE)
|
||||||
.slice(start, end)
|
.slice(start, end)
|
||||||
.map((line, index) => {
|
.map((line, index) => {
|
||||||
const number = start + 1 + index;
|
const number = start + 1 + index;
|
||||||
|
|||||||
@ -102,6 +102,45 @@ describe("@babel/code-frame", function() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("opts.highlightCode with multiple columns and lines", function() {
|
||||||
|
// prettier-ignore
|
||||||
|
const rawLines = [
|
||||||
|
"function a(b, c) {",
|
||||||
|
" return b + c;",
|
||||||
|
"}"
|
||||||
|
].join("\n");
|
||||||
|
|
||||||
|
const result = codeFrameColumns(
|
||||||
|
rawLines,
|
||||||
|
{
|
||||||
|
start: {
|
||||||
|
line: 1,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
end: {
|
||||||
|
line: 3,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
highlightCode: true,
|
||||||
|
message: "Message about things",
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const stripped = stripAnsi(result);
|
||||||
|
expect(stripped).toEqual(
|
||||||
|
// prettier-ignore
|
||||||
|
[
|
||||||
|
"> 1 | function a(b, c) {",
|
||||||
|
" | ^^^^^^^^^^^^^^^^^^",
|
||||||
|
"> 2 | return b + c;",
|
||||||
|
" | ^^^^^^^^^^^^^^^",
|
||||||
|
"> 3 | }",
|
||||||
|
" | ^ Message about things",
|
||||||
|
].join('\n'),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test("opts.linesAbove", function() {
|
test("opts.linesAbove", function() {
|
||||||
const rawLines = [
|
const rawLines = [
|
||||||
"/**",
|
"/**",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@babel/core",
|
"name": "@babel/core",
|
||||||
"version": "7.4.4",
|
"version": "7.7.2",
|
||||||
"description": "Babel compiler core.",
|
"description": "Babel compiler core.",
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
||||||
@ -33,23 +33,22 @@
|
|||||||
"./lib/transform-file.js": "./lib/transform-file-browser.js"
|
"./lib/transform-file.js": "./lib/transform-file-browser.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.0.0",
|
"@babel/code-frame": "^7.5.5",
|
||||||
"@babel/generator": "^7.4.4",
|
"@babel/generator": "^7.7.2",
|
||||||
"@babel/helpers": "^7.4.4",
|
"@babel/helpers": "^7.7.0",
|
||||||
"@babel/parser": "^7.4.4",
|
"@babel/parser": "^7.7.2",
|
||||||
"@babel/template": "^7.4.4",
|
"@babel/template": "^7.7.0",
|
||||||
"@babel/traverse": "^7.4.4",
|
"@babel/traverse": "^7.7.2",
|
||||||
"@babel/types": "^7.4.4",
|
"@babel/types": "^7.7.2",
|
||||||
"convert-source-map": "^1.1.0",
|
"convert-source-map": "^1.7.0",
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.1.0",
|
||||||
"json5": "^2.1.0",
|
"json5": "^2.1.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.13",
|
||||||
"resolve": "^1.3.2",
|
"resolve": "^1.3.2",
|
||||||
"semver": "^5.4.1",
|
"semver": "^5.4.1",
|
||||||
"source-map": "^0.5.0"
|
"source-map": "^0.5.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/helper-transform-fixture-test-runner": "^7.4.4",
|
"@babel/helper-transform-fixture-test-runner": "^7.6.4"
|
||||||
"@babel/register": "^7.4.4"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -268,13 +268,11 @@ function babelrcLoadEnabled(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const validateConfigFile = makeWeakCache(
|
const validateConfigFile = makeWeakCache((file: ConfigFile): ValidatedFile => ({
|
||||||
(file: ConfigFile): ValidatedFile => ({
|
|
||||||
filepath: file.filepath,
|
filepath: file.filepath,
|
||||||
dirname: file.dirname,
|
dirname: file.dirname,
|
||||||
options: validate("configfile", file.options),
|
options: validate("configfile", file.options),
|
||||||
}),
|
}));
|
||||||
);
|
|
||||||
|
|
||||||
const validateBabelrcFile = makeWeakCache(
|
const validateBabelrcFile = makeWeakCache(
|
||||||
(file: ConfigFile): ValidatedFile => ({
|
(file: ConfigFile): ValidatedFile => ({
|
||||||
@ -284,13 +282,11 @@ const validateBabelrcFile = makeWeakCache(
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
const validateExtendFile = makeWeakCache(
|
const validateExtendFile = makeWeakCache((file: ConfigFile): ValidatedFile => ({
|
||||||
(file: ConfigFile): ValidatedFile => ({
|
|
||||||
filepath: file.filepath,
|
filepath: file.filepath,
|
||||||
dirname: file.dirname,
|
dirname: file.dirname,
|
||||||
options: validate("extendsfile", file.options),
|
options: validate("extendsfile", file.options),
|
||||||
}),
|
}));
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build a config chain for just the programmatic options passed into Babel.
|
* Build a config chain for just the programmatic options passed into Babel.
|
||||||
@ -549,7 +545,7 @@ function normalizeOptions(opts: ValidatedOptions): ValidatedOptions {
|
|||||||
|
|
||||||
// "sourceMap" is just aliased to sourceMap, so copy it over as
|
// "sourceMap" is just aliased to sourceMap, so copy it over as
|
||||||
// we merge the options together.
|
// we merge the options together.
|
||||||
if (options.hasOwnProperty("sourceMap")) {
|
if (Object.prototype.hasOwnProperty.call(options, "sourceMap")) {
|
||||||
options.sourceMaps = options.sourceMap;
|
options.sourceMaps = options.sourceMap;
|
||||||
delete options.sourceMap;
|
delete options.sourceMap;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -345,6 +345,7 @@ function assertNoDuplicates(items: Array<UnloadedDescriptor>): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (nameMap.has(item.name)) {
|
if (nameMap.has(item.name)) {
|
||||||
|
const conflicts = items.filter(i => i.value === item.value);
|
||||||
throw new Error(
|
throw new Error(
|
||||||
[
|
[
|
||||||
`Duplicate plugin/preset detected.`,
|
`Duplicate plugin/preset detected.`,
|
||||||
@ -355,6 +356,9 @@ function assertNoDuplicates(items: Array<UnloadedDescriptor>): void {
|
|||||||
` ['some-plugin', {}],`,
|
` ['some-plugin', {}],`,
|
||||||
` ['some-plugin', {}, 'some unique name'],`,
|
` ['some-plugin', {}, 'some unique name'],`,
|
||||||
` ]`,
|
` ]`,
|
||||||
|
``,
|
||||||
|
`Duplicates detected are:`,
|
||||||
|
`${JSON.stringify(conflicts, null, 2)}`,
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,18 +18,22 @@ import type { CallerMetadata } from "../validation/options";
|
|||||||
|
|
||||||
const debug = buildDebug("babel:config:loading:files:configuration");
|
const debug = buildDebug("babel:config:loading:files:configuration");
|
||||||
|
|
||||||
const BABEL_CONFIG_JS_FILENAME = "babel.config.js";
|
const ROOT_CONFIG_FILENAMES = [
|
||||||
|
"babel.config.js",
|
||||||
|
"babel.config.cjs",
|
||||||
|
"babel.config.json",
|
||||||
|
];
|
||||||
|
const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs"];
|
||||||
|
|
||||||
const BABELRC_FILENAME = ".babelrc";
|
|
||||||
const BABELRC_JS_FILENAME = ".babelrc.js";
|
|
||||||
const BABELIGNORE_FILENAME = ".babelignore";
|
const BABELIGNORE_FILENAME = ".babelignore";
|
||||||
|
|
||||||
export function findConfigUpwards(rootDir: string): string | null {
|
export function findConfigUpwards(rootDir: string): string | null {
|
||||||
let dirname = rootDir;
|
let dirname = rootDir;
|
||||||
while (true) {
|
while (true) {
|
||||||
if (fs.existsSync(path.join(dirname, BABEL_CONFIG_JS_FILENAME))) {
|
const configFileFound = ROOT_CONFIG_FILENAMES.some(filename =>
|
||||||
return dirname;
|
fs.existsSync(path.join(dirname, filename)),
|
||||||
}
|
);
|
||||||
|
if (configFileFound) return dirname;
|
||||||
|
|
||||||
const nextDir = path.dirname(dirname);
|
const nextDir = path.dirname(dirname);
|
||||||
if (dirname === nextDir) break;
|
if (dirname === nextDir) break;
|
||||||
@ -51,46 +55,16 @@ export function findRelativeConfig(
|
|||||||
|
|
||||||
for (const loc of packageData.directories) {
|
for (const loc of packageData.directories) {
|
||||||
if (!config) {
|
if (!config) {
|
||||||
config = [BABELRC_FILENAME, BABELRC_JS_FILENAME].reduce(
|
config = loadOneConfig(
|
||||||
(previousConfig: ConfigFile | null, name) => {
|
RELATIVE_CONFIG_FILENAMES,
|
||||||
const filepath = path.join(loc, name);
|
loc,
|
||||||
const config = readConfig(filepath, envName, caller);
|
envName,
|
||||||
|
caller,
|
||||||
if (config && previousConfig) {
|
|
||||||
throw new Error(
|
|
||||||
`Multiple configuration files found. Please remove one:\n` +
|
|
||||||
` - ${path.basename(previousConfig.filepath)}\n` +
|
|
||||||
` - ${name}\n` +
|
|
||||||
`from ${loc}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return config || previousConfig;
|
|
||||||
},
|
|
||||||
null,
|
|
||||||
);
|
|
||||||
|
|
||||||
const pkgConfig =
|
|
||||||
packageData.pkg && packageData.pkg.dirname === loc
|
packageData.pkg && packageData.pkg.dirname === loc
|
||||||
? packageToBabelConfig(packageData.pkg)
|
? packageToBabelConfig(packageData.pkg)
|
||||||
: null;
|
: null,
|
||||||
|
|
||||||
if (pkgConfig) {
|
|
||||||
if (config) {
|
|
||||||
throw new Error(
|
|
||||||
`Multiple configuration files found. Please remove one:\n` +
|
|
||||||
` - ${path.basename(pkgConfig.filepath)}#babel\n` +
|
|
||||||
` - ${path.basename(config.filepath)}\n` +
|
|
||||||
`from ${loc}`,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
config = pkgConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config) {
|
|
||||||
debug("Found configuration %o from %o.", config.filepath, dirname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ignore) {
|
if (!ignore) {
|
||||||
const ignoreLoc = path.join(loc, BABELIGNORE_FILENAME);
|
const ignoreLoc = path.join(loc, BABELIGNORE_FILENAME);
|
||||||
@ -110,13 +84,36 @@ export function findRootConfig(
|
|||||||
envName: string,
|
envName: string,
|
||||||
caller: CallerMetadata | void,
|
caller: CallerMetadata | void,
|
||||||
): ConfigFile | null {
|
): ConfigFile | null {
|
||||||
const filepath = path.resolve(dirname, BABEL_CONFIG_JS_FILENAME);
|
return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller);
|
||||||
|
|
||||||
const conf = readConfig(filepath, envName, caller);
|
|
||||||
if (conf) {
|
|
||||||
debug("Found root config %o in $o.", BABEL_CONFIG_JS_FILENAME, dirname);
|
|
||||||
}
|
}
|
||||||
return conf;
|
|
||||||
|
function loadOneConfig(
|
||||||
|
names: string[],
|
||||||
|
dirname: string,
|
||||||
|
envName: string,
|
||||||
|
caller: CallerMetadata | void,
|
||||||
|
previousConfig?: ConfigFile | null = null,
|
||||||
|
): ConfigFile | null {
|
||||||
|
const config = names.reduce((previousConfig: ConfigFile | null, name) => {
|
||||||
|
const filepath = path.resolve(dirname, name);
|
||||||
|
const config = readConfig(filepath, envName, caller);
|
||||||
|
|
||||||
|
if (config && previousConfig) {
|
||||||
|
throw new Error(
|
||||||
|
`Multiple configuration files found. Please remove one:\n` +
|
||||||
|
` - ${path.basename(previousConfig.filepath)}\n` +
|
||||||
|
` - ${name}\n` +
|
||||||
|
`from ${dirname}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return config || previousConfig;
|
||||||
|
}, previousConfig);
|
||||||
|
|
||||||
|
if (config) {
|
||||||
|
debug("Found configuration %o from %o.", config.filepath, dirname);
|
||||||
|
}
|
||||||
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function loadConfig(
|
export function loadConfig(
|
||||||
@ -132,7 +129,7 @@ export function loadConfig(
|
|||||||
throw new Error(`Config file ${filepath} contains no configuration data`);
|
throw new Error(`Config file ${filepath} contains no configuration data`);
|
||||||
}
|
}
|
||||||
|
|
||||||
debug("Loaded config %o from $o.", name, dirname);
|
debug("Loaded config %o from %o.", name, dirname);
|
||||||
return conf;
|
return conf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +138,8 @@ export function loadConfig(
|
|||||||
* throw if there are parsing errors while loading a config.
|
* throw if there are parsing errors while loading a config.
|
||||||
*/
|
*/
|
||||||
function readConfig(filepath, envName, caller): ConfigFile | null {
|
function readConfig(filepath, envName, caller): ConfigFile | null {
|
||||||
return path.extname(filepath) === ".js"
|
const ext = path.extname(filepath);
|
||||||
|
return ext === ".js" || ext === ".cjs"
|
||||||
? readConfigJS(filepath, { envName, caller })
|
? readConfigJS(filepath, { envName, caller })
|
||||||
: readConfigJSON5(filepath);
|
: readConfigJSON5(filepath);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,7 @@ import { validatePluginObject } from "./validation/plugins";
|
|||||||
import makeAPI from "./helpers/config-api";
|
import makeAPI from "./helpers/config-api";
|
||||||
|
|
||||||
import loadPrivatePartialConfig from "./partial";
|
import loadPrivatePartialConfig from "./partial";
|
||||||
|
import type { ValidatedOptions } from "./validation/options";
|
||||||
|
|
||||||
type LoadedDescriptor = {
|
type LoadedDescriptor = {
|
||||||
value: {},
|
value: {},
|
||||||
@ -278,6 +279,42 @@ const instantiatePlugin = makeWeakCache(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const validateIfOptionNeedsFilename = (
|
||||||
|
options: ValidatedOptions,
|
||||||
|
descriptor: UnloadedDescriptor,
|
||||||
|
): void => {
|
||||||
|
if (options.test || options.include || options.exclude) {
|
||||||
|
const formattedPresetName = descriptor.name
|
||||||
|
? `"${descriptor.name}"`
|
||||||
|
: "/* your preset */";
|
||||||
|
throw new Error(
|
||||||
|
[
|
||||||
|
`Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`,
|
||||||
|
`\`\`\``,
|
||||||
|
`babel.transform(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`,
|
||||||
|
`\`\`\``,
|
||||||
|
`See https://babeljs.io/docs/en/options#filename for more information.`,
|
||||||
|
].join("\n"),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const validatePreset = (
|
||||||
|
preset: PresetInstance,
|
||||||
|
context: ConfigContext,
|
||||||
|
descriptor: UnloadedDescriptor,
|
||||||
|
): void => {
|
||||||
|
if (!context.filename) {
|
||||||
|
const { options } = preset;
|
||||||
|
validateIfOptionNeedsFilename(options, descriptor);
|
||||||
|
if (options.overrides) {
|
||||||
|
options.overrides.forEach(overrideOptions =>
|
||||||
|
validateIfOptionNeedsFilename(overrideOptions, descriptor),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a config object that will act as the root of a new nested config.
|
* Generate a config object that will act as the root of a new nested config.
|
||||||
*/
|
*/
|
||||||
@ -285,10 +322,9 @@ const loadPresetDescriptor = (
|
|||||||
descriptor: UnloadedDescriptor,
|
descriptor: UnloadedDescriptor,
|
||||||
context: ConfigContext,
|
context: ConfigContext,
|
||||||
): ConfigChain | null => {
|
): ConfigChain | null => {
|
||||||
return buildPresetChain(
|
const preset = instantiatePreset(loadDescriptor(descriptor, context));
|
||||||
instantiatePreset(loadDescriptor(descriptor, context)),
|
validatePreset(preset, context, descriptor);
|
||||||
context,
|
return buildPresetChain(preset, context);
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const instantiatePreset = makeWeakCache(
|
const instantiatePreset = makeWeakCache(
|
||||||
|
|||||||
@ -70,7 +70,7 @@ function assertVersion(range: string | number): void {
|
|||||||
throw new Error("Expected string or integer value.");
|
throw new Error("Expected string or integer value.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (semver.satisfies(coreVersion, range)) return;
|
if (semver.satisfies(semver.coerce(coreVersion).raw, range)) return;
|
||||||
|
|
||||||
const limit = Error.stackTraceLimit;
|
const limit = Error.stackTraceLimit;
|
||||||
|
|
||||||
|
|||||||
@ -231,7 +231,7 @@ function assertIgnoreItem(loc: GeneralPath, value: mixed): IgnoreItem {
|
|||||||
throw new Error(
|
throw new Error(
|
||||||
`${msg(
|
`${msg(
|
||||||
loc,
|
loc,
|
||||||
)} must be an array of string/Funtion/RegExp values, or undefined`,
|
)} must be an array of string/Function/RegExp values, or undefined`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
@ -278,7 +278,7 @@ export function assertConfigFileSearch(
|
|||||||
) {
|
) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`${msg(loc)} must be a undefined, a boolean, a string, ` +
|
`${msg(loc)} must be a undefined, a boolean, a string, ` +
|
||||||
`got ${JSON.stringify(value)}`,
|
`got ${JSON.stringify((value: any))}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,7 +302,7 @@ export function assertBabelrcSearch(
|
|||||||
} else if (!checkValidTest(value)) {
|
} else if (!checkValidTest(value)) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` +
|
`${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` +
|
||||||
`or an array of those, got ${JSON.stringify(value)}`,
|
`or an array of those, got ${JSON.stringify((value: any))}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return (value: any);
|
return (value: any);
|
||||||
@ -337,7 +337,7 @@ function assertPluginItem(loc: GeneralPath, value: mixed): PluginItem {
|
|||||||
if (
|
if (
|
||||||
opts !== undefined &&
|
opts !== undefined &&
|
||||||
opts !== false &&
|
opts !== false &&
|
||||||
(typeof opts !== "object" || Array.isArray(opts))
|
(typeof opts !== "object" || Array.isArray(opts) || opts === null)
|
||||||
) {
|
) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`${msg(access(loc, 1))} must be an object, false, or undefined`,
|
`${msg(access(loc, 1))} must be an object, false, or undefined`,
|
||||||
|
|||||||
@ -272,7 +272,8 @@ export type OptionsSource =
|
|||||||
| "configfile"
|
| "configfile"
|
||||||
| "babelrcfile"
|
| "babelrcfile"
|
||||||
| "extendsfile"
|
| "extendsfile"
|
||||||
| "preset";
|
| "preset"
|
||||||
|
| "plugin";
|
||||||
|
|
||||||
type RootPath = $ReadOnly<{
|
type RootPath = $ReadOnly<{
|
||||||
type: "root",
|
type: "root",
|
||||||
|
|||||||
@ -84,10 +84,19 @@ export type PluginObject = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export function validatePluginObject(obj: {}): PluginObject {
|
export function validatePluginObject(obj: {}): PluginObject {
|
||||||
|
const rootPath: RootPath = {
|
||||||
|
type: "root",
|
||||||
|
source: "plugin",
|
||||||
|
};
|
||||||
Object.keys(obj).forEach(key => {
|
Object.keys(obj).forEach(key => {
|
||||||
const validator = VALIDATORS[key];
|
const validator = VALIDATORS[key];
|
||||||
|
const optLoc = {
|
||||||
|
type: "option",
|
||||||
|
name: key,
|
||||||
|
parent: rootPath,
|
||||||
|
};
|
||||||
|
|
||||||
if (validator) validator(key, obj[key]);
|
if (validator) validator(optLoc, obj[key]);
|
||||||
else throw new Error(`.${key} is not a valid Plugin property`);
|
else throw new Error(`.${key} is not a valid Plugin property`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,17 @@ const errorVisitor = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type NodeLocation = {
|
||||||
|
loc?: {
|
||||||
|
end?: { line: number, column: number },
|
||||||
|
start: { line: number, column: number },
|
||||||
|
},
|
||||||
|
_loc?: {
|
||||||
|
end?: { line: number, column: number },
|
||||||
|
start: { line: number, column: number },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
export default class File {
|
export default class File {
|
||||||
_map: Map<any, any> = new Map();
|
_map: Map<any, any> = new Map();
|
||||||
opts: Object;
|
opts: Object;
|
||||||
@ -183,7 +194,7 @@ export default class File {
|
|||||||
// and this fails because a prerelease version can only satisfy a range
|
// and this fails because a prerelease version can only satisfy a range
|
||||||
// if it is a prerelease within the same major/minor/patch range.
|
// if it is a prerelease within the same major/minor/patch range.
|
||||||
//
|
//
|
||||||
// Note: If this is found to have issues, please also revist the logic in
|
// Note: If this is found to have issues, please also revisit the logic in
|
||||||
// transform-runtime's definitions.js file.
|
// transform-runtime's definitions.js file.
|
||||||
if (semver.valid(versionRange)) versionRange = `^${versionRange}`;
|
if (semver.valid(versionRange)) versionRange = `^${versionRange}`;
|
||||||
|
|
||||||
@ -203,6 +214,9 @@ export default class File {
|
|||||||
if (res) return res;
|
if (res) return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// make sure that the helper exists
|
||||||
|
helpers.ensure(name);
|
||||||
|
|
||||||
const uid = (this.declarations[name] = this.scope.generateUidIdentifier(
|
const uid = (this.declarations[name] = this.scope.generateUidIdentifier(
|
||||||
name,
|
name,
|
||||||
));
|
));
|
||||||
@ -247,17 +261,12 @@ export default class File {
|
|||||||
}
|
}
|
||||||
|
|
||||||
buildCodeFrameError(
|
buildCodeFrameError(
|
||||||
node: ?{
|
node: ?NodeLocation,
|
||||||
loc?: { start: { line: number, column: number } },
|
|
||||||
_loc?: { start: { line: number, column: number } },
|
|
||||||
},
|
|
||||||
msg: string,
|
msg: string,
|
||||||
Error: typeof Error = SyntaxError,
|
Error: typeof Error = SyntaxError,
|
||||||
): Error {
|
): Error {
|
||||||
let loc = node && (node.loc || node._loc);
|
let loc = node && (node.loc || node._loc);
|
||||||
|
|
||||||
msg = `${this.opts.filename}: ${msg}`;
|
|
||||||
|
|
||||||
if (!loc && node) {
|
if (!loc && node) {
|
||||||
const state = {
|
const state = {
|
||||||
loc: null,
|
loc: null,
|
||||||
@ -284,6 +293,13 @@ export default class File {
|
|||||||
line: loc.start.line,
|
line: loc.start.line,
|
||||||
column: loc.start.column + 1,
|
column: loc.start.column + 1,
|
||||||
},
|
},
|
||||||
|
end:
|
||||||
|
loc.end && loc.start.line === loc.end.line
|
||||||
|
? {
|
||||||
|
line: loc.end.line,
|
||||||
|
column: loc.end.column + 1,
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
},
|
},
|
||||||
{ highlightCode },
|
{ highlightCode },
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
// @flow
|
// @flow
|
||||||
|
|
||||||
import type { PluginPasses } from "../../config";
|
import type { PluginPasses } from "../../config";
|
||||||
import convertSourceMap, { type SourceMap } from "convert-source-map";
|
import convertSourceMap, { typeof SourceMap } from "convert-source-map";
|
||||||
import generate from "@babel/generator";
|
import generate from "@babel/generator";
|
||||||
|
|
||||||
import type File from "./file";
|
import type File from "./file";
|
||||||
@ -41,7 +41,7 @@ export default function generateCode(
|
|||||||
|
|
||||||
if (typeof result.then === "function") {
|
if (typeof result.then === "function") {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`You appear to be using an async parser plugin, ` +
|
`You appear to be using an async codegen plugin, ` +
|
||||||
`which your current version of Babel does not support. ` +
|
`which your current version of Babel does not support. ` +
|
||||||
`If you're using a published plugin, ` +
|
`If you're using a published plugin, ` +
|
||||||
`you may need to upgrade your @babel/core version.`,
|
`you may need to upgrade your @babel/core version.`,
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// @flow
|
// @flow
|
||||||
|
|
||||||
import type { SourceMap } from "convert-source-map";
|
import typeof { SourceMap } from "convert-source-map";
|
||||||
import sourceMap from "source-map";
|
import sourceMap from "source-map";
|
||||||
|
|
||||||
export default function mergeSourceMap(
|
export default function mergeSourceMap(
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// @flow
|
// @flow
|
||||||
import traverse from "@babel/traverse";
|
import traverse from "@babel/traverse";
|
||||||
import type { SourceMap } from "convert-source-map";
|
import typeof { SourceMap } from "convert-source-map";
|
||||||
|
|
||||||
import type { ResolvedConfig, PluginPasses } from "../config";
|
import type { ResolvedConfig, PluginPasses } from "../config";
|
||||||
|
|
||||||
@ -55,11 +55,29 @@ export function runSync(
|
|||||||
ast,
|
ast,
|
||||||
);
|
);
|
||||||
|
|
||||||
transformFile(file, config.passes);
|
|
||||||
|
|
||||||
const opts = file.opts;
|
const opts = file.opts;
|
||||||
const { outputCode, outputMap } =
|
try {
|
||||||
opts.code !== false ? generateCode(config.passes, file) : {};
|
transformFile(file, config.passes);
|
||||||
|
} catch (e) {
|
||||||
|
e.message = `${opts.filename ?? "unknown"}: ${e.message}`;
|
||||||
|
if (!e.code) {
|
||||||
|
e.code = "BABEL_TRANSFORM_ERROR";
|
||||||
|
}
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
|
||||||
|
let outputCode, outputMap;
|
||||||
|
try {
|
||||||
|
if (opts.code !== false) {
|
||||||
|
({ outputCode, outputMap } = generateCode(config.passes, file));
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
e.message = `${opts.filename ?? "unknown"}: ${e.message}`;
|
||||||
|
if (!e.code) {
|
||||||
|
e.code = "BABEL_GENERATE_ERROR";
|
||||||
|
}
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
metadata: file.metadata,
|
metadata: file.metadata,
|
||||||
|
|||||||
@ -27,49 +27,6 @@ export default function normalizeFile(
|
|||||||
): File {
|
): File {
|
||||||
code = `${code || ""}`;
|
code = `${code || ""}`;
|
||||||
|
|
||||||
let inputMap = null;
|
|
||||||
if (options.inputSourceMap !== false) {
|
|
||||||
// If an explicit object is passed in, it overrides the processing of
|
|
||||||
// source maps that may be in the file itself.
|
|
||||||
if (typeof options.inputSourceMap === "object") {
|
|
||||||
inputMap = convertSourceMap.fromObject(options.inputSourceMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!inputMap) {
|
|
||||||
try {
|
|
||||||
inputMap = convertSourceMap.fromSource(code);
|
|
||||||
|
|
||||||
if (inputMap) {
|
|
||||||
code = convertSourceMap.removeComments(code);
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
debug("discarding unknown inline input sourcemap", err);
|
|
||||||
code = convertSourceMap.removeComments(code);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!inputMap) {
|
|
||||||
if (typeof options.filename === "string") {
|
|
||||||
try {
|
|
||||||
inputMap = convertSourceMap.fromMapFileSource(
|
|
||||||
code,
|
|
||||||
path.dirname(options.filename),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (inputMap) {
|
|
||||||
code = convertSourceMap.removeMapFileComments(code);
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
debug("discarding unknown file input sourcemap", err);
|
|
||||||
code = convertSourceMap.removeMapFileComments(code);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
debug("discarding un-loadable file input sourcemap");
|
|
||||||
code = convertSourceMap.removeMapFileComments(code);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ast) {
|
if (ast) {
|
||||||
if (ast.type === "Program") {
|
if (ast.type === "Program") {
|
||||||
ast = t.file(ast, [], []);
|
ast = t.file(ast, [], []);
|
||||||
@ -84,6 +41,43 @@ export default function normalizeFile(
|
|||||||
ast = parser(pluginPasses, options, code);
|
ast = parser(pluginPasses, options, code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let inputMap = null;
|
||||||
|
if (options.inputSourceMap !== false) {
|
||||||
|
// If an explicit object is passed in, it overrides the processing of
|
||||||
|
// source maps that may be in the file itself.
|
||||||
|
if (typeof options.inputSourceMap === "object") {
|
||||||
|
inputMap = convertSourceMap.fromObject(options.inputSourceMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!inputMap) {
|
||||||
|
const lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast);
|
||||||
|
if (lastComment) {
|
||||||
|
try {
|
||||||
|
inputMap = convertSourceMap.fromComment(lastComment);
|
||||||
|
} catch (err) {
|
||||||
|
debug("discarding unknown inline input sourcemap", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!inputMap) {
|
||||||
|
const lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast);
|
||||||
|
if (typeof options.filename === "string" && lastComment) {
|
||||||
|
try {
|
||||||
|
inputMap = convertSourceMap.fromMapFileComment(
|
||||||
|
// fromMapFileComment requires the whole comment block
|
||||||
|
`//${lastComment}`,
|
||||||
|
path.dirname(options.filename),
|
||||||
|
);
|
||||||
|
} catch (err) {
|
||||||
|
debug("discarding unknown file input sourcemap", err);
|
||||||
|
}
|
||||||
|
} else if (lastComment) {
|
||||||
|
debug("discarding un-loadable file input sourcemap");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return new File(options, {
|
return new File(options, {
|
||||||
code,
|
code,
|
||||||
ast,
|
ast,
|
||||||
@ -114,7 +108,7 @@ function parser(
|
|||||||
} else if (results.length === 1) {
|
} else if (results.length === 1) {
|
||||||
if (typeof results[0].then === "function") {
|
if (typeof results[0].then === "function") {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`You appear to be using an async codegen plugin, ` +
|
`You appear to be using an async parser plugin, ` +
|
||||||
`which your current version of Babel does not support. ` +
|
`which your current version of Babel does not support. ` +
|
||||||
`If you're using a published plugin, you may need to upgrade ` +
|
`If you're using a published plugin, you may need to upgrade ` +
|
||||||
`your @babel/core version.`,
|
`your @babel/core version.`,
|
||||||
@ -128,6 +122,7 @@ function parser(
|
|||||||
err.message +=
|
err.message +=
|
||||||
"\nConsider renaming the file to '.mjs', or setting sourceType:module " +
|
"\nConsider renaming the file to '.mjs', or setting sourceType:module " +
|
||||||
"or sourceType:unambiguous in your Babel config for this file.";
|
"or sourceType:unambiguous in your Babel config for this file.";
|
||||||
|
// err.code will be changed to BABEL_PARSE_ERROR later.
|
||||||
}
|
}
|
||||||
|
|
||||||
const { loc, missingPlugin } = err;
|
const { loc, missingPlugin } = err;
|
||||||
@ -156,3 +151,48 @@ function parser(
|
|||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// These regexps are copied from the convert-source-map package,
|
||||||
|
// but without // or /* at the beginning of the comment.
|
||||||
|
|
||||||
|
// eslint-disable-next-line max-len
|
||||||
|
const INLINE_SOURCEMAP_REGEX = /^[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/;
|
||||||
|
const EXTERNAL_SOURCEMAP_REGEX = /^[@#][ \t]+sourceMappingURL=(?:[^\s'"`]+?)[ \t]*$/;
|
||||||
|
|
||||||
|
function extractCommentsFromList(regex, comments, lastComment) {
|
||||||
|
if (comments) {
|
||||||
|
comments = comments.filter(({ value }) => {
|
||||||
|
if (regex.test(value)) {
|
||||||
|
lastComment = value;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return [comments, lastComment];
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractComments(regex, ast) {
|
||||||
|
let lastComment = null;
|
||||||
|
t.traverseFast(ast, node => {
|
||||||
|
// $FlowIgnore destructuring with expressions is not supported
|
||||||
|
[node.leadingComments, lastComment] = extractCommentsFromList(
|
||||||
|
regex,
|
||||||
|
node.leadingComments,
|
||||||
|
lastComment,
|
||||||
|
);
|
||||||
|
// $FlowIgnore destructuring with expressions is not supported
|
||||||
|
[node.innerComments, lastComment] = extractCommentsFromList(
|
||||||
|
regex,
|
||||||
|
node.innerComments,
|
||||||
|
lastComment,
|
||||||
|
);
|
||||||
|
// $FlowIgnore destructuring with expressions is not supported
|
||||||
|
[node.trailingComments, lastComment] = extractCommentsFromList(
|
||||||
|
regex,
|
||||||
|
node.trailingComments,
|
||||||
|
lastComment,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
return lastComment;
|
||||||
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
// @flow
|
// @flow
|
||||||
|
|
||||||
import type File from "./file/file";
|
import type File from "./file/file";
|
||||||
|
import type NodeLocation from "./file/file";
|
||||||
|
|
||||||
export default class PluginPass {
|
export default class PluginPass {
|
||||||
_map: Map<mixed, mixed> = new Map();
|
_map: Map<mixed, mixed> = new Map();
|
||||||
@ -47,14 +48,7 @@ export default class PluginPass {
|
|||||||
return this.file.getModuleName();
|
return this.file.getModuleName();
|
||||||
}
|
}
|
||||||
|
|
||||||
buildCodeFrameError(
|
buildCodeFrameError(node: ?NodeLocation, msg: string, Error?: typeof Error) {
|
||||||
node: ?{
|
|
||||||
loc?: { start: { line: number, column: number } },
|
|
||||||
_loc?: { start: { line: number, column: number } },
|
|
||||||
},
|
|
||||||
msg: string,
|
|
||||||
Error?: typeof Error,
|
|
||||||
) {
|
|
||||||
return this.file.buildCodeFrameError(node, msg, Error);
|
return this.file.buildCodeFrameError(node, msg, Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -788,4 +788,28 @@ describe("api", function() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("missing helpers", function() {
|
||||||
|
it("should always throw", function() {
|
||||||
|
expect(() =>
|
||||||
|
babel.transformSync(``, {
|
||||||
|
configFile: false,
|
||||||
|
plugins: [
|
||||||
|
function() {
|
||||||
|
return {
|
||||||
|
visitor: {
|
||||||
|
Program(path) {
|
||||||
|
try {
|
||||||
|
path.pushContainer("body", this.addHelper("fooBar"));
|
||||||
|
} catch {}
|
||||||
|
path.pushContainer("body", this.addHelper("fooBar"));
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
).toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,7 +1,44 @@
|
|||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
import os from "os";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
import escapeRegExp from "lodash/escapeRegExp";
|
||||||
import { loadOptions as loadOptionsOrig } from "../lib";
|
import { loadOptions as loadOptionsOrig } from "../lib";
|
||||||
|
|
||||||
|
// TODO: In Babel 8, we can directly uses fs.promises which is supported by
|
||||||
|
// node 8+
|
||||||
|
const pfs =
|
||||||
|
fs.promises ??
|
||||||
|
new Proxy(fs, {
|
||||||
|
get(target, name) {
|
||||||
|
if (name === "copyFile") {
|
||||||
|
// fs.copyFile is only supported since node 8.5
|
||||||
|
// https://stackoverflow.com/a/30405105/2359289
|
||||||
|
return function copyFile(source, target) {
|
||||||
|
const rd = fs.createReadStream(source);
|
||||||
|
const wr = fs.createWriteStream(target);
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
rd.on("error", reject);
|
||||||
|
wr.on("error", reject);
|
||||||
|
wr.on("finish", resolve);
|
||||||
|
rd.pipe(wr);
|
||||||
|
}).catch(function(error) {
|
||||||
|
rd.destroy();
|
||||||
|
wr.end();
|
||||||
|
throw error;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return (...args) =>
|
||||||
|
new Promise((resolve, reject) =>
|
||||||
|
target[name](...args, (error, result) => {
|
||||||
|
if (error) reject(error);
|
||||||
|
else resolve(result);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
function fixture(...args) {
|
function fixture(...args) {
|
||||||
return path.join(__dirname, "fixtures", "config", ...args);
|
return path.join(__dirname, "fixtures", "config", ...args);
|
||||||
}
|
}
|
||||||
@ -13,6 +50,24 @@ function loadOptions(opts) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function pairs(items) {
|
||||||
|
const pairs = [];
|
||||||
|
for (let i = 0; i < items.length - 1; i++) {
|
||||||
|
for (let j = i + 1; j < items.length; j++) {
|
||||||
|
pairs.push([items[i], items[j]]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pairs;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getTemp(name) {
|
||||||
|
const cwd = await pfs.mkdtemp(os.tmpdir() + path.sep + name);
|
||||||
|
const tmp = name => path.join(cwd, name);
|
||||||
|
const config = name =>
|
||||||
|
pfs.copyFile(fixture("config-files-templates", name), tmp(name));
|
||||||
|
return { cwd, tmp, config };
|
||||||
|
}
|
||||||
|
|
||||||
describe("buildConfigChain", function() {
|
describe("buildConfigChain", function() {
|
||||||
describe("test", () => {
|
describe("test", () => {
|
||||||
describe("single", () => {
|
describe("single", () => {
|
||||||
@ -33,7 +88,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
test: new RegExp(fixture("nonexistant-fake")),
|
test: new RegExp(escapeRegExp(fixture("nonexistant-fake"))),
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -69,7 +124,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
test: new RegExp(fixture("nonexistant-unknown")),
|
test: new RegExp(escapeRegExp(fixture("nonexistant-unknown"))),
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -107,7 +162,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
test: [new RegExp(fixture("nonexistant-fake"))],
|
test: [new RegExp(escapeRegExp(fixture("nonexistant-fake")))],
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -143,7 +198,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
test: [new RegExp(fixture("nonexistant-unknown"))],
|
test: [new RegExp(escapeRegExp(fixture("nonexistant-unknown")))],
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -183,7 +238,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
include: new RegExp(fixture("nonexistant-fake")),
|
include: new RegExp(escapeRegExp(fixture("nonexistant-fake"))),
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -219,7 +274,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
include: new RegExp(fixture("nonexistant-unknown")),
|
include: new RegExp(escapeRegExp(fixture("nonexistant-unknown"))),
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -257,7 +312,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
include: [new RegExp(fixture("nonexistant-fake"))],
|
include: [new RegExp(escapeRegExp(fixture("nonexistant-fake")))],
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -293,7 +348,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
include: [new RegExp(fixture("nonexistant-unknown"))],
|
include: [new RegExp(escapeRegExp(fixture("nonexistant-unknown")))],
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -333,7 +388,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
exclude: new RegExp(fixture("nonexistant-fake")),
|
exclude: new RegExp(escapeRegExp(fixture("nonexistant-fake"))),
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -369,7 +424,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
exclude: new RegExp(fixture("nonexistant-unknown")),
|
exclude: new RegExp(escapeRegExp(fixture("nonexistant-unknown"))),
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -407,7 +462,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
exclude: [new RegExp(fixture("nonexistant-fake"))],
|
exclude: [new RegExp(escapeRegExp(fixture("nonexistant-fake")))],
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -443,7 +498,7 @@ describe("buildConfigChain", function() {
|
|||||||
cwd: fixture("nonexistant-fake"),
|
cwd: fixture("nonexistant-fake"),
|
||||||
filename: fixture("nonexistant-fake", "src.js"),
|
filename: fixture("nonexistant-fake", "src.js"),
|
||||||
babelrc: false,
|
babelrc: false,
|
||||||
exclude: [new RegExp(fixture("nonexistant-unknown"))],
|
exclude: [new RegExp(escapeRegExp(fixture("nonexistant-unknown")))],
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -943,75 +998,93 @@ describe("buildConfigChain", function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should load .babelrc", () => {
|
describe("root", () => {
|
||||||
const filename = fixture("config-files", "babelrc", "src.js");
|
test.each(["babel.config.json", "babel.config.js", "babel.config.cjs"])(
|
||||||
|
"should load %s",
|
||||||
|
async name => {
|
||||||
|
const { cwd, tmp, config } = await getTemp(
|
||||||
|
`babel-test-load-config-${name}`,
|
||||||
|
);
|
||||||
|
const filename = tmp("src.js");
|
||||||
|
|
||||||
|
await config(name);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
loadOptions({
|
loadOptions({
|
||||||
filename,
|
filename,
|
||||||
cwd: path.dirname(filename),
|
cwd,
|
||||||
}),
|
}),
|
||||||
).toEqual({
|
).toEqual({
|
||||||
...getDefaults(),
|
...getDefaults(),
|
||||||
filename: filename,
|
filename,
|
||||||
cwd: path.dirname(filename),
|
cwd,
|
||||||
root: path.dirname(filename),
|
root: cwd,
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
test.each(
|
||||||
|
pairs(["babel.config.json", "babel.config.js", "babel.config.cjs"]),
|
||||||
|
)("should throw if both %s and %s are used", async (name1, name2) => {
|
||||||
|
const { cwd, tmp, config } = await getTemp(
|
||||||
|
`babel-test-dup-config-${name1}-${name2}`,
|
||||||
|
);
|
||||||
|
|
||||||
|
await Promise.all([config(name1), config(name2)]);
|
||||||
|
|
||||||
|
expect(() => loadOptions({ filename: tmp("src.js"), cwd })).toThrow(
|
||||||
|
/Multiple configuration files found/,
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should load .babelrc.js", () => {
|
describe("relative", () => {
|
||||||
const filename = fixture("config-files", "babelrc-js", "src.js");
|
test.each(["package.json", ".babelrc", ".babelrc.js", ".babelrc.cjs"])(
|
||||||
|
"should load %s",
|
||||||
|
async name => {
|
||||||
|
const { cwd, tmp, config } = await getTemp(
|
||||||
|
`babel-test-load-config-${name}`,
|
||||||
|
);
|
||||||
|
const filename = tmp("src.js");
|
||||||
|
|
||||||
expect(loadOptions({ filename, cwd: path.dirname(filename) })).toEqual({
|
await config(name);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
loadOptions({
|
||||||
|
filename,
|
||||||
|
cwd,
|
||||||
|
}),
|
||||||
|
).toEqual({
|
||||||
...getDefaults(),
|
...getDefaults(),
|
||||||
filename: filename,
|
filename,
|
||||||
cwd: path.dirname(filename),
|
cwd,
|
||||||
root: path.dirname(filename),
|
root: cwd,
|
||||||
comments: true,
|
comments: true,
|
||||||
});
|
});
|
||||||
});
|
},
|
||||||
|
);
|
||||||
it("should load package.json#babel", () => {
|
|
||||||
const filename = fixture("config-files", "pkg", "src.js");
|
|
||||||
|
|
||||||
expect(loadOptions({ filename, cwd: path.dirname(filename) })).toEqual({
|
|
||||||
...getDefaults(),
|
|
||||||
filename: filename,
|
|
||||||
cwd: path.dirname(filename),
|
|
||||||
root: path.dirname(filename),
|
|
||||||
comments: true,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should load .babelignore", () => {
|
it("should load .babelignore", () => {
|
||||||
const filename = fixture("config-files", "babelignore", "src.js");
|
const filename = fixture("config-files", "babelignore", "src.js");
|
||||||
|
|
||||||
expect(loadOptions({ filename, cwd: path.dirname(filename) })).toBeNull();
|
expect(
|
||||||
|
loadOptions({ filename, cwd: path.dirname(filename) }),
|
||||||
|
).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should throw if there are both .babelrc and .babelrc.js", () => {
|
test.each(
|
||||||
const filename = fixture("config-files", "both-babelrc", "src.js");
|
pairs(["package.json", ".babelrc", ".babelrc.js", ".babelrc.cjs"]),
|
||||||
|
)("should throw if both %s and %s are used", async (name1, name2) => {
|
||||||
|
const { cwd, tmp, config } = await getTemp(
|
||||||
|
`babel-test-dup-config-${name1}-${name2}`,
|
||||||
|
);
|
||||||
|
|
||||||
expect(() =>
|
await Promise.all([config(name1), config(name2)]);
|
||||||
loadOptions({ filename, cwd: path.dirname(filename) }),
|
|
||||||
).toThrow(/Multiple configuration files found/);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should throw if there are both .babelrc and package.json", () => {
|
expect(() => loadOptions({ filename: tmp("src.js"), cwd })).toThrow(
|
||||||
const filename = fixture("config-files", "pkg-babelrc", "src.js");
|
/Multiple configuration files found/,
|
||||||
|
);
|
||||||
expect(() =>
|
|
||||||
loadOptions({ filename, cwd: path.dirname(filename) }),
|
|
||||||
).toThrow(/Multiple configuration files found/);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should throw if there are both .babelrc.js and package.json", () => {
|
|
||||||
const filename = fixture("config-files", "pkg-babelrc-js", "src.js");
|
|
||||||
|
|
||||||
expect(() =>
|
|
||||||
loadOptions({ filename, cwd: path.dirname(filename) }),
|
|
||||||
).toThrow(/Multiple configuration files found/);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should ignore package.json without a 'babel' property", () => {
|
it("should ignore package.json without a 'babel' property", () => {
|
||||||
@ -1026,28 +1099,41 @@ describe("buildConfigChain", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should show helpful errors for .babelrc", () => {
|
test.each`
|
||||||
const filename = fixture("config-files", "babelrc-error", "src.js");
|
config | dir | error
|
||||||
|
${".babelrc"} | ${"babelrc-error"} | ${/Error while parsing config - /}
|
||||||
|
${".babelrc.js"} | ${"babelrc-js-error"} | ${/Babelrc threw an error/}
|
||||||
|
${".babelrc.cjs"} | ${"babelrc-cjs-error"} | ${/Babelrc threw an error/}
|
||||||
|
${"package.json"} | ${"pkg-error"} | ${/Error while parsing JSON - /}
|
||||||
|
`("should show helpful errors for $config", ({ dir, error }) => {
|
||||||
|
const filename = fixture("config-files", dir, "src.js");
|
||||||
|
|
||||||
expect(() =>
|
expect(() =>
|
||||||
loadOptions({ filename, cwd: path.dirname(filename) }),
|
loadOptions({ filename, cwd: path.dirname(filename) }),
|
||||||
).toThrow(/Error while parsing config - /);
|
).toThrow(error);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should show helpful errors for .babelrc.js", () => {
|
it("should throw when `test` presents but `filename` is not passed", () => {
|
||||||
const filename = fixture("config-files", "babelrc-js-error", "src.js");
|
expect(() => loadOptions({ test: /\.ts$/, plugins: [] })).toThrow(
|
||||||
|
/Configuration contains string\/RegExp pattern/,
|
||||||
expect(() =>
|
);
|
||||||
loadOptions({ filename, cwd: path.dirname(filename) }),
|
|
||||||
).toThrow(/Babelrc threw an error/);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should show helpful errors for package.json", () => {
|
it("should throw when `preset` requires `filename` but it was not passed", () => {
|
||||||
const filename = fixture("config-files", "pkg-error", "src.js");
|
expect(() => {
|
||||||
|
loadOptions({
|
||||||
|
presets: [require("./fixtures/config-loading/preset4")],
|
||||||
|
});
|
||||||
|
}).toThrow(/Preset \/\* your preset \*\/ requires a filename/);
|
||||||
|
});
|
||||||
|
|
||||||
expect(() =>
|
it("should throw when `preset.overrides` requires `filename` but it was not passed", () => {
|
||||||
loadOptions({ filename, cwd: path.dirname(filename) }),
|
expect(() => {
|
||||||
).toThrow(/Error while parsing JSON - /);
|
loadOptions({
|
||||||
|
presets: [require("./fixtures/config-loading/preset5")],
|
||||||
|
});
|
||||||
|
}).toThrow(/Preset \/\* your preset \*\/ requires a filename/);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -322,6 +322,21 @@ describe("@babel/core config loading", () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should thrown when plugin is not valid", () => {
|
||||||
|
const fooPlugin = {
|
||||||
|
inherits: "inhertis-should-not-be-string",
|
||||||
|
};
|
||||||
|
const opts = {
|
||||||
|
cwd: path.dirname(FILEPATH),
|
||||||
|
filename: FILEPATH,
|
||||||
|
plugins: [fooPlugin],
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(() => loadConfig(opts)).toThrow(
|
||||||
|
/\.inherits must be a function, or undefined/,
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("caller metadata", () => {
|
describe("caller metadata", () => {
|
||||||
|
|||||||
6
packages/babel-core/test/fixtures/config-loading/preset4.js
vendored
Normal file
6
packages/babel-core/test/fixtures/config-loading/preset4.js
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = function() {
|
||||||
|
return {
|
||||||
|
test: /\.ts$/,
|
||||||
|
plugins: []
|
||||||
|
}
|
||||||
|
};
|
||||||
8
packages/babel-core/test/fixtures/config-loading/preset5.js
vendored
Normal file
8
packages/babel-core/test/fixtures/config-loading/preset5.js
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
module.exports = function() {
|
||||||
|
return {
|
||||||
|
overrides: [{
|
||||||
|
test: /\.ts$/,
|
||||||
|
plugins: []
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
};
|
||||||
3
packages/babel-core/test/fixtures/config/config-files-templates/.babelrc
vendored
Normal file
3
packages/babel-core/test/fixtures/config/config-files-templates/.babelrc
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"comments": true
|
||||||
|
}
|
||||||
3
packages/babel-core/test/fixtures/config/config-files-templates/.babelrc.cjs
vendored
Normal file
3
packages/babel-core/test/fixtures/config/config-files-templates/.babelrc.cjs
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
comments: true
|
||||||
|
};
|
||||||
3
packages/babel-core/test/fixtures/config/config-files-templates/.babelrc.js
vendored
Normal file
3
packages/babel-core/test/fixtures/config/config-files-templates/.babelrc.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
comments: true
|
||||||
|
};
|
||||||
3
packages/babel-core/test/fixtures/config/config-files-templates/babel.config.cjs
vendored
Normal file
3
packages/babel-core/test/fixtures/config/config-files-templates/babel.config.cjs
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
comments: true
|
||||||
|
};
|
||||||
3
packages/babel-core/test/fixtures/config/config-files-templates/babel.config.js
vendored
Normal file
3
packages/babel-core/test/fixtures/config/config-files-templates/babel.config.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
comments: true
|
||||||
|
};
|
||||||
3
packages/babel-core/test/fixtures/config/config-files-templates/babel.config.json
vendored
Normal file
3
packages/babel-core/test/fixtures/config/config-files-templates/babel.config.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"comments": true
|
||||||
|
}
|
||||||
3
packages/babel-core/test/fixtures/config/config-files/babelrc-cjs-error/.babelrc.cjs
vendored
Normal file
3
packages/babel-core/test/fixtures/config/config-files/babelrc-cjs-error/.babelrc.cjs
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = function() {
|
||||||
|
throw new Error("Babelrc threw an error");
|
||||||
|
};
|
||||||
@ -1,3 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
comments: true,
|
|
||||||
};
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
comments: true,
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
module.exports = {};
|
|
||||||
@ -1 +0,0 @@
|
|||||||
module.exports = {};
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"babel": {}
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"babel": {}
|
|
||||||
}
|
|
||||||
@ -2,6 +2,7 @@
|
|||||||
"type": "File",
|
"type": "File",
|
||||||
"start": 0,
|
"start": 0,
|
||||||
"end": 91,
|
"end": 91,
|
||||||
|
"errors": [],
|
||||||
"loc": {
|
"loc": {
|
||||||
"start": {
|
"start": {
|
||||||
"line": 1,
|
"line": 1,
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
expect(() => {
|
||||||
var code = "function f() {}";
|
var code = "function f() {}";
|
||||||
transform(code, {
|
transform(code, {
|
||||||
plugins: [
|
plugins: [
|
||||||
@ -14,3 +15,4 @@ transform(code, {
|
|||||||
// hard to assert on ANSI escape codes
|
// hard to assert on ANSI escape codes
|
||||||
highlightCode: false,
|
highlightCode: false,
|
||||||
});
|
});
|
||||||
|
}).toThrow(/^unknown: someMsg\s+> 1 \| function f\(\) {}/);
|
||||||
|
|||||||
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"throws": "undefined: someMsg\n> 1 | function f() {}"
|
|
||||||
}
|
|
||||||
15
packages/babel-core/test/fixtures/plugins/transform-error/exec.js
vendored
Normal file
15
packages/babel-core/test/fixtures/plugins/transform-error/exec.js
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
var code = "function f() {}";
|
||||||
|
transform(code, {
|
||||||
|
plugins: [
|
||||||
|
function() {
|
||||||
|
return {
|
||||||
|
visitor: {
|
||||||
|
FunctionDeclaration: function(path) {
|
||||||
|
throw new Error("someMsg");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
],
|
||||||
|
filename: "/fake/path/example.js"
|
||||||
|
});
|
||||||
4
packages/babel-core/test/fixtures/plugins/transform-error/options.json
vendored
Normal file
4
packages/babel-core/test/fixtures/plugins/transform-error/options.json
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"throws": "/fake/path/example.js: someMsg",
|
||||||
|
"os": ["linux", "darwin"]
|
||||||
|
}
|
||||||
8
packages/babel-core/test/fixtures/transformation/source-maps/comment-inside-string/input.js
vendored
Normal file
8
packages/babel-core/test/fixtures/transformation/source-maps/comment-inside-string/input.js
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// https://github.com/babel/babel/issues/9790
|
||||||
|
const comment = `//# sourceMappingURL=${path.basename(
|
||||||
|
sourceMapFilename
|
||||||
|
)}`
|
||||||
|
|
||||||
|
// https://github.com/babel/babel/issues/9956
|
||||||
|
this.shadowRoot.innerHTML = `<style>div{display:block}
|
||||||
|
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuaHRtbCIsInNvdXJjZXMiOlsiZmllbGQuaHRtbCJdLCJzb3VyY2VzQ29udGVudCI6WyI8c3ZlbHRlOm9wdGlvbnMgdGFnPVwiZGxzLWZpZWxkXCIgLz5cblxuPHN0eWxlPlxuICBkaXYgeyBkaXNwbGF5OiBibG9jazsgfVxuPC9zdHlsZT5cblxuPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gIDxkaXYgY2xhc3M9XCJfZmllbGRMYWJlbExheW91dFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZExhYmVsXCI+XG4gICAgICA8c2xvdCBuYW1lPVwiZmllbGQtbGFiZWxcIj48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkT3B0aW9uYWxcIiBjbGFzczpvcHRpb25hbD5cbiAgICAgIE9wdGlvbmFsXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmllbGREZXRhaWxcIj5cbiAgICA8c2xvdCBuYW1lPVwiZmllbGQtZGV0YWlsXCI+PC9zbG90PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkQ29udHJvbFwiPlxuICAgIDxzbG90IG5hbWU9XCJmaWVsZC1jb250cm9sXCI+PC9zbG90PlxuICAgIDxzbG90Pjwvc2xvdD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZE1lc3NhZ2VcIj5cbiAgICA8c2xvdCBuYW1lPVwiZmllbGQtbWVzc2FnZVwiPjwvc2xvdD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPHNjcmlwdD5cbiAgZXhwb3J0IGxldCB0aGVtZSA9ICcnO1xuICBleHBvcnQgbGV0IG9wdGlvbmFsID0gZmFsc2U7XG48L3NjcmlwdD5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHRSxHQUFHLEFBQUMsQ0FBQyxBQUFDLE9BQU8sQ0FBRSxLQUFLLEFBQUUsQ0FBQyJ9 */</style>`;
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"inputSourceMap": true
|
||||||
|
}
|
||||||
5
packages/babel-core/test/fixtures/transformation/source-maps/comment-inside-string/output.js
vendored
Normal file
5
packages/babel-core/test/fixtures/transformation/source-maps/comment-inside-string/output.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// https://github.com/babel/babel/issues/9790
|
||||||
|
const comment = `//# sourceMappingURL=${path.basename(sourceMapFilename)}`; // https://github.com/babel/babel/issues/9956
|
||||||
|
|
||||||
|
this.shadowRoot.innerHTML = `<style>div{display:block}
|
||||||
|
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuaHRtbCIsInNvdXJjZXMiOlsiZmllbGQuaHRtbCJdLCJzb3VyY2VzQ29udGVudCI6WyI8c3ZlbHRlOm9wdGlvbnMgdGFnPVwiZGxzLWZpZWxkXCIgLz5cblxuPHN0eWxlPlxuICBkaXYgeyBkaXNwbGF5OiBibG9jazsgfVxuPC9zdHlsZT5cblxuPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gIDxkaXYgY2xhc3M9XCJfZmllbGRMYWJlbExheW91dFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZExhYmVsXCI+XG4gICAgICA8c2xvdCBuYW1lPVwiZmllbGQtbGFiZWxcIj48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkT3B0aW9uYWxcIiBjbGFzczpvcHRpb25hbD5cbiAgICAgIE9wdGlvbmFsXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmllbGREZXRhaWxcIj5cbiAgICA8c2xvdCBuYW1lPVwiZmllbGQtZGV0YWlsXCI+PC9zbG90PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkQ29udHJvbFwiPlxuICAgIDxzbG90IG5hbWU9XCJmaWVsZC1jb250cm9sXCI+PC9zbG90PlxuICAgIDxzbG90Pjwvc2xvdD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZE1lc3NhZ2VcIj5cbiAgICA8c2xvdCBuYW1lPVwiZmllbGQtbWVzc2FnZVwiPjwvc2xvdD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPHNjcmlwdD5cbiAgZXhwb3J0IGxldCB0aGVtZSA9ICcnO1xuICBleHBvcnQgbGV0IG9wdGlvbmFsID0gZmFsc2U7XG48L3NjcmlwdD5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHRSxHQUFHLEFBQUMsQ0FBQyxBQUFDLE9BQU8sQ0FBRSxLQUFLLEFBQUUsQ0FBQyJ9 */</style>`;
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user