From a466f9c310ace91484d4087f077ee6d6c8cd8789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 14 Apr 2020 09:23:54 -0400 Subject: [PATCH 01/10] fix: report missing plugins on type exports (#11417) * fix: report missing plugins on type exports * nit refactors * Update packages/babel-parser/src/parser/statement.js [skip ci] --- packages/babel-parser/src/parser/statement.js | 26 ++++++++++++++++--- .../expect-plugin/export-interface/input.js | 1 + .../export-interface/options.json | 7 +++++ .../expect-plugin/export-type-named/input.js | 2 ++ .../export-type-named/options.json | 7 +++++ .../flow/expect-plugin/export-type/input.js | 1 + .../expect-plugin/export-type/options.json | 7 +++++ .../fixtures/flow/expect-plugin/options.json | 4 +++ .../expect-plugin/export-interface/input.js | 1 + .../export-interface/options.json | 4 +++ .../expect-plugin/export-type-named/input.js | 2 ++ .../export-type-named/options.json | 4 +++ .../expect-plugin/export-type/input.js | 1 + .../expect-plugin/export-type/options.json | 4 +++ .../typescript/expect-plugin/options.json | 3 +++ 15 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/flow/expect-plugin/export-interface/input.js create mode 100644 packages/babel-parser/test/fixtures/flow/expect-plugin/export-interface/options.json create mode 100644 packages/babel-parser/test/fixtures/flow/expect-plugin/export-type-named/input.js create mode 100644 packages/babel-parser/test/fixtures/flow/expect-plugin/export-type-named/options.json create mode 100644 packages/babel-parser/test/fixtures/flow/expect-plugin/export-type/input.js create mode 100644 packages/babel-parser/test/fixtures/flow/expect-plugin/export-type/options.json create mode 100644 packages/babel-parser/test/fixtures/flow/expect-plugin/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/expect-plugin/export-interface/input.js create mode 100644 packages/babel-parser/test/fixtures/typescript/expect-plugin/export-interface/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type-named/input.js create mode 100644 packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type-named/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type/input.js create mode 100644 packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/expect-plugin/options.json diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 32ad1a30d28b..5b1d1077712e 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -1834,10 +1834,28 @@ export default class StatementParser extends ExpressionParser { isExportDefaultSpecifier(): boolean { if (this.match(tt.name)) { - return this.state.value !== "async" && this.state.value !== "let"; - } - - if (!this.match(tt._default)) { + const value = this.state.value; + if (value === "async" || value === "let") { + return false; + } + if ( + (value === "type" || value === "interface") && + !this.state.containsEsc + ) { + const l = this.lookahead(); + // If we see any variable name other than `from` after `type` keyword, + // we consider it as flow/typescript type exports + // note that this approach may fail on some pedantic cases + // export type from = number + if ( + (l.type === tt.name && l.value !== "from") || + l.type === tt.braceL + ) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(tt._default)) { return false; } diff --git a/packages/babel-parser/test/fixtures/flow/expect-plugin/export-interface/input.js b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-interface/input.js new file mode 100644 index 000000000000..39df3b83f7e9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-interface/input.js @@ -0,0 +1 @@ +export interface Foo {} diff --git a/packages/babel-parser/test/fixtures/flow/expect-plugin/export-interface/options.json b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-interface/options.json new file mode 100644 index 000000000000..3f1eb56acdfa --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-interface/options.json @@ -0,0 +1,7 @@ +{ + "sourceType": "module", + "plugins": [ + "jsx" + ], + "throws": "This experimental syntax requires enabling one of the following parser plugin(s): 'flow, typescript' (1:7)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type-named/input.js b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type-named/input.js new file mode 100644 index 000000000000..2bece0a4af63 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type-named/input.js @@ -0,0 +1,2 @@ +var Foo; +export type { Foo }; diff --git a/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type-named/options.json b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type-named/options.json new file mode 100644 index 000000000000..80ced9a61c4f --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type-named/options.json @@ -0,0 +1,7 @@ +{ + "sourceType": "module", + "plugins": [ + "jsx" + ], + "throws": "This experimental syntax requires enabling one of the following parser plugin(s): 'flow, typescript' (2:7)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type/input.js b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type/input.js new file mode 100644 index 000000000000..191a99ee3073 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type/input.js @@ -0,0 +1 @@ +export type Foo = number; diff --git a/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type/options.json b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type/options.json new file mode 100644 index 000000000000..3f1eb56acdfa --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/expect-plugin/export-type/options.json @@ -0,0 +1,7 @@ +{ + "sourceType": "module", + "plugins": [ + "jsx" + ], + "throws": "This experimental syntax requires enabling one of the following parser plugin(s): 'flow, typescript' (1:7)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/expect-plugin/options.json b/packages/babel-parser/test/fixtures/flow/expect-plugin/options.json new file mode 100644 index 000000000000..21c10b585e47 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/expect-plugin/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["jsx"] +} diff --git a/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-interface/input.js b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-interface/input.js new file mode 100644 index 000000000000..39df3b83f7e9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-interface/input.js @@ -0,0 +1 @@ +export interface Foo {} diff --git a/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-interface/options.json b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-interface/options.json new file mode 100644 index 000000000000..6638a1d3d788 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-interface/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "throws": "This experimental syntax requires enabling one of the following parser plugin(s): 'flow, typescript' (1:7)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type-named/input.js b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type-named/input.js new file mode 100644 index 000000000000..2bece0a4af63 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type-named/input.js @@ -0,0 +1,2 @@ +var Foo; +export type { Foo }; diff --git a/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type-named/options.json b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type-named/options.json new file mode 100644 index 000000000000..afcf32448a2c --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type-named/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "throws": "This experimental syntax requires enabling one of the following parser plugin(s): 'flow, typescript' (2:7)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type/input.js b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type/input.js new file mode 100644 index 000000000000..191a99ee3073 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type/input.js @@ -0,0 +1 @@ +export type Foo = number; diff --git a/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type/options.json b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type/options.json new file mode 100644 index 000000000000..6638a1d3d788 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/expect-plugin/export-type/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "throws": "This experimental syntax requires enabling one of the following parser plugin(s): 'flow, typescript' (1:7)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/expect-plugin/options.json b/packages/babel-parser/test/fixtures/typescript/expect-plugin/options.json new file mode 100644 index 000000000000..2104ca43283f --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/expect-plugin/options.json @@ -0,0 +1,3 @@ +{ + "sourceType": "module" +} From aaced0156d76bc0d9f42c6ecccfd9aef1ed98eea Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Tue, 14 Apr 2020 09:27:15 -0400 Subject: [PATCH 02/10] contributing.md updates [skip ci] (#11403) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * contributing.md updates [skip ci] * [skip ci] * Update CONTRIBUTING.md * Update CONTRIBUTING.md Co-Authored-By: Brian Ng * Use Yarn > 1 Co-authored-by: Brian Ng Co-authored-by: NicolΓ² Ribaudo --- CONTRIBUTING.md | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d7bfa3d7a463..c0a2bd0510ed 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,9 +16,7 @@ # Contributing -Contributions are always welcome, no matter how large or small. Before -contributing, please read the -[code of conduct](https://github.com/babel/babel/blob/master/CODE_OF_CONDUCT.md). +Contributions are always welcome, no matter how large or small! Before contributing, please read the [code of conduct](https://github.com/babel/babel/blob/master/CODE_OF_CONDUCT.md). ## Not sure where to start? @@ -39,12 +37,9 @@ Feel free to check out the `#discussion`/`#development` channels on our [Slack]( ## Developing -**Note:** Versions `< 5.1.10` can't be built. +*Node*: Check that Node is [installed](https://nodejs.org/en/download/) with version 10 and up. You can check this with `node -v`. -Babel is built for Node 6 and up but we develop using Node 8 and yarn. You can check this with `node -v`. - -Make sure that Yarn is installed with version >= `0.28.0`. -Installation instructions can be found here: https://yarnpkg.com/en/docs/install. +*Yarn*: Make sure that Yarn 1 is [installed](https://classic.yarnpkg.com/en/docs/install) with version >= `1.19.0`. ### Setup @@ -72,7 +67,7 @@ $ make watch to have Babel build itself and incrementally build files on change. -You can access the built files for individual packages from `packages//lib`. +> You can access the built files for individual packages from `packages//lib`. If you wish to build a copy of Babel for distribution, then run: @@ -109,9 +104,7 @@ If you just want to run all tests: $ make test-only ``` -Most likely you'll want to focus in on a specific issue. - -To run tests for a specific package in [packages](https://github.com/babel/babel/tree/master/packages), you can use the `TEST_ONLY` environment variable: +When working on an issue, you will most likely want to focus on a particular [packages](https://github.com/babel/babel/tree/master/packages). Using `TEST_ONLY` will only run tests for that specific package. ```sh $ TEST_ONLY=babel-cli make test From 9b48a8ead739b1cb786ab03a8148b7d96c17b295 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Tue, 14 Apr 2020 15:51:51 -0400 Subject: [PATCH 03/10] Fix nested classes reference private fields (#11405) * Fix nested classes reference private fields * Process only visible private fields when redeclaring * Comments * Skip class traversal if there are no private fields * Handle redeclared private field in computed key --- .../src/fields.js | 48 +++++++++++++---- .../nested-class-computed-redeclared/input.js | 14 +++++ .../output.js | 43 +++++++++++++++ .../nested-class-computed/input.js | 12 +++++ .../nested-class-computed/output.js | 35 +++++++++++++ .../nested-class-other-redeclared/input.js | 18 +++++++ .../nested-class-other-redeclared/output.js | 49 +++++++++++++++++ .../nested-class-redeclared/input.js | 15 ++++++ .../nested-class-redeclared/output.js | 41 +++++++++++++++ .../private-loose/nested-class/input.js | 13 +++++ .../private-loose/nested-class/output.js | 35 +++++++++++++ .../nested-class-computed-redeclared/input.js | 14 +++++ .../output.js | 45 ++++++++++++++++ .../private/nested-class-computed/input.js | 12 +++++ .../private/nested-class-computed/output.js | 36 +++++++++++++ .../nested-class-other-redeclared/input.js | 18 +++++++ .../nested-class-other-redeclared/output.js | 52 +++++++++++++++++++ .../private/nested-class-redeclared/input.js | 15 ++++++ .../private/nested-class-redeclared/output.js | 43 +++++++++++++++ .../fixtures/private/nested-class/input.js | 13 +++++ .../fixtures/private/nested-class/output.js | 36 +++++++++++++ 21 files changed, 597 insertions(+), 10 deletions(-) create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-other-redeclared/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-other-redeclared/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-redeclared/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-redeclared/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-other-redeclared/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-other-redeclared/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-redeclared/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-redeclared/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class/output.js diff --git a/packages/babel-helper-create-class-features-plugin/src/fields.js b/packages/babel-helper-create-class-features-plugin/src/fields.js index 167e894cae33..083d35056bc0 100644 --- a/packages/babel-helper-create-class-features-plugin/src/fields.js +++ b/packages/babel-helper-create-class-features-plugin/src/fields.js @@ -85,24 +85,50 @@ const privateNameVisitor = { const { privateNamesMap } = this; const body = path.get("body.body"); + const visiblePrivateNames = new Map(privateNamesMap); + const redeclared = []; for (const prop of body) { - if (!prop.isPrivate()) { - continue; - } - if (!privateNamesMap.has(prop.node.key.id.name)) continue; + if (!prop.isPrivate()) continue; + const { name } = prop.node.key.id; + visiblePrivateNames.delete(name); + redeclared.push(name); + } - // This class redeclares the private name. - // So, we can only evaluate the things in the outer scope. - path.traverse(privateNameInnerVisitor, this); - path.skip(); - break; + // If the class doesn't redeclare any private fields, we can continue with + // our overall traversal. + if (!redeclared.length) { + return; } + + // This class redeclares some private field. We need to process the outer + // environment with access to all the outer privates, then we can process + // the inner environment with only the still-visible outer privates. + path.get("superClass").traverse(privateNameVisitor, this); + path.get("body").traverse(privateNameNestedVisitor, { + ...this, + redeclared, + }); + path.traverse(privateNameVisitor, { + ...this, + privateNamesMap: visiblePrivateNames, + }); + + // We'll eventually hit this class node again with the overall Class + // Features visitor, which'll process the redeclared privates. + path.skip(); }, }; // Traverses the outer portion of a class, without touching the class's inner // scope, for private names. -const privateNameInnerVisitor = traverse.visitors.merge([ +const privateNameNestedVisitor = traverse.visitors.merge([ + { + PrivateName(path) { + const { redeclared } = this; + const { name } = path.node.id; + if (redeclared.includes(name)) path.skip(); + }, + }, { PrivateName: privateNameVisitor.PrivateName, }, @@ -263,6 +289,8 @@ export function transformPrivateNamesUsage( loose, state, ) { + if (!privateNamesMap.size) return; + const body = path.get("body"); if (loose) { diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/input.js new file mode 100644 index 000000000000..1a8d9de8e720 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/input.js @@ -0,0 +1,14 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + #foo = 2; + + [this.#foo]() { + } + } + + this.#foo; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/output.js new file mode 100644 index 000000000000..f664abf3296a --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/output.js @@ -0,0 +1,43 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + Object.defineProperty(this, _foo, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var _babelHelpers$classPr; + + _babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _foo2)[_foo2]; + + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + Object.defineProperty(this, _foo2, { + writable: true, + value: 2 + }); + } + + babelHelpers.createClass(Nested, [{ + key: _babelHelpers$classPr, + value: function () {} + }]); + return Nested; + }(); + + var _foo2 = babelHelpers.classPrivateFieldLooseKey("foo"); + + babelHelpers.classPrivateFieldLooseBase(this, _foo)[_foo]; + } + }]); + return Foo; +}(); + +var _foo = babelHelpers.classPrivateFieldLooseKey("foo"); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/input.js new file mode 100644 index 000000000000..7786425d1c6c --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/input.js @@ -0,0 +1,12 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + [this.#foo]() { + } + } + + this.#foo; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/output.js new file mode 100644 index 000000000000..57c5ed3249d1 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/output.js @@ -0,0 +1,35 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + Object.defineProperty(this, _foo, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var _this = this; + + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + } + + babelHelpers.createClass(Nested, [{ + key: babelHelpers.classPrivateFieldLooseBase(_this, _foo)[_foo], + value: function () {} + }]); + return Nested; + }(); + + babelHelpers.classPrivateFieldLooseBase(this, _foo)[_foo]; + } + }]); + return Foo; +}(); + +var _foo = babelHelpers.classPrivateFieldLooseKey("foo"); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-other-redeclared/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-other-redeclared/input.js new file mode 100644 index 000000000000..4e0f3dd8a23f --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-other-redeclared/input.js @@ -0,0 +1,18 @@ +class Foo { + #foo = 1; + #bar = 1; + + test() { + class Nested { + #bar = 2; + + test() { + this.#foo; + this.#bar; + } + } + + this.#foo; + this.#bar; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-other-redeclared/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-other-redeclared/output.js new file mode 100644 index 000000000000..f906d5562dd1 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-other-redeclared/output.js @@ -0,0 +1,49 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + Object.defineProperty(this, _foo, { + writable: true, + value: 1 + }); + Object.defineProperty(this, _bar, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + Object.defineProperty(this, _bar2, { + writable: true, + value: 2 + }); + } + + babelHelpers.createClass(Nested, [{ + key: "test", + value: function test() { + babelHelpers.classPrivateFieldLooseBase(this, _foo)[_foo]; + babelHelpers.classPrivateFieldLooseBase(this, _bar2)[_bar2]; + } + }]); + return Nested; + }(); + + var _bar2 = babelHelpers.classPrivateFieldLooseKey("bar"); + + babelHelpers.classPrivateFieldLooseBase(this, _foo)[_foo]; + babelHelpers.classPrivateFieldLooseBase(this, _bar)[_bar]; + } + }]); + return Foo; +}(); + +var _foo = babelHelpers.classPrivateFieldLooseKey("foo"); + +var _bar = babelHelpers.classPrivateFieldLooseKey("bar"); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-redeclared/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-redeclared/input.js new file mode 100644 index 000000000000..c4d2eaa6375c --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-redeclared/input.js @@ -0,0 +1,15 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + #foo = 2; + + test() { + this.#foo; + } + } + + this.#foo; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-redeclared/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-redeclared/output.js new file mode 100644 index 000000000000..055ff8b46505 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-redeclared/output.js @@ -0,0 +1,41 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + Object.defineProperty(this, _foo, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + Object.defineProperty(this, _foo2, { + writable: true, + value: 2 + }); + } + + babelHelpers.createClass(Nested, [{ + key: "test", + value: function test() { + babelHelpers.classPrivateFieldLooseBase(this, _foo2)[_foo2]; + } + }]); + return Nested; + }(); + + var _foo2 = babelHelpers.classPrivateFieldLooseKey("foo"); + + babelHelpers.classPrivateFieldLooseBase(this, _foo)[_foo]; + } + }]); + return Foo; +}(); + +var _foo = babelHelpers.classPrivateFieldLooseKey("foo"); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class/input.js new file mode 100644 index 000000000000..a0b794493ed9 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class/input.js @@ -0,0 +1,13 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + test() { + this.#foo; + } + } + + this.#foo; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class/output.js new file mode 100644 index 000000000000..b12260adcf98 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class/output.js @@ -0,0 +1,35 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + Object.defineProperty(this, _foo, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + } + + babelHelpers.createClass(Nested, [{ + key: "test", + value: function test() { + babelHelpers.classPrivateFieldLooseBase(this, _foo)[_foo]; + } + }]); + return Nested; + }(); + + babelHelpers.classPrivateFieldLooseBase(this, _foo)[_foo]; + } + }]); + return Foo; +}(); + +var _foo = babelHelpers.classPrivateFieldLooseKey("foo"); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/input.js new file mode 100644 index 000000000000..1a8d9de8e720 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/input.js @@ -0,0 +1,14 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + #foo = 2; + + [this.#foo]() { + } + } + + this.#foo; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/output.js new file mode 100644 index 000000000000..c7895115ed34 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/output.js @@ -0,0 +1,45 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + + _foo.set(this, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var _babelHelpers$classPr; + + _babelHelpers$classPr = babelHelpers.classPrivateFieldGet(this, _foo2); + + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + + _foo2.set(this, { + writable: true, + value: 2 + }); + } + + babelHelpers.createClass(Nested, [{ + key: _babelHelpers$classPr, + value: function () {} + }]); + return Nested; + }(); + + var _foo2 = new WeakMap(); + + babelHelpers.classPrivateFieldGet(this, _foo); + } + }]); + return Foo; +}(); + +var _foo = new WeakMap(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/input.js new file mode 100644 index 000000000000..7786425d1c6c --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/input.js @@ -0,0 +1,12 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + [this.#foo]() { + } + } + + this.#foo; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/output.js new file mode 100644 index 000000000000..4d06d8350652 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/output.js @@ -0,0 +1,36 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + + _foo.set(this, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var _this = this; + + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + } + + babelHelpers.createClass(Nested, [{ + key: babelHelpers.classPrivateFieldGet(_this, _foo), + value: function () {} + }]); + return Nested; + }(); + + babelHelpers.classPrivateFieldGet(this, _foo); + } + }]); + return Foo; +}(); + +var _foo = new WeakMap(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-other-redeclared/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-other-redeclared/input.js new file mode 100644 index 000000000000..4e0f3dd8a23f --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-other-redeclared/input.js @@ -0,0 +1,18 @@ +class Foo { + #foo = 1; + #bar = 1; + + test() { + class Nested { + #bar = 2; + + test() { + this.#foo; + this.#bar; + } + } + + this.#foo; + this.#bar; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-other-redeclared/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-other-redeclared/output.js new file mode 100644 index 000000000000..6d65fc229664 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-other-redeclared/output.js @@ -0,0 +1,52 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + + _foo.set(this, { + writable: true, + value: 1 + }); + + _bar.set(this, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + + _bar2.set(this, { + writable: true, + value: 2 + }); + } + + babelHelpers.createClass(Nested, [{ + key: "test", + value: function test() { + babelHelpers.classPrivateFieldGet(this, _foo); + babelHelpers.classPrivateFieldGet(this, _bar2); + } + }]); + return Nested; + }(); + + var _bar2 = new WeakMap(); + + babelHelpers.classPrivateFieldGet(this, _foo); + babelHelpers.classPrivateFieldGet(this, _bar); + } + }]); + return Foo; +}(); + +var _foo = new WeakMap(); + +var _bar = new WeakMap(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-redeclared/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-redeclared/input.js new file mode 100644 index 000000000000..c4d2eaa6375c --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-redeclared/input.js @@ -0,0 +1,15 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + #foo = 2; + + test() { + this.#foo; + } + } + + this.#foo; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-redeclared/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-redeclared/output.js new file mode 100644 index 000000000000..3f61e520351e --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-redeclared/output.js @@ -0,0 +1,43 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + + _foo.set(this, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + + _foo2.set(this, { + writable: true, + value: 2 + }); + } + + babelHelpers.createClass(Nested, [{ + key: "test", + value: function test() { + babelHelpers.classPrivateFieldGet(this, _foo2); + } + }]); + return Nested; + }(); + + var _foo2 = new WeakMap(); + + babelHelpers.classPrivateFieldGet(this, _foo); + } + }]); + return Foo; +}(); + +var _foo = new WeakMap(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class/input.js new file mode 100644 index 000000000000..a0b794493ed9 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class/input.js @@ -0,0 +1,13 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + test() { + this.#foo; + } + } + + this.#foo; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class/output.js new file mode 100644 index 000000000000..e4d225a4985e --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class/output.js @@ -0,0 +1,36 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + + _foo.set(this, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var Nested = /*#__PURE__*/function () { + function Nested() { + babelHelpers.classCallCheck(this, Nested); + } + + babelHelpers.createClass(Nested, [{ + key: "test", + value: function test() { + babelHelpers.classPrivateFieldGet(this, _foo); + } + }]); + return Nested; + }(); + + babelHelpers.classPrivateFieldGet(this, _foo); + } + }]); + return Foo; +}(); + +var _foo = new WeakMap(); From c85aafdff6bbe5833ad5b259aecb107a86390484 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 15 Apr 2020 10:57:22 -0400 Subject: [PATCH 04/10] chore: upgrade @babel/* deps (#11422) * chore: upgrade @babel/* deps * chore: run build-bundle-ci before check-compat-data --- Gulpfile.js | 13 -- Makefile | 9 +- package.json | 22 +-- yarn.lock | 381 ++++++++++++++++++++++++++------------------------- 4 files changed, 212 insertions(+), 213 deletions(-) diff --git a/Gulpfile.js b/Gulpfile.js index 7402a87be0ba..5f0b03c04b51 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -226,19 +226,6 @@ gulp.task("build-rollup", () => buildRollup(libBundles)); gulp.task("build-babel-standalone", () => buildRollup(standaloneBundle)); gulp.task("build-babel", () => buildBabel(/* exclude */ libBundles)); -gulp.task("build-babel-types-deps", () => - buildBabel( - /* exclude */ libBundles, - "packages/babel-helper-validator-identifier/src/**/*.js" - ) -); -gulp.task("build-babel-types-self", () => - buildBabel(/* exclude */ libBundles, "packages/babel-types/src/**/*.js") -); -gulp.task( - "build-babel-types", - gulp.series("build-babel-types-deps", "build-babel-types-self") -); gulp.task("build", gulp.parallel("build-rollup", "build-babel")); gulp.task("default", gulp.series("build")); diff --git a/Makefile b/Makefile index 3139331baad0..69c97e5eff66 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,9 @@ build-no-bundle: clean clean-lib $(MAKE) generate-type-helpers $(MAKE) build-typings +build-no-bundle-ci: bootstrap-only + $(MAKE) build-no-bundle + watch: build-no-bundle BABEL_ENV=development $(YARN) gulp watch @@ -91,9 +94,7 @@ code-quality: flow lint flow: $(YARN) flow check --strip-root -bootstrap-flowcheck: bootstrap-only - $(YARN) gulp build-babel-types - $(MAKE) build-typings +bootstrap-flowcheck: build-no-bundle-ci lint-ci: lint-js-ci lint-ts-ci check-compat-data-ci @@ -103,7 +104,7 @@ lint-js-ci: bootstrap-only lint-ts-ci: bootstrap-flowcheck $(MAKE) lint-ts -check-compat-data-ci: bootstrap-only +check-compat-data-ci: build-no-bundle-ci $(MAKE) check-compat-data lint: lint-js lint-ts diff --git a/package.json b/package.json index 5ae12496a3be..69d0003309be 100644 --- a/package.json +++ b/package.json @@ -11,23 +11,23 @@ }, "devDependencies": { "@babel/cli": "^7.8.4", - "@babel/core": "^7.8.7", + "@babel/core": "^7.9.0", "@babel/eslint-plugin-development": "^1.0.1", "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-dynamic-import": "^7.8.3", "@babel/plugin-proposal-export-namespace-from": "^7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.8.3", - "@babel/plugin-transform-flow-strip-types": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.8.6", - "@babel/plugin-transform-modules-commonjs": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.8.3", - "@babel/preset-env": "^7.8.7", - "@babel/preset-flow": "^7.8.3", - "@babel/register": "^7.8.6", - "@babel/runtime": "^7.8.7", + "@babel/plugin-proposal-object-rest-spread": "^7.9.5", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-transform-flow-strip-types": "^7.9.0", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-runtime": "^7.9.0", + "@babel/preset-env": "^7.9.5", + "@babel/preset-flow": "^7.9.0", + "@babel/register": "^7.9.0", + "@babel/runtime": "^7.9.2", "@rollup/plugin-json": "4.0.1", "babel-eslint": "^11.0.0-beta.2", "babel-jest": "^24.9.0", diff --git a/yarn.lock b/yarn.lock index 63a0d52bb7f7..55abcd7e0e08 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,31 +25,32 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" - integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== +"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== dependencies: - browserslist "^4.8.5" + browserslist "^4.9.1" invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" - integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== +"@babel/core@^7.1.0", "@babel/core@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.7" - "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.7" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" "@babel/template" "^7.8.6" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.7" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" - json5 "^2.1.0" + json5 "^2.1.2" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" @@ -60,12 +61,12 @@ resolved "https://registry.yarnpkg.com/@babel/eslint-plugin-development/-/eslint-plugin-development-1.0.1.tgz#1f5206ae95795db09b65e7dbc2b158d66497a44c" integrity sha512-ioEhN8HgKr4Yx8ef+XryNpKN4FimSFceb0qVVxvoUzpFn3xyq17MlY5AquEqtXObE7Nu7WKq7QL9INzjCrugyw== -"@babel/generator@^7.4.0", "@babel/generator@^7.8.6", "@babel/generator@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.7.tgz#870b3cf7984f5297998152af625c4f3e341400f7" - integrity sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew== +"@babel/generator@^7.4.0", "@babel/generator@^7.9.0", "@babel/generator@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" + integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== dependencies: - "@babel/types" "^7.8.7" + "@babel/types" "^7.9.5" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -85,15 +86,6 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-call-delegate@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" - integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== - dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.7" - "@babel/helper-compilation-targets@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" @@ -117,14 +109,14 @@ "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" -"@babel/helper-create-regexp-features-plugin@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz#7fa040c97fb8aebe1247a5c645330c32d083066b" - integrity sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A== +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== dependencies: "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.6.0" + regexpu-core "^4.7.0" "@babel/helper-define-map@^7.8.3": version "7.8.3" @@ -143,14 +135,14 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" - integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== +"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== dependencies: "@babel/helper-get-function-arity" "^7.8.3" "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.9.5" "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" @@ -180,17 +172,17 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-module-transforms@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" - integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-simple-access" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" "@babel/template" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/types" "^7.9.0" lodash "^4.17.13" "@babel/helper-optimise-call-expression@^7.8.3": @@ -248,6 +240,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + "@babel/helper-wrap-function@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" @@ -258,14 +255,14 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helpers@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" - integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== dependencies: "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" "@babel/highlight@^7.8.3": version "7.8.3" @@ -276,10 +273,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.7.tgz#7b8facf95d25fef9534aad51c4ffecde1a61e26a" - integrity sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" @@ -338,13 +335,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" -"@babel/plugin-proposal-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" - integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== +"@babel/plugin-proposal-object-rest-spread@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz#3fd65911306d8746014ec0d0cf78f0e39a149116" + integrity sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" "@babel/plugin-proposal-optional-catch-binding@^7.8.3": version "7.8.3" @@ -354,20 +352,20 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" - integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" - integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.8.8" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-async-generators@^7.8.0": @@ -412,7 +410,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== @@ -478,14 +476,14 @@ "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" - integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== +"@babel/plugin-transform-classes@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" + integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== dependencies: "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.8.3" + "@babel/helper-function-name" "^7.9.5" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-replace-supers" "^7.8.6" @@ -499,14 +497,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-destructuring@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" - integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== +"@babel/plugin-transform-destructuring@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" + integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.8.3": +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== @@ -529,18 +527,18 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz#da705a655466b2a9b36046b57bf0cbcd53551bd4" - integrity sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA== +"@babel/plugin-transform-flow-strip-types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-flow" "^7.8.3" -"@babel/plugin-transform-for-of@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" - integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" @@ -566,41 +564,41 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" - integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== +"@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" - integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== +"@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" - integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== dependencies: "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" - integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== dependencies: - "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": @@ -625,12 +623,11 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.7.tgz#66fa2f1de4129b4e0447509223ac71bda4955395" - integrity sha512-brYWaEPTRimOctz2NDA3jnBbDi7SVN2T4wYuu0aqSzxC3nozFZngGaw29CJ9ZPweB7k+iFmZuoG3IVPIcXmD2g== +"@babel/plugin-transform-parameters@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" + integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== dependencies: - "@babel/helper-call-delegate" "^7.8.7" "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -655,10 +652,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-runtime@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" - integrity sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ== +"@babel/plugin-transform-runtime@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -710,12 +707,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/preset-env@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" - integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== +"@babel/preset-env@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.5.tgz#8ddc76039bc45b774b19e2fc548f6807d8a8919f" + integrity sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ== dependencies: - "@babel/compat-data" "^7.8.6" + "@babel/compat-data" "^7.9.0" "@babel/helper-compilation-targets" "^7.8.7" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -723,14 +720,16 @@ "@babel/plugin-proposal-dynamic-import" "^7.8.3" "@babel/plugin-proposal-json-strings" "^7.8.3" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.5" "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" @@ -739,24 +738,24 @@ "@babel/plugin-transform-async-to-generator" "^7.8.3" "@babel/plugin-transform-block-scoped-functions" "^7.8.3" "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.8.6" + "@babel/plugin-transform-classes" "^7.9.5" "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.9.5" "@babel/plugin-transform-dotall-regex" "^7.8.3" "@babel/plugin-transform-duplicate-keys" "^7.8.3" "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.8.6" + "@babel/plugin-transform-for-of" "^7.9.0" "@babel/plugin-transform-function-name" "^7.8.3" "@babel/plugin-transform-literals" "^7.8.3" "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.8.3" - "@babel/plugin-transform-modules-commonjs" "^7.8.3" - "@babel/plugin-transform-modules-systemjs" "^7.8.3" - "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-parameters" "^7.9.5" "@babel/plugin-transform-property-literals" "^7.8.3" "@babel/plugin-transform-regenerator" "^7.8.7" "@babel/plugin-transform-reserved-words" "^7.8.3" @@ -766,25 +765,37 @@ "@babel/plugin-transform-template-literals" "^7.8.3" "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/types" "^7.8.7" - browserslist "^4.8.5" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.5" + browserslist "^4.9.1" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-flow@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.8.3.tgz#52af74c6a4e80d889bd9436e8e278d0fecac6e18" - integrity sha512-iCXFk+T4demnq+dNLLvlGOgvYF6sPZ/hS1EmswugOqh1Ysp2vuiqJzpgsnp5rW8+6dLJT/0CXDzye28ZH6BAfQ== +"@babel/preset-flow@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.9.0.tgz#fee847c3e090b0b2d9227c1949e4da1d1379280d" + integrity sha512-88uSmlshIrlmPkNkEcx3UpSZ6b8n0UGBq0/0ZMZCF/uxAW0XIAUuDHBhIOAh0pvweafH4RxOwi/H3rWhtqOYPA== dependencies: "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-flow-strip-types" "^7.8.3" + "@babel/plugin-transform-flow-strip-types" "^7.9.0" -"@babel/register@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.6.tgz#a1066aa6168a73a70c35ef28cc5865ccc087ea69" - integrity sha512-7IDO93fuRsbyml7bAafBQb3RcBGlCpU4hh5wADA2LJEEcYk92WkwFZ0pHyIi2fb5Auoz1714abETdZKCOxN0CQ== +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/register@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.9.0.tgz#02464ede57548bddbb5e9f705d263b7c3f43d48b" + integrity sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q== dependencies: find-cache-dir "^2.0.0" lodash "^4.17.13" @@ -792,10 +803,10 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" - integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== +"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== dependencies: regenerator-runtime "^0.13.4" @@ -808,27 +819,27 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" - integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" + integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.6" - "@babel/helper-function-name" "^7.8.3" + "@babel/generator" "^7.9.5" + "@babel/helper-function-name" "^7.9.5" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.5" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" - integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" + integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== dependencies: - esutils "^2.0.2" + "@babel/helper-validator-identifier" "^7.9.5" lodash "^4.17.13" to-fast-properties "^2.0.0" @@ -2835,7 +2846,7 @@ browserify@^16.2.3: vm-browserify "^1.0.0" xtend "^4.0.0" -browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: +browserslist@^4.8.3, browserslist@^4.9.1: version "4.9.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== @@ -6539,12 +6550,12 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" - integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== dependencies: - minimist "^1.2.0" + minimist "^1.2.5" jsonfile@^4.0.0: version "4.0.0" @@ -8812,10 +8823,10 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" -regenerate-unicode-properties@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" @@ -8850,27 +8861,27 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -regexpu-core@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" - integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^8.1.0" - regjsgen "^0.5.0" - regjsparser "^0.6.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" + unicode-match-property-value-ecmascript "^1.2.0" -regjsgen@^0.5.0: +regjsgen@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== -regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" @@ -10330,10 +10341,10 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: version "1.0.5" From 6b8f6ab2dece33e50fd9f9e6ad9b0d5f4d8e35ef Mon Sep 17 00:00:00 2001 From: beraliv Date: Wed, 15 Apr 2020 22:47:28 +0300 Subject: [PATCH 05/10] transform-spread: create TS types (not Flow) when using TS (#11378) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * βž• add test fixture * βž• add removeTypeDuplicates for typescript * βž• add createTSUnionType for typescript * πŸ’Š fix ConditionalExpression for typescript * πŸ’Š fix ConditionalExpression * πŸ’Š fix added test case * βž• add new line at the end of the file * πŸ’Š types.every(f) => f(types[0]) * πŸ”„ bug => foo * βž• add TSBaseType * βž• add conditions NOT to break backward compatibility --- .../src/path/inference/inferer-reference.js | 17 ++++- .../src/path/inference/inferers.js | 20 ++++-- .../test/fixtures/type-reference/input.ts | 13 ++++ .../test/fixtures/type-reference/options.json | 4 ++ .../src/asserts/generated/index.js | 3 + .../builders/typescript/createTSUnionType.js | 19 ++++++ .../src/constants/generated/index.js | 1 + .../babel-types/src/definitions/typescript.js | 6 +- packages/babel-types/src/index.js | 1 + .../typescript/removeTypeDuplicates.js | 65 +++++++++++++++++++ .../src/validators/generated/index.js | 30 +++++++++ 11 files changed, 170 insertions(+), 9 deletions(-) create mode 100644 packages/babel-traverse/test/fixtures/type-reference/input.ts create mode 100644 packages/babel-traverse/test/fixtures/type-reference/options.json create mode 100644 packages/babel-types/src/builders/typescript/createTSUnionType.js create mode 100644 packages/babel-types/src/modifications/typescript/removeTypeDuplicates.js diff --git a/packages/babel-traverse/src/path/inference/inferer-reference.js b/packages/babel-traverse/src/path/inference/inferer-reference.js index 0af6f1eedb04..94505566e684 100644 --- a/packages/babel-traverse/src/path/inference/inferer-reference.js +++ b/packages/babel-traverse/src/path/inference/inferer-reference.js @@ -91,9 +91,15 @@ function getTypeAnnotationBindingConstantViolations(binding, path, name) { } } - if (types.length) { - return t.createUnionTypeAnnotation(types); + if (!types.length) { + return; + } + + if (t.isTSTypeAnnotation(types[0]) && t.createTSUnionType) { + return t.createTSUnionType(types); } + + return t.createUnionTypeAnnotation(types); } function getConstantViolationsBefore(binding, path, functions) { @@ -201,6 +207,13 @@ function getConditionalAnnotation(binding, path, name) { } if (types.length) { + if (t.isTSTypeAnnotation(types[0]) && t.createTSUnionType) { + return { + typeAnnotation: t.createTSUnionType(types), + ifStatement, + }; + } + return { typeAnnotation: t.createUnionTypeAnnotation(types), ifStatement, diff --git a/packages/babel-traverse/src/path/inference/inferers.js b/packages/babel-traverse/src/path/inference/inferers.js index fb9a467b1f64..876516725557 100644 --- a/packages/babel-traverse/src/path/inference/inferers.js +++ b/packages/babel-traverse/src/path/inference/inferers.js @@ -83,17 +83,29 @@ export function BinaryExpression(node) { } export function LogicalExpression() { - return t.createUnionTypeAnnotation([ + const argumentTypes = [ this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation(), - ]); + ]; + + if (t.isTSTypeAnnotation(argumentTypes[0]) && t.createTSUnionType) { + return t.createTSUnionType(argumentTypes); + } + + return t.createUnionTypeAnnotation(argumentTypes); } export function ConditionalExpression() { - return t.createUnionTypeAnnotation([ + const argumentTypes = [ this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation(), - ]); + ]; + + if (t.isTSTypeAnnotation(argumentTypes[0]) && t.createTSUnionType) { + return t.createTSUnionType(argumentTypes); + } + + return t.createUnionTypeAnnotation(argumentTypes); } export function SequenceExpression() { diff --git a/packages/babel-traverse/test/fixtures/type-reference/input.ts b/packages/babel-traverse/test/fixtures/type-reference/input.ts new file mode 100644 index 000000000000..9fc2c011bd9c --- /dev/null +++ b/packages/babel-traverse/test/fixtures/type-reference/input.ts @@ -0,0 +1,13 @@ +function foo() { + const x = 1 ? a() : b(); + + return [...x]; +} + +function a(): number[] { + return []; +} + +function b(): number[] { + return []; +} diff --git a/packages/babel-traverse/test/fixtures/type-reference/options.json b/packages/babel-traverse/test/fixtures/type-reference/options.json new file mode 100644 index 000000000000..f809bfc203e2 --- /dev/null +++ b/packages/babel-traverse/test/fixtures/type-reference/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["transform-spread"], + "presets": ["typescript"] +} diff --git a/packages/babel-types/src/asserts/generated/index.js b/packages/babel-types/src/asserts/generated/index.js index 06464cd3a347..a99c58081d41 100644 --- a/packages/babel-types/src/asserts/generated/index.js +++ b/packages/babel-types/src/asserts/generated/index.js @@ -1202,6 +1202,9 @@ export function assertTSTypeElement(node: Object, opts?: Object = {}): void { export function assertTSType(node: Object, opts?: Object = {}): void { assert("TSType", node, opts); } +export function assertTSBaseType(node: Object, opts?: Object = {}): void { + assert("TSBaseType", node, opts); +} export function assertNumberLiteral(node: Object, opts: Object): void { console.trace( "The node type NumberLiteral has been renamed to NumericLiteral", diff --git a/packages/babel-types/src/builders/typescript/createTSUnionType.js b/packages/babel-types/src/builders/typescript/createTSUnionType.js new file mode 100644 index 000000000000..49138ad029f3 --- /dev/null +++ b/packages/babel-types/src/builders/typescript/createTSUnionType.js @@ -0,0 +1,19 @@ +import { TSUnionType } from "../generated"; +import removeTypeDuplicates from "../../modifications/typescript/removeTypeDuplicates"; + +/** + * Takes an array of `types` and flattens them, removing duplicates and + * returns a `UnionTypeAnnotation` node containg them. + */ +export default function createTSUnionType( + typeAnnotations: Array, +): Object { + const types = typeAnnotations.map(type => type.typeAnnotations); + const flattened = removeTypeDuplicates(types); + + if (flattened.length === 1) { + return flattened[0]; + } else { + return TSUnionType(flattened); + } +} diff --git a/packages/babel-types/src/constants/generated/index.js b/packages/babel-types/src/constants/generated/index.js index 1f4b576a87b6..acdf21744af7 100644 --- a/packages/babel-types/src/constants/generated/index.js +++ b/packages/babel-types/src/constants/generated/index.js @@ -51,3 +51,4 @@ export const JSX_TYPES = FLIPPED_ALIAS_KEYS["JSX"]; export const PRIVATE_TYPES = FLIPPED_ALIAS_KEYS["Private"]; export const TSTYPEELEMENT_TYPES = FLIPPED_ALIAS_KEYS["TSTypeElement"]; export const TSTYPE_TYPES = FLIPPED_ALIAS_KEYS["TSType"]; +export const TSBASETYPE_TYPES = FLIPPED_ALIAS_KEYS["TSBaseType"]; diff --git a/packages/babel-types/src/definitions/typescript.js b/packages/babel-types/src/definitions/typescript.js index 608ea8ab2207..421b16c47d6c 100644 --- a/packages/babel-types/src/definitions/typescript.js +++ b/packages/babel-types/src/definitions/typescript.js @@ -143,14 +143,14 @@ const tsKeywordTypes = [ for (const type of tsKeywordTypes) { defineType(type, { - aliases: ["TSType"], + aliases: ["TSType", "TSBaseType"], visitor: [], fields: {}, }); } defineType("TSThisType", { - aliases: ["TSType"], + aliases: ["TSType", "TSBaseType"], visitor: [], fields: {}, }); @@ -300,7 +300,7 @@ defineType("TSMappedType", { }); defineType("TSLiteralType", { - aliases: ["TSType"], + aliases: ["TSType", "TSBaseType"], visitor: ["literal"], fields: { literal: validateType([ diff --git a/packages/babel-types/src/index.js b/packages/babel-types/src/index.js index b0586a4f90ec..a2126a1fe81c 100644 --- a/packages/babel-types/src/index.js +++ b/packages/babel-types/src/index.js @@ -10,6 +10,7 @@ export * from "./asserts/generated"; // builders export { default as createTypeAnnotationBasedOnTypeof } from "./builders/flow/createTypeAnnotationBasedOnTypeof"; export { default as createUnionTypeAnnotation } from "./builders/flow/createUnionTypeAnnotation"; +export { default as createTSUnionType } from "./builders/typescript/createTSUnionType"; export * from "./builders/generated"; // clone diff --git a/packages/babel-types/src/modifications/typescript/removeTypeDuplicates.js b/packages/babel-types/src/modifications/typescript/removeTypeDuplicates.js new file mode 100644 index 000000000000..1ed0e34f3f2b --- /dev/null +++ b/packages/babel-types/src/modifications/typescript/removeTypeDuplicates.js @@ -0,0 +1,65 @@ +import { + isTSAnyKeyword, + isTSUnionType, + isTSBaseType, +} from "../../validators/generated"; + +/** + * Dedupe type annotations. + */ +export default function removeTypeDuplicates( + nodes: Array, +): Array { + const generics = {}; + const bases = {}; + + // store union type groups to circular references + const typeGroups = []; + + const types = []; + + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (!node) continue; + + // detect duplicates + if (types.indexOf(node) >= 0) { + continue; + } + + // this type matches anything + if (isTSAnyKeyword(node.type)) { + return [node]; + } + + // Analogue of FlowBaseAnnotation + if (isTSBaseType(node)) { + bases[node.type] = node; + continue; + } + + if (isTSUnionType(node)) { + if (typeGroups.indexOf(node.types) < 0) { + nodes = nodes.concat(node.types); + typeGroups.push(node.types); + } + continue; + } + + // TODO: add generic types + + types.push(node); + } + + // add back in bases + for (const type of Object.keys(bases)) { + types.push(bases[type]); + } + + // add back in generics + for (const name of Object.keys(generics)) { + types.push(generics[name]); + } + + return types; +} diff --git a/packages/babel-types/src/validators/generated/index.js b/packages/babel-types/src/validators/generated/index.js index f78c4127ef0b..4fc045c201a9 100644 --- a/packages/babel-types/src/validators/generated/index.js +++ b/packages/babel-types/src/validators/generated/index.js @@ -4611,6 +4611,36 @@ export function isTSType(node: ?Object, opts?: Object): boolean { return false; } +export function isTSBaseType(node: ?Object, opts?: Object): boolean { + if (!node) return false; + + const nodeType = node.type; + if ( + nodeType === "TSBaseType" || + "TSAnyKeyword" === nodeType || + "TSBooleanKeyword" === nodeType || + "TSBigIntKeyword" === nodeType || + "TSNeverKeyword" === nodeType || + "TSNullKeyword" === nodeType || + "TSNumberKeyword" === nodeType || + "TSObjectKeyword" === nodeType || + "TSStringKeyword" === nodeType || + "TSSymbolKeyword" === nodeType || + "TSUndefinedKeyword" === nodeType || + "TSUnknownKeyword" === nodeType || + "TSVoidKeyword" === nodeType || + "TSThisType" === nodeType || + "TSLiteralType" === nodeType + ) { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} export function isNumberLiteral(node: ?Object, opts?: Object): boolean { console.trace( "The node type NumberLiteral has been renamed to NumericLiteral", From d9eb94327ab7b8a5cfda7e8e39969aee38baf1f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 16 Apr 2020 20:19:22 +0200 Subject: [PATCH 06/10] Don't include "resolve" in @babel/standalone (#11432) * Don't include "resolve" in @babel/standalone * Also alias src --- .../package.json | 4 +++ .../src/get-runtime-path/browser.js | 7 +++++ .../src/get-runtime-path/index.js | 30 +++++++++++++++++++ .../src/index.js | 30 ++----------------- 4 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 packages/babel-plugin-transform-runtime/src/get-runtime-path/browser.js create mode 100644 packages/babel-plugin-transform-runtime/src/get-runtime-path/index.js diff --git a/packages/babel-plugin-transform-runtime/package.json b/packages/babel-plugin-transform-runtime/package.json index d1211e4065e2..5e0cd84f4bf5 100644 --- a/packages/babel-plugin-transform-runtime/package.json +++ b/packages/babel-plugin-transform-runtime/package.json @@ -11,6 +11,10 @@ "keywords": [ "babel-plugin" ], + "browser": { + "./lib/get-runtime-path/index.js": "./lib/get-runtime-path/browser.js", + "./src/get-runtime-path/index.js": "./src/get-runtime-path/browser.js" + }, "dependencies": { "@babel/helper-module-imports": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3", diff --git a/packages/babel-plugin-transform-runtime/src/get-runtime-path/browser.js b/packages/babel-plugin-transform-runtime/src/get-runtime-path/browser.js new file mode 100644 index 000000000000..1d407ae99a99 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/src/get-runtime-path/browser.js @@ -0,0 +1,7 @@ +export default function(moduleName, dirname, absoluteRuntime) { + if (absoluteRuntime === false) return moduleName; + + throw new Error( + "The 'absoluteRuntime' option is not supported when using @babel/standalone.", + ); +} diff --git a/packages/babel-plugin-transform-runtime/src/get-runtime-path/index.js b/packages/babel-plugin-transform-runtime/src/get-runtime-path/index.js new file mode 100644 index 000000000000..393bde793888 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/src/get-runtime-path/index.js @@ -0,0 +1,30 @@ +import path from "path"; +import resolve from "resolve"; + +export default function(moduleName, dirname, absoluteRuntime) { + if (absoluteRuntime === false) return moduleName; + + return resolveAbsoluteRuntime( + moduleName, + path.resolve(dirname, absoluteRuntime === true ? "." : absoluteRuntime), + ); +} + +function resolveAbsoluteRuntime(moduleName: string, dirname: string) { + try { + return path + .dirname(resolve.sync(`${moduleName}/package.json`, { basedir: dirname })) + .replace(/\\/g, "/"); + } catch (err) { + if (err.code !== "MODULE_NOT_FOUND") throw err; + + throw Object.assign( + new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`), + { + code: "BABEL_RUNTIME_NOT_FOUND", + runtime: moduleName, + dirname, + }, + ); + } +} diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 448d46f449c9..ca203e13b20b 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -1,5 +1,3 @@ -import path from "path"; -import resolve from "resolve"; import { declare } from "@babel/helper-plugin-utils"; import { addDefault, isModule } from "@babel/helper-module-imports"; import { types as t } from "@babel/core"; @@ -7,25 +5,7 @@ import { types as t } from "@babel/core"; import getCoreJS2Definitions from "./runtime-corejs2-definitions"; import getCoreJS3Definitions from "./runtime-corejs3-definitions"; import { typeAnnotationToString } from "./helpers"; - -function resolveAbsoluteRuntime(moduleName: string, dirname: string) { - try { - return path - .dirname(resolve.sync(`${moduleName}/package.json`, { basedir: dirname })) - .replace(/\\/g, "/"); - } catch (err) { - if (err.code !== "MODULE_NOT_FOUND") throw err; - - throw Object.assign( - new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`), - { - code: "BABEL_RUNTIME_NOT_FOUND", - runtime: moduleName, - dirname, - }, - ); - } -} +import getRuntimePath from "./get-runtime-path"; function supportsStaticESM(caller) { return !!(caller && caller.supportsStaticESM); @@ -196,13 +176,7 @@ export default declare((api, options, dirname) => { const HEADER_HELPERS = ["interopRequireWildcard", "interopRequireDefault"]; - let modulePath = moduleName; - if (absoluteRuntime !== false) { - modulePath = resolveAbsoluteRuntime( - moduleName, - path.resolve(dirname, absoluteRuntime === true ? "." : absoluteRuntime), - ); - } + const modulePath = getRuntimePath(moduleName, dirname, absoluteRuntime); return { name: "transform-runtime", From 1c0970131e0cb87664363ebb0ba276453c76fe04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 16 Apr 2020 15:13:57 -0400 Subject: [PATCH 07/10] polish: recommend preset for js extensions (#11421) --- .../src/parser/util/missing-plugin-helper.js | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/babel-core/src/parser/util/missing-plugin-helper.js b/packages/babel-core/src/parser/util/missing-plugin-helper.js index b6af22e4b603..114b9f23005b 100644 --- a/packages/babel-core/src/parser/util/missing-plugin-helper.js +++ b/packages/babel-core/src/parser/util/missing-plugin-helper.js @@ -83,8 +83,8 @@ const pluginNameMap = { url: "https://git.io/vb4yb", }, transform: { - name: "@babel/plugin-transform-flow-strip-types", - url: "https://git.io/vb49g", + name: "@babel/preset-flow", + url: "https://git.io/JfeDn", }, }, functionBind: { @@ -119,8 +119,8 @@ const pluginNameMap = { url: "https://git.io/vb4yA", }, transform: { - name: "@babel/plugin-transform-react-jsx", - url: "https://git.io/vb4yd", + name: "@babel/preset-react", + url: "https://git.io/JfeDR", }, }, logicalAssignment: { @@ -185,8 +185,8 @@ const pluginNameMap = { url: "https://git.io/vb4SC", }, transform: { - name: "@babel/plugin-transform-typescript", - url: "https://git.io/vb4Sm", + name: "@babel/preset-typescript", + url: "https://git.io/JfeDz", }, }, @@ -260,13 +260,15 @@ export default function generateMissingPluginMessage( if (pluginInfo) { const { syntax: syntaxPlugin, transform: transformPlugin } = pluginInfo; if (syntaxPlugin) { + const syntaxPluginInfo = getNameURLCombination(syntaxPlugin); if (transformPlugin) { const transformPluginInfo = getNameURLCombination(transformPlugin); - helpMessage += - `\n\nAdd ${transformPluginInfo} to the 'plugins' section of your Babel config ` + - `to enable transformation.`; + const sectionType = transformPlugin.name.startsWith("@babel/plugin") + ? "plugins" + : "presets"; + helpMessage += `\n\nAdd ${transformPluginInfo} to the '${sectionType}' section of your Babel config to enable transformation. +If you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section to enable parsing.`; } else { - const syntaxPluginInfo = getNameURLCombination(syntaxPlugin); helpMessage += `\n\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` + `to enable parsing.`; From 0aa5a4719618caf4f2118f82409854ba01079dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 16 Apr 2020 15:14:46 -0400 Subject: [PATCH 08/10] chore: remove included proposal plugins (#11433) --- babel.config.js | 5 +---- package.json | 3 --- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/babel.config.js b/babel.config.js index 33d6e23ffb04..b66ad8e143e3 100644 --- a/babel.config.js +++ b/babel.config.js @@ -8,6 +8,7 @@ module.exports = function(api) { const envOptsNoTargets = { loose: true, modules: false, + shippedProposals: true, exclude: ["transform-typeof-symbol"], }; const envOpts = Object.assign({}, envOptsNoTargets); @@ -100,14 +101,10 @@ module.exports = function(api) { "@babel/plugin-transform-flow-strip-types", ["@babel/proposal-class-properties", { loose: true }], "@babel/proposal-export-namespace-from", - "@babel/proposal-numeric-separator", [ "@babel/proposal-object-rest-spread", { useBuiltIns: true, loose: true }, ], - ["@babel/plugin-proposal-optional-chaining", { loose: true }], - ["@babel/plugin-proposal-nullish-coalescing-operator", { loose: true }], - compileDynamicImport ? dynamicImportUrlToPath : null, compileDynamicImport ? "@babel/plugin-proposal-dynamic-import" : null, diff --git a/package.json b/package.json index 69d0003309be..584a31b9778e 100644 --- a/package.json +++ b/package.json @@ -16,10 +16,7 @@ "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-dynamic-import": "^7.8.3", "@babel/plugin-proposal-export-namespace-from": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", "@babel/plugin-proposal-object-rest-spread": "^7.9.5", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", "@babel/plugin-transform-flow-strip-types": "^7.9.0", "@babel/plugin-transform-for-of": "^7.9.0", "@babel/plugin-transform-modules-commonjs": "^7.9.0", From d6efed5b22a0ac54ecf9317c38af35331c1605d2 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Mon, 20 Apr 2020 10:54:14 -0400 Subject: [PATCH 09/10] Fix redeclaring private in nested class's superClass (#11424) If a nested class's `superClass` redeclares the outer class's private field and access it in a computed key, that should fail. Follow up to #11405. --- .../src/fields.js | 3 +- .../nested-class-computed-redeclared/exec.js | 19 ++++++ .../nested-class-computed/exec.js | 17 ++++++ .../exec.js | 18 ++++++ .../input.js | 12 ++++ .../output.js | 56 +++++++++++++++++ .../nested-class-extends-computed/exec.js | 18 ++++++ .../nested-class-extends-computed/input.js | 11 ++++ .../nested-class-extends-computed/output.js | 52 ++++++++++++++++ .../nested-class-computed-redeclared/exec.js | 19 ++++++ .../private/nested-class-computed/exec.js | 17 ++++++ .../exec.js | 18 ++++++ .../input.js | 12 ++++ .../output.js | 61 +++++++++++++++++++ .../nested-class-extends-computed/exec.js | 18 ++++++ .../nested-class-extends-computed/input.js | 11 ++++ .../nested-class-extends-computed/output.js | 55 +++++++++++++++++ 17 files changed, 415 insertions(+), 2 deletions(-) create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/exec.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/exec.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/exec.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/exec.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/exec.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/exec.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/exec.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/exec.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/output.js diff --git a/packages/babel-helper-create-class-features-plugin/src/fields.js b/packages/babel-helper-create-class-features-plugin/src/fields.js index 083d35056bc0..504cf807e68f 100644 --- a/packages/babel-helper-create-class-features-plugin/src/fields.js +++ b/packages/babel-helper-create-class-features-plugin/src/fields.js @@ -103,7 +103,6 @@ const privateNameVisitor = { // This class redeclares some private field. We need to process the outer // environment with access to all the outer privates, then we can process // the inner environment with only the still-visible outer privates. - path.get("superClass").traverse(privateNameVisitor, this); path.get("body").traverse(privateNameNestedVisitor, { ...this, redeclared, @@ -115,7 +114,7 @@ const privateNameVisitor = { // We'll eventually hit this class node again with the overall Class // Features visitor, which'll process the redeclared privates. - path.skip(); + path.skipKey("body"); }, }; diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/exec.js new file mode 100644 index 000000000000..b42463f45085 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed-redeclared/exec.js @@ -0,0 +1,19 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + #foo = 2; + + [this.#foo]() { + } + } + + return new Nested(); + } +} + +const f = new Foo(); +expect(() => { + f.test(); +}).toThrow(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/exec.js new file mode 100644 index 000000000000..937d281a8ecd --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-computed/exec.js @@ -0,0 +1,17 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + [this.#foo]() { + } + } + + return new Nested(); + } +} + +const f = new Foo(); +expect(() => { + f.test(); +}).not.toThrow(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/exec.js new file mode 100644 index 000000000000..e6ecc61d0c65 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/exec.js @@ -0,0 +1,18 @@ +class Foo { + #foo = 1; + + test() { + class Nested extends class { + #foo = 2; + + [this.#foo] = 2; + } { + #foo = 3; + } + } +} + +const f = new Foo(); +expect(() => { + f.test(); +}).toThrow(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/input.js new file mode 100644 index 000000000000..8a57bd3eed55 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/input.js @@ -0,0 +1,12 @@ +class Foo { + #foo = 1; + + test() { + class Nested extends class { + #foo = 2; + [this.#foo] = 2; + } { + #foo = 3; + } + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/output.js new file mode 100644 index 000000000000..e5a3d47e0354 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed-redeclared/output.js @@ -0,0 +1,56 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + Object.defineProperty(this, _foo, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var _temp, _foo3; + + var _babelHelpers$classPr; + + var Nested = /*#__PURE__*/function (_ref) { + babelHelpers.inherits(Nested, _ref); + + var _super = babelHelpers.createSuper(Nested); + + function Nested(...args) { + var _this; + + babelHelpers.classCallCheck(this, Nested); + _this = _super.call(this, ...args); + Object.defineProperty(babelHelpers.assertThisInitialized(_this), _foo2, { + writable: true, + value: 3 + }); + return _this; + } + + return Nested; + }((_temp = (_babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _foo3)[_foo3], /*#__PURE__*/function () { + function _class2() { + babelHelpers.classCallCheck(this, _class2); + Object.defineProperty(this, _foo3, { + writable: true, + value: 2 + }); + this[_babelHelpers$classPr] = 2; + } + + return _class2; + }()), _foo3 = babelHelpers.classPrivateFieldLooseKey("foo"), _temp)); + + var _foo2 = babelHelpers.classPrivateFieldLooseKey("foo"); + } + }]); + return Foo; +}(); + +var _foo = babelHelpers.classPrivateFieldLooseKey("foo"); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/exec.js new file mode 100644 index 000000000000..ab86e53ad557 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/exec.js @@ -0,0 +1,18 @@ +class Foo { + #foo = 1; + + test() { + class Nested extends class { + [this.#foo] = 2; + } { + #foo = 3; + } + + return new Nested(); + } +} + +const f = new Foo(); +expect(() => { + f.test(); +}).not.toThrow(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/input.js new file mode 100644 index 000000000000..80c5199085fd --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/input.js @@ -0,0 +1,11 @@ +class Foo { + #foo = 1; + + test() { + class Nested extends class { + [this.#foo] = 2; + } { + #foo = 3; + } + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/output.js new file mode 100644 index 000000000000..8dd6e4eda055 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/nested-class-extends-computed/output.js @@ -0,0 +1,52 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + Object.defineProperty(this, _foo, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var _temp; + + var _babelHelpers$classPr; + + var Nested = /*#__PURE__*/function (_ref) { + babelHelpers.inherits(Nested, _ref); + + var _super = babelHelpers.createSuper(Nested); + + function Nested(...args) { + var _this; + + babelHelpers.classCallCheck(this, Nested); + _this = _super.call(this, ...args); + Object.defineProperty(babelHelpers.assertThisInitialized(_this), _foo2, { + writable: true, + value: 3 + }); + return _this; + } + + return Nested; + }((_temp = (_babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _foo)[_foo], /*#__PURE__*/function () { + function _class2() { + babelHelpers.classCallCheck(this, _class2); + this[_babelHelpers$classPr] = 2; + } + + return _class2; + }()), _temp)); + + var _foo2 = babelHelpers.classPrivateFieldLooseKey("foo"); + } + }]); + return Foo; +}(); + +var _foo = babelHelpers.classPrivateFieldLooseKey("foo"); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/exec.js new file mode 100644 index 000000000000..b42463f45085 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed-redeclared/exec.js @@ -0,0 +1,19 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + #foo = 2; + + [this.#foo]() { + } + } + + return new Nested(); + } +} + +const f = new Foo(); +expect(() => { + f.test(); +}).toThrow(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/exec.js new file mode 100644 index 000000000000..937d281a8ecd --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-computed/exec.js @@ -0,0 +1,17 @@ +class Foo { + #foo = 1; + + test() { + class Nested { + [this.#foo]() { + } + } + + return new Nested(); + } +} + +const f = new Foo(); +expect(() => { + f.test(); +}).not.toThrow(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/exec.js new file mode 100644 index 000000000000..e6ecc61d0c65 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/exec.js @@ -0,0 +1,18 @@ +class Foo { + #foo = 1; + + test() { + class Nested extends class { + #foo = 2; + + [this.#foo] = 2; + } { + #foo = 3; + } + } +} + +const f = new Foo(); +expect(() => { + f.test(); +}).toThrow(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/input.js new file mode 100644 index 000000000000..8a57bd3eed55 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/input.js @@ -0,0 +1,12 @@ +class Foo { + #foo = 1; + + test() { + class Nested extends class { + #foo = 2; + [this.#foo] = 2; + } { + #foo = 3; + } + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/output.js new file mode 100644 index 000000000000..4048382eea90 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed-redeclared/output.js @@ -0,0 +1,61 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + + _foo.set(this, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var _temp, _foo3; + + var _babelHelpers$classPr; + + var Nested = /*#__PURE__*/function (_ref) { + babelHelpers.inherits(Nested, _ref); + + var _super = babelHelpers.createSuper(Nested); + + function Nested(...args) { + var _this; + + babelHelpers.classCallCheck(this, Nested); + _this = _super.call(this, ...args); + + _foo2.set(babelHelpers.assertThisInitialized(_this), { + writable: true, + value: 3 + }); + + return _this; + } + + return Nested; + }((_temp = (_babelHelpers$classPr = babelHelpers.classPrivateFieldGet(this, _foo3), /*#__PURE__*/function () { + function _class2() { + babelHelpers.classCallCheck(this, _class2); + + _foo3.set(this, { + writable: true, + value: 2 + }); + + babelHelpers.defineProperty(this, _babelHelpers$classPr, 2); + } + + return _class2; + }()), _foo3 = new WeakMap(), _temp)); + + var _foo2 = new WeakMap(); + } + }]); + return Foo; +}(); + +var _foo = new WeakMap(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/exec.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/exec.js new file mode 100644 index 000000000000..ab86e53ad557 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/exec.js @@ -0,0 +1,18 @@ +class Foo { + #foo = 1; + + test() { + class Nested extends class { + [this.#foo] = 2; + } { + #foo = 3; + } + + return new Nested(); + } +} + +const f = new Foo(); +expect(() => { + f.test(); +}).not.toThrow(); diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/input.js new file mode 100644 index 000000000000..80c5199085fd --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/input.js @@ -0,0 +1,11 @@ +class Foo { + #foo = 1; + + test() { + class Nested extends class { + [this.#foo] = 2; + } { + #foo = 3; + } + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/output.js new file mode 100644 index 000000000000..6f17afe6bbd3 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/nested-class-extends-computed/output.js @@ -0,0 +1,55 @@ +var Foo = /*#__PURE__*/function () { + "use strict"; + + function Foo() { + babelHelpers.classCallCheck(this, Foo); + + _foo.set(this, { + writable: true, + value: 1 + }); + } + + babelHelpers.createClass(Foo, [{ + key: "test", + value: function test() { + var _temp; + + var _babelHelpers$classPr; + + var Nested = /*#__PURE__*/function (_ref) { + babelHelpers.inherits(Nested, _ref); + + var _super = babelHelpers.createSuper(Nested); + + function Nested(...args) { + var _this; + + babelHelpers.classCallCheck(this, Nested); + _this = _super.call(this, ...args); + + _foo2.set(babelHelpers.assertThisInitialized(_this), { + writable: true, + value: 3 + }); + + return _this; + } + + return Nested; + }((_temp = (_babelHelpers$classPr = babelHelpers.classPrivateFieldGet(this, _foo), /*#__PURE__*/function () { + function _class2() { + babelHelpers.classCallCheck(this, _class2); + babelHelpers.defineProperty(this, _babelHelpers$classPr, 2); + } + + return _class2; + }()), _temp)); + + var _foo2 = new WeakMap(); + } + }]); + return Foo; +}(); + +var _foo = new WeakMap(); From 1a08aa5adc564d5205dc7900d8364b28dc0914a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Mon, 20 Apr 2020 18:06:08 +0200 Subject: [PATCH 10/10] Update failing fixtures (#11447) --- .../browserslists-defaults-not-ie/stdout.txt | 10 +++++----- .../debug/browserslists-defaults/stdout.txt | 10 +++++----- .../stdout.txt | 18 +++++++++--------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults-not-ie/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults-not-ie/stdout.txt index 8a2b67c76fa7..1d637ea4ac6d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults-not-ie/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults-not-ie/stdout.txt @@ -7,7 +7,7 @@ Using targets: "edge": "18", "firefox": "68", "ios": "12.2", - "opera": "65", + "opera": "66", "safari": "12.1", "samsung": "10.1" } @@ -15,8 +15,8 @@ Using targets: Using modules transform: auto Using plugins: - proposal-nullish-coalescing-operator { "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - proposal-optional-chaining { "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } + proposal-nullish-coalescing-operator { "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + proposal-optional-chaining { "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } proposal-json-strings { "edge":"18" } proposal-optional-catch-binding { "edge":"18" } proposal-async-generator-functions { "edge":"18" } @@ -26,7 +26,7 @@ Using plugins: transform-named-capturing-groups-regex { "edge":"18", "firefox":"68" } transform-template-literals { "ios":"12.2", "safari":"12.1" } transform-function-name { "edge":"18" } - transform-modules-commonjs { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - proposal-dynamic-import { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } + transform-modules-commonjs { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + proposal-dynamic-import { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults/stdout.txt index f4bcc73d2762..be1ceb36ee65 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-defaults/stdout.txt @@ -8,7 +8,7 @@ Using targets: "firefox": "68", "ie": "11", "ios": "12.2", - "opera": "65", + "opera": "66", "safari": "12.1", "samsung": "10.1" } @@ -16,8 +16,8 @@ Using targets: Using modules transform: auto Using plugins: - proposal-nullish-coalescing-operator { "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - proposal-optional-chaining { "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } + proposal-nullish-coalescing-operator { "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + proposal-optional-chaining { "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } proposal-json-strings { "edge":"18", "ie":"11" } proposal-optional-catch-binding { "edge":"18", "ie":"11" } transform-parameters { "ie":"11" } @@ -46,7 +46,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "ie":"11" } - transform-modules-commonjs { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - proposal-dynamic-import { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } + transform-modules-commonjs { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + proposal-dynamic-import { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-last-2-versions-not-ie/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-last-2-versions-not-ie/stdout.txt index 13bb1f11a2f2..7e00cf5e8eb0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-last-2-versions-not-ie/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-last-2-versions-not-ie/stdout.txt @@ -7,7 +7,7 @@ Using targets: "edge": "79", "firefox": "74", "ios": "13.2", - "opera": "65", + "opera": "66", "safari": "12.1", "samsung": "10.1" } @@ -15,17 +15,17 @@ Using targets: Using modules transform: auto Using plugins: - proposal-nullish-coalescing-operator { "edge":"79", "ios":"13.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - proposal-optional-chaining { "edge":"79", "ios":"13.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - syntax-json-strings { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - syntax-optional-catch-binding { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - syntax-async-generators { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - syntax-object-rest-spread { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } + proposal-nullish-coalescing-operator { "edge":"79", "ios":"13.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + proposal-optional-chaining { "edge":"79", "ios":"13.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + syntax-json-strings { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + syntax-optional-catch-binding { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + syntax-async-generators { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + syntax-object-rest-spread { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } transform-dotall-regex { "firefox":"74" } proposal-unicode-property-regex { "firefox":"74" } transform-named-capturing-groups-regex { "firefox":"74" } transform-template-literals { "safari":"12.1" } - transform-modules-commonjs { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } - proposal-dynamic-import { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"65", "safari":"12.1", "samsung":"10.1" } + transform-modules-commonjs { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } + proposal-dynamic-import { "android":"80", "chrome":"80", "edge":"79", "firefox":"74", "ios":"13.2", "opera":"66", "safari":"12.1", "samsung":"10.1" } Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set.