From 1a65ba76f08a3ae0bc89495b8d6364ef7f07cbaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 2 Jul 2020 11:32:41 -0400 Subject: [PATCH 01/90] test: add console warn spy on babel-register tests (#11780) * test: add console warn spy on register tests * address review comments --- packages/babel-register/test/cache.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/babel-register/test/cache.js b/packages/babel-register/test/cache.js index f4fb2de2e8ec..ee939729dbf8 100644 --- a/packages/babel-register/test/cache.js +++ b/packages/babel-register/test/cache.js @@ -31,6 +31,7 @@ function resetCache() { describe("@babel/register - caching", () => { describe("cache", () => { let load, get, save; + let consoleWarnSpy; beforeEach(() => { // Since lib/cache is a singleton we need to fully reload it @@ -40,9 +41,14 @@ describe("@babel/register - caching", () => { load = cache.load; get = cache.get; save = cache.save; + + consoleWarnSpy = jest.spyOn(console, "warn").mockImplementation(() => {}); }); - afterEach(cleanCache); + afterEach(() => { + cleanCache(); + consoleWarnSpy.mockRestore(); + }); afterAll(resetCache); it("should load and get cached data", () => { @@ -88,10 +94,12 @@ describe("@babel/register - caching", () => { if (process.platform !== "win32") { it("should be disabled when CACHE_PATH is not allowed to read", () => { writeCache({ foo: "bar" }, 0o266); - load(); expect(get()).toEqual({}); + expect(consoleWarnSpy.mock.calls[0][0]).toContain( + "Babel could not read cache file", + ); }); } @@ -104,6 +112,9 @@ describe("@babel/register - caching", () => { process.nextTick(() => { load(); expect(get()).toEqual({}); + expect(consoleWarnSpy.mock.calls[0][0]).toContain( + "Babel could not write cache to file", + ); cb(); }); }); From 0d444072ba3f66d4d886308793ead2205ddf7957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 3 Jul 2020 07:53:25 -0400 Subject: [PATCH 02/90] chore: refine yarn cache config (#11782) * chore: refine yarn cache config * fix: Circle CI does not support template on paths * chore: manually update yarn cache key * remove debug command --- .circleci/config.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8258aba3330e..21ff5b59d160 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,10 +4,12 @@ aliases: - &restore-node-modules-cache keys: - v1-yarn-deps-{{ checksum "yarn.lock" }} + - v1-yarn-deps- - &restore-yarn-cache keys: - - v1-yarn-cache + - v1-1-yarn-cache-{{ checksum "yarn.lock" }} + - v1-1-yarn-cache- - &save-node-modules-cache paths: @@ -16,8 +18,8 @@ aliases: - &save-yarn-cache paths: - - ~/.yarn-cache - key: v1-yarn-cache + - ~/.cache/yarn + key: v1-1-yarn-cache-{{ checksum "yarn.lock" }} - &artifact_babel path: ~/babel/packages/babel-standalone/babel.js @@ -119,13 +121,13 @@ jobs: cat ~/diff.tap | $(npm bin)/tap-merge | $(npm bin)/tap-mocha-reporter xunit | tee ~/test-results/test262/results.xml <<: *test262_workdir - store_test_results: *artifact_test262_xunit - - save_cache: *save-node-modules-cache - - save_cache: *save-yarn-cache publish-verdaccio: executor: node-executor steps: - checkout + - restore_cache: *restore-yarn-cache + - restore_cache: *restore-node-modules-cache - run: yarn install - run: ./scripts/integration-tests/publish-local.sh - persist_to_workspace: @@ -216,4 +218,3 @@ workflows: - e2e-vue-cli: requires: - publish-verdaccio - From c664fbdd07d0a510d5bcb42b4d1776e9354696ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 3 Jul 2020 07:54:40 -0400 Subject: [PATCH 03/90] fix: update class properties support matrix (#11783) --- packages/babel-compat-data/data/plugins.json | 6 +++--- packages/babel-compat-data/scripts/data/plugin-features.js | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/babel-compat-data/data/plugins.json b/packages/babel-compat-data/data/plugins.json index 06ce685acc0e..26f711b3f5ac 100644 --- a/packages/babel-compat-data/data/plugins.json +++ b/packages/babel-compat-data/data/plugins.json @@ -15,11 +15,11 @@ "opera": "61", "edge": "79", "node": "12", - "electron": "6.1" + "samsung": "11", + "electron": "6" }, "proposal-private-methods": { - "chrome": "84", - "opera": "71" + "chrome": "84" }, "proposal-nullish-coalescing-operator": { "chrome": "80", diff --git a/packages/babel-compat-data/scripts/data/plugin-features.js b/packages/babel-compat-data/scripts/data/plugin-features.js index b780251b085a..0eb5192f10a4 100644 --- a/packages/babel-compat-data/scripts/data/plugin-features.js +++ b/packages/babel-compat-data/scripts/data/plugin-features.js @@ -125,7 +125,12 @@ const es2020 = { const shippedProposal = { "proposal-numeric-separator": "numeric separator", "proposal-class-properties": { - features: ["static class fields", "instance class fields"], + features: [ + "static class fields", + "instance class fields, public instance class fields", + "instance class fields, private instance class fields basic support", + "instance class fields, computed instance class fields", + ], }, "proposal-private-methods": "private class methods", }; From 3e55270135410c5b0f75de7b9a283565357fe595 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 08:27:41 +0100 Subject: [PATCH 04/90] Reduce dependency on lodash functions: includes, uniq, repeat, isinteger (#11790) * Replace lodash 'includes' usage with Array.prototype.includes * Replace lodash 'values' usage with Object.values * Replace lodash 'uniq' usage with Array.from(new Set(...)) * Property safety: ensure that ignoreSuites/ignoreTasks are populated prior to access * Property safety: ensure that blacklistTypes is populated prior to access * Revert "Replace lodash 'values' usage with Object.values" This reverts commit 9fd3679d6db03066daee09fad0050e5292a32aa1. * Replace lodash 'repeat' usage with String.prototype.repeat * Replace lodash 'isinteger' usage with Number.isInteger * Remove explicit lodash dependency from babel-generator package * Update packages/babel-helper-transform-fixture-test-runner/src/index.js Co-authored-by: Brian Ng * Rely on optional chaining operator as sole boolean check * Handle additional optional chaining operator simplification * Update type signature Co-authored-by: Brian Ng --- packages/babel-cli/src/babel/options.js | 3 +-- packages/babel-cli/src/babel/util.js | 3 +-- packages/babel-generator/package.json | 1 - packages/babel-generator/src/printer.js | 8 +++----- .../src/index.js | 7 +++---- packages/babel-traverse/src/index.js | 5 ++--- packages/babel-traverse/src/path/introspection.js | 3 +-- packages/babel-traverse/src/scope/index.js | 8 +++----- packages/babel-types/src/utils/inherit.js | 6 +++--- 9 files changed, 17 insertions(+), 27 deletions(-) diff --git a/packages/babel-cli/src/babel/options.js b/packages/babel-cli/src/babel/options.js index 6b94f75cd675..0aa54b3ef607 100644 --- a/packages/babel-cli/src/babel/options.js +++ b/packages/babel-cli/src/babel/options.js @@ -4,7 +4,6 @@ import fs from "fs"; import commander from "commander"; import { version } from "@babel/core"; -import uniq from "lodash/uniq"; import glob from "glob"; import pkg from "../../package.json"; @@ -195,7 +194,7 @@ export default function parseArgv(args: Array): CmdOptions | null { return globbed.concat(files); }, []); - filenames = uniq(filenames); + filenames = Array.from(new Set(filenames)); filenames.forEach(function (filename) { if (!fs.existsSync(filename)) { diff --git a/packages/babel-cli/src/babel/util.js b/packages/babel-cli/src/babel/util.js index 752203cd0620..868382232d02 100644 --- a/packages/babel-cli/src/babel/util.js +++ b/packages/babel-cli/src/babel/util.js @@ -2,7 +2,6 @@ import readdirRecursive from "fs-readdir-recursive"; import * as babel from "@babel/core"; -import includes from "lodash/includes"; import path from "path"; import fs from "fs"; @@ -47,7 +46,7 @@ export function isCompilableExtension( ): boolean { const exts = altExts || babel.DEFAULT_EXTENSIONS; const ext = path.extname(filename); - return includes(exts, ext); + return exts.includes(ext); } export function addSourceMappingUrl(code: string, loc: string): string { diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json index 0fa7b675ef14..545b27db7e44 100644 --- a/packages/babel-generator/package.json +++ b/packages/babel-generator/package.json @@ -20,7 +20,6 @@ "dependencies": { "@babel/types": "^7.10.4", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" }, "devDependencies": { diff --git a/packages/babel-generator/src/printer.js b/packages/babel-generator/src/printer.js index bed3698545c7..83a0321a0a70 100644 --- a/packages/babel-generator/src/printer.js +++ b/packages/babel-generator/src/printer.js @@ -1,5 +1,3 @@ -import isInteger from "lodash/isInteger"; -import repeat from "lodash/repeat"; import Buffer from "./buffer"; import * as n from "./node"; import * as t from "@babel/types"; @@ -138,7 +136,7 @@ export default class Printer { // Integer tokens need special handling because they cannot have '.'s inserted // immediately after them. this._endsWithInteger = - isInteger(+str) && + Number.isInteger(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && @@ -324,7 +322,7 @@ export default class Printer { */ _getIndent(): string { - return repeat(this.format.indent.style, this._indent); + return this.format.indent.style.repeat(this._indent); } /** @@ -616,7 +614,7 @@ export default class Printer { this._getIndent().length, this._buf.getCurrentColumn(), ); - val = val.replace(/\n(?!$)/g, `\n${repeat(" ", indentSize)}`); + val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`); } // Avoid creating //* comments diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index 568e18376048..1ff7233d1975 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -5,7 +5,6 @@ import getFixtures from "@babel/helper-fixtures"; import sourceMap from "source-map"; import { codeFrameColumns } from "@babel/code-frame"; import defaults from "lodash/defaults"; -import includes from "lodash/includes"; import escapeRegExp from "lodash/escapeRegExp"; import * as helpers from "./helpers"; import extend from "lodash/extend"; @@ -352,7 +351,7 @@ export default function ( const suites = getFixtures(fixturesLoc); for (const testSuite of suites) { - if (includes(suiteOpts.ignoreSuites, testSuite.title)) continue; + if (suiteOpts.ignoreSuites?.includes(testSuite.title)) continue; describe(name + "/" + testSuite.title, function () { jest.addMatchers({ @@ -361,8 +360,8 @@ export default function ( for (const task of testSuite.tests) { if ( - includes(suiteOpts.ignoreTasks, task.title) || - includes(suiteOpts.ignoreTasks, testSuite.title + "/" + task.title) + suiteOpts.ignoreTasks?.includes(task.title) || + suiteOpts.ignoreTasks?.includes(testSuite.title + "/" + task.title) ) { continue; } diff --git a/packages/babel-traverse/src/index.js b/packages/babel-traverse/src/index.js index 1af05587ca2b..3d3af0f79e03 100644 --- a/packages/babel-traverse/src/index.js +++ b/packages/babel-traverse/src/index.js @@ -1,6 +1,5 @@ import TraversalContext from "./context"; import * as visitors from "./visitors"; -import includes from "lodash/includes"; import * as t from "@babel/types"; import * as cache from "./cache"; @@ -87,10 +86,10 @@ function hasBlacklistedType(path, state) { traverse.hasType = function ( tree: Object, type: Object, - blacklistTypes: Array, + blacklistTypes?: Array, ): boolean { // the node we're searching in is blacklisted - if (includes(blacklistTypes, tree.type)) return false; + if (blacklistTypes?.includes(tree.type)) return false; // the type we're looking for is the same as the passed node if (tree.type === type) return true; diff --git a/packages/babel-traverse/src/path/introspection.js b/packages/babel-traverse/src/path/introspection.js index b660cf666e94..7060b6a2f51f 100644 --- a/packages/babel-traverse/src/path/introspection.js +++ b/packages/babel-traverse/src/path/introspection.js @@ -1,7 +1,6 @@ // This file contains methods responsible for introspecting the current path for certain values. import type NodePath from "./index"; -import includes from "lodash/includes"; import * as t from "@babel/types"; /** @@ -149,7 +148,7 @@ export function isStatementOrBlock() { ) { return false; } else { - return includes(t.STATEMENT_OR_BLOCK_KEYS, this.key); + return t.STATEMENT_OR_BLOCK_KEYS.includes(this.key); } } diff --git a/packages/babel-traverse/src/scope/index.js b/packages/babel-traverse/src/scope/index.js index f309baf316e2..4a7a7f83efa1 100644 --- a/packages/babel-traverse/src/scope/index.js +++ b/packages/babel-traverse/src/scope/index.js @@ -1,5 +1,3 @@ -import includes from "lodash/includes"; -import repeat from "lodash/repeat"; import Renamer from "./lib/renamer"; import type NodePath from "../path"; import traverse from "../index"; @@ -502,7 +500,7 @@ export default class Scope { } dump() { - const sep = repeat("-", 60); + const sep = "-".repeat(60); console.log(sep); let scope = this; do { @@ -1038,8 +1036,8 @@ export default class Scope { if (this.hasOwnBinding(name)) return true; if (this.parentHasBinding(name, noGlobals)) return true; if (this.hasUid(name)) return true; - if (!noGlobals && includes(Scope.globals, name)) return true; - if (!noGlobals && includes(Scope.contextVariables, name)) return true; + if (!noGlobals && Scope.globals.includes(name)) return true; + if (!noGlobals && Scope.contextVariables.includes(name)) return true; return false; } diff --git a/packages/babel-types/src/utils/inherit.js b/packages/babel-types/src/utils/inherit.js index 276e0d91436f..be57867e8bd3 100644 --- a/packages/babel-types/src/utils/inherit.js +++ b/packages/babel-types/src/utils/inherit.js @@ -1,12 +1,12 @@ // @flow -import uniq from "lodash/uniq"; - export default function inherit( key: string, child: Object, parent: Object, ): void { if (child && parent) { - child[key] = uniq([].concat(child[key], parent[key]).filter(Boolean)); + child[key] = Array.from( + new Set([].concat(child[key], parent[key]).filter(Boolean)), + ); } } From 3a53f7244d2eccf2473be7c35a1d872b72eeb156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Mon, 6 Jul 2020 20:21:38 -0400 Subject: [PATCH 05/90] docs: update README example and REPL link (#11799) --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 472558348f0a..31b74893567a 100644 --- a/README.md +++ b/README.md @@ -63,19 +63,21 @@ Babel is a tool that helps you write code in the latest version of JavaScript. W **In** ```js -// ES2015 arrow function -[1, 2, 3].map((n) => n + 1); +// ES2020 nullish coalescing +function greet(input) { + return input ?? "Hello world"; +} ``` **Out** ```js -[1, 2, 3].map(function(n) { - return n + 1; -}); +function greet(input) { + return input != null ? input : "Hello world"; +} ``` -Try it out at our [REPL](https://babeljs.io/repl/build/main#?code_lz=NoRgNATGDMC6B0BbAhgBwBQDsAEBeAfNjgNTYgCUA3EA&lineWrap=true&presets=es2015%2Ces2016%2Ces2017&version=7.0.0-beta.2). +Try it out at our [REPL](https://babel.dev/repl#?browsers=defaults%2C%20not%20ie%2011&loose=true&code_lz=GYVwdgxgLglg9mABAcwE4FN1QBQzABxCgEpEBvAKEUQyhFST0KkQH5XEAiACXQBs-cRAHc4qPgBNOAbgoBfIA&shippedProposals=true&sourceType=script&lineWrap=true&presets=env%2Cenv&prettier=true). ## FAQ From b1a8e72e169b967968c403242a7073b8122d0288 Mon Sep 17 00:00:00 2001 From: Bogdan Savluk Date: Tue, 7 Jul 2020 09:53:00 +0200 Subject: [PATCH 06/90] Refactor generated builder names in @babel/types (#11582) * ensure only builders starting with lowercase are used * update generate builders to have function name starting flow lowercase * fix bug in deprecated builders * remove comment about not yet discussed change in next major version --- packages/babel-generator/test/index.js | 16 +- .../imports/parameter-decorators/plugin.js | 6 +- .../scripts/generators/generateBuilders.js | 22 +- .../src/builders/generated/index.js | 1114 +++++++++-------- .../builders/typescript/createTSUnionType.js | 4 +- 5 files changed, 589 insertions(+), 573 deletions(-) diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index 54ff79c919d7..25a93045ddcc 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -463,32 +463,32 @@ describe("programmatic generation", function () { describe("typescript generate parentheses if necessary", function () { it("wraps around union for array", () => { - const typeStatement = t.TSArrayType( - t.TSUnionType([ - t.TSIntersectionType([t.TSNumberKeyword(), t.TSBooleanKeyword()]), - t.TSNullKeyword(), + const typeStatement = t.tsArrayType( + t.tsUnionType([ + t.tsIntersectionType([t.tsNumberKeyword(), t.tsBooleanKeyword()]), + t.tsNullKeyword(), ]), ); const output = generate(typeStatement).code; expect(output).toBe("((number & boolean) | null)[]"); }); it("wraps around intersection for array", () => { - const typeStatement = t.TSArrayType( - t.TSIntersectionType([t.TSNumberKeyword(), t.TSBooleanKeyword()]), + const typeStatement = t.tsArrayType( + t.tsIntersectionType([t.tsNumberKeyword(), t.tsBooleanKeyword()]), ); const output = generate(typeStatement).code; expect(output).toBe("(number & boolean)[]"); }); it("wraps around rest", () => { const typeStatement = t.tsRestType( - t.TSIntersectionType([t.TSNumberKeyword(), t.TSBooleanKeyword()]), + t.tsIntersectionType([t.tsNumberKeyword(), t.tsBooleanKeyword()]), ); const output = generate(typeStatement).code; expect(output).toBe("...(number & boolean)"); }); it("wraps around optional type", () => { const typeStatement = t.tsOptionalType( - t.TSIntersectionType([t.TSNumberKeyword(), t.TSBooleanKeyword()]), + t.tsIntersectionType([t.tsNumberKeyword(), t.tsBooleanKeyword()]), ); const output = generate(typeStatement).code; expect(output).toBe("(number & boolean)?"); diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/imports/parameter-decorators/plugin.js b/packages/babel-plugin-transform-typescript/test/fixtures/imports/parameter-decorators/plugin.js index a066043915fa..834f2517801f 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/imports/parameter-decorators/plugin.js +++ b/packages/babel-plugin-transform-typescript/test/fixtures/imports/parameter-decorators/plugin.js @@ -25,7 +25,7 @@ exports.default = function(_ref) { .forEach(function(decorator) { resultantDecorator = types.callExpression( decorator.expression, - [resultantDecorator || types.Identifier(paramUidName)] + [resultantDecorator || types.identifier(paramUidName)] ); }); @@ -40,12 +40,12 @@ exports.default = function(_ref) { "body", types.variableDeclaration("var", [ types.variableDeclarator( - types.Identifier(decoratedParamUidName), + types.identifier(decoratedParamUidName), resultantDecorator ), ]) ); - param.replaceWith(types.Identifier(paramUidName)); + param.replaceWith(types.identifier(paramUidName)); } }); }, diff --git a/packages/babel-types/scripts/generators/generateBuilders.js b/packages/babel-types/scripts/generators/generateBuilders.js index 08a5b6fc6155..5ca9f74643aa 100644 --- a/packages/babel-types/scripts/generators/generateBuilders.js +++ b/packages/babel-types/scripts/generators/generateBuilders.js @@ -11,15 +11,29 @@ module.exports = function generateBuilders() { */ import builder from "../builder";\n\n`; + const reservedNames = new Set(["super", "import"]); Object.keys(definitions.BUILDER_KEYS).forEach(type => { - output += `export function ${type}(...args: Array): Object { return builder("${type}", ...args); } -export { ${type} as ${formatBuilderName(type)} };\n`; + const formatedBuilderName = formatBuilderName(type); + const formatedBuilderNameLocal = reservedNames.has(formatedBuilderName) + ? `_${formatedBuilderName}` + : formatedBuilderName; + output += `${ + formatedBuilderNameLocal === formatedBuilderName ? "export " : "" + }function ${formatedBuilderNameLocal}(...args: Array): Object { return builder("${type}", ...args); }\n`; + // This is needed for backwards compatibility. + // arrayExpression -> ArrayExpression + output += `export { ${formatedBuilderNameLocal} as ${type} };\n`; + if (formatedBuilderNameLocal !== formatedBuilderName) { + output += `export { ${formatedBuilderNameLocal} as ${formatedBuilderName} };\n`; + } // This is needed for backwards compatibility. // It should be removed in the next major version. // JSXIdentifier -> jSXIdentifier if (/^[A-Z]{2}/.test(type)) { - output += `export { ${type} as ${lowerFirst(type)} }\n`; + output += `export { ${formatedBuilderNameLocal} as ${lowerFirst( + type + )} }\n`; } }); @@ -27,7 +41,7 @@ export { ${type} as ${formatBuilderName(type)} };\n`; const newType = definitions.DEPRECATED_KEYS[type]; output += `export function ${type}(...args: Array): Object { console.trace("The node type ${type} has been renamed to ${newType}"); - return ${type}("${type}", ...args); + return builder("${type}", ...args); } export { ${type} as ${formatBuilderName(type)} };\n`; diff --git a/packages/babel-types/src/builders/generated/index.js b/packages/babel-types/src/builders/generated/index.js index 676ff2c0d4dc..321a666787ef 100644 --- a/packages/babel-types/src/builders/generated/index.js +++ b/packages/babel-types/src/builders/generated/index.js @@ -5,1055 +5,1057 @@ */ import builder from "../builder"; -export function ArrayExpression(...args: Array): Object { +export function arrayExpression(...args: Array): Object { return builder("ArrayExpression", ...args); } -export { ArrayExpression as arrayExpression }; -export function AssignmentExpression(...args: Array): Object { +export { arrayExpression as ArrayExpression }; +export function assignmentExpression(...args: Array): Object { return builder("AssignmentExpression", ...args); } -export { AssignmentExpression as assignmentExpression }; -export function BinaryExpression(...args: Array): Object { +export { assignmentExpression as AssignmentExpression }; +export function binaryExpression(...args: Array): Object { return builder("BinaryExpression", ...args); } -export { BinaryExpression as binaryExpression }; -export function InterpreterDirective(...args: Array): Object { +export { binaryExpression as BinaryExpression }; +export function interpreterDirective(...args: Array): Object { return builder("InterpreterDirective", ...args); } -export { InterpreterDirective as interpreterDirective }; -export function Directive(...args: Array): Object { +export { interpreterDirective as InterpreterDirective }; +export function directive(...args: Array): Object { return builder("Directive", ...args); } -export { Directive as directive }; -export function DirectiveLiteral(...args: Array): Object { +export { directive as Directive }; +export function directiveLiteral(...args: Array): Object { return builder("DirectiveLiteral", ...args); } -export { DirectiveLiteral as directiveLiteral }; -export function BlockStatement(...args: Array): Object { +export { directiveLiteral as DirectiveLiteral }; +export function blockStatement(...args: Array): Object { return builder("BlockStatement", ...args); } -export { BlockStatement as blockStatement }; -export function BreakStatement(...args: Array): Object { +export { blockStatement as BlockStatement }; +export function breakStatement(...args: Array): Object { return builder("BreakStatement", ...args); } -export { BreakStatement as breakStatement }; -export function CallExpression(...args: Array): Object { +export { breakStatement as BreakStatement }; +export function callExpression(...args: Array): Object { return builder("CallExpression", ...args); } -export { CallExpression as callExpression }; -export function CatchClause(...args: Array): Object { +export { callExpression as CallExpression }; +export function catchClause(...args: Array): Object { return builder("CatchClause", ...args); } -export { CatchClause as catchClause }; -export function ConditionalExpression(...args: Array): Object { +export { catchClause as CatchClause }; +export function conditionalExpression(...args: Array): Object { return builder("ConditionalExpression", ...args); } -export { ConditionalExpression as conditionalExpression }; -export function ContinueStatement(...args: Array): Object { +export { conditionalExpression as ConditionalExpression }; +export function continueStatement(...args: Array): Object { return builder("ContinueStatement", ...args); } -export { ContinueStatement as continueStatement }; -export function DebuggerStatement(...args: Array): Object { +export { continueStatement as ContinueStatement }; +export function debuggerStatement(...args: Array): Object { return builder("DebuggerStatement", ...args); } -export { DebuggerStatement as debuggerStatement }; -export function DoWhileStatement(...args: Array): Object { +export { debuggerStatement as DebuggerStatement }; +export function doWhileStatement(...args: Array): Object { return builder("DoWhileStatement", ...args); } -export { DoWhileStatement as doWhileStatement }; -export function EmptyStatement(...args: Array): Object { +export { doWhileStatement as DoWhileStatement }; +export function emptyStatement(...args: Array): Object { return builder("EmptyStatement", ...args); } -export { EmptyStatement as emptyStatement }; -export function ExpressionStatement(...args: Array): Object { +export { emptyStatement as EmptyStatement }; +export function expressionStatement(...args: Array): Object { return builder("ExpressionStatement", ...args); } -export { ExpressionStatement as expressionStatement }; -export function File(...args: Array): Object { +export { expressionStatement as ExpressionStatement }; +export function file(...args: Array): Object { return builder("File", ...args); } -export { File as file }; -export function ForInStatement(...args: Array): Object { +export { file as File }; +export function forInStatement(...args: Array): Object { return builder("ForInStatement", ...args); } -export { ForInStatement as forInStatement }; -export function ForStatement(...args: Array): Object { +export { forInStatement as ForInStatement }; +export function forStatement(...args: Array): Object { return builder("ForStatement", ...args); } -export { ForStatement as forStatement }; -export function FunctionDeclaration(...args: Array): Object { +export { forStatement as ForStatement }; +export function functionDeclaration(...args: Array): Object { return builder("FunctionDeclaration", ...args); } -export { FunctionDeclaration as functionDeclaration }; -export function FunctionExpression(...args: Array): Object { +export { functionDeclaration as FunctionDeclaration }; +export function functionExpression(...args: Array): Object { return builder("FunctionExpression", ...args); } -export { FunctionExpression as functionExpression }; -export function Identifier(...args: Array): Object { +export { functionExpression as FunctionExpression }; +export function identifier(...args: Array): Object { return builder("Identifier", ...args); } -export { Identifier as identifier }; -export function IfStatement(...args: Array): Object { +export { identifier as Identifier }; +export function ifStatement(...args: Array): Object { return builder("IfStatement", ...args); } -export { IfStatement as ifStatement }; -export function LabeledStatement(...args: Array): Object { +export { ifStatement as IfStatement }; +export function labeledStatement(...args: Array): Object { return builder("LabeledStatement", ...args); } -export { LabeledStatement as labeledStatement }; -export function StringLiteral(...args: Array): Object { +export { labeledStatement as LabeledStatement }; +export function stringLiteral(...args: Array): Object { return builder("StringLiteral", ...args); } -export { StringLiteral as stringLiteral }; -export function NumericLiteral(...args: Array): Object { +export { stringLiteral as StringLiteral }; +export function numericLiteral(...args: Array): Object { return builder("NumericLiteral", ...args); } -export { NumericLiteral as numericLiteral }; -export function NullLiteral(...args: Array): Object { +export { numericLiteral as NumericLiteral }; +export function nullLiteral(...args: Array): Object { return builder("NullLiteral", ...args); } -export { NullLiteral as nullLiteral }; -export function BooleanLiteral(...args: Array): Object { +export { nullLiteral as NullLiteral }; +export function booleanLiteral(...args: Array): Object { return builder("BooleanLiteral", ...args); } -export { BooleanLiteral as booleanLiteral }; -export function RegExpLiteral(...args: Array): Object { +export { booleanLiteral as BooleanLiteral }; +export function regExpLiteral(...args: Array): Object { return builder("RegExpLiteral", ...args); } -export { RegExpLiteral as regExpLiteral }; -export function LogicalExpression(...args: Array): Object { +export { regExpLiteral as RegExpLiteral }; +export function logicalExpression(...args: Array): Object { return builder("LogicalExpression", ...args); } -export { LogicalExpression as logicalExpression }; -export function MemberExpression(...args: Array): Object { +export { logicalExpression as LogicalExpression }; +export function memberExpression(...args: Array): Object { return builder("MemberExpression", ...args); } -export { MemberExpression as memberExpression }; -export function NewExpression(...args: Array): Object { +export { memberExpression as MemberExpression }; +export function newExpression(...args: Array): Object { return builder("NewExpression", ...args); } -export { NewExpression as newExpression }; -export function Program(...args: Array): Object { +export { newExpression as NewExpression }; +export function program(...args: Array): Object { return builder("Program", ...args); } -export { Program as program }; -export function ObjectExpression(...args: Array): Object { +export { program as Program }; +export function objectExpression(...args: Array): Object { return builder("ObjectExpression", ...args); } -export { ObjectExpression as objectExpression }; -export function ObjectMethod(...args: Array): Object { +export { objectExpression as ObjectExpression }; +export function objectMethod(...args: Array): Object { return builder("ObjectMethod", ...args); } -export { ObjectMethod as objectMethod }; -export function ObjectProperty(...args: Array): Object { +export { objectMethod as ObjectMethod }; +export function objectProperty(...args: Array): Object { return builder("ObjectProperty", ...args); } -export { ObjectProperty as objectProperty }; -export function RestElement(...args: Array): Object { +export { objectProperty as ObjectProperty }; +export function restElement(...args: Array): Object { return builder("RestElement", ...args); } -export { RestElement as restElement }; -export function ReturnStatement(...args: Array): Object { +export { restElement as RestElement }; +export function returnStatement(...args: Array): Object { return builder("ReturnStatement", ...args); } -export { ReturnStatement as returnStatement }; -export function SequenceExpression(...args: Array): Object { +export { returnStatement as ReturnStatement }; +export function sequenceExpression(...args: Array): Object { return builder("SequenceExpression", ...args); } -export { SequenceExpression as sequenceExpression }; -export function ParenthesizedExpression(...args: Array): Object { +export { sequenceExpression as SequenceExpression }; +export function parenthesizedExpression(...args: Array): Object { return builder("ParenthesizedExpression", ...args); } -export { ParenthesizedExpression as parenthesizedExpression }; -export function SwitchCase(...args: Array): Object { +export { parenthesizedExpression as ParenthesizedExpression }; +export function switchCase(...args: Array): Object { return builder("SwitchCase", ...args); } -export { SwitchCase as switchCase }; -export function SwitchStatement(...args: Array): Object { +export { switchCase as SwitchCase }; +export function switchStatement(...args: Array): Object { return builder("SwitchStatement", ...args); } -export { SwitchStatement as switchStatement }; -export function ThisExpression(...args: Array): Object { +export { switchStatement as SwitchStatement }; +export function thisExpression(...args: Array): Object { return builder("ThisExpression", ...args); } -export { ThisExpression as thisExpression }; -export function ThrowStatement(...args: Array): Object { +export { thisExpression as ThisExpression }; +export function throwStatement(...args: Array): Object { return builder("ThrowStatement", ...args); } -export { ThrowStatement as throwStatement }; -export function TryStatement(...args: Array): Object { +export { throwStatement as ThrowStatement }; +export function tryStatement(...args: Array): Object { return builder("TryStatement", ...args); } -export { TryStatement as tryStatement }; -export function UnaryExpression(...args: Array): Object { +export { tryStatement as TryStatement }; +export function unaryExpression(...args: Array): Object { return builder("UnaryExpression", ...args); } -export { UnaryExpression as unaryExpression }; -export function UpdateExpression(...args: Array): Object { +export { unaryExpression as UnaryExpression }; +export function updateExpression(...args: Array): Object { return builder("UpdateExpression", ...args); } -export { UpdateExpression as updateExpression }; -export function VariableDeclaration(...args: Array): Object { +export { updateExpression as UpdateExpression }; +export function variableDeclaration(...args: Array): Object { return builder("VariableDeclaration", ...args); } -export { VariableDeclaration as variableDeclaration }; -export function VariableDeclarator(...args: Array): Object { +export { variableDeclaration as VariableDeclaration }; +export function variableDeclarator(...args: Array): Object { return builder("VariableDeclarator", ...args); } -export { VariableDeclarator as variableDeclarator }; -export function WhileStatement(...args: Array): Object { +export { variableDeclarator as VariableDeclarator }; +export function whileStatement(...args: Array): Object { return builder("WhileStatement", ...args); } -export { WhileStatement as whileStatement }; -export function WithStatement(...args: Array): Object { +export { whileStatement as WhileStatement }; +export function withStatement(...args: Array): Object { return builder("WithStatement", ...args); } -export { WithStatement as withStatement }; -export function AssignmentPattern(...args: Array): Object { +export { withStatement as WithStatement }; +export function assignmentPattern(...args: Array): Object { return builder("AssignmentPattern", ...args); } -export { AssignmentPattern as assignmentPattern }; -export function ArrayPattern(...args: Array): Object { +export { assignmentPattern as AssignmentPattern }; +export function arrayPattern(...args: Array): Object { return builder("ArrayPattern", ...args); } -export { ArrayPattern as arrayPattern }; -export function ArrowFunctionExpression(...args: Array): Object { +export { arrayPattern as ArrayPattern }; +export function arrowFunctionExpression(...args: Array): Object { return builder("ArrowFunctionExpression", ...args); } -export { ArrowFunctionExpression as arrowFunctionExpression }; -export function ClassBody(...args: Array): Object { +export { arrowFunctionExpression as ArrowFunctionExpression }; +export function classBody(...args: Array): Object { return builder("ClassBody", ...args); } -export { ClassBody as classBody }; -export function ClassExpression(...args: Array): Object { +export { classBody as ClassBody }; +export function classExpression(...args: Array): Object { return builder("ClassExpression", ...args); } -export { ClassExpression as classExpression }; -export function ClassDeclaration(...args: Array): Object { +export { classExpression as ClassExpression }; +export function classDeclaration(...args: Array): Object { return builder("ClassDeclaration", ...args); } -export { ClassDeclaration as classDeclaration }; -export function ExportAllDeclaration(...args: Array): Object { +export { classDeclaration as ClassDeclaration }; +export function exportAllDeclaration(...args: Array): Object { return builder("ExportAllDeclaration", ...args); } -export { ExportAllDeclaration as exportAllDeclaration }; -export function ExportDefaultDeclaration(...args: Array): Object { +export { exportAllDeclaration as ExportAllDeclaration }; +export function exportDefaultDeclaration(...args: Array): Object { return builder("ExportDefaultDeclaration", ...args); } -export { ExportDefaultDeclaration as exportDefaultDeclaration }; -export function ExportNamedDeclaration(...args: Array): Object { +export { exportDefaultDeclaration as ExportDefaultDeclaration }; +export function exportNamedDeclaration(...args: Array): Object { return builder("ExportNamedDeclaration", ...args); } -export { ExportNamedDeclaration as exportNamedDeclaration }; -export function ExportSpecifier(...args: Array): Object { +export { exportNamedDeclaration as ExportNamedDeclaration }; +export function exportSpecifier(...args: Array): Object { return builder("ExportSpecifier", ...args); } -export { ExportSpecifier as exportSpecifier }; -export function ForOfStatement(...args: Array): Object { +export { exportSpecifier as ExportSpecifier }; +export function forOfStatement(...args: Array): Object { return builder("ForOfStatement", ...args); } -export { ForOfStatement as forOfStatement }; -export function ImportDeclaration(...args: Array): Object { +export { forOfStatement as ForOfStatement }; +export function importDeclaration(...args: Array): Object { return builder("ImportDeclaration", ...args); } -export { ImportDeclaration as importDeclaration }; -export function ImportDefaultSpecifier(...args: Array): Object { +export { importDeclaration as ImportDeclaration }; +export function importDefaultSpecifier(...args: Array): Object { return builder("ImportDefaultSpecifier", ...args); } -export { ImportDefaultSpecifier as importDefaultSpecifier }; -export function ImportNamespaceSpecifier(...args: Array): Object { +export { importDefaultSpecifier as ImportDefaultSpecifier }; +export function importNamespaceSpecifier(...args: Array): Object { return builder("ImportNamespaceSpecifier", ...args); } -export { ImportNamespaceSpecifier as importNamespaceSpecifier }; -export function ImportSpecifier(...args: Array): Object { +export { importNamespaceSpecifier as ImportNamespaceSpecifier }; +export function importSpecifier(...args: Array): Object { return builder("ImportSpecifier", ...args); } -export { ImportSpecifier as importSpecifier }; -export function MetaProperty(...args: Array): Object { +export { importSpecifier as ImportSpecifier }; +export function metaProperty(...args: Array): Object { return builder("MetaProperty", ...args); } -export { MetaProperty as metaProperty }; -export function ClassMethod(...args: Array): Object { +export { metaProperty as MetaProperty }; +export function classMethod(...args: Array): Object { return builder("ClassMethod", ...args); } -export { ClassMethod as classMethod }; -export function ObjectPattern(...args: Array): Object { +export { classMethod as ClassMethod }; +export function objectPattern(...args: Array): Object { return builder("ObjectPattern", ...args); } -export { ObjectPattern as objectPattern }; -export function SpreadElement(...args: Array): Object { +export { objectPattern as ObjectPattern }; +export function spreadElement(...args: Array): Object { return builder("SpreadElement", ...args); } -export { SpreadElement as spreadElement }; -export function Super(...args: Array): Object { +export { spreadElement as SpreadElement }; +function _super(...args: Array): Object { return builder("Super", ...args); } -export { Super as super }; -export function TaggedTemplateExpression(...args: Array): Object { +export { _super as Super }; +export { _super as super }; +export function taggedTemplateExpression(...args: Array): Object { return builder("TaggedTemplateExpression", ...args); } -export { TaggedTemplateExpression as taggedTemplateExpression }; -export function TemplateElement(...args: Array): Object { +export { taggedTemplateExpression as TaggedTemplateExpression }; +export function templateElement(...args: Array): Object { return builder("TemplateElement", ...args); } -export { TemplateElement as templateElement }; -export function TemplateLiteral(...args: Array): Object { +export { templateElement as TemplateElement }; +export function templateLiteral(...args: Array): Object { return builder("TemplateLiteral", ...args); } -export { TemplateLiteral as templateLiteral }; -export function YieldExpression(...args: Array): Object { +export { templateLiteral as TemplateLiteral }; +export function yieldExpression(...args: Array): Object { return builder("YieldExpression", ...args); } -export { YieldExpression as yieldExpression }; -export function AnyTypeAnnotation(...args: Array): Object { +export { yieldExpression as YieldExpression }; +export function anyTypeAnnotation(...args: Array): Object { return builder("AnyTypeAnnotation", ...args); } -export { AnyTypeAnnotation as anyTypeAnnotation }; -export function ArrayTypeAnnotation(...args: Array): Object { +export { anyTypeAnnotation as AnyTypeAnnotation }; +export function arrayTypeAnnotation(...args: Array): Object { return builder("ArrayTypeAnnotation", ...args); } -export { ArrayTypeAnnotation as arrayTypeAnnotation }; -export function BooleanTypeAnnotation(...args: Array): Object { +export { arrayTypeAnnotation as ArrayTypeAnnotation }; +export function booleanTypeAnnotation(...args: Array): Object { return builder("BooleanTypeAnnotation", ...args); } -export { BooleanTypeAnnotation as booleanTypeAnnotation }; -export function BooleanLiteralTypeAnnotation(...args: Array): Object { +export { booleanTypeAnnotation as BooleanTypeAnnotation }; +export function booleanLiteralTypeAnnotation(...args: Array): Object { return builder("BooleanLiteralTypeAnnotation", ...args); } -export { BooleanLiteralTypeAnnotation as booleanLiteralTypeAnnotation }; -export function NullLiteralTypeAnnotation(...args: Array): Object { +export { booleanLiteralTypeAnnotation as BooleanLiteralTypeAnnotation }; +export function nullLiteralTypeAnnotation(...args: Array): Object { return builder("NullLiteralTypeAnnotation", ...args); } -export { NullLiteralTypeAnnotation as nullLiteralTypeAnnotation }; -export function ClassImplements(...args: Array): Object { +export { nullLiteralTypeAnnotation as NullLiteralTypeAnnotation }; +export function classImplements(...args: Array): Object { return builder("ClassImplements", ...args); } -export { ClassImplements as classImplements }; -export function DeclareClass(...args: Array): Object { +export { classImplements as ClassImplements }; +export function declareClass(...args: Array): Object { return builder("DeclareClass", ...args); } -export { DeclareClass as declareClass }; -export function DeclareFunction(...args: Array): Object { +export { declareClass as DeclareClass }; +export function declareFunction(...args: Array): Object { return builder("DeclareFunction", ...args); } -export { DeclareFunction as declareFunction }; -export function DeclareInterface(...args: Array): Object { +export { declareFunction as DeclareFunction }; +export function declareInterface(...args: Array): Object { return builder("DeclareInterface", ...args); } -export { DeclareInterface as declareInterface }; -export function DeclareModule(...args: Array): Object { +export { declareInterface as DeclareInterface }; +export function declareModule(...args: Array): Object { return builder("DeclareModule", ...args); } -export { DeclareModule as declareModule }; -export function DeclareModuleExports(...args: Array): Object { +export { declareModule as DeclareModule }; +export function declareModuleExports(...args: Array): Object { return builder("DeclareModuleExports", ...args); } -export { DeclareModuleExports as declareModuleExports }; -export function DeclareTypeAlias(...args: Array): Object { +export { declareModuleExports as DeclareModuleExports }; +export function declareTypeAlias(...args: Array): Object { return builder("DeclareTypeAlias", ...args); } -export { DeclareTypeAlias as declareTypeAlias }; -export function DeclareOpaqueType(...args: Array): Object { +export { declareTypeAlias as DeclareTypeAlias }; +export function declareOpaqueType(...args: Array): Object { return builder("DeclareOpaqueType", ...args); } -export { DeclareOpaqueType as declareOpaqueType }; -export function DeclareVariable(...args: Array): Object { +export { declareOpaqueType as DeclareOpaqueType }; +export function declareVariable(...args: Array): Object { return builder("DeclareVariable", ...args); } -export { DeclareVariable as declareVariable }; -export function DeclareExportDeclaration(...args: Array): Object { +export { declareVariable as DeclareVariable }; +export function declareExportDeclaration(...args: Array): Object { return builder("DeclareExportDeclaration", ...args); } -export { DeclareExportDeclaration as declareExportDeclaration }; -export function DeclareExportAllDeclaration(...args: Array): Object { +export { declareExportDeclaration as DeclareExportDeclaration }; +export function declareExportAllDeclaration(...args: Array): Object { return builder("DeclareExportAllDeclaration", ...args); } -export { DeclareExportAllDeclaration as declareExportAllDeclaration }; -export function DeclaredPredicate(...args: Array): Object { +export { declareExportAllDeclaration as DeclareExportAllDeclaration }; +export function declaredPredicate(...args: Array): Object { return builder("DeclaredPredicate", ...args); } -export { DeclaredPredicate as declaredPredicate }; -export function ExistsTypeAnnotation(...args: Array): Object { +export { declaredPredicate as DeclaredPredicate }; +export function existsTypeAnnotation(...args: Array): Object { return builder("ExistsTypeAnnotation", ...args); } -export { ExistsTypeAnnotation as existsTypeAnnotation }; -export function FunctionTypeAnnotation(...args: Array): Object { +export { existsTypeAnnotation as ExistsTypeAnnotation }; +export function functionTypeAnnotation(...args: Array): Object { return builder("FunctionTypeAnnotation", ...args); } -export { FunctionTypeAnnotation as functionTypeAnnotation }; -export function FunctionTypeParam(...args: Array): Object { +export { functionTypeAnnotation as FunctionTypeAnnotation }; +export function functionTypeParam(...args: Array): Object { return builder("FunctionTypeParam", ...args); } -export { FunctionTypeParam as functionTypeParam }; -export function GenericTypeAnnotation(...args: Array): Object { +export { functionTypeParam as FunctionTypeParam }; +export function genericTypeAnnotation(...args: Array): Object { return builder("GenericTypeAnnotation", ...args); } -export { GenericTypeAnnotation as genericTypeAnnotation }; -export function InferredPredicate(...args: Array): Object { +export { genericTypeAnnotation as GenericTypeAnnotation }; +export function inferredPredicate(...args: Array): Object { return builder("InferredPredicate", ...args); } -export { InferredPredicate as inferredPredicate }; -export function InterfaceExtends(...args: Array): Object { +export { inferredPredicate as InferredPredicate }; +export function interfaceExtends(...args: Array): Object { return builder("InterfaceExtends", ...args); } -export { InterfaceExtends as interfaceExtends }; -export function InterfaceDeclaration(...args: Array): Object { +export { interfaceExtends as InterfaceExtends }; +export function interfaceDeclaration(...args: Array): Object { return builder("InterfaceDeclaration", ...args); } -export { InterfaceDeclaration as interfaceDeclaration }; -export function InterfaceTypeAnnotation(...args: Array): Object { +export { interfaceDeclaration as InterfaceDeclaration }; +export function interfaceTypeAnnotation(...args: Array): Object { return builder("InterfaceTypeAnnotation", ...args); } -export { InterfaceTypeAnnotation as interfaceTypeAnnotation }; -export function IntersectionTypeAnnotation(...args: Array): Object { +export { interfaceTypeAnnotation as InterfaceTypeAnnotation }; +export function intersectionTypeAnnotation(...args: Array): Object { return builder("IntersectionTypeAnnotation", ...args); } -export { IntersectionTypeAnnotation as intersectionTypeAnnotation }; -export function MixedTypeAnnotation(...args: Array): Object { +export { intersectionTypeAnnotation as IntersectionTypeAnnotation }; +export function mixedTypeAnnotation(...args: Array): Object { return builder("MixedTypeAnnotation", ...args); } -export { MixedTypeAnnotation as mixedTypeAnnotation }; -export function EmptyTypeAnnotation(...args: Array): Object { +export { mixedTypeAnnotation as MixedTypeAnnotation }; +export function emptyTypeAnnotation(...args: Array): Object { return builder("EmptyTypeAnnotation", ...args); } -export { EmptyTypeAnnotation as emptyTypeAnnotation }; -export function NullableTypeAnnotation(...args: Array): Object { +export { emptyTypeAnnotation as EmptyTypeAnnotation }; +export function nullableTypeAnnotation(...args: Array): Object { return builder("NullableTypeAnnotation", ...args); } -export { NullableTypeAnnotation as nullableTypeAnnotation }; -export function NumberLiteralTypeAnnotation(...args: Array): Object { +export { nullableTypeAnnotation as NullableTypeAnnotation }; +export function numberLiteralTypeAnnotation(...args: Array): Object { return builder("NumberLiteralTypeAnnotation", ...args); } -export { NumberLiteralTypeAnnotation as numberLiteralTypeAnnotation }; -export function NumberTypeAnnotation(...args: Array): Object { +export { numberLiteralTypeAnnotation as NumberLiteralTypeAnnotation }; +export function numberTypeAnnotation(...args: Array): Object { return builder("NumberTypeAnnotation", ...args); } -export { NumberTypeAnnotation as numberTypeAnnotation }; -export function ObjectTypeAnnotation(...args: Array): Object { +export { numberTypeAnnotation as NumberTypeAnnotation }; +export function objectTypeAnnotation(...args: Array): Object { return builder("ObjectTypeAnnotation", ...args); } -export { ObjectTypeAnnotation as objectTypeAnnotation }; -export function ObjectTypeInternalSlot(...args: Array): Object { +export { objectTypeAnnotation as ObjectTypeAnnotation }; +export function objectTypeInternalSlot(...args: Array): Object { return builder("ObjectTypeInternalSlot", ...args); } -export { ObjectTypeInternalSlot as objectTypeInternalSlot }; -export function ObjectTypeCallProperty(...args: Array): Object { +export { objectTypeInternalSlot as ObjectTypeInternalSlot }; +export function objectTypeCallProperty(...args: Array): Object { return builder("ObjectTypeCallProperty", ...args); } -export { ObjectTypeCallProperty as objectTypeCallProperty }; -export function ObjectTypeIndexer(...args: Array): Object { +export { objectTypeCallProperty as ObjectTypeCallProperty }; +export function objectTypeIndexer(...args: Array): Object { return builder("ObjectTypeIndexer", ...args); } -export { ObjectTypeIndexer as objectTypeIndexer }; -export function ObjectTypeProperty(...args: Array): Object { +export { objectTypeIndexer as ObjectTypeIndexer }; +export function objectTypeProperty(...args: Array): Object { return builder("ObjectTypeProperty", ...args); } -export { ObjectTypeProperty as objectTypeProperty }; -export function ObjectTypeSpreadProperty(...args: Array): Object { +export { objectTypeProperty as ObjectTypeProperty }; +export function objectTypeSpreadProperty(...args: Array): Object { return builder("ObjectTypeSpreadProperty", ...args); } -export { ObjectTypeSpreadProperty as objectTypeSpreadProperty }; -export function OpaqueType(...args: Array): Object { +export { objectTypeSpreadProperty as ObjectTypeSpreadProperty }; +export function opaqueType(...args: Array): Object { return builder("OpaqueType", ...args); } -export { OpaqueType as opaqueType }; -export function QualifiedTypeIdentifier(...args: Array): Object { +export { opaqueType as OpaqueType }; +export function qualifiedTypeIdentifier(...args: Array): Object { return builder("QualifiedTypeIdentifier", ...args); } -export { QualifiedTypeIdentifier as qualifiedTypeIdentifier }; -export function StringLiteralTypeAnnotation(...args: Array): Object { +export { qualifiedTypeIdentifier as QualifiedTypeIdentifier }; +export function stringLiteralTypeAnnotation(...args: Array): Object { return builder("StringLiteralTypeAnnotation", ...args); } -export { StringLiteralTypeAnnotation as stringLiteralTypeAnnotation }; -export function StringTypeAnnotation(...args: Array): Object { +export { stringLiteralTypeAnnotation as StringLiteralTypeAnnotation }; +export function stringTypeAnnotation(...args: Array): Object { return builder("StringTypeAnnotation", ...args); } -export { StringTypeAnnotation as stringTypeAnnotation }; -export function SymbolTypeAnnotation(...args: Array): Object { +export { stringTypeAnnotation as StringTypeAnnotation }; +export function symbolTypeAnnotation(...args: Array): Object { return builder("SymbolTypeAnnotation", ...args); } -export { SymbolTypeAnnotation as symbolTypeAnnotation }; -export function ThisTypeAnnotation(...args: Array): Object { +export { symbolTypeAnnotation as SymbolTypeAnnotation }; +export function thisTypeAnnotation(...args: Array): Object { return builder("ThisTypeAnnotation", ...args); } -export { ThisTypeAnnotation as thisTypeAnnotation }; -export function TupleTypeAnnotation(...args: Array): Object { +export { thisTypeAnnotation as ThisTypeAnnotation }; +export function tupleTypeAnnotation(...args: Array): Object { return builder("TupleTypeAnnotation", ...args); } -export { TupleTypeAnnotation as tupleTypeAnnotation }; -export function TypeofTypeAnnotation(...args: Array): Object { +export { tupleTypeAnnotation as TupleTypeAnnotation }; +export function typeofTypeAnnotation(...args: Array): Object { return builder("TypeofTypeAnnotation", ...args); } -export { TypeofTypeAnnotation as typeofTypeAnnotation }; -export function TypeAlias(...args: Array): Object { +export { typeofTypeAnnotation as TypeofTypeAnnotation }; +export function typeAlias(...args: Array): Object { return builder("TypeAlias", ...args); } -export { TypeAlias as typeAlias }; -export function TypeAnnotation(...args: Array): Object { +export { typeAlias as TypeAlias }; +export function typeAnnotation(...args: Array): Object { return builder("TypeAnnotation", ...args); } -export { TypeAnnotation as typeAnnotation }; -export function TypeCastExpression(...args: Array): Object { +export { typeAnnotation as TypeAnnotation }; +export function typeCastExpression(...args: Array): Object { return builder("TypeCastExpression", ...args); } -export { TypeCastExpression as typeCastExpression }; -export function TypeParameter(...args: Array): Object { +export { typeCastExpression as TypeCastExpression }; +export function typeParameter(...args: Array): Object { return builder("TypeParameter", ...args); } -export { TypeParameter as typeParameter }; -export function TypeParameterDeclaration(...args: Array): Object { +export { typeParameter as TypeParameter }; +export function typeParameterDeclaration(...args: Array): Object { return builder("TypeParameterDeclaration", ...args); } -export { TypeParameterDeclaration as typeParameterDeclaration }; -export function TypeParameterInstantiation(...args: Array): Object { +export { typeParameterDeclaration as TypeParameterDeclaration }; +export function typeParameterInstantiation(...args: Array): Object { return builder("TypeParameterInstantiation", ...args); } -export { TypeParameterInstantiation as typeParameterInstantiation }; -export function UnionTypeAnnotation(...args: Array): Object { +export { typeParameterInstantiation as TypeParameterInstantiation }; +export function unionTypeAnnotation(...args: Array): Object { return builder("UnionTypeAnnotation", ...args); } -export { UnionTypeAnnotation as unionTypeAnnotation }; -export function Variance(...args: Array): Object { +export { unionTypeAnnotation as UnionTypeAnnotation }; +export function variance(...args: Array): Object { return builder("Variance", ...args); } -export { Variance as variance }; -export function VoidTypeAnnotation(...args: Array): Object { +export { variance as Variance }; +export function voidTypeAnnotation(...args: Array): Object { return builder("VoidTypeAnnotation", ...args); } -export { VoidTypeAnnotation as voidTypeAnnotation }; -export function EnumDeclaration(...args: Array): Object { +export { voidTypeAnnotation as VoidTypeAnnotation }; +export function enumDeclaration(...args: Array): Object { return builder("EnumDeclaration", ...args); } -export { EnumDeclaration as enumDeclaration }; -export function EnumBooleanBody(...args: Array): Object { +export { enumDeclaration as EnumDeclaration }; +export function enumBooleanBody(...args: Array): Object { return builder("EnumBooleanBody", ...args); } -export { EnumBooleanBody as enumBooleanBody }; -export function EnumNumberBody(...args: Array): Object { +export { enumBooleanBody as EnumBooleanBody }; +export function enumNumberBody(...args: Array): Object { return builder("EnumNumberBody", ...args); } -export { EnumNumberBody as enumNumberBody }; -export function EnumStringBody(...args: Array): Object { +export { enumNumberBody as EnumNumberBody }; +export function enumStringBody(...args: Array): Object { return builder("EnumStringBody", ...args); } -export { EnumStringBody as enumStringBody }; -export function EnumSymbolBody(...args: Array): Object { +export { enumStringBody as EnumStringBody }; +export function enumSymbolBody(...args: Array): Object { return builder("EnumSymbolBody", ...args); } -export { EnumSymbolBody as enumSymbolBody }; -export function EnumBooleanMember(...args: Array): Object { +export { enumSymbolBody as EnumSymbolBody }; +export function enumBooleanMember(...args: Array): Object { return builder("EnumBooleanMember", ...args); } -export { EnumBooleanMember as enumBooleanMember }; -export function EnumNumberMember(...args: Array): Object { +export { enumBooleanMember as EnumBooleanMember }; +export function enumNumberMember(...args: Array): Object { return builder("EnumNumberMember", ...args); } -export { EnumNumberMember as enumNumberMember }; -export function EnumStringMember(...args: Array): Object { +export { enumNumberMember as EnumNumberMember }; +export function enumStringMember(...args: Array): Object { return builder("EnumStringMember", ...args); } -export { EnumStringMember as enumStringMember }; -export function EnumDefaultedMember(...args: Array): Object { +export { enumStringMember as EnumStringMember }; +export function enumDefaultedMember(...args: Array): Object { return builder("EnumDefaultedMember", ...args); } -export { EnumDefaultedMember as enumDefaultedMember }; -export function JSXAttribute(...args: Array): Object { +export { enumDefaultedMember as EnumDefaultedMember }; +export function jsxAttribute(...args: Array): Object { return builder("JSXAttribute", ...args); } -export { JSXAttribute as jsxAttribute }; -export { JSXAttribute as jSXAttribute }; -export function JSXClosingElement(...args: Array): Object { +export { jsxAttribute as JSXAttribute }; +export { jsxAttribute as jSXAttribute }; +export function jsxClosingElement(...args: Array): Object { return builder("JSXClosingElement", ...args); } -export { JSXClosingElement as jsxClosingElement }; -export { JSXClosingElement as jSXClosingElement }; -export function JSXElement(...args: Array): Object { +export { jsxClosingElement as JSXClosingElement }; +export { jsxClosingElement as jSXClosingElement }; +export function jsxElement(...args: Array): Object { return builder("JSXElement", ...args); } -export { JSXElement as jsxElement }; -export { JSXElement as jSXElement }; -export function JSXEmptyExpression(...args: Array): Object { +export { jsxElement as JSXElement }; +export { jsxElement as jSXElement }; +export function jsxEmptyExpression(...args: Array): Object { return builder("JSXEmptyExpression", ...args); } -export { JSXEmptyExpression as jsxEmptyExpression }; -export { JSXEmptyExpression as jSXEmptyExpression }; -export function JSXExpressionContainer(...args: Array): Object { +export { jsxEmptyExpression as JSXEmptyExpression }; +export { jsxEmptyExpression as jSXEmptyExpression }; +export function jsxExpressionContainer(...args: Array): Object { return builder("JSXExpressionContainer", ...args); } -export { JSXExpressionContainer as jsxExpressionContainer }; -export { JSXExpressionContainer as jSXExpressionContainer }; -export function JSXSpreadChild(...args: Array): Object { +export { jsxExpressionContainer as JSXExpressionContainer }; +export { jsxExpressionContainer as jSXExpressionContainer }; +export function jsxSpreadChild(...args: Array): Object { return builder("JSXSpreadChild", ...args); } -export { JSXSpreadChild as jsxSpreadChild }; -export { JSXSpreadChild as jSXSpreadChild }; -export function JSXIdentifier(...args: Array): Object { +export { jsxSpreadChild as JSXSpreadChild }; +export { jsxSpreadChild as jSXSpreadChild }; +export function jsxIdentifier(...args: Array): Object { return builder("JSXIdentifier", ...args); } -export { JSXIdentifier as jsxIdentifier }; -export { JSXIdentifier as jSXIdentifier }; -export function JSXMemberExpression(...args: Array): Object { +export { jsxIdentifier as JSXIdentifier }; +export { jsxIdentifier as jSXIdentifier }; +export function jsxMemberExpression(...args: Array): Object { return builder("JSXMemberExpression", ...args); } -export { JSXMemberExpression as jsxMemberExpression }; -export { JSXMemberExpression as jSXMemberExpression }; -export function JSXNamespacedName(...args: Array): Object { +export { jsxMemberExpression as JSXMemberExpression }; +export { jsxMemberExpression as jSXMemberExpression }; +export function jsxNamespacedName(...args: Array): Object { return builder("JSXNamespacedName", ...args); } -export { JSXNamespacedName as jsxNamespacedName }; -export { JSXNamespacedName as jSXNamespacedName }; -export function JSXOpeningElement(...args: Array): Object { +export { jsxNamespacedName as JSXNamespacedName }; +export { jsxNamespacedName as jSXNamespacedName }; +export function jsxOpeningElement(...args: Array): Object { return builder("JSXOpeningElement", ...args); } -export { JSXOpeningElement as jsxOpeningElement }; -export { JSXOpeningElement as jSXOpeningElement }; -export function JSXSpreadAttribute(...args: Array): Object { +export { jsxOpeningElement as JSXOpeningElement }; +export { jsxOpeningElement as jSXOpeningElement }; +export function jsxSpreadAttribute(...args: Array): Object { return builder("JSXSpreadAttribute", ...args); } -export { JSXSpreadAttribute as jsxSpreadAttribute }; -export { JSXSpreadAttribute as jSXSpreadAttribute }; -export function JSXText(...args: Array): Object { +export { jsxSpreadAttribute as JSXSpreadAttribute }; +export { jsxSpreadAttribute as jSXSpreadAttribute }; +export function jsxText(...args: Array): Object { return builder("JSXText", ...args); } -export { JSXText as jsxText }; -export { JSXText as jSXText }; -export function JSXFragment(...args: Array): Object { +export { jsxText as JSXText }; +export { jsxText as jSXText }; +export function jsxFragment(...args: Array): Object { return builder("JSXFragment", ...args); } -export { JSXFragment as jsxFragment }; -export { JSXFragment as jSXFragment }; -export function JSXOpeningFragment(...args: Array): Object { +export { jsxFragment as JSXFragment }; +export { jsxFragment as jSXFragment }; +export function jsxOpeningFragment(...args: Array): Object { return builder("JSXOpeningFragment", ...args); } -export { JSXOpeningFragment as jsxOpeningFragment }; -export { JSXOpeningFragment as jSXOpeningFragment }; -export function JSXClosingFragment(...args: Array): Object { +export { jsxOpeningFragment as JSXOpeningFragment }; +export { jsxOpeningFragment as jSXOpeningFragment }; +export function jsxClosingFragment(...args: Array): Object { return builder("JSXClosingFragment", ...args); } -export { JSXClosingFragment as jsxClosingFragment }; -export { JSXClosingFragment as jSXClosingFragment }; -export function Noop(...args: Array): Object { +export { jsxClosingFragment as JSXClosingFragment }; +export { jsxClosingFragment as jSXClosingFragment }; +export function noop(...args: Array): Object { return builder("Noop", ...args); } -export { Noop as noop }; -export function Placeholder(...args: Array): Object { +export { noop as Noop }; +export function placeholder(...args: Array): Object { return builder("Placeholder", ...args); } -export { Placeholder as placeholder }; -export function V8IntrinsicIdentifier(...args: Array): Object { +export { placeholder as Placeholder }; +export function v8IntrinsicIdentifier(...args: Array): Object { return builder("V8IntrinsicIdentifier", ...args); } -export { V8IntrinsicIdentifier as v8IntrinsicIdentifier }; -export function ArgumentPlaceholder(...args: Array): Object { +export { v8IntrinsicIdentifier as V8IntrinsicIdentifier }; +export function argumentPlaceholder(...args: Array): Object { return builder("ArgumentPlaceholder", ...args); } -export { ArgumentPlaceholder as argumentPlaceholder }; -export function AwaitExpression(...args: Array): Object { +export { argumentPlaceholder as ArgumentPlaceholder }; +export function awaitExpression(...args: Array): Object { return builder("AwaitExpression", ...args); } -export { AwaitExpression as awaitExpression }; -export function BindExpression(...args: Array): Object { +export { awaitExpression as AwaitExpression }; +export function bindExpression(...args: Array): Object { return builder("BindExpression", ...args); } -export { BindExpression as bindExpression }; -export function ClassProperty(...args: Array): Object { +export { bindExpression as BindExpression }; +export function classProperty(...args: Array): Object { return builder("ClassProperty", ...args); } -export { ClassProperty as classProperty }; -export function OptionalMemberExpression(...args: Array): Object { +export { classProperty as ClassProperty }; +export function optionalMemberExpression(...args: Array): Object { return builder("OptionalMemberExpression", ...args); } -export { OptionalMemberExpression as optionalMemberExpression }; -export function PipelineTopicExpression(...args: Array): Object { +export { optionalMemberExpression as OptionalMemberExpression }; +export function pipelineTopicExpression(...args: Array): Object { return builder("PipelineTopicExpression", ...args); } -export { PipelineTopicExpression as pipelineTopicExpression }; -export function PipelineBareFunction(...args: Array): Object { +export { pipelineTopicExpression as PipelineTopicExpression }; +export function pipelineBareFunction(...args: Array): Object { return builder("PipelineBareFunction", ...args); } -export { PipelineBareFunction as pipelineBareFunction }; -export function PipelinePrimaryTopicReference(...args: Array): Object { +export { pipelineBareFunction as PipelineBareFunction }; +export function pipelinePrimaryTopicReference(...args: Array): Object { return builder("PipelinePrimaryTopicReference", ...args); } -export { PipelinePrimaryTopicReference as pipelinePrimaryTopicReference }; -export function OptionalCallExpression(...args: Array): Object { +export { pipelinePrimaryTopicReference as PipelinePrimaryTopicReference }; +export function optionalCallExpression(...args: Array): Object { return builder("OptionalCallExpression", ...args); } -export { OptionalCallExpression as optionalCallExpression }; -export function ClassPrivateProperty(...args: Array): Object { +export { optionalCallExpression as OptionalCallExpression }; +export function classPrivateProperty(...args: Array): Object { return builder("ClassPrivateProperty", ...args); } -export { ClassPrivateProperty as classPrivateProperty }; -export function ClassPrivateMethod(...args: Array): Object { +export { classPrivateProperty as ClassPrivateProperty }; +export function classPrivateMethod(...args: Array): Object { return builder("ClassPrivateMethod", ...args); } -export { ClassPrivateMethod as classPrivateMethod }; -export function Import(...args: Array): Object { +export { classPrivateMethod as ClassPrivateMethod }; +function _import(...args: Array): Object { return builder("Import", ...args); } -export { Import as import }; -export function ImportAttribute(...args: Array): Object { +export { _import as Import }; +export { _import as import }; +export function importAttribute(...args: Array): Object { return builder("ImportAttribute", ...args); } -export { ImportAttribute as importAttribute }; -export function Decorator(...args: Array): Object { +export { importAttribute as ImportAttribute }; +export function decorator(...args: Array): Object { return builder("Decorator", ...args); } -export { Decorator as decorator }; -export function DoExpression(...args: Array): Object { +export { decorator as Decorator }; +export function doExpression(...args: Array): Object { return builder("DoExpression", ...args); } -export { DoExpression as doExpression }; -export function ExportDefaultSpecifier(...args: Array): Object { +export { doExpression as DoExpression }; +export function exportDefaultSpecifier(...args: Array): Object { return builder("ExportDefaultSpecifier", ...args); } -export { ExportDefaultSpecifier as exportDefaultSpecifier }; -export function ExportNamespaceSpecifier(...args: Array): Object { +export { exportDefaultSpecifier as ExportDefaultSpecifier }; +export function exportNamespaceSpecifier(...args: Array): Object { return builder("ExportNamespaceSpecifier", ...args); } -export { ExportNamespaceSpecifier as exportNamespaceSpecifier }; -export function PrivateName(...args: Array): Object { +export { exportNamespaceSpecifier as ExportNamespaceSpecifier }; +export function privateName(...args: Array): Object { return builder("PrivateName", ...args); } -export { PrivateName as privateName }; -export function BigIntLiteral(...args: Array): Object { +export { privateName as PrivateName }; +export function bigIntLiteral(...args: Array): Object { return builder("BigIntLiteral", ...args); } -export { BigIntLiteral as bigIntLiteral }; -export function RecordExpression(...args: Array): Object { +export { bigIntLiteral as BigIntLiteral }; +export function recordExpression(...args: Array): Object { return builder("RecordExpression", ...args); } -export { RecordExpression as recordExpression }; -export function TupleExpression(...args: Array): Object { +export { recordExpression as RecordExpression }; +export function tupleExpression(...args: Array): Object { return builder("TupleExpression", ...args); } -export { TupleExpression as tupleExpression }; -export function TSParameterProperty(...args: Array): Object { +export { tupleExpression as TupleExpression }; +export function tsParameterProperty(...args: Array): Object { return builder("TSParameterProperty", ...args); } -export { TSParameterProperty as tsParameterProperty }; -export { TSParameterProperty as tSParameterProperty }; -export function TSDeclareFunction(...args: Array): Object { +export { tsParameterProperty as TSParameterProperty }; +export { tsParameterProperty as tSParameterProperty }; +export function tsDeclareFunction(...args: Array): Object { return builder("TSDeclareFunction", ...args); } -export { TSDeclareFunction as tsDeclareFunction }; -export { TSDeclareFunction as tSDeclareFunction }; -export function TSDeclareMethod(...args: Array): Object { +export { tsDeclareFunction as TSDeclareFunction }; +export { tsDeclareFunction as tSDeclareFunction }; +export function tsDeclareMethod(...args: Array): Object { return builder("TSDeclareMethod", ...args); } -export { TSDeclareMethod as tsDeclareMethod }; -export { TSDeclareMethod as tSDeclareMethod }; -export function TSQualifiedName(...args: Array): Object { +export { tsDeclareMethod as TSDeclareMethod }; +export { tsDeclareMethod as tSDeclareMethod }; +export function tsQualifiedName(...args: Array): Object { return builder("TSQualifiedName", ...args); } -export { TSQualifiedName as tsQualifiedName }; -export { TSQualifiedName as tSQualifiedName }; -export function TSCallSignatureDeclaration(...args: Array): Object { +export { tsQualifiedName as TSQualifiedName }; +export { tsQualifiedName as tSQualifiedName }; +export function tsCallSignatureDeclaration(...args: Array): Object { return builder("TSCallSignatureDeclaration", ...args); } -export { TSCallSignatureDeclaration as tsCallSignatureDeclaration }; -export { TSCallSignatureDeclaration as tSCallSignatureDeclaration }; -export function TSConstructSignatureDeclaration(...args: Array): Object { +export { tsCallSignatureDeclaration as TSCallSignatureDeclaration }; +export { tsCallSignatureDeclaration as tSCallSignatureDeclaration }; +export function tsConstructSignatureDeclaration(...args: Array): Object { return builder("TSConstructSignatureDeclaration", ...args); } -export { TSConstructSignatureDeclaration as tsConstructSignatureDeclaration }; -export { TSConstructSignatureDeclaration as tSConstructSignatureDeclaration }; -export function TSPropertySignature(...args: Array): Object { +export { tsConstructSignatureDeclaration as TSConstructSignatureDeclaration }; +export { tsConstructSignatureDeclaration as tSConstructSignatureDeclaration }; +export function tsPropertySignature(...args: Array): Object { return builder("TSPropertySignature", ...args); } -export { TSPropertySignature as tsPropertySignature }; -export { TSPropertySignature as tSPropertySignature }; -export function TSMethodSignature(...args: Array): Object { +export { tsPropertySignature as TSPropertySignature }; +export { tsPropertySignature as tSPropertySignature }; +export function tsMethodSignature(...args: Array): Object { return builder("TSMethodSignature", ...args); } -export { TSMethodSignature as tsMethodSignature }; -export { TSMethodSignature as tSMethodSignature }; -export function TSIndexSignature(...args: Array): Object { +export { tsMethodSignature as TSMethodSignature }; +export { tsMethodSignature as tSMethodSignature }; +export function tsIndexSignature(...args: Array): Object { return builder("TSIndexSignature", ...args); } -export { TSIndexSignature as tsIndexSignature }; -export { TSIndexSignature as tSIndexSignature }; -export function TSAnyKeyword(...args: Array): Object { +export { tsIndexSignature as TSIndexSignature }; +export { tsIndexSignature as tSIndexSignature }; +export function tsAnyKeyword(...args: Array): Object { return builder("TSAnyKeyword", ...args); } -export { TSAnyKeyword as tsAnyKeyword }; -export { TSAnyKeyword as tSAnyKeyword }; -export function TSBooleanKeyword(...args: Array): Object { +export { tsAnyKeyword as TSAnyKeyword }; +export { tsAnyKeyword as tSAnyKeyword }; +export function tsBooleanKeyword(...args: Array): Object { return builder("TSBooleanKeyword", ...args); } -export { TSBooleanKeyword as tsBooleanKeyword }; -export { TSBooleanKeyword as tSBooleanKeyword }; -export function TSBigIntKeyword(...args: Array): Object { +export { tsBooleanKeyword as TSBooleanKeyword }; +export { tsBooleanKeyword as tSBooleanKeyword }; +export function tsBigIntKeyword(...args: Array): Object { return builder("TSBigIntKeyword", ...args); } -export { TSBigIntKeyword as tsBigIntKeyword }; -export { TSBigIntKeyword as tSBigIntKeyword }; -export function TSNeverKeyword(...args: Array): Object { +export { tsBigIntKeyword as TSBigIntKeyword }; +export { tsBigIntKeyword as tSBigIntKeyword }; +export function tsNeverKeyword(...args: Array): Object { return builder("TSNeverKeyword", ...args); } -export { TSNeverKeyword as tsNeverKeyword }; -export { TSNeverKeyword as tSNeverKeyword }; -export function TSNullKeyword(...args: Array): Object { +export { tsNeverKeyword as TSNeverKeyword }; +export { tsNeverKeyword as tSNeverKeyword }; +export function tsNullKeyword(...args: Array): Object { return builder("TSNullKeyword", ...args); } -export { TSNullKeyword as tsNullKeyword }; -export { TSNullKeyword as tSNullKeyword }; -export function TSNumberKeyword(...args: Array): Object { +export { tsNullKeyword as TSNullKeyword }; +export { tsNullKeyword as tSNullKeyword }; +export function tsNumberKeyword(...args: Array): Object { return builder("TSNumberKeyword", ...args); } -export { TSNumberKeyword as tsNumberKeyword }; -export { TSNumberKeyword as tSNumberKeyword }; -export function TSObjectKeyword(...args: Array): Object { +export { tsNumberKeyword as TSNumberKeyword }; +export { tsNumberKeyword as tSNumberKeyword }; +export function tsObjectKeyword(...args: Array): Object { return builder("TSObjectKeyword", ...args); } -export { TSObjectKeyword as tsObjectKeyword }; -export { TSObjectKeyword as tSObjectKeyword }; -export function TSStringKeyword(...args: Array): Object { +export { tsObjectKeyword as TSObjectKeyword }; +export { tsObjectKeyword as tSObjectKeyword }; +export function tsStringKeyword(...args: Array): Object { return builder("TSStringKeyword", ...args); } -export { TSStringKeyword as tsStringKeyword }; -export { TSStringKeyword as tSStringKeyword }; -export function TSSymbolKeyword(...args: Array): Object { +export { tsStringKeyword as TSStringKeyword }; +export { tsStringKeyword as tSStringKeyword }; +export function tsSymbolKeyword(...args: Array): Object { return builder("TSSymbolKeyword", ...args); } -export { TSSymbolKeyword as tsSymbolKeyword }; -export { TSSymbolKeyword as tSSymbolKeyword }; -export function TSUndefinedKeyword(...args: Array): Object { +export { tsSymbolKeyword as TSSymbolKeyword }; +export { tsSymbolKeyword as tSSymbolKeyword }; +export function tsUndefinedKeyword(...args: Array): Object { return builder("TSUndefinedKeyword", ...args); } -export { TSUndefinedKeyword as tsUndefinedKeyword }; -export { TSUndefinedKeyword as tSUndefinedKeyword }; -export function TSUnknownKeyword(...args: Array): Object { +export { tsUndefinedKeyword as TSUndefinedKeyword }; +export { tsUndefinedKeyword as tSUndefinedKeyword }; +export function tsUnknownKeyword(...args: Array): Object { return builder("TSUnknownKeyword", ...args); } -export { TSUnknownKeyword as tsUnknownKeyword }; -export { TSUnknownKeyword as tSUnknownKeyword }; -export function TSVoidKeyword(...args: Array): Object { +export { tsUnknownKeyword as TSUnknownKeyword }; +export { tsUnknownKeyword as tSUnknownKeyword }; +export function tsVoidKeyword(...args: Array): Object { return builder("TSVoidKeyword", ...args); } -export { TSVoidKeyword as tsVoidKeyword }; -export { TSVoidKeyword as tSVoidKeyword }; -export function TSThisType(...args: Array): Object { +export { tsVoidKeyword as TSVoidKeyword }; +export { tsVoidKeyword as tSVoidKeyword }; +export function tsThisType(...args: Array): Object { return builder("TSThisType", ...args); } -export { TSThisType as tsThisType }; -export { TSThisType as tSThisType }; -export function TSFunctionType(...args: Array): Object { +export { tsThisType as TSThisType }; +export { tsThisType as tSThisType }; +export function tsFunctionType(...args: Array): Object { return builder("TSFunctionType", ...args); } -export { TSFunctionType as tsFunctionType }; -export { TSFunctionType as tSFunctionType }; -export function TSConstructorType(...args: Array): Object { +export { tsFunctionType as TSFunctionType }; +export { tsFunctionType as tSFunctionType }; +export function tsConstructorType(...args: Array): Object { return builder("TSConstructorType", ...args); } -export { TSConstructorType as tsConstructorType }; -export { TSConstructorType as tSConstructorType }; -export function TSTypeReference(...args: Array): Object { +export { tsConstructorType as TSConstructorType }; +export { tsConstructorType as tSConstructorType }; +export function tsTypeReference(...args: Array): Object { return builder("TSTypeReference", ...args); } -export { TSTypeReference as tsTypeReference }; -export { TSTypeReference as tSTypeReference }; -export function TSTypePredicate(...args: Array): Object { +export { tsTypeReference as TSTypeReference }; +export { tsTypeReference as tSTypeReference }; +export function tsTypePredicate(...args: Array): Object { return builder("TSTypePredicate", ...args); } -export { TSTypePredicate as tsTypePredicate }; -export { TSTypePredicate as tSTypePredicate }; -export function TSTypeQuery(...args: Array): Object { +export { tsTypePredicate as TSTypePredicate }; +export { tsTypePredicate as tSTypePredicate }; +export function tsTypeQuery(...args: Array): Object { return builder("TSTypeQuery", ...args); } -export { TSTypeQuery as tsTypeQuery }; -export { TSTypeQuery as tSTypeQuery }; -export function TSTypeLiteral(...args: Array): Object { +export { tsTypeQuery as TSTypeQuery }; +export { tsTypeQuery as tSTypeQuery }; +export function tsTypeLiteral(...args: Array): Object { return builder("TSTypeLiteral", ...args); } -export { TSTypeLiteral as tsTypeLiteral }; -export { TSTypeLiteral as tSTypeLiteral }; -export function TSArrayType(...args: Array): Object { +export { tsTypeLiteral as TSTypeLiteral }; +export { tsTypeLiteral as tSTypeLiteral }; +export function tsArrayType(...args: Array): Object { return builder("TSArrayType", ...args); } -export { TSArrayType as tsArrayType }; -export { TSArrayType as tSArrayType }; -export function TSTupleType(...args: Array): Object { +export { tsArrayType as TSArrayType }; +export { tsArrayType as tSArrayType }; +export function tsTupleType(...args: Array): Object { return builder("TSTupleType", ...args); } -export { TSTupleType as tsTupleType }; -export { TSTupleType as tSTupleType }; -export function TSOptionalType(...args: Array): Object { +export { tsTupleType as TSTupleType }; +export { tsTupleType as tSTupleType }; +export function tsOptionalType(...args: Array): Object { return builder("TSOptionalType", ...args); } -export { TSOptionalType as tsOptionalType }; -export { TSOptionalType as tSOptionalType }; -export function TSRestType(...args: Array): Object { +export { tsOptionalType as TSOptionalType }; +export { tsOptionalType as tSOptionalType }; +export function tsRestType(...args: Array): Object { return builder("TSRestType", ...args); } -export { TSRestType as tsRestType }; -export { TSRestType as tSRestType }; -export function TSUnionType(...args: Array): Object { +export { tsRestType as TSRestType }; +export { tsRestType as tSRestType }; +export function tsUnionType(...args: Array): Object { return builder("TSUnionType", ...args); } -export { TSUnionType as tsUnionType }; -export { TSUnionType as tSUnionType }; -export function TSIntersectionType(...args: Array): Object { +export { tsUnionType as TSUnionType }; +export { tsUnionType as tSUnionType }; +export function tsIntersectionType(...args: Array): Object { return builder("TSIntersectionType", ...args); } -export { TSIntersectionType as tsIntersectionType }; -export { TSIntersectionType as tSIntersectionType }; -export function TSConditionalType(...args: Array): Object { +export { tsIntersectionType as TSIntersectionType }; +export { tsIntersectionType as tSIntersectionType }; +export function tsConditionalType(...args: Array): Object { return builder("TSConditionalType", ...args); } -export { TSConditionalType as tsConditionalType }; -export { TSConditionalType as tSConditionalType }; -export function TSInferType(...args: Array): Object { +export { tsConditionalType as TSConditionalType }; +export { tsConditionalType as tSConditionalType }; +export function tsInferType(...args: Array): Object { return builder("TSInferType", ...args); } -export { TSInferType as tsInferType }; -export { TSInferType as tSInferType }; -export function TSParenthesizedType(...args: Array): Object { +export { tsInferType as TSInferType }; +export { tsInferType as tSInferType }; +export function tsParenthesizedType(...args: Array): Object { return builder("TSParenthesizedType", ...args); } -export { TSParenthesizedType as tsParenthesizedType }; -export { TSParenthesizedType as tSParenthesizedType }; -export function TSTypeOperator(...args: Array): Object { +export { tsParenthesizedType as TSParenthesizedType }; +export { tsParenthesizedType as tSParenthesizedType }; +export function tsTypeOperator(...args: Array): Object { return builder("TSTypeOperator", ...args); } -export { TSTypeOperator as tsTypeOperator }; -export { TSTypeOperator as tSTypeOperator }; -export function TSIndexedAccessType(...args: Array): Object { +export { tsTypeOperator as TSTypeOperator }; +export { tsTypeOperator as tSTypeOperator }; +export function tsIndexedAccessType(...args: Array): Object { return builder("TSIndexedAccessType", ...args); } -export { TSIndexedAccessType as tsIndexedAccessType }; -export { TSIndexedAccessType as tSIndexedAccessType }; -export function TSMappedType(...args: Array): Object { +export { tsIndexedAccessType as TSIndexedAccessType }; +export { tsIndexedAccessType as tSIndexedAccessType }; +export function tsMappedType(...args: Array): Object { return builder("TSMappedType", ...args); } -export { TSMappedType as tsMappedType }; -export { TSMappedType as tSMappedType }; -export function TSLiteralType(...args: Array): Object { +export { tsMappedType as TSMappedType }; +export { tsMappedType as tSMappedType }; +export function tsLiteralType(...args: Array): Object { return builder("TSLiteralType", ...args); } -export { TSLiteralType as tsLiteralType }; -export { TSLiteralType as tSLiteralType }; -export function TSExpressionWithTypeArguments(...args: Array): Object { +export { tsLiteralType as TSLiteralType }; +export { tsLiteralType as tSLiteralType }; +export function tsExpressionWithTypeArguments(...args: Array): Object { return builder("TSExpressionWithTypeArguments", ...args); } -export { TSExpressionWithTypeArguments as tsExpressionWithTypeArguments }; -export { TSExpressionWithTypeArguments as tSExpressionWithTypeArguments }; -export function TSInterfaceDeclaration(...args: Array): Object { +export { tsExpressionWithTypeArguments as TSExpressionWithTypeArguments }; +export { tsExpressionWithTypeArguments as tSExpressionWithTypeArguments }; +export function tsInterfaceDeclaration(...args: Array): Object { return builder("TSInterfaceDeclaration", ...args); } -export { TSInterfaceDeclaration as tsInterfaceDeclaration }; -export { TSInterfaceDeclaration as tSInterfaceDeclaration }; -export function TSInterfaceBody(...args: Array): Object { +export { tsInterfaceDeclaration as TSInterfaceDeclaration }; +export { tsInterfaceDeclaration as tSInterfaceDeclaration }; +export function tsInterfaceBody(...args: Array): Object { return builder("TSInterfaceBody", ...args); } -export { TSInterfaceBody as tsInterfaceBody }; -export { TSInterfaceBody as tSInterfaceBody }; -export function TSTypeAliasDeclaration(...args: Array): Object { +export { tsInterfaceBody as TSInterfaceBody }; +export { tsInterfaceBody as tSInterfaceBody }; +export function tsTypeAliasDeclaration(...args: Array): Object { return builder("TSTypeAliasDeclaration", ...args); } -export { TSTypeAliasDeclaration as tsTypeAliasDeclaration }; -export { TSTypeAliasDeclaration as tSTypeAliasDeclaration }; -export function TSAsExpression(...args: Array): Object { +export { tsTypeAliasDeclaration as TSTypeAliasDeclaration }; +export { tsTypeAliasDeclaration as tSTypeAliasDeclaration }; +export function tsAsExpression(...args: Array): Object { return builder("TSAsExpression", ...args); } -export { TSAsExpression as tsAsExpression }; -export { TSAsExpression as tSAsExpression }; -export function TSTypeAssertion(...args: Array): Object { +export { tsAsExpression as TSAsExpression }; +export { tsAsExpression as tSAsExpression }; +export function tsTypeAssertion(...args: Array): Object { return builder("TSTypeAssertion", ...args); } -export { TSTypeAssertion as tsTypeAssertion }; -export { TSTypeAssertion as tSTypeAssertion }; -export function TSEnumDeclaration(...args: Array): Object { +export { tsTypeAssertion as TSTypeAssertion }; +export { tsTypeAssertion as tSTypeAssertion }; +export function tsEnumDeclaration(...args: Array): Object { return builder("TSEnumDeclaration", ...args); } -export { TSEnumDeclaration as tsEnumDeclaration }; -export { TSEnumDeclaration as tSEnumDeclaration }; -export function TSEnumMember(...args: Array): Object { +export { tsEnumDeclaration as TSEnumDeclaration }; +export { tsEnumDeclaration as tSEnumDeclaration }; +export function tsEnumMember(...args: Array): Object { return builder("TSEnumMember", ...args); } -export { TSEnumMember as tsEnumMember }; -export { TSEnumMember as tSEnumMember }; -export function TSModuleDeclaration(...args: Array): Object { +export { tsEnumMember as TSEnumMember }; +export { tsEnumMember as tSEnumMember }; +export function tsModuleDeclaration(...args: Array): Object { return builder("TSModuleDeclaration", ...args); } -export { TSModuleDeclaration as tsModuleDeclaration }; -export { TSModuleDeclaration as tSModuleDeclaration }; -export function TSModuleBlock(...args: Array): Object { +export { tsModuleDeclaration as TSModuleDeclaration }; +export { tsModuleDeclaration as tSModuleDeclaration }; +export function tsModuleBlock(...args: Array): Object { return builder("TSModuleBlock", ...args); } -export { TSModuleBlock as tsModuleBlock }; -export { TSModuleBlock as tSModuleBlock }; -export function TSImportType(...args: Array): Object { +export { tsModuleBlock as TSModuleBlock }; +export { tsModuleBlock as tSModuleBlock }; +export function tsImportType(...args: Array): Object { return builder("TSImportType", ...args); } -export { TSImportType as tsImportType }; -export { TSImportType as tSImportType }; -export function TSImportEqualsDeclaration(...args: Array): Object { +export { tsImportType as TSImportType }; +export { tsImportType as tSImportType }; +export function tsImportEqualsDeclaration(...args: Array): Object { return builder("TSImportEqualsDeclaration", ...args); } -export { TSImportEqualsDeclaration as tsImportEqualsDeclaration }; -export { TSImportEqualsDeclaration as tSImportEqualsDeclaration }; -export function TSExternalModuleReference(...args: Array): Object { +export { tsImportEqualsDeclaration as TSImportEqualsDeclaration }; +export { tsImportEqualsDeclaration as tSImportEqualsDeclaration }; +export function tsExternalModuleReference(...args: Array): Object { return builder("TSExternalModuleReference", ...args); } -export { TSExternalModuleReference as tsExternalModuleReference }; -export { TSExternalModuleReference as tSExternalModuleReference }; -export function TSNonNullExpression(...args: Array): Object { +export { tsExternalModuleReference as TSExternalModuleReference }; +export { tsExternalModuleReference as tSExternalModuleReference }; +export function tsNonNullExpression(...args: Array): Object { return builder("TSNonNullExpression", ...args); } -export { TSNonNullExpression as tsNonNullExpression }; -export { TSNonNullExpression as tSNonNullExpression }; -export function TSExportAssignment(...args: Array): Object { +export { tsNonNullExpression as TSNonNullExpression }; +export { tsNonNullExpression as tSNonNullExpression }; +export function tsExportAssignment(...args: Array): Object { return builder("TSExportAssignment", ...args); } -export { TSExportAssignment as tsExportAssignment }; -export { TSExportAssignment as tSExportAssignment }; -export function TSNamespaceExportDeclaration(...args: Array): Object { +export { tsExportAssignment as TSExportAssignment }; +export { tsExportAssignment as tSExportAssignment }; +export function tsNamespaceExportDeclaration(...args: Array): Object { return builder("TSNamespaceExportDeclaration", ...args); } -export { TSNamespaceExportDeclaration as tsNamespaceExportDeclaration }; -export { TSNamespaceExportDeclaration as tSNamespaceExportDeclaration }; -export function TSTypeAnnotation(...args: Array): Object { +export { tsNamespaceExportDeclaration as TSNamespaceExportDeclaration }; +export { tsNamespaceExportDeclaration as tSNamespaceExportDeclaration }; +export function tsTypeAnnotation(...args: Array): Object { return builder("TSTypeAnnotation", ...args); } -export { TSTypeAnnotation as tsTypeAnnotation }; -export { TSTypeAnnotation as tSTypeAnnotation }; -export function TSTypeParameterInstantiation(...args: Array): Object { +export { tsTypeAnnotation as TSTypeAnnotation }; +export { tsTypeAnnotation as tSTypeAnnotation }; +export function tsTypeParameterInstantiation(...args: Array): Object { return builder("TSTypeParameterInstantiation", ...args); } -export { TSTypeParameterInstantiation as tsTypeParameterInstantiation }; -export { TSTypeParameterInstantiation as tSTypeParameterInstantiation }; -export function TSTypeParameterDeclaration(...args: Array): Object { +export { tsTypeParameterInstantiation as TSTypeParameterInstantiation }; +export { tsTypeParameterInstantiation as tSTypeParameterInstantiation }; +export function tsTypeParameterDeclaration(...args: Array): Object { return builder("TSTypeParameterDeclaration", ...args); } -export { TSTypeParameterDeclaration as tsTypeParameterDeclaration }; -export { TSTypeParameterDeclaration as tSTypeParameterDeclaration }; -export function TSTypeParameter(...args: Array): Object { +export { tsTypeParameterDeclaration as TSTypeParameterDeclaration }; +export { tsTypeParameterDeclaration as tSTypeParameterDeclaration }; +export function tsTypeParameter(...args: Array): Object { return builder("TSTypeParameter", ...args); } -export { TSTypeParameter as tsTypeParameter }; -export { TSTypeParameter as tSTypeParameter }; +export { tsTypeParameter as TSTypeParameter }; +export { tsTypeParameter as tSTypeParameter }; export function NumberLiteral(...args: Array): Object { console.trace( "The node type NumberLiteral has been renamed to NumericLiteral", ); - return NumberLiteral("NumberLiteral", ...args); + return builder("NumberLiteral", ...args); } export { NumberLiteral as numberLiteral }; export function RegexLiteral(...args: Array): Object { console.trace("The node type RegexLiteral has been renamed to RegExpLiteral"); - return RegexLiteral("RegexLiteral", ...args); + return builder("RegexLiteral", ...args); } export { RegexLiteral as regexLiteral }; export function RestProperty(...args: Array): Object { console.trace("The node type RestProperty has been renamed to RestElement"); - return RestProperty("RestProperty", ...args); + return builder("RestProperty", ...args); } export { RestProperty as restProperty }; export function SpreadProperty(...args: Array): Object { console.trace( "The node type SpreadProperty has been renamed to SpreadElement", ); - return SpreadProperty("SpreadProperty", ...args); + return builder("SpreadProperty", ...args); } export { SpreadProperty as spreadProperty }; diff --git a/packages/babel-types/src/builders/typescript/createTSUnionType.js b/packages/babel-types/src/builders/typescript/createTSUnionType.js index 49138ad029f3..93d52c113f06 100644 --- a/packages/babel-types/src/builders/typescript/createTSUnionType.js +++ b/packages/babel-types/src/builders/typescript/createTSUnionType.js @@ -1,4 +1,4 @@ -import { TSUnionType } from "../generated"; +import { tsUnionType } from "../generated"; import removeTypeDuplicates from "../../modifications/typescript/removeTypeDuplicates"; /** @@ -14,6 +14,6 @@ export default function createTSUnionType( if (flattened.length === 1) { return flattened[0]; } else { - return TSUnionType(flattened); + return tsUnionType(flattened); } } From 58cfaf20eede72fde8f9b3a1edf5afb4694ce8ed Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 7 Jul 2020 17:38:11 -0500 Subject: [PATCH 07/90] Fix break/continue when switch is nested inside loop (#11802) * Fix break/continue when switch is nested inside loop * merge retCheck --- .../src/index.js | 51 ++++--------------- .../for-break-continue-closure/exec.js | 15 ++++++ .../for-break-continue-closure/input.js | 13 +++++ .../for-break-continue-closure/output.js | 25 +++++++++ .../for-break-continue-return/output.js | 19 +++---- .../fixtures/general/superswitch/output.js | 9 +--- 6 files changed, 72 insertions(+), 60 deletions(-) create mode 100644 packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/exec.js create mode 100644 packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/input.js create mode 100644 packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/output.js diff --git a/packages/babel-plugin-transform-block-scoping/src/index.js b/packages/babel-plugin-transform-block-scoping/src/index.js index 78ef881b71cb..4ba70bcb670a 100644 --- a/packages/babel-plugin-transform-block-scoping/src/index.js +++ b/packages/babel-plugin-transform-block-scoping/src/index.js @@ -844,55 +844,26 @@ class BlockScoping { buildHas(ret: string) { const body = this.body; - - let retCheck; const has = this.has; - const cases = []; - - if (has.hasReturn) { - // typeof ret === "object" - retCheck = buildRetCheck({ - RETURN: t.identifier(ret), - }); - } if (has.hasBreakContinue) { for (const key of Object.keys(has.map)) { - cases.push(t.switchCase(t.stringLiteral(key), [has.map[key]])); - } - - if (has.hasReturn) { - cases.push(t.switchCase(null, [retCheck])); - } - - if (cases.length === 1) { - const single = cases[0]; body.push( t.ifStatement( - t.binaryExpression("===", t.identifier(ret), single.test), - single.consequent[0], + t.binaryExpression("===", t.identifier(ret), t.stringLiteral(key)), + has.map[key], ), ); - } else { - if (this.loop) { - // https://github.com/babel/babel/issues/998 - for (let i = 0; i < cases.length; i++) { - const caseConsequent = cases[i].consequent[0]; - if (t.isBreakStatement(caseConsequent) && !caseConsequent.label) { - if (!this.loopLabel) { - this.loopLabel = this.scope.generateUidIdentifier("loop"); - } - caseConsequent.label = t.cloneNode(this.loopLabel); - } - } - } - - body.push(t.switchStatement(t.identifier(ret), cases)); - } - } else { - if (has.hasReturn) { - body.push(retCheck); } } + + // typeof ret === "object" + if (has.hasReturn) { + body.push( + buildRetCheck({ + RETURN: t.identifier(ret), + }), + ); + } } } diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/exec.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/exec.js new file mode 100644 index 000000000000..4ee56e9409d7 --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/exec.js @@ -0,0 +1,15 @@ +expect(() => { + for (const a of [1]) { + switch (true) { + case true: { + const b = 1; + () => b; + if (true) break; + continue; + } + case false: { + throw new Error("unreachable"); + } + } + } +}).not.toThrow(); diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/input.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/input.js new file mode 100644 index 000000000000..98cd9d4a488f --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/input.js @@ -0,0 +1,13 @@ +for (const a of [1]) { + switch (true) { + case true: { + const b = 1; + () => b; + if (true) break; + continue; + } + case false: { + throw new Error("unreachable"); + } + } +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/output.js new file mode 100644 index 000000000000..f39eb1b3642f --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-closure/output.js @@ -0,0 +1,25 @@ +for (var a of [1]) { + switch (true) { + case true: + { + var _ret = function () { + var b = 1; + + (function () { + return b; + }); + + if (true) return "break"; + return "continue"; + }(); + + if (_ret === "break") break; + if (_ret === "continue") continue; + } + + case false: + { + throw new Error("unreachable"); + } + } +} diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-return/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-return/output.js index 765124078779..c73fecc8943b 100644 --- a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-return/output.js +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/for-break-continue-return/output.js @@ -1,5 +1,5 @@ (function () { - var _loop2 = function (i) { + var _loop = function (i) { fns.push(function () { return i; }); @@ -15,18 +15,11 @@ } }; - _loop: for (var i in nums) { - var _ret = _loop2(i); + for (var i in nums) { + var _ret = _loop(i); - switch (_ret) { - case "continue": - continue; - - case "break": - break _loop; - - default: - if (typeof _ret === "object") return _ret.v; - } + if (_ret === "continue") continue; + if (_ret === "break") break; + if (typeof _ret === "object") return _ret.v; } })(); diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/superswitch/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/superswitch/output.js index 80b21eba9cdc..4fa75b17916e 100644 --- a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/superswitch/output.js +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/superswitch/output.js @@ -18,13 +18,8 @@ function foo() { return "break"; }(); - switch (_ret) { - case "break": - break; - - default: - if (typeof _ret === "object") return _ret.v; - } + if (_ret === "break") break; + if (typeof _ret === "object") return _ret.v; } } } From bff6298578df194324e42a002b4b337d65bf0eb3 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 8 Jul 2020 12:17:04 +0100 Subject: [PATCH 08/90] Reduce dependency on lodash functions: values, extends (#11798) * Replace lodash 'values' usage with Object.keys => .map(obj[key]) * Block scoping: refactor letReferences, outsideLetReferences as objects of type Map * Remove lodash dependency from babel-plugin-transform-block-scoping * Fixup: Add missing Object.keys call * Fixup: Update remaining property accessors * Coerce Map.values() iterator results into an array via spread operator * Fixup: Map.put -> Map.set * Fixup: undo incorrect variable de-duplication * Replace array-spread-plus-map combination with Array.from call * Extract an extendMap function as an attempt to create an optimization boundary * Experiment: cast objects to string (eliminates one Map/object difference per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map ) * Fixup: perform String cast on map keys, not values * Revert "Fixup: perform String cast on map keys, not values" This reverts commit abdd147438fa74f51ac50ef1f96bb462810cd3f2. * Revert "Experiment: cast objects to string (eliminates one Map/object difference per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map )" This reverts commit a4035c885b37bfd6e926a0362bda9dcf5b5a52c2. * Experiment: filter keys via Object.prototype.hasOwnProperty.call * Revert "Experiment: filter keys via Object.prototype.hasOwnProperty.call" This reverts commit 491c093f213c6229815b2e6dc9243245376265b0. * Migrate back from Map-based reference storage to Object-based storage; access performance appears much improved for Object property access * Revert "Migrate back from Map-based reference storage to Object-based storage; access performance appears much improved for Object property access" This reverts commit 2119acc7f0d78ced3b9ad77820b4b72e5ad67475. * Iterate over a clone of outsideRefs keys * Revert "Extract an extendMap function as an attempt to create an optimization boundary" This reverts commit 85689f2bfc180d0b5c0e674e5de7954470c7ec69. * Fixup: migrate remaining Object property access to Map.get in tdz module --- .../package.json | 3 +- .../src/index.js | 46 ++++++++++--------- .../src/tdz.js | 2 +- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/packages/babel-plugin-transform-block-scoping/package.json b/packages/babel-plugin-transform-block-scoping/package.json index 823479c77d95..e1f2217133e1 100644 --- a/packages/babel-plugin-transform-block-scoping/package.json +++ b/packages/babel-plugin-transform-block-scoping/package.json @@ -13,8 +13,7 @@ }, "main": "lib/index.js", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" }, "keywords": [ "babel-plugin" diff --git a/packages/babel-plugin-transform-block-scoping/src/index.js b/packages/babel-plugin-transform-block-scoping/src/index.js index 4ba70bcb670a..70f359d00c8b 100644 --- a/packages/babel-plugin-transform-block-scoping/src/index.js +++ b/packages/babel-plugin-transform-block-scoping/src/index.js @@ -2,8 +2,6 @@ import { declare } from "@babel/helper-plugin-utils"; import type NodePath from "@babel/traverse"; import type Scope from "@babel/traverse"; import { visitor as tdzVisitor } from "./tdz"; -import values from "lodash/values"; -import extend from "lodash/extend"; import { traverse, template, types as t } from "@babel/core"; const DONE = new WeakSet(); @@ -195,7 +193,7 @@ const letReferenceBlockVisitor = traverse.visitors.merge([ const letReferenceFunctionVisitor = traverse.visitors.merge([ { ReferencedIdentifier(path, state) { - const ref = state.letReferences[path.node.name]; + const ref = state.letReferences.get(path.node.name); // not a part of our scope if (!ref) return; @@ -250,7 +248,7 @@ const continuationVisitor = { if (path.isAssignmentExpression() || path.isUpdateExpression()) { for (const name of Object.keys(path.getBindingIdentifiers())) { if ( - state.outsideReferences[name] !== + state.outsideReferences.get(name) !== path.scope.getBindingIdentifier(name) ) { continue; @@ -359,9 +357,9 @@ class BlockScoping { this.blockPath = blockPath; this.block = blockPath.node; - this.outsideLetReferences = Object.create(null); + this.outsideLetReferences = new Map(); this.hasLetReferences = false; - this.letReferences = Object.create(null); + this.letReferences = new Map(); this.body = []; if (loopPath) { @@ -447,8 +445,8 @@ class BlockScoping { blockScope.getFunctionParent() || blockScope.getProgramParent(); const letRefs = this.letReferences; - for (const key of Object.keys(letRefs)) { - const ref = letRefs[key]; + for (const key of letRefs.keys()) { + const ref = letRefs.get(key); const binding = blockScope.getBinding(ref.name); if (!binding) continue; if (binding.kind === "let" || binding.kind === "const") { @@ -476,10 +474,10 @@ class BlockScoping { // those in upper scopes and then if they do, generate a uid // for them and replace all references with it - for (const key of Object.keys(letRefs)) { + for (const key of letRefs.keys()) { // just an Identifier node we collected in `getLetReferences` // this is the defining identifier of a declaration - const ref = letRefs[key]; + const ref = letRefs.get(key); // todo: could skip this if the colliding binding is in another function if (scope.parentHasBinding(key) || scope.hasGlobal(key)) { @@ -496,8 +494,8 @@ class BlockScoping { } } - for (const key of Object.keys(outsideLetRefs)) { - const ref = letRefs[key]; + for (const key of outsideLetRefs.keys()) { + const ref = letRefs.get(key); // check for collisions with a for loop's init variable and the enclosing scope's bindings // https://github.com/babel/babel/issues/8498 if (isInLoop(this.blockPath) && blockPathScope.hasOwnBinding(key)) { @@ -519,20 +517,21 @@ class BlockScoping { // remap loop heads with colliding variables if (this.loop) { - for (const name of Object.keys(outsideRefs)) { - const id = outsideRefs[name]; + // nb: clone outsideRefs keys since the map is modified within the loop + for (const name of [...outsideRefs.keys()]) { + const id = outsideRefs.get(name); if ( this.scope.hasGlobal(id.name) || this.scope.parentHasBinding(id.name) ) { - delete outsideRefs[id.name]; - delete this.letReferences[id.name]; + outsideRefs.delete(id.name); + this.letReferences.delete(id.name); this.scope.rename(id.name); - this.letReferences[id.name] = id; - outsideRefs[id.name] = id; + this.letReferences.set(id.name, id); + outsideRefs.set(id.name, id); } } } @@ -545,7 +544,7 @@ class BlockScoping { this.hoistVarDeclarations(); // turn outsideLetReferences into an array - const args = values(outsideRefs).map(id => t.cloneNode(id)); + const args = Array.from(outsideRefs.values(), node => t.cloneNode(node)); const params = args.map(id => t.cloneNode(id)); const isSwitch = this.blockPath.isSwitchStatement(); @@ -702,7 +701,10 @@ class BlockScoping { const init = this.loop.left || this.loop.init; if (isBlockScoped(init)) { declarators.push(init); - extend(this.outsideLetReferences, t.getBindingIdentifiers(init)); + const names = t.getBindingIdentifiers(init); + for (const name of Object.keys(names)) { + this.outsideLetReferences.set(name, names[name]); + } } } @@ -751,7 +753,9 @@ class BlockScoping { // declaration, rather than (for example) mistakenly including the // parameters of a function declaration. Fixes #4880. const keys = t.getBindingIdentifiers(declar, false, true); - extend(this.letReferences, keys); + for (const key of Object.keys(keys)) { + this.letReferences.set(key, keys[key]); + } this.hasLetReferences = true; } diff --git a/packages/babel-plugin-transform-block-scoping/src/tdz.js b/packages/babel-plugin-transform-block-scoping/src/tdz.js index 0588e2a276d1..3d17a3028e6b 100644 --- a/packages/babel-plugin-transform-block-scoping/src/tdz.js +++ b/packages/babel-plugin-transform-block-scoping/src/tdz.js @@ -20,7 +20,7 @@ function buildTDZAssert(node, state) { } function isReference(node, scope, state) { - const declared = state.letReferences[node.name]; + const declared = state.letReferences.get(node.name); if (!declared) return false; // declared node is different in this scope From aae1862170a065dc66dbb53b0947a4341ada5884 Mon Sep 17 00:00:00 2001 From: James Addison Date: Thu, 9 Jul 2020 15:04:48 +0100 Subject: [PATCH 09/90] Replace lodash 'extend' usage with Object.assign (#11812) --- packages/babel-helper-fixtures/src/index.js | 3 +-- .../babel-helper-transform-fixture-test-runner/src/index.js | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/babel-helper-fixtures/src/index.js b/packages/babel-helper-fixtures/src/index.js index 9348fcc79af2..448331b72742 100644 --- a/packages/babel-helper-fixtures/src/index.js +++ b/packages/babel-helper-fixtures/src/index.js @@ -1,6 +1,5 @@ import cloneDeep from "lodash/cloneDeep"; import clone from "lodash/clone"; -import extend from "lodash/extend"; import semver from "semver"; import path from "path"; import fs from "fs"; @@ -119,7 +118,7 @@ function pushTask(taskName, taskDir, suite, suiteName) { const taskOpts = cloneDeep(suite.options); const taskOptsLoc = tryResolve(taskDir + "/options"); - if (taskOptsLoc) extend(taskOpts, require(taskOptsLoc)); + if (taskOptsLoc) Object.assign(taskOpts, require(taskOptsLoc)); const test = { optionsDir: taskOptsLoc ? path.dirname(taskOptsLoc) : null, diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index 1ff7233d1975..940b83a8cebb 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -7,7 +7,6 @@ import { codeFrameColumns } from "@babel/code-frame"; import defaults from "lodash/defaults"; import escapeRegExp from "lodash/escapeRegExp"; import * as helpers from "./helpers"; -import extend from "lodash/extend"; import merge from "lodash/merge"; import resolve from "resolve"; import assert from "assert"; @@ -380,7 +379,7 @@ export default function ( sourceMap: !!(task.sourceMappings || task.sourceMap), }); - extend(task.options, taskOpts); + Object.assign(task.options, taskOpts); if (dynamicOpts) dynamicOpts(task.options, task); From 55ce749f429ffd03ede4cd16afb4db1f89085540 Mon Sep 17 00:00:00 2001 From: James Addison Date: Thu, 9 Jul 2020 16:32:04 +0100 Subject: [PATCH 10/90] Replace lodash 'clone' usage with ES6 Spread initializer (#11811) --- packages/babel-helper-fixtures/src/index.js | 3 +-- packages/babel-traverse/src/visitors.js | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/babel-helper-fixtures/src/index.js b/packages/babel-helper-fixtures/src/index.js index 448331b72742..01ebe6b9dbb4 100644 --- a/packages/babel-helper-fixtures/src/index.js +++ b/packages/babel-helper-fixtures/src/index.js @@ -1,5 +1,4 @@ import cloneDeep from "lodash/cloneDeep"; -import clone from "lodash/clone"; import semver from "semver"; import path from "path"; import fs from "fs"; @@ -262,7 +261,7 @@ export default function get(entryLoc): Array { if (shouldIgnore(suiteName)) continue; const suite = { - options: clone(rootOpts), + options: { ...rootOpts }, tests: [], title: humanize(suiteName), filename: entryLoc + "/" + suiteName, diff --git a/packages/babel-traverse/src/visitors.js b/packages/babel-traverse/src/visitors.js index 0748865341c7..ef7203771927 100644 --- a/packages/babel-traverse/src/visitors.js +++ b/packages/babel-traverse/src/visitors.js @@ -1,6 +1,5 @@ import * as virtualTypes from "./path/lib/virtual-types"; import * as t from "@babel/types"; -import clone from "lodash/clone"; /** * explode() will take a visitor object with all of the various shorthands @@ -106,7 +105,7 @@ export function explode(visitor) { if (existing) { mergePair(existing, fns); } else { - visitor[alias] = clone(fns); + visitor[alias] = { ...fns }; } } } From f32d5debda1c9b63d89a5b95fd0be0781253d05d Mon Sep 17 00:00:00 2001 From: Rafael Salguero Iturrios Date: Thu, 9 Jul 2020 17:32:05 -0500 Subject: [PATCH 11/90] Typescript transform now removes generic arguments from optional calls (Fixes #11813) (#11816) --- packages/babel-plugin-transform-typescript/src/index.js | 4 ++++ .../test/fixtures/type-arguments/optional-call/input.ts | 1 + .../test/fixtures/type-arguments/optional-call/output.js | 1 + 3 files changed, 6 insertions(+) create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/type-arguments/optional-call/input.ts create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/type-arguments/optional-call/output.js diff --git a/packages/babel-plugin-transform-typescript/src/index.js b/packages/babel-plugin-transform-typescript/src/index.js index 95cb76b166ea..82839fa05831 100644 --- a/packages/babel-plugin-transform-typescript/src/index.js +++ b/packages/babel-plugin-transform-typescript/src/index.js @@ -419,6 +419,10 @@ export default declare( path.node.typeParameters = null; }, + OptionalCallExpression(path) { + path.node.typeParameters = null; + }, + NewExpression(path) { path.node.typeParameters = null; }, diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/type-arguments/optional-call/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/type-arguments/optional-call/input.ts new file mode 100644 index 000000000000..362521c1ed9e --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/type-arguments/optional-call/input.ts @@ -0,0 +1 @@ +x?.f(); \ No newline at end of file diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/type-arguments/optional-call/output.js b/packages/babel-plugin-transform-typescript/test/fixtures/type-arguments/optional-call/output.js new file mode 100644 index 000000000000..720f644dbc3a --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/type-arguments/optional-call/output.js @@ -0,0 +1 @@ +x?.f(); \ No newline at end of file From 02c8fd92bd187ee880154f9751b517711f9a557d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 9 Jul 2020 20:33:50 -0400 Subject: [PATCH 12/90] fix: add optional: false to chained optional call expression (#11814) --- packages/babel-parser/src/parser/expression.js | 4 +++- .../optional-chaining/optioanl-chain-expression/output.json | 1 + .../optional-chain-object/output.json | 2 ++ .../optional-chain-start-call/output.json | 1 + .../optional-chain-start-member-call/output.json | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 4eb181eea25e..cec1bcd2a555 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -660,8 +660,10 @@ export default class ExpressionParser extends LValParser { let node = this.startNodeAt(startPos, startLoc); node.callee = base; + if (state.optionalChainMember) { + node.optional = optional; + } if (optional) { - node.optional = true; node.arguments = this.parseCallExpressionArguments(tt.parenR, false); } else { node.arguments = this.parseCallExpressionArguments( diff --git a/packages/babel-parser/test/fixtures/es2020/optional-chaining/optioanl-chain-expression/output.json b/packages/babel-parser/test/fixtures/es2020/optional-chaining/optioanl-chain-expression/output.json index 64874e4b02fe..d933036a0a54 100644 --- a/packages/babel-parser/test/fixtures/es2020/optional-chaining/optioanl-chain-expression/output.json +++ b/packages/babel-parser/test/fixtures/es2020/optional-chaining/optioanl-chain-expression/output.json @@ -39,6 +39,7 @@ "computed": false, "optional": true }, + "optional": false, "arguments": [] } } diff --git a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-object/output.json b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-object/output.json index a338c29398f2..2fe350f37ece 100644 --- a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-object/output.json +++ b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-object/output.json @@ -257,6 +257,7 @@ "computed": false, "optional": false }, + "optional": false, "arguments": [ { "type": "NumericLiteral", @@ -303,6 +304,7 @@ "computed": false, "optional": false }, + "optional": false, "arguments": [] } ] diff --git a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-call/output.json b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-call/output.json index fab6f81ebb0c..4f58452a4825 100644 --- a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-call/output.json +++ b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-call/output.json @@ -93,6 +93,7 @@ "computed": false, "optional": true }, + "optional": false, "arguments": [] } } diff --git a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-member-call/output.json b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-member-call/output.json index 10b49c52f465..3eff2947cf51 100644 --- a/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-member-call/output.json +++ b/packages/babel-parser/test/fixtures/experimental/class-private-properties/optional-chain-start-member-call/output.json @@ -99,6 +99,7 @@ "computed": false, "optional": false }, + "optional": false, "arguments": [ { "type": "NumericLiteral", From ffb42488ba1a9d05a41d028cd72ae8c77dfe2071 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Fri, 10 Jul 2020 14:42:18 -0500 Subject: [PATCH 13/90] Bump some deps for audit (#11818) --- package.json | 30 +- packages/babel-cli/package.json | 2 +- packages/babel-compat-data/package.json | 2 +- packages/babel-core/package.json | 2 +- packages/babel-helper-define-map/package.json | 2 +- packages/babel-helper-fixtures/package.json | 2 +- .../package.json | 2 +- packages/babel-helper-regex/package.json | 2 +- .../package.json | 2 +- packages/babel-node/package.json | 2 +- .../package.json | 2 +- packages/babel-register/package.json | 2 +- packages/babel-traverse/package.json | 2 +- packages/babel-types/package.json | 2 +- yarn.lock | 1486 +++++++++-------- 15 files changed, 830 insertions(+), 712 deletions(-) diff --git a/package.json b/package.json index 12da041f1d0d..68bb494a694e 100644 --- a/package.json +++ b/package.json @@ -11,24 +11,24 @@ "test": "make test" }, "devDependencies": { - "@babel/cli": "^7.10.1", - "@babel/core": "^7.10.2", + "@babel/cli": "^7.10.4", + "@babel/core": "^7.10.4", "@babel/eslint-config-internal": "link:./eslint/babel-eslint-config-internal", "@babel/eslint-parser": "link:./eslint/babel-eslint-parser", "@babel/eslint-plugin-development": "link:./eslint/babel-eslint-plugin-development", "@babel/eslint-plugin-development-internal": "link:./eslint/babel-eslint-plugin-development-internal", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-export-namespace-from": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.1", - "@babel/plugin-transform-flow-strip-types": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-runtime": "^7.10.1", - "@babel/preset-env": "^7.10.2", - "@babel/preset-flow": "^7.10.1", - "@babel/register": "^7.10.1", - "@babel/runtime": "^7.10.2", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-transform-flow-strip-types": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-runtime": "^7.10.4", + "@babel/preset-env": "^7.10.4", + "@babel/preset-flow": "^7.10.4", + "@babel/register": "^7.10.4", + "@babel/runtime": "^7.10.4", "@rollup/plugin-json": "4.0.1", "babel-eslint": "^11.0.0-beta.2", "babel-jest": "^24.9.0", @@ -57,7 +57,7 @@ "lerna": "^3.19.0", "lerna-changelog": "^0.5.0", "lint-staged": "^9.2.0", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "mergeiterator": "^1.2.5", "output-file-sync": "^2.0.0", "prettier": "^2.0.5", diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index 4a99018f2950..b55a1996f1e7 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -27,7 +27,7 @@ "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" diff --git a/packages/babel-compat-data/package.json b/packages/babel-compat-data/package.json index 951f02f1f4ba..355db76adc9f 100644 --- a/packages/babel-compat-data/package.json +++ b/packages/babel-compat-data/package.json @@ -37,6 +37,6 @@ "@babel/helper-compilation-targets": "^7.10.4", "caniuse-db": "1.0.30001035", "electron-to-chromium": "1.3.377", - "lodash": "^4.17.15" + "lodash": "^4.17.19" } } diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index 24b11afdab74..3afaf9a1c577 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -55,7 +55,7 @@ "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" diff --git a/packages/babel-helper-define-map/package.json b/packages/babel-helper-define-map/package.json index 2924d7c047a9..fbf50b29b8bf 100644 --- a/packages/babel-helper-define-map/package.json +++ b/packages/babel-helper-define-map/package.json @@ -15,6 +15,6 @@ "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/types": "^7.10.4", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } } diff --git a/packages/babel-helper-fixtures/package.json b/packages/babel-helper-fixtures/package.json index d9520a1f03cc..119e94d83faf 100644 --- a/packages/babel-helper-fixtures/package.json +++ b/packages/babel-helper-fixtures/package.json @@ -14,7 +14,7 @@ }, "main": "lib/index.js", "dependencies": { - "lodash": "^4.17.13", + "lodash": "^4.17.19", "semver": "^5.3.0" } } diff --git a/packages/babel-helper-module-transforms/package.json b/packages/babel-helper-module-transforms/package.json index 3ddf94ae9378..ec289301e737 100644 --- a/packages/babel-helper-module-transforms/package.json +++ b/packages/babel-helper-module-transforms/package.json @@ -21,6 +21,6 @@ "@babel/helper-split-export-declaration": "^7.10.4", "@babel/template": "^7.10.4", "@babel/types": "^7.10.4", - "lodash": "^4.17.13" + "lodash": "^4.17.19" } } diff --git a/packages/babel-helper-regex/package.json b/packages/babel-helper-regex/package.json index 8430a23e4f66..a00f0f16940b 100644 --- a/packages/babel-helper-regex/package.json +++ b/packages/babel-helper-regex/package.json @@ -13,6 +13,6 @@ }, "main": "lib/index.js", "dependencies": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" } } diff --git a/packages/babel-helper-transform-fixture-test-runner/package.json b/packages/babel-helper-transform-fixture-test-runner/package.json index 023d245a25ee..ae7788b6fd8b 100644 --- a/packages/babel-helper-transform-fixture-test-runner/package.json +++ b/packages/babel-helper-transform-fixture-test-runner/package.json @@ -22,7 +22,7 @@ "babel-check-duplicated-nodes": "^1.0.0", "jest": "^24.8.0", "jest-diff": "^24.8.0", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "source-map": "^0.5.0" } diff --git a/packages/babel-node/package.json b/packages/babel-node/package.json index 9775f759c748..bc8874689818 100644 --- a/packages/babel-node/package.json +++ b/packages/babel-node/package.json @@ -26,7 +26,7 @@ "@babel/register": "^7.10.4", "commander": "^4.0.1", "core-js": "^3.2.1", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "node-environment-flags": "^1.0.5", "regenerator-runtime": "^0.13.4", "resolve": "^1.13.1", diff --git a/packages/babel-plugin-transform-proto-to-assign/package.json b/packages/babel-plugin-transform-proto-to-assign/package.json index 5a228b93a547..9466aa62ebce 100644 --- a/packages/babel-plugin-transform-proto-to-assign/package.json +++ b/packages/babel-plugin-transform-proto-to-assign/package.json @@ -17,7 +17,7 @@ ], "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "peerDependencies": { "@babel/core": "^7.0.0-0" diff --git a/packages/babel-register/package.json b/packages/babel-register/package.json index ccea3e263142..01f4bbacda8c 100644 --- a/packages/babel-register/package.json +++ b/packages/babel-register/package.json @@ -18,7 +18,7 @@ }, "dependencies": { "find-cache-dir": "^2.0.0", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "make-dir": "^2.1.0", "pirates": "^4.0.0", "source-map-support": "^0.5.16" diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json index c8788cf46bb7..d35b866b46c9 100644 --- a/packages/babel-traverse/package.json +++ b/packages/babel-traverse/package.json @@ -23,7 +23,7 @@ "@babel/types": "^7.10.4", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "devDependencies": { "@babel/helper-plugin-test-runner": "^7.10.4" diff --git a/packages/babel-types/package.json b/packages/babel-types/package.json index 96e654f4ccdf..bc73eac86c2d 100644 --- a/packages/babel-types/package.json +++ b/packages/babel-types/package.json @@ -17,7 +17,7 @@ "types": "lib/index.d.ts", "dependencies": { "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 7d3013447c76..be37146a7a73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@babel/cli@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.10.1.tgz#b6e5cd43a17b8f639442ab027976408ebe6d79a0" - integrity sha512-cVB+dXeGhMOqViIaZs3A9OUAe4pKw4SBNdMw6yHJMYR7s4TB+Cei7ThquV/84O19PdIFWuwe03vxxES0BHUm5g== +"@babel/cli@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.10.4.tgz#ba38ad6d0b4b772a67b106934b7c33d656031896" + integrity sha512-xX99K4V1BzGJdQANK5cwK+EpF1vP9gvqhn+iWvG+TubCjecplW7RSQimJ2jcCvu6fnK5pY6mZMdu6EWTj32QVA== dependencies: commander "^4.0.1" convert-source-map "^1.1.0" @@ -18,35 +18,35 @@ optionalDependencies: chokidar "^2.1.8" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.1", "@babel/code-frame@^7.5.5": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff" - integrity sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/highlight" "^7.10.1" + "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.1.tgz#b1085ffe72cd17bf2c0ee790fc09f9626011b2db" - integrity sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw== +"@babel/compat-data@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" + integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== dependencies: browserslist "^4.12.0" invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.2.tgz#bd6786046668a925ac2bd2fd95b579b92a23b36a" - integrity sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.2" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helpers" "^7.10.1" - "@babel/parser" "^7.10.2" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.2" +"@babel/core@^7.1.0", "@babel/core@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" + integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -72,320 +72,320 @@ version "0.0.0" uid "" -"@babel/generator@^7.10.1", "@babel/generator@^7.10.2", "@babel/generator@^7.4.0": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.2.tgz#0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9" - integrity sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA== +"@babel/generator@^7.10.4", "@babel/generator@^7.4.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" + integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== dependencies: - "@babel/types" "^7.10.2" + "@babel/types" "^7.10.4" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" - integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz#0ec7d9be8174934532661f87783eb18d72290059" - integrity sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-compilation-targets@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" - integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== dependencies: - "@babel/compat-data" "^7.10.1" + "@babel/compat-data" "^7.10.4" browserslist "^4.12.0" invariant "^2.2.4" levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.1": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz#7474295770f217dbcf288bf7572eb213db46ee67" - integrity sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ== - dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - -"@babel/helper-create-regexp-features-plugin@^7.10.1", "@babel/helper-create-regexp-features-plugin@^7.8.3": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz#1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd" - integrity sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-regex" "^7.10.1" +"@babel/helper-create-class-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" + integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" -"@babel/helper-define-map@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz#5e69ee8308648470dd7900d159c044c10285221d" - integrity sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg== +"@babel/helper-define-map@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" + integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.4" lodash "^4.17.13" -"@babel/helper-explode-assignable-expression@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz#e9d76305ee1162ca467357ae25df94f179af2b7e" - integrity sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg== +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" + integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== dependencies: - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-function-name@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz#92bd63829bfc9215aca9d9defa85f56b539454f4" - integrity sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ== +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-get-function-arity@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d" - integrity sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw== +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-hoist-variables@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz#7e77c82e5dcae1ebf123174c385aaadbf787d077" - integrity sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg== +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz#432967fd7e12a4afef66c4687d4ca22bc0456f15" - integrity sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g== +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" + integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876" - integrity sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" - integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== +"@babel/helper-module-transforms@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" + integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz#b4a1f2561870ce1247ceddb02a3860fa96d72543" - integrity sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg== +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz#ec5a5cf0eec925b66c60580328b122c01230a127" - integrity sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.1.tgz#021cf1a7ba99822f993222a001cc3fec83255b96" - integrity sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g== +"@babel/helper-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d" + integrity sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ== dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz#bad6aaa4ff39ce8d4b82ccaae0bfe0f7dbb5f432" - integrity sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-wrap-function" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-replace-supers@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" - integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-simple-access@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" - integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== - dependencies: - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-split-export-declaration@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" - integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-validator-identifier@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz#5770b0c1a826c4f53f5ede5e153163e0318e94b5" - integrity sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw== - -"@babel/helper-wrap-function@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz#956d1310d6696257a7afd47e4c42dfda5dfcedc9" - integrity sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ== - dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helpers@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" - integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== - dependencies: - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/highlight@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.1.tgz#841d098ba613ba1a427a2b383d79e35552c38ae0" - integrity sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg== - dependencies: - "@babel/helper-validator-identifier" "^7.10.1" +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" + integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.1", "@babel/parser@^7.10.2", "@babel/parser@^7.4.3": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" - integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.4.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" + integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== -"@babel/plugin-proposal-async-generator-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz#6911af5ba2e615c4ff3c497fe2f47b35bf6d7e55" - integrity sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw== +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" + integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-remap-async-to-generator" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01" - integrity sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw== +"@babel/plugin-proposal-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-dynamic-import@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz#e36979dc1dc3b73f6d6816fc4951da2363488ef0" - integrity sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA== +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-export-namespace-from@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.1.tgz#512ee069cd866256600bdf89639cf7e1b51fbfe9" - integrity sha512-eR4CoYb6mh5y9LWjnb4CyUatuhtZ8pNLXLDi46GkqtF7WPafFqXycHdvF5qWviozZVGRSAmHzdayc8wUReCdjA== +"@babel/plugin-proposal-export-namespace-from@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" + integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz#b1e691ee24c651b5a5e32213222b2379734aff09" - integrity sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg== +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz#02dca21673842ff2fe763ac253777f235e9bbf78" - integrity sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz#a9a38bc34f78bdfd981e791c27c6fdcec478c123" - integrity sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA== +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz#cba44908ac9f142650b4a65b8aa06bf3478d5fb6" - integrity sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ== +"@babel/plugin-proposal-object-rest-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-transform-parameters" "^7.10.4" -"@babel/plugin-proposal-optional-catch-binding@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz#c9f86d99305f9fa531b568ff5ab8c964b8b223d2" - integrity sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA== +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz#15f5d6d22708629451a91be28f8facc55b0e818c" - integrity sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA== +"@babel/plugin-proposal-optional-chaining@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" + integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-private-methods@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz#ed85e8058ab0fe309c3f448e5e1b73ca89cdb598" - integrity sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg== +"@babel/plugin-proposal-private-methods@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.10.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz#dc04feb25e2dd70c12b05d680190e138fa2c0c6f" - integrity sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ== +"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-async-generators@^7.8.0": version "7.8.4" @@ -394,12 +394,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" - integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== +"@babel/plugin-syntax-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" @@ -415,12 +415,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz#cd4bbca62fb402babacb174f64f8734310d742f0" - integrity sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg== +"@babel/plugin-syntax-flow@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" + integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.0": version "7.8.3" @@ -436,12 +436,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz#25761ee7410bc8cf97327ba741ee94e4a61b7d99" - integrity sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg== +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": version "7.8.3" @@ -464,359 +464,359 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz#8b8733f8c57397b3eaa47ddba8841586dcaef362" - integrity sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ== +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b" - integrity sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA== +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz#e5153eb1a3e028f79194ed8a7a4bf55f862b2062" - integrity sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg== +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-remap-async-to-generator" "^7.10.1" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" -"@babel/plugin-transform-block-scoped-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz#146856e756d54b20fff14b819456b3e01820b85d" - integrity sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q== +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz#47092d89ca345811451cd0dc5d91605982705d5e" - integrity sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw== +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" + integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz#6e11dd6c4dfae70f540480a4702477ed766d733f" - integrity sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-define-map" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz#59aa399064429d64dce5cf76ef9b90b7245ebd07" - integrity sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ== +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" - integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.10.1", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz#920b9fec2d78bb57ebb64a644d5c2ba67cc104ee" - integrity sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA== +"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz#c900a793beb096bc9d4d0a9d0cde19518ffc83b9" - integrity sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA== +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz#279c3116756a60dd6e6f5e488ba7957db9c59eb3" - integrity sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA== +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-flow-strip-types@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.1.tgz#59eafbff9ae85ec8932d4c16c068654be814ec5e" - integrity sha512-i4o0YwiJBIsIx7/liVCZ3Q2WkWr1/Yu39PksBOnh/khW2SwIFsGa5Ze+MSon5KbDfrEHP9NeyefAgvUSXzaEkw== +"@babel/plugin-transform-flow-strip-types@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" + integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-flow" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.10.4" -"@babel/plugin-transform-for-of@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz#ff01119784eb0ee32258e8646157ba2501fcfda5" - integrity sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w== +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz#4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d" - integrity sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw== +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz#5794f8da82846b22e4e6631ea1658bce708eb46a" - integrity sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw== +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz#90347cba31bca6f394b3f7bd95d2bbfd9fce2f39" - integrity sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA== +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz#65950e8e05797ebd2fe532b96e19fc5482a1d52a" - integrity sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw== +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" + integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" - integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz#9962e4b0ac6aaf2e20431ada3d8ec72082cbffb6" - integrity sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA== +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" + integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== dependencies: - "@babel/helper-hoist-variables" "^7.10.1" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz#ea080911ffc6eb21840a5197a39ede4ee67b1595" - integrity sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA== +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" -"@babel/plugin-transform-new-target@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz#6ee41a5e648da7632e22b6fb54012e87f612f324" - integrity sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw== +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz#2e3016b0adbf262983bf0d5121d676a5ed9c4fde" - integrity sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw== +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" -"@babel/plugin-transform-parameters@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" - integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" + integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz#cffc7315219230ed81dc53e4625bf86815b6050d" - integrity sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA== +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz#10e175cbe7bdb63cc9b39f9b3f823c5c7c5c5490" - integrity sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw== +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz#0fc1027312b4d1c3276a57890c8ae3bcc0b64a86" - integrity sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ== +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-runtime@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.1.tgz#fd1887f749637fb2ed86dc278e79eb41df37f4b1" - integrity sha512-4w2tcglDVEwXJ5qxsY++DgWQdNJcCCsPxfT34wCUwIf2E7dI7pMpH8JczkMBbgBTNzBX62SZlNJ9H+De6Zebaw== +"@babel/plugin-transform-runtime@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.4.tgz#594fb53453ea1b6f0779cceb48ce0718a447feb7" + integrity sha512-8ULlGv8p+Vuxu+kz2Y1dk6MYS2b/Dki+NO6/0ZlfSj5tMalfDL7jI/o/2a+rrWLqSXvnadEqc2WguB4gdQIxZw== dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" - integrity sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-spread@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz#0c6d618a0c4461a274418460a28c9ccf5239a7c8" - integrity sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-sticky-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz#90fc89b7526228bed9842cff3588270a7a393b00" - integrity sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-regex" "^7.10.1" - -"@babel/plugin-transform-template-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz#914c7b7f4752c570ea00553b4284dad8070e8628" - integrity sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-typeof-symbol@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz#60c0239b69965d166b80a84de7315c1bc7e0bb0e" - integrity sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-unicode-escapes@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz#add0f8483dab60570d9e03cecef6c023aa8c9940" - integrity sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-unicode-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz#6b58f2aea7b68df37ac5025d9c88752443a6b43f" - integrity sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/preset-env@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.2.tgz#715930f2cf8573b0928005ee562bed52fb65fdfb" - integrity sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA== - dependencies: - "@babel/compat-data" "^7.10.1" - "@babel/helper-compilation-targets" "^7.10.2" - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-proposal-async-generator-functions" "^7.10.1" - "@babel/plugin-proposal-class-properties" "^7.10.1" - "@babel/plugin-proposal-dynamic-import" "^7.10.1" - "@babel/plugin-proposal-json-strings" "^7.10.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" - "@babel/plugin-proposal-numeric-separator" "^7.10.1" - "@babel/plugin-proposal-object-rest-spread" "^7.10.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.1" - "@babel/plugin-proposal-optional-chaining" "^7.10.1" - "@babel/plugin-proposal-private-methods" "^7.10.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.1" +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" + integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" + integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" + integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== + dependencies: + "@babel/compat-data" "^7.10.4" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.1" + "@babel/plugin-syntax-class-properties" "^7.10.4" "@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.10.1" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@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" - "@babel/plugin-syntax-top-level-await" "^7.10.1" - "@babel/plugin-transform-arrow-functions" "^7.10.1" - "@babel/plugin-transform-async-to-generator" "^7.10.1" - "@babel/plugin-transform-block-scoped-functions" "^7.10.1" - "@babel/plugin-transform-block-scoping" "^7.10.1" - "@babel/plugin-transform-classes" "^7.10.1" - "@babel/plugin-transform-computed-properties" "^7.10.1" - "@babel/plugin-transform-destructuring" "^7.10.1" - "@babel/plugin-transform-dotall-regex" "^7.10.1" - "@babel/plugin-transform-duplicate-keys" "^7.10.1" - "@babel/plugin-transform-exponentiation-operator" "^7.10.1" - "@babel/plugin-transform-for-of" "^7.10.1" - "@babel/plugin-transform-function-name" "^7.10.1" - "@babel/plugin-transform-literals" "^7.10.1" - "@babel/plugin-transform-member-expression-literals" "^7.10.1" - "@babel/plugin-transform-modules-amd" "^7.10.1" - "@babel/plugin-transform-modules-commonjs" "^7.10.1" - "@babel/plugin-transform-modules-systemjs" "^7.10.1" - "@babel/plugin-transform-modules-umd" "^7.10.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.10.1" - "@babel/plugin-transform-object-super" "^7.10.1" - "@babel/plugin-transform-parameters" "^7.10.1" - "@babel/plugin-transform-property-literals" "^7.10.1" - "@babel/plugin-transform-regenerator" "^7.10.1" - "@babel/plugin-transform-reserved-words" "^7.10.1" - "@babel/plugin-transform-shorthand-properties" "^7.10.1" - "@babel/plugin-transform-spread" "^7.10.1" - "@babel/plugin-transform-sticky-regex" "^7.10.1" - "@babel/plugin-transform-template-literals" "^7.10.1" - "@babel/plugin-transform-typeof-symbol" "^7.10.1" - "@babel/plugin-transform-unicode-escapes" "^7.10.1" - "@babel/plugin-transform-unicode-regex" "^7.10.1" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.2" + "@babel/types" "^7.10.4" browserslist "^4.12.0" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-flow@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.1.tgz#29498ec23baf9aa6dae50c568ceba09d71692b82" - integrity sha512-FuQsibb5PaX07fF1XUO5gjjxdEZbcJv8+ugPDaeFEsBIvUTib8hCtEJow/c2F0jq9ZUjpHCQ8IQKNHRvKE1kJQ== +"@babel/preset-flow@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" + integrity sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-transform-flow-strip-types" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-flow-strip-types" "^7.10.4" "@babel/preset-modules@^0.1.3": version "0.1.3" @@ -829,10 +829,10 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/register@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.1.tgz#b6567c5cb5049f44bbf8c35d6ff68ca3c43238ed" - integrity sha512-sl96+kB3IA2B9EzpwwBmYadOT14vw3KaXOknGDbJaZCOj52GDA4Tivudq9doCJcB+bEIKCEARZYwRgBBsCGXyg== +"@babel/register@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.4.tgz#53004ba8b04c4af3cbd84508e03ad150669746e4" + integrity sha512-whHmgGiWNVyTVnYTSawtDWhaeYsc+noeU8Rmi+MPnbGhDYmr5QpEDMrQcIA07D2RUv0BlThPcN89XcHCqq/O4g== dependencies: find-cache-dir "^2.0.0" lodash "^4.17.13" @@ -840,43 +840,51 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.8.4": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.2.tgz#d103f21f2602497d38348a32e008637d506db839" - integrity sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg== +"@babel/runtime-corejs3@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d" + integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.4", "@babel/runtime@^7.8.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" + integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.1", "@babel/template@^7.4.0": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" - integrity sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.4.3": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" - integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" +"@babel/template@^7.10.4", "@babel/template@^7.4.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.4.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" + integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.2", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.2.tgz#30283be31cad0dbf6fb00bd40641ca0ea675172d" - integrity sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" + integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== dependencies: - "@babel/helper-validator-identifier" "^7.10.1" + "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.13" to-fast-properties "^2.0.0" @@ -1975,6 +1983,11 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + "@types/node@*", "@types/node@>= 8": version "12.12.15" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.15.tgz#8dfb6ce22fedd469128137640a3aa8f17415422f" @@ -1998,9 +2011,9 @@ integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/yargs-parser@*": - version "13.1.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" - integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^13.0.0": version "13.0.3" @@ -2097,11 +2110,6 @@ acorn-walk@^7.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.0.0.tgz#c8ba6f0f1aac4b0a9e32d1f0af12be769528f36b" integrity sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg== -acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= - acorn@^5.0.0, acorn@^5.5.3, acorn@^5.7.3: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" @@ -2117,6 +2125,11 @@ acorn@^7.0.0, acorn@^7.1.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +acorn@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -2451,6 +2464,11 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -3057,6 +3075,15 @@ camelcase-keys@^4.0.0: map-obj "^2.0.0" quick-lru "^1.0.0" +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -3077,6 +3104,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" + integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + caniuse-lite@^1.0.30001043: version "1.0.30001077" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001077.tgz#5d7da6a120b08d9f4fd94823786ecb454aaa5626" @@ -3473,43 +3505,43 @@ conventional-changelog-core@^3.1.6: through2 "^3.0.0" conventional-changelog-preset-loader@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.0.tgz#580fa8ab02cef22c24294d25e52d7ccd247a9a6a" - integrity sha512-/rHb32J2EJnEXeK4NpDgMaAVTFZS3o1ExmjKMtYVgIC4MQn0vkNSbYpdGRotkfGGRWiqk3Ri3FBkiZGbAfIfOQ== + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== conventional-changelog-writer@^4.0.6: - version "4.0.11" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz#9f56d2122d20c96eb48baae0bf1deffaed1edba4" - integrity sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw== + version "4.0.16" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.16.tgz#ca10f2691a8ea6d3c2eb74bd35bcf40aa052dda5" + integrity sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ== dependencies: compare-func "^1.3.1" - conventional-commits-filter "^2.0.2" + conventional-commits-filter "^2.0.6" dateformat "^3.0.0" - handlebars "^4.4.0" + handlebars "^4.7.6" json-stringify-safe "^5.0.1" lodash "^4.17.15" - meow "^5.0.0" + meow "^7.0.0" semver "^6.0.0" split "^1.0.0" through2 "^3.0.0" -conventional-commits-filter@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" - integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ== +conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz#0935e1240c5ca7698329affee1b6a46d33324c4c" + integrity sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw== dependencies: lodash.ismatch "^4.4.0" modify-values "^1.0.0" conventional-commits-parser@^3.0.3: - version "3.0.8" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" - integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== + version "3.1.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz#10140673d5e7ef5572633791456c5d03b69e8be4" + integrity sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" lodash "^4.17.15" - meow "^5.0.0" + meow "^7.0.0" split2 "^2.0.0" through2 "^3.0.0" trim-off-newlines "^1.0.0" @@ -3573,6 +3605,11 @@ core-js-compat@^3.6.2: browserslist "^4.8.3" semver "7.0.0" +core-js-pure@^3.0.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3759,7 +3796,7 @@ debuglog@^1.0.1: resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= -decamelize-keys@^1.0.0: +decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= @@ -3772,6 +3809,13 @@ decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851" + integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw== + dependencies: + xregexp "^4.2.4" + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -3892,15 +3936,15 @@ deps-sort@^2.0.0: through2 "^2.0.0" derequire@^2.0.2: - version "2.0.6" - resolved "https://registry.yarnpkg.com/derequire/-/derequire-2.0.6.tgz#31a414bb7ca176239fa78b116636ef77d517e768" - integrity sha1-MaQUu3yhdiOfp4sRZjbvd9UX52g= + version "2.1.1" + resolved "https://registry.yarnpkg.com/derequire/-/derequire-2.1.1.tgz#342527ff5a460d4dd6745085e4091a4697a6803c" + integrity sha512-5hGVgKAEGhSGZM02abtkwDzqEOXun1dP9Ocw0yh7Pz7j70k4SNk7WURm93YyHbs2PcieRyX8m4ta1glGakw84Q== dependencies: - acorn "^4.0.3" + acorn "^7.1.1" concat-stream "^1.4.6" escope "^3.6.0" through2 "^2.0.0" - yargs "^6.5.0" + yargs "^15.3.1" des.js@^1.0.0: version "1.0.1" @@ -5311,14 +5355,15 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars@^4.1.2, handlebars@^4.4.0: - version "4.7.4" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.4.tgz#902c579cc97b350bb4bc12e6cabd85b57dcd9975" - integrity sha512-Is8+SzHv8K9STNadlBVpVhxXrSXxVgTyIvhdg2Qjak1SfSZ7iEozLHdwiX1jJ9lLFkcFJxqGK5s/cI7ZX+qGkQ== +handlebars@^4.1.2, handlebars@^4.7.6: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== dependencies: + minimist "^1.2.5" neo-async "^2.6.0" source-map "^0.6.1" - yargs "^15.3.1" + wordwrap "^1.0.0" optionalDependencies: uglify-js "^3.1.4" @@ -5335,6 +5380,11 @@ har-validator@~5.1.0: ajv "^6.5.5" har-schema "^2.0.0" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -6656,7 +6706,7 @@ kind-of@^5.0.0, kind-of@^5.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -7059,10 +7109,10 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.2.1: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== log-symbols@^1.0.2: version "1.0.2" @@ -7194,6 +7244,11 @@ map-obj@^2.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= +map-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7259,20 +7314,24 @@ meow@^4.0.0: redent "^2.0.0" trim-newlines "^2.0.0" -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" +meow@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-7.0.1.tgz#1ed4a0a50b3844b451369c48362eb0515f04c1dc" + integrity sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw== + dependencies: + "@types/minimist" "^1.2.0" + arrify "^2.0.1" + camelcase "^6.0.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "^4.0.2" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" merge-stream@^2.0.0: version "2.0.0" @@ -7346,6 +7405,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -7371,6 +7435,15 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" +minimist-options@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -8634,6 +8707,11 @@ quick-lru@^1.0.0: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -8731,6 +8809,15 @@ read-pkg-up@^4.0.0: find-up "^3.0.0" read-pkg "^3.0.0" +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -8866,6 +8953,14 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + 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" @@ -9915,6 +10010,13 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-json-comments@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" @@ -10231,6 +10333,11 @@ trim-newlines@^2.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= +trim-newlines@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + trim-off-newlines@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" @@ -10272,6 +10379,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" @@ -10720,6 +10832,11 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -10828,6 +10945,13 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xregexp@^4.2.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -10873,33 +10997,34 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yargs-parser@5.0.0-security.0: + version "5.0.0-security.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" + integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ== dependencies: - camelcase "^4.1.0" + camelcase "^3.0.0" + object.assign "^4.1.0" -yargs-parser@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" - integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.1: - version "18.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" - integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== +yargs-parser@^18.1.2, yargs-parser@^18.1.3: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -10911,17 +11036,10 @@ yargs-parser@^4.2.0: dependencies: camelcase "^3.0.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - yargs@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" find-up "^3.0.0" @@ -10932,12 +11050,12 @@ yargs@^13.3.0: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.1" + yargs-parser "^13.1.2" yargs@^14.2.2: - version "14.2.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.2.tgz#2769564379009ff8597cdd38fba09da9b493c4b5" - integrity sha512-/4ld+4VV5RnrynMhPZJ/ZpOCGSCeghMykZ3BhdFBDa9Wy/RH6uEGNWDJog+aUlq+9OM1CFTgtYRW5Is1Po9NOA== + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== dependencies: cliui "^5.0.0" decamelize "^1.2.0" @@ -10949,15 +11067,15 @@ yargs@^14.2.2: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^15.0.0" + yargs-parser "^15.0.1" yargs@^15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + version "15.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.0.tgz#53949fb768309bac1843de9b17b80051e9805ec2" + integrity sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw== dependencies: cliui "^6.0.0" - decamelize "^1.2.0" + decamelize "^3.2.0" find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" @@ -10966,9 +11084,9 @@ yargs@^15.3.1: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^18.1.1" + yargs-parser "^18.1.2" -yargs@^6.5.0, yargs@^6.6.0: +yargs@^6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= @@ -10988,9 +11106,9 @@ yargs@^6.5.0, yargs@^6.6.0: yargs-parser "^4.2.0" yargs@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + version "7.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" + integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g== dependencies: camelcase "^3.0.0" cliui "^3.2.0" @@ -11004,4 +11122,4 @@ yargs@^7.1.0: string-width "^1.0.2" which-module "^1.0.0" y18n "^3.2.1" - yargs-parser "^5.0.0" + yargs-parser "5.0.0-security.0" From 5dd64ecc4ae7f87f2cc9329fc7e262408eac7410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 14 Jul 2020 09:32:16 -0400 Subject: [PATCH 14/90] Disallow duplicated AST nodes (#11807) --- .gitignore | 1 + .../src/index.js | 2 +- .../src/decorators.js | 4 +-- .../src/fields.js | 23 ++++++++-------- .../src/index.js | 3 ++- .../src/misc.js | 8 +++++- .../src/index.js | 10 ++++--- .../src/rewrite-live-references.js | 4 ++- .../src/index.js | 1 + .../src/for-await.js | 2 +- .../src/transformer-legacy.js | 2 +- .../src/index.js | 4 +-- .../src/index.js | 16 +++++++----- .../src/buildOptimizedSequenceExpression.js | 4 +-- .../src/smartVisitor.js | 2 +- .../src/index.js | 2 +- .../src/index.js | 8 +++--- .../src/index.js | 26 +++++++++---------- .../src/params.js | 2 +- .../src/index.js | 2 +- .../src/index.js | 6 ++++- .../src/index.js | 4 +-- .../src/index.js | 3 ++- .../src/namespace.js | 8 +++--- 24 files changed, 85 insertions(+), 62 deletions(-) diff --git a/.gitignore b/.gitignore index ae39564eb8a4..85c5685310a9 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ packages/babel-standalone/babel.min.js /eslint/*/node_modules /eslint/*/LICENSE !/packages/babel-eslint-plugin/LICENSE +/.vscode diff --git a/packages/babel-helper-builder-react-jsx-experimental/src/index.js b/packages/babel-helper-builder-react-jsx-experimental/src/index.js index d42d84c34063..00fee165933f 100644 --- a/packages/babel-helper-builder-react-jsx-experimental/src/index.js +++ b/packages/babel-helper-builder-react-jsx-experimental/src/index.js @@ -457,7 +457,7 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, } return makeTrace( - state.fileNameIdentifier, + t.cloneNode(state.fileNameIdentifier), location.start.line, location.start.column, ); diff --git a/packages/babel-helper-create-class-features-plugin/src/decorators.js b/packages/babel-helper-create-class-features-plugin/src/decorators.js index 49444bbea4ac..b4fbcae13f08 100644 --- a/packages/babel-helper-create-class-features-plugin/src/decorators.js +++ b/packages/babel-helper-create-class-features-plugin/src/decorators.js @@ -137,7 +137,7 @@ export function buildDecoratedClass(ref, path, elements, file) { let replacement = template.expression.ast` ${addDecorateHelper(file)}( ${classDecorators || t.nullLiteral()}, - function (${initializeId}, ${superClass ? superId : null}) { + function (${initializeId}, ${superClass ? t.cloneNode(superId) : null}) { ${node} return { F: ${t.cloneNode(node.id)}, d: ${definitions} }; }, @@ -158,7 +158,7 @@ export function buildDecoratedClass(ref, path, elements, file) { } return { - instanceNodes: [template.statement.ast`${initializeId}(this)`], + instanceNodes: [template.statement.ast`${t.cloneNode(initializeId)}(this)`], wrapClass(path) { path.replaceWith(replacement); return path.get(classPathDesc); 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 848b0033b675..6bb644f6d2b9 100644 --- a/packages/babel-helper-create-class-features-plugin/src/fields.js +++ b/packages/babel-helper-create-class-features-plugin/src/fields.js @@ -45,8 +45,9 @@ export function buildPrivateNamesNodes(privateNamesMap, loose, state) { // In spec mode, only instance fields need a "private name" initializer // because static fields are directly assigned to a variable in the // buildPrivateStaticFieldInitSpec function. - const { id, static: isStatic, method: isMethod, getId, setId } = value; + const { static: isStatic, method: isMethod, getId, setId } = value; const isAccessor = getId || setId; + const id = t.cloneNode(value.id); if (loose) { initNodes.push( template.statement.ast` @@ -157,7 +158,7 @@ const privateInVisitor = privateNameVisitorFactory({ if (loose) { const { id } = privateNamesMap.get(name); path.replaceWith(template.expression.ast` - Object.prototype.hasOwnProperty.call(${right}, ${id}) + Object.prototype.hasOwnProperty.call(${right}, ${t.cloneNode(id)}) `); return; } @@ -169,7 +170,7 @@ const privateInVisitor = privateNameVisitorFactory({ return; } - path.replaceWith(template.expression.ast`${id}.has(${right})`); + path.replaceWith(template.expression.ast`${t.cloneNode(id)}.has(${right})`); }, }); @@ -327,8 +328,8 @@ const privateNameHandlerLoose = { return template.expression`BASE(REF, PROP)[PROP]`({ BASE: file.addHelper("classPrivateFieldLooseBase"), - REF: object, - PROP: privateNamesMap.get(name).id, + REF: t.cloneNode(object), + PROP: t.cloneNode(privateNamesMap.get(name).id), }); }, @@ -387,7 +388,7 @@ function buildPrivateFieldInitLoose(ref, prop, privateNamesMap) { const value = prop.node.value || prop.scope.buildUndefinedNode(); return template.statement.ast` - Object.defineProperty(${ref}, ${id}, { + Object.defineProperty(${ref}, ${t.cloneNode(id)}, { // configurable is false by default // enumerable is false by default writable: true, @@ -400,7 +401,7 @@ function buildPrivateInstanceFieldInitSpec(ref, prop, privateNamesMap) { const { id } = privateNamesMap.get(prop.node.key.id.name); const value = prop.node.value || prop.scope.buildUndefinedNode(); - return template.statement.ast`${id}.set(${ref}, { + return template.statement.ast`${t.cloneNode(id)}.set(${ref}, { // configurable is always false for private elements // enumerable is always false for private elements writable: true, @@ -422,7 +423,7 @@ function buildPrivateStaticFieldInitSpec(prop, privateNamesMap) { }); return template.statement.ast` - var ${id.name} = { + var ${t.cloneNode(id)} = { // configurable is false by default // enumerable is false by default // writable is false by default @@ -434,7 +435,7 @@ function buildPrivateStaticFieldInitSpec(prop, privateNamesMap) { const value = prop.node.value || prop.scope.buildUndefinedNode(); return template.statement.ast` - var ${id} = { + var ${t.cloneNode(id)} = { // configurable is false by default // enumerable is false by default writable: true, @@ -603,14 +604,14 @@ function buildPrivateMethodDeclaration(prop, privateNamesMap, loose = false) { if (isStatic && !loose) { return t.variableDeclaration("var", [ t.variableDeclarator( - id, + t.cloneNode(id), t.functionExpression(id, params, body, generator, async), ), ]); } return t.variableDeclaration("var", [ - t.variableDeclarator(methodId, methodValue), + t.variableDeclarator(t.cloneNode(methodId), methodValue), ]); } diff --git a/packages/babel-helper-create-class-features-plugin/src/index.js b/packages/babel-helper-create-class-features-plugin/src/index.js index fba10a68e8c4..d23c12cefdc1 100644 --- a/packages/babel-helper-create-class-features-plugin/src/index.js +++ b/packages/babel-helper-create-class-features-plugin/src/index.js @@ -1,3 +1,4 @@ +import { types as t } from "@babel/core"; import nameFunction from "@babel/helper-function-name"; import splitExportDeclaration from "@babel/helper-split-export-declaration"; import { @@ -129,7 +130,7 @@ export function createClassFeaturePlugin({ nameFunction(path); ref = path.scope.generateUidIdentifier("class"); } else { - ref = path.node.id; + ref = t.cloneNode(path.node.id); } // NODE: These three functions don't support decorators yet, diff --git a/packages/babel-helper-create-class-features-plugin/src/misc.js b/packages/babel-helper-create-class-features-plugin/src/misc.js index 31f8e0948676..8bb57a85df63 100644 --- a/packages/babel-helper-create-class-features-plugin/src/misc.js +++ b/packages/babel-helper-create-class-features-plugin/src/misc.js @@ -72,8 +72,14 @@ export function injectInitialization(path, constructor, nodes, renamer) { if (isDerived) { const bareSupers = []; constructor.traverse(findBareSupers, bareSupers); + let isFirst = true; for (const bareSuper of bareSupers) { - bareSuper.insertAfter(nodes); + if (isFirst) { + bareSuper.insertAfter(nodes); + isFirst = false; + } else { + bareSuper.insertAfter(nodes.map(n => t.cloneNode(n))); + } } } else { constructor.get("body").unshiftContainer("body", nodes); diff --git a/packages/babel-helper-member-expression-to-functions/src/index.js b/packages/babel-helper-member-expression-to-functions/src/index.js index 6620978c6bc6..4ea964fdb3bf 100644 --- a/packages/babel-helper-member-expression-to-functions/src/index.js +++ b/packages/babel-helper-member-expression-to-functions/src/index.js @@ -235,8 +235,12 @@ const handle = { t.binaryExpression( "===", baseNeedsMemoised - ? t.assignmentExpression("=", baseRef, startingNode) - : baseRef, + ? t.assignmentExpression( + "=", + t.cloneNode(baseRef), + t.cloneNode(startingNode), + ) + : t.cloneNode(baseRef), t.nullLiteral(), ), t.binaryExpression( @@ -263,7 +267,7 @@ const handle = { false, true, ), - [context, ...endParent.arguments], + [t.cloneNode(context), ...endParent.arguments], false, ), ); diff --git a/packages/babel-helper-module-transforms/src/rewrite-live-references.js b/packages/babel-helper-module-transforms/src/rewrite-live-references.js index b98953f70662..f036d578b6ba 100644 --- a/packages/babel-helper-module-transforms/src/rewrite-live-references.js +++ b/packages/babel-helper-module-transforms/src/rewrite-live-references.js @@ -337,7 +337,9 @@ const rewriteReferencesVisitor = { path .get("left") .replaceWith( - t.variableDeclaration("let", [t.variableDeclarator(newLoopId)]), + t.variableDeclaration("let", [ + t.variableDeclarator(t.cloneNode(newLoopId)), + ]), ); scope.registerDeclaration(path.get("left")); } diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index 940b83a8cebb..ac00464f16e6 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -146,6 +146,7 @@ function run(task) { function getOpts(self) { const newOpts = merge( { + ast: true, cwd: path.dirname(self.loc), filename: self.loc, filenameRelative: self.filename, diff --git a/packages/babel-plugin-proposal-async-generator-functions/src/for-await.js b/packages/babel-plugin-proposal-async-generator-functions/src/for-await.js index 20198f1437e9..eff702a255b3 100644 --- a/packages/babel-plugin-proposal-async-generator-functions/src/for-await.js +++ b/packages/babel-plugin-proposal-async-generator-functions/src/for-await.js @@ -61,7 +61,7 @@ export default function (path, { getAsyncIterator }) { ITERATOR_KEY: scope.generateUidIdentifier("iterator"), GET_ITERATOR: getAsyncIterator, OBJECT: node.right, - STEP_VALUE: stepValue, + STEP_VALUE: t.cloneNode(stepValue), STEP_KEY: stepKey, }); diff --git a/packages/babel-plugin-proposal-decorators/src/transformer-legacy.js b/packages/babel-plugin-proposal-decorators/src/transformer-legacy.js index f617ee0940fd..d860d884e82d 100644 --- a/packages/babel-plugin-proposal-decorators/src/transformer-legacy.js +++ b/packages/babel-plugin-proposal-decorators/src/transformer-legacy.js @@ -160,7 +160,7 @@ function applyTargetDecorators(path, state, decoratedProps) { acc = acc.concat([ t.assignmentExpression( "=", - descriptor, + t.cloneNode(descriptor), t.callExpression(state.addHelper("applyDecoratedDescriptor"), [ t.cloneNode(target), t.cloneNode(property), diff --git a/packages/babel-plugin-proposal-function-bind/src/index.js b/packages/babel-plugin-proposal-function-bind/src/index.js index ea62953863e5..0dea27804a15 100644 --- a/packages/babel-plugin-proposal-function-bind/src/index.js +++ b/packages/babel-plugin-proposal-function-bind/src/index.js @@ -7,7 +7,7 @@ export default declare(api => { function getTempId(scope) { let id = scope.path.getData("functionBind"); - if (id) return id; + if (id) return t.cloneNode(id); id = scope.generateDeclaredUidIdentifier("context"); return scope.path.setData("functionBind", id); @@ -35,7 +35,7 @@ export default declare(api => { bind.callee.object, ); } - return tempId; + return t.cloneNode(tempId); } return { diff --git a/packages/babel-plugin-proposal-partial-application/src/index.js b/packages/babel-plugin-proposal-partial-application/src/index.js index 8bd32c72c6f7..d9b18598b334 100644 --- a/packages/babel-plugin-proposal-partial-application/src/index.js +++ b/packages/babel-plugin-proposal-partial-application/src/index.js @@ -97,7 +97,7 @@ export default declare(api => { "=", t.cloneNode(functionLVal), t.memberExpression( - receiverLVal, + t.cloneNode(receiverLVal), node.callee.property, false, false, @@ -105,19 +105,19 @@ export default declare(api => { ), ...argsInitializers, t.functionExpression( - node.callee.property, + t.cloneNode(node.callee.property), placeholdersParams, t.blockStatement( [ t.returnStatement( t.callExpression( t.memberExpression( - functionLVal, + t.cloneNode(functionLVal), t.identifier("call"), false, false, ), - [receiverLVal, ...args], + [t.cloneNode(receiverLVal), ...args], ), ), ], @@ -132,10 +132,14 @@ export default declare(api => { t.assignmentExpression("=", t.cloneNode(functionLVal), node.callee), ...argsInitializers, t.functionExpression( - node.callee, + t.cloneNode(node.callee), placeholdersParams, t.blockStatement( - [t.returnStatement(t.callExpression(functionLVal, args))], + [ + t.returnStatement( + t.callExpression(t.cloneNode(functionLVal), args), + ), + ], [], ), false, diff --git a/packages/babel-plugin-proposal-pipeline-operator/src/buildOptimizedSequenceExpression.js b/packages/babel-plugin-proposal-pipeline-operator/src/buildOptimizedSequenceExpression.js index 2d0d3f23ea8f..f44ddf7cb843 100644 --- a/packages/babel-plugin-proposal-pipeline-operator/src/buildOptimizedSequenceExpression.js +++ b/packages/babel-plugin-proposal-pipeline-operator/src/buildOptimizedSequenceExpression.js @@ -30,7 +30,7 @@ const buildOptimizedSequenceExpression = ({ assign, call, path }) => { call.callee = evalSequence; - path.scope.push({ id: placeholderNode }); + path.scope.push({ id: t.cloneNode(placeholderNode) }); return t.sequenceExpression([assign, call]); } @@ -40,7 +40,7 @@ const buildOptimizedSequenceExpression = ({ assign, call, path }) => { return t.sequenceExpression([pipelineLeft, calledExpression.body]); } - path.scope.push({ id: placeholderNode }); + path.scope.push({ id: t.cloneNode(placeholderNode) }); if (param) { path.get("right").scope.rename(param.name, placeholderNode.name); diff --git a/packages/babel-plugin-proposal-pipeline-operator/src/smartVisitor.js b/packages/babel-plugin-proposal-pipeline-operator/src/smartVisitor.js index 750d9767ddeb..4b41ffabba31 100644 --- a/packages/babel-plugin-proposal-pipeline-operator/src/smartVisitor.js +++ b/packages/babel-plugin-proposal-pipeline-operator/src/smartVisitor.js @@ -2,7 +2,7 @@ import { types as t } from "@babel/core"; const updateTopicReferenceVisitor = { PipelinePrimaryTopicReference(path) { - path.replaceWith(this.topicId); + path.replaceWith(t.cloneNode(this.topicId)); }, PipelineTopicExpression(path) { path.skip(); diff --git a/packages/babel-plugin-transform-block-scoping/src/index.js b/packages/babel-plugin-transform-block-scoping/src/index.js index 70f359d00c8b..c6a7fe26f48e 100644 --- a/packages/babel-plugin-transform-block-scoping/src/index.js +++ b/packages/babel-plugin-transform-block-scoping/src/index.js @@ -33,7 +33,7 @@ export default declare((api, opts) => { const decl = node.declarations[i]; const assign = t.assignmentExpression( "=", - decl.id, + t.cloneNode(decl.id), decl.init || scope.buildUndefinedNode(), ); assign._ignoreBlockScopingTDZ = true; diff --git a/packages/babel-plugin-transform-modules-amd/src/index.js b/packages/babel-plugin-transform-modules-amd/src/index.js index b69d8025be5d..7ea2b150f04b 100644 --- a/packages/babel-plugin-transform-modules-amd/src/index.js +++ b/packages/babel-plugin-transform-modules-amd/src/index.js @@ -71,8 +71,8 @@ export default declare((api, options) => { new Promise((${resolveId}, ${rejectId}) => ${requireId}( [${getImportSource(t, path.node)}], - imported => ${resolveId}(${result}), - ${rejectId} + imported => ${t.cloneNode(resolveId)}(${result}), + ${t.cloneNode(rejectId)} ) )`, ); @@ -84,7 +84,7 @@ export default declare((api, options) => { if (requireId) { injectWrapper( path, - buildAnonymousWrapper({ REQUIRE: requireId }), + buildAnonymousWrapper({ REQUIRE: t.cloneNode(requireId) }), ); } return; @@ -94,7 +94,7 @@ export default declare((api, options) => { const importNames = []; if (requireId) { amdArgs.push(t.stringLiteral("require")); - importNames.push(requireId); + importNames.push(t.cloneNode(requireId)); } let moduleName = getModuleName(this.file.opts, options); diff --git a/packages/babel-plugin-transform-modules-systemjs/src/index.js b/packages/babel-plugin-transform-modules-systemjs/src/index.js index 0a4dfe74a72a..3431c5f45e6b 100644 --- a/packages/babel-plugin-transform-modules-systemjs/src/index.js +++ b/packages/babel-plugin-transform-modules-systemjs/src/index.js @@ -233,8 +233,8 @@ export default declare((api, options) => { } }, exit(path, state) { - const undefinedIdent = path.scope.buildUndefinedNode(); - const exportIdent = path.scope.generateUid("export"); + const scope = path.scope; + const exportIdent = scope.generateUid("export"); const contextIdent = state.contextIdent; const exportMap = Object.create(null); @@ -285,7 +285,7 @@ export default declare((api, options) => { beforeBody.push(path.node); removedPaths.push(path); } else if (path.isClassDeclaration()) { - variableIds.push(path.node.id); + variableIds.push(t.cloneNode(path.node.id)); path.replaceWith( t.expressionStatement( t.assignmentExpression( @@ -299,7 +299,7 @@ export default declare((api, options) => { const source = path.node.source.value; pushModule(source, "imports", path.node.specifiers); for (const name of Object.keys(path.getBindingIdentifiers())) { - path.scope.removeBinding(name); + scope.removeBinding(name); variableIds.push(t.identifier(name)); } path.remove(); @@ -312,8 +312,8 @@ export default declare((api, options) => { if (declar.isClassDeclaration()) { if (id) { exportNames.push("default"); - exportValues.push(undefinedIdent); - variableIds.push(id); + exportValues.push(scope.buildUndefinedNode()); + variableIds.push(t.cloneNode(id)); addExportName(id.name, "default"); path.replaceWith( t.expressionStatement( @@ -360,8 +360,8 @@ export default declare((api, options) => { } else if (path.isClass()) { const name = declar.node.id.name; exportNames.push(name); - exportValues.push(undefinedIdent); - variableIds.push(declar.node.id); + exportValues.push(scope.buildUndefinedNode()); + variableIds.push(t.cloneNode(declar.node.id)); path.replaceWith( t.expressionStatement( t.assignmentExpression( @@ -389,9 +389,7 @@ export default declare((api, options) => { const nodes = []; for (const specifier of specifiers) { - const binding = path.scope.getBinding( - specifier.local.name, - ); + const binding = scope.getBinding(specifier.local.name); // hoisted function export if ( binding && @@ -426,7 +424,7 @@ export default declare((api, options) => { modules.forEach(function (specifiers) { let setterBody = []; - const target = path.scope.generateUid(specifiers.key); + const target = scope.generateUid(specifiers.key); for (let specifier of specifiers.imports) { if (t.isImportNamespaceSpecifier(specifier)) { @@ -510,7 +508,7 @@ export default declare((api, options) => { variableIds.push(id); if (!hasInit) { exportNames.push(name); - exportValues.push(undefinedIdent); + exportValues.push(scope.buildUndefinedNode()); } }, null, @@ -540,7 +538,7 @@ export default declare((api, options) => { path.traverse(reassignmentVisitor, { exports: exportMap, buildCall: buildExportCall, - scope: path.scope, + scope, }); for (const path of removedPaths) { diff --git a/packages/babel-plugin-transform-parameters/src/params.js b/packages/babel-plugin-transform-parameters/src/params.js index 51901e1a26ba..4608a225af45 100644 --- a/packages/babel-plugin-transform-parameters/src/params.js +++ b/packages/babel-plugin-transform-parameters/src/params.js @@ -229,6 +229,6 @@ function buildScopeIIFE(shadowedParams, body) { } return t.returnStatement( - t.callExpression(t.arrowFunctionExpression(params, body), params), + t.callExpression(t.arrowFunctionExpression(params, body), args), ); } diff --git a/packages/babel-plugin-transform-react-jsx-source/src/index.js b/packages/babel-plugin-transform-react-jsx-source/src/index.js index fe258bb87f84..d68649955df0 100644 --- a/packages/babel-plugin-transform-react-jsx-source/src/index.js +++ b/packages/babel-plugin-transform-react-jsx-source/src/index.js @@ -82,7 +82,7 @@ export default declare(api => { } const trace = makeTrace( - state.fileNameIdentifier, + t.cloneNode(state.fileNameIdentifier), location.start.line, location.start.column, ); diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 0977b2b48b39..6559968ffa3c 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -301,7 +301,11 @@ export default declare((api, options, dirname) => { context2 = t.cloneNode(object); } else { context1 = path.scope.generateDeclaredUidIdentifier("context"); - context2 = t.assignmentExpression("=", context1, object); + context2 = t.assignmentExpression( + "=", + t.cloneNode(context1), + object, + ); } node.callee = t.memberExpression( t.callExpression( diff --git a/packages/babel-plugin-transform-template-literals/src/index.js b/packages/babel-plugin-transform-template-literals/src/index.js index 9ddbf5c9d3fc..abdf7087f8fc 100644 --- a/packages/babel-plugin-transform-template-literals/src/index.js +++ b/packages/babel-plugin-transform-template-literals/src/index.js @@ -87,9 +87,9 @@ export default declare((api, options) => { const lazyLoad = template.ast` function ${templateObject}() { const data = ${t.callExpression(helperId, callExpressionInput)}; - ${templateObject} = function() { return data }; + ${t.cloneNode(templateObject)} = function() { return data }; return data; - } + } `; scope.path.unshiftContainer("body", lazyLoad); diff --git a/packages/babel-plugin-transform-typescript/src/index.js b/packages/babel-plugin-transform-typescript/src/index.js index 82839fa05831..4aa2fcaa7aea 100644 --- a/packages/babel-plugin-transform-typescript/src/index.js +++ b/packages/babel-plugin-transform-typescript/src/index.js @@ -134,7 +134,8 @@ export default declare( ); } - return template.statement.ast`this.${id} = ${id}`; + return template.statement.ast` + this.${t.cloneNode(id)} = ${t.cloneNode(id)}`; }); injectInitialization(classPath, path, assigns); diff --git a/packages/babel-plugin-transform-typescript/src/namespace.js b/packages/babel-plugin-transform-typescript/src/namespace.js index 32d53447a80a..be3b51c949cd 100644 --- a/packages/babel-plugin-transform-typescript/src/namespace.js +++ b/packages/babel-plugin-transform-typescript/src/namespace.js @@ -156,16 +156,16 @@ function handleNested(path, t, node, parentExport) { let fallthroughValue = t.objectExpression([]); if (parentExport) { + const memberExpr = t.memberExpression(parentExport, realName); fallthroughValue = template.expression.ast` - ${parentExport}.${realName} || ( - ${parentExport}.${realName} = ${fallthroughValue} - ) + ${t.cloneNode(memberExpr)} || + (${t.cloneNode(memberExpr)} = ${fallthroughValue}) `; } return template.statement.ast` (function (${t.identifier(name)}) { ${namespaceTopLevel} - })(${realName} || (${realName} = ${fallthroughValue})); + })(${realName} || (${t.cloneNode(realName)} = ${fallthroughValue})); `; } From f7964a9ac51356f7df6404a25b27ba1cffba1ba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 14 Jul 2020 14:10:36 -0400 Subject: [PATCH 15/90] v7.10.5 --- lerna.json | 2 +- packages/babel-cli/package.json | 6 ++-- packages/babel-compat-data/package.json | 2 +- packages/babel-core/package.json | 14 ++++----- packages/babel-generator/package.json | 8 ++--- .../package.json | 4 +-- .../package.json | 6 ++-- packages/babel-helper-define-map/package.json | 4 +-- packages/babel-helper-fixtures/package.json | 2 +- .../package.json | 4 +-- .../package.json | 4 +-- packages/babel-helper-regex/package.json | 2 +- .../package.json | 6 ++-- packages/babel-node/package.json | 10 +++---- packages/babel-parser/package.json | 4 +-- .../package.json | 4 +-- .../package.json | 6 ++-- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 6 ++-- .../package.json | 6 ++-- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 4 +-- .../package.json | 8 ++--- .../package.json | 4 +-- .../package.json | 6 ++-- packages/babel-register/package.json | 4 +-- packages/babel-runtime-corejs2/package.json | 2 +- packages/babel-runtime-corejs3/package.json | 2 +- packages/babel-runtime/package.json | 2 +- packages/babel-standalone/package.json | 30 +++++++++---------- packages/babel-traverse/package.json | 8 ++--- packages/babel-types/package.json | 6 ++-- 36 files changed, 100 insertions(+), 100 deletions(-) diff --git a/lerna.json b/lerna.json index be90b705e3a7..ecc214e2002a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "7.10.4", + "version": "7.10.5", "changelog": { "repo": "babel/babel", "cacheDir": ".changelog", diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index b55a1996f1e7..cec32dcbf1d7 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -1,6 +1,6 @@ { "name": "@babel/cli", - "version": "7.10.4", + "version": "7.10.5", "description": "Babel command line.", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -39,8 +39,8 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", - "@babel/helper-fixtures": "^7.10.4", + "@babel/core": "^7.10.5", + "@babel/helper-fixtures": "^7.10.5", "rimraf": "^3.0.0" }, "bin": { diff --git a/packages/babel-compat-data/package.json b/packages/babel-compat-data/package.json index 355db76adc9f..4b7662da57bb 100644 --- a/packages/babel-compat-data/package.json +++ b/packages/babel-compat-data/package.json @@ -1,6 +1,6 @@ { "name": "@babel/compat-data", - "version": "7.10.4", + "version": "7.10.5", "author": "The Babel Team (https://babeljs.io/team)", "license": "MIT", "description": "", diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index 3afaf9a1c577..10cb8cf66073 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -1,6 +1,6 @@ { "name": "@babel/core", - "version": "7.10.4", + "version": "7.10.5", "description": "Babel compiler core.", "main": "lib/index.js", "author": "Sebastian McKenzie ", @@ -44,13 +44,13 @@ }, "dependencies": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-module-transforms": "^7.10.5", "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.10.4", + "@babel/parser": "^7.10.5", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4", + "@babel/traverse": "^7.10.5", + "@babel/types": "^7.10.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -61,6 +61,6 @@ "source-map": "^0.5.0" }, "devDependencies": { - "@babel/helper-transform-fixture-test-runner": "^7.10.4" + "@babel/helper-transform-fixture-test-runner": "^7.10.5" } } diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json index 545b27db7e44..0c07467a6940 100644 --- a/packages/babel-generator/package.json +++ b/packages/babel-generator/package.json @@ -1,6 +1,6 @@ { "name": "@babel/generator", - "version": "7.10.4", + "version": "7.10.5", "description": "Turns an AST into code.", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -18,12 +18,12 @@ "lib" ], "dependencies": { - "@babel/types": "^7.10.4", + "@babel/types": "^7.10.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, "devDependencies": { - "@babel/helper-fixtures": "^7.10.4", - "@babel/parser": "^7.10.4" + "@babel/helper-fixtures": "^7.10.5", + "@babel/parser": "^7.10.5" } } diff --git a/packages/babel-helper-builder-react-jsx-experimental/package.json b/packages/babel-helper-builder-react-jsx-experimental/package.json index f4215fe20449..befd61d7d574 100644 --- a/packages/babel-helper-builder-react-jsx-experimental/package.json +++ b/packages/babel-helper-builder-react-jsx-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-builder-react-jsx-experimental", - "version": "7.10.4", + "version": "7.10.5", "description": "Helper function to build react jsx", "repository": { "type": "git", @@ -15,6 +15,6 @@ "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-module-imports": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.10.5" } } diff --git a/packages/babel-helper-create-class-features-plugin/package.json b/packages/babel-helper-create-class-features-plugin/package.json index d4c54f67cd74..8b4064849202 100644 --- a/packages/babel-helper-create-class-features-plugin/package.json +++ b/packages/babel-helper-create-class-features-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-create-class-features-plugin", - "version": "7.10.4", + "version": "7.10.5", "author": "The Babel Team (https://babeljs.io/team)", "license": "MIT", "description": "Compile class public and private fields, private methods and decorators to ES6", @@ -19,7 +19,7 @@ ], "dependencies": { "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", "@babel/helper-optimise-call-expression": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.10.4", @@ -29,7 +29,7 @@ "@babel/core": "^7.0.0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-helper-define-map/package.json b/packages/babel-helper-define-map/package.json index fbf50b29b8bf..ad3a6ba50593 100644 --- a/packages/babel-helper-define-map/package.json +++ b/packages/babel-helper-define-map/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-define-map", - "version": "7.10.4", + "version": "7.10.5", "description": "Helper function to define a map", "repository": { "type": "git", @@ -14,7 +14,7 @@ "main": "lib/index.js", "dependencies": { "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.4", + "@babel/types": "^7.10.5", "lodash": "^4.17.19" } } diff --git a/packages/babel-helper-fixtures/package.json b/packages/babel-helper-fixtures/package.json index 119e94d83faf..0b6ebf586e25 100644 --- a/packages/babel-helper-fixtures/package.json +++ b/packages/babel-helper-fixtures/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-fixtures", - "version": "7.10.4", + "version": "7.10.5", "description": "Helper function to support fixtures", "author": "Sebastian McKenzie ", "license": "MIT", diff --git a/packages/babel-helper-member-expression-to-functions/package.json b/packages/babel-helper-member-expression-to-functions/package.json index 321dbe33ccea..f2d56a473f63 100644 --- a/packages/babel-helper-member-expression-to-functions/package.json +++ b/packages/babel-helper-member-expression-to-functions/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-member-expression-to-functions", - "version": "7.10.4", + "version": "7.10.5", "description": "Helper function to replace certain member expressions with function calls", "repository": { "type": "git", @@ -14,6 +14,6 @@ "main": "lib/index.js", "author": "Justin Ridgewell ", "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.10.5" } } diff --git a/packages/babel-helper-module-transforms/package.json b/packages/babel-helper-module-transforms/package.json index ec289301e737..000bc8c06181 100644 --- a/packages/babel-helper-module-transforms/package.json +++ b/packages/babel-helper-module-transforms/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-module-transforms", - "version": "7.10.4", + "version": "7.10.5", "description": "Babel helper functions for implementing ES6 module transformations", "author": "Logan Smyth ", "homepage": "https://babeljs.io/", @@ -20,7 +20,7 @@ "@babel/helper-simple-access": "^7.10.4", "@babel/helper-split-export-declaration": "^7.10.4", "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4", + "@babel/types": "^7.10.5", "lodash": "^4.17.19" } } diff --git a/packages/babel-helper-regex/package.json b/packages/babel-helper-regex/package.json index a00f0f16940b..60162c9600d3 100644 --- a/packages/babel-helper-regex/package.json +++ b/packages/babel-helper-regex/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-regex", - "version": "7.10.4", + "version": "7.10.5", "description": "Helper function to check for literal RegEx", "repository": { "type": "git", diff --git a/packages/babel-helper-transform-fixture-test-runner/package.json b/packages/babel-helper-transform-fixture-test-runner/package.json index ae7788b6fd8b..5387c003e0df 100644 --- a/packages/babel-helper-transform-fixture-test-runner/package.json +++ b/packages/babel-helper-transform-fixture-test-runner/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-transform-fixture-test-runner", - "version": "7.10.4", + "version": "7.10.5", "description": "Transform test runner for @babel/helper-fixtures module", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -16,8 +16,8 @@ "main": "lib/index.js", "dependencies": { "@babel/code-frame": "^7.10.4", - "@babel/core": "^7.10.4", - "@babel/helper-fixtures": "^7.10.4", + "@babel/core": "^7.10.5", + "@babel/helper-fixtures": "^7.10.5", "@babel/polyfill": "^7.10.4", "babel-check-duplicated-nodes": "^1.0.0", "jest": "^24.8.0", diff --git a/packages/babel-node/package.json b/packages/babel-node/package.json index bc8874689818..501ed1d60528 100644 --- a/packages/babel-node/package.json +++ b/packages/babel-node/package.json @@ -1,6 +1,6 @@ { "name": "@babel/node", - "version": "7.10.4", + "version": "7.10.5", "description": "Babel command line", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -23,7 +23,7 @@ "compiler" ], "dependencies": { - "@babel/register": "^7.10.4", + "@babel/register": "^7.10.5", "commander": "^4.0.1", "core-js": "^3.2.1", "lodash": "^4.17.19", @@ -36,9 +36,9 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", - "@babel/helper-fixtures": "^7.10.4", - "@babel/runtime": "^7.10.4", + "@babel/core": "^7.10.5", + "@babel/helper-fixtures": "^7.10.5", + "@babel/runtime": "^7.10.5", "fs-readdir-recursive": "^1.0.0", "make-dir": "^2.1.0", "rimraf": "^3.0.0" diff --git a/packages/babel-parser/package.json b/packages/babel-parser/package.json index 9c8730f12952..26be1598e549 100644 --- a/packages/babel-parser/package.json +++ b/packages/babel-parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/parser", - "version": "7.10.4", + "version": "7.10.5", "description": "A JavaScript parser", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -33,7 +33,7 @@ }, "devDependencies": { "@babel/code-frame": "^7.10.4", - "@babel/helper-fixtures": "^7.10.4", + "@babel/helper-fixtures": "^7.10.5", "@babel/helper-validator-identifier": "^7.10.4", "charcodes": "^0.2.0" }, diff --git a/packages/babel-plugin-proposal-async-generator-functions/package.json b/packages/babel-plugin-proposal-async-generator-functions/package.json index d39f8b88908f..9310a9d45397 100644 --- a/packages/babel-plugin-proposal-async-generator-functions/package.json +++ b/packages/babel-plugin-proposal-async-generator-functions/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-proposal-async-generator-functions", - "version": "7.10.4", + "version": "7.10.5", "description": "Turn async generator functions into ES2015 generators", "repository": { "type": "git", @@ -24,7 +24,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-proposal-decorators/package.json b/packages/babel-plugin-proposal-decorators/package.json index badec4925607..fd80ce120f0f 100644 --- a/packages/babel-plugin-proposal-decorators/package.json +++ b/packages/babel-plugin-proposal-decorators/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-proposal-decorators", - "version": "7.10.4", + "version": "7.10.5", "author": "Logan Smyth ", "license": "MIT", "publishConfig": { @@ -19,7 +19,7 @@ "decorators" ], "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-decorators": "^7.10.4" }, @@ -27,7 +27,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-proposal-function-bind/package.json b/packages/babel-plugin-proposal-function-bind/package.json index 0c91c5c2b500..af67900ccf3e 100644 --- a/packages/babel-plugin-proposal-function-bind/package.json +++ b/packages/babel-plugin-proposal-function-bind/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-proposal-function-bind", - "version": "7.10.4", + "version": "7.10.5", "description": "Compile function bind operator to ES5", "repository": { "type": "git", @@ -23,7 +23,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-proposal-partial-application/package.json b/packages/babel-plugin-proposal-partial-application/package.json index 92177f55e590..c0f8868c6e53 100644 --- a/packages/babel-plugin-proposal-partial-application/package.json +++ b/packages/babel-plugin-proposal-partial-application/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-proposal-partial-application", - "version": "7.10.4", + "version": "7.10.5", "description": "Introduces a new ? token in an argument list which allows for partially applying an argument list to a call expression", "repository": { "type": "git", @@ -23,7 +23,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-proposal-pipeline-operator/package.json b/packages/babel-plugin-proposal-pipeline-operator/package.json index d7d3fc20d11b..92b3c8298e5e 100644 --- a/packages/babel-plugin-proposal-pipeline-operator/package.json +++ b/packages/babel-plugin-proposal-pipeline-operator/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-proposal-pipeline-operator", - "version": "7.10.4", + "version": "7.10.5", "description": "Transform pipeline operator into call expressions", "repository": { "type": "git", @@ -23,7 +23,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-transform-block-scoping/package.json b/packages/babel-plugin-transform-block-scoping/package.json index e1f2217133e1..caf6c28e2c41 100644 --- a/packages/babel-plugin-transform-block-scoping/package.json +++ b/packages/babel-plugin-transform-block-scoping/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-block-scoping", - "version": "7.10.4", + "version": "7.10.5", "description": "Compile ES2015 block scoping (const and let) to ES5", "repository": { "type": "git", @@ -22,7 +22,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-transform-modules-amd/package.json b/packages/babel-plugin-transform-modules-amd/package.json index ad8e38b51e8c..cecfaaeaecfd 100644 --- a/packages/babel-plugin-transform-modules-amd/package.json +++ b/packages/babel-plugin-transform-modules-amd/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-modules-amd", - "version": "7.10.4", + "version": "7.10.5", "description": "This plugin transforms ES2015 modules to AMD", "repository": { "type": "git", @@ -13,7 +13,7 @@ }, "main": "lib/index.js", "dependencies": { - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -24,7 +24,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-transform-modules-systemjs/package.json b/packages/babel-plugin-transform-modules-systemjs/package.json index a4b4b5e9e93f..f849fb3ce2fa 100644 --- a/packages/babel-plugin-transform-modules-systemjs/package.json +++ b/packages/babel-plugin-transform-modules-systemjs/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-modules-systemjs", - "version": "7.10.4", + "version": "7.10.5", "description": "This plugin transforms ES2015 modules to SystemJS", "repository": { "type": "git", @@ -14,7 +14,7 @@ "main": "lib/index.js", "dependencies": { "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -25,7 +25,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } diff --git a/packages/babel-plugin-transform-parameters/package.json b/packages/babel-plugin-transform-parameters/package.json index 04bce103de94..7ba61b191452 100644 --- a/packages/babel-plugin-transform-parameters/package.json +++ b/packages/babel-plugin-transform-parameters/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-parameters", - "version": "7.10.4", + "version": "7.10.5", "description": "Compile ES2015 default and rest parameters to ES5", "repository": { "type": "git", @@ -23,7 +23,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-transform-proto-to-assign/package.json b/packages/babel-plugin-transform-proto-to-assign/package.json index 9466aa62ebce..5679c2e7b0f7 100644 --- a/packages/babel-plugin-transform-proto-to-assign/package.json +++ b/packages/babel-plugin-transform-proto-to-assign/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-proto-to-assign", - "version": "7.10.4", + "version": "7.10.5", "description": "Babel plugin for turning __proto__ into a shallow property clone", "repository": { "type": "git", @@ -23,7 +23,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-transform-react-jsx-source/package.json b/packages/babel-plugin-transform-react-jsx-source/package.json index e53505a06e64..b46b69f1678b 100644 --- a/packages/babel-plugin-transform-react-jsx-source/package.json +++ b/packages/babel-plugin-transform-react-jsx-source/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-react-jsx-source", - "version": "7.10.4", + "version": "7.10.5", "description": "Add a __source prop to all JSX Elements", "repository": { "type": "git", @@ -23,7 +23,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-transform-runtime/package.json b/packages/babel-plugin-transform-runtime/package.json index d5f6851e102e..dfa90b3b258a 100644 --- a/packages/babel-plugin-transform-runtime/package.json +++ b/packages/babel-plugin-transform-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-runtime", - "version": "7.10.4", + "version": "7.10.5", "description": "Externalise references to helpers and builtins, automatically polyfilling your code without polluting globals", "repository": { "type": "git", @@ -29,13 +29,13 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4", "@babel/helpers": "^7.10.4", "@babel/plugin-transform-typeof-symbol": "^7.10.4", "@babel/preset-env": "^7.10.4", - "@babel/runtime": "^7.10.4", + "@babel/runtime": "^7.10.5", "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.10.5" } } diff --git a/packages/babel-plugin-transform-template-literals/package.json b/packages/babel-plugin-transform-template-literals/package.json index 397fb4cd24a0..97a32f8f8982 100644 --- a/packages/babel-plugin-transform-template-literals/package.json +++ b/packages/babel-plugin-transform-template-literals/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-template-literals", - "version": "7.10.4", + "version": "7.10.5", "description": "Compile ES2015 template literals to ES5", "repository": { "type": "git", @@ -23,7 +23,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-transform-typescript/package.json b/packages/babel-plugin-transform-typescript/package.json index 7d7649e98b27..8714f5c43310 100644 --- a/packages/babel-plugin-transform-typescript/package.json +++ b/packages/babel-plugin-transform-typescript/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-typescript", - "version": "7.10.4", + "version": "7.10.5", "description": "Transform TypeScript into ES.next", "repository": { "type": "git", @@ -17,7 +17,7 @@ "typescript" ], "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-typescript": "^7.10.4" }, @@ -25,7 +25,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-register/package.json b/packages/babel-register/package.json index 01f4bbacda8c..e0aecdda54bc 100644 --- a/packages/babel-register/package.json +++ b/packages/babel-register/package.json @@ -1,6 +1,6 @@ { "name": "@babel/register", - "version": "7.10.4", + "version": "7.10.5", "description": "babel require hook", "license": "MIT", "publishConfig": { @@ -27,7 +27,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/plugin-transform-modules-commonjs": "^7.10.4", "browserify": "16.5.0", "default-require-extensions": "^2.0.0" diff --git a/packages/babel-runtime-corejs2/package.json b/packages/babel-runtime-corejs2/package.json index dce4c6de9eda..0eef4393793d 100644 --- a/packages/babel-runtime-corejs2/package.json +++ b/packages/babel-runtime-corejs2/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime-corejs2", - "version": "7.10.4", + "version": "7.10.5", "description": "babel's modular runtime helpers with core-js@2 polyfilling", "license": "MIT", "publishConfig": { diff --git a/packages/babel-runtime-corejs3/package.json b/packages/babel-runtime-corejs3/package.json index 3ebe5fa7166f..2f41fdbd0593 100644 --- a/packages/babel-runtime-corejs3/package.json +++ b/packages/babel-runtime-corejs3/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime-corejs3", - "version": "7.10.4", + "version": "7.10.5", "description": "babel's modular runtime helpers with core-js@3 polyfilling", "license": "MIT", "publishConfig": { diff --git a/packages/babel-runtime/package.json b/packages/babel-runtime/package.json index b2f1a95db312..ff4ca65b825d 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime", - "version": "7.10.4", + "version": "7.10.5", "description": "babel's modular runtime helpers", "license": "MIT", "publishConfig": { diff --git a/packages/babel-standalone/package.json b/packages/babel-standalone/package.json index c9cbcb5884db..6bc21815cf0d 100644 --- a/packages/babel-standalone/package.json +++ b/packages/babel-standalone/package.json @@ -1,6 +1,6 @@ { "name": "@babel/standalone", - "version": "7.10.4", + "version": "7.10.5", "description": "Standalone build of Babel for use in non-Node.js environments.", "main": "babel.js", "files": [ @@ -11,17 +11,17 @@ "prepublishOnly": "cd ../.. && make prepublish-build-standalone" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-external-helpers": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.5", "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-decorators": "^7.10.4", + "@babel/plugin-proposal-decorators": "^7.10.5", "@babel/plugin-proposal-do-expressions": "^7.10.4", "@babel/plugin-proposal-dynamic-import": "^7.10.4", "@babel/plugin-proposal-export-default-from": "^7.10.4", "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-function-bind": "^7.10.4", + "@babel/plugin-proposal-function-bind": "^7.10.5", "@babel/plugin-proposal-function-sent": "^7.10.4", "@babel/plugin-proposal-json-strings": "^7.10.4", "@babel/plugin-proposal-logical-assignment-operators": "^7.10.4", @@ -30,7 +30,7 @@ "@babel/plugin-proposal-object-rest-spread": "^7.10.4", "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", "@babel/plugin-proposal-optional-chaining": "^7.10.4", - "@babel/plugin-proposal-pipeline-operator": "^7.10.4", + "@babel/plugin-proposal-pipeline-operator": "^7.10.5", "@babel/plugin-proposal-private-methods": "^7.10.4", "@babel/plugin-proposal-private-property-in-object": "^7.10.4", "@babel/plugin-proposal-throw-expressions": "^7.10.4", @@ -55,7 +55,7 @@ "@babel/plugin-transform-arrow-functions": "^7.10.4", "@babel/plugin-transform-async-to-generator": "^7.10.4", "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.5", "@babel/plugin-transform-classes": "^7.10.4", "@babel/plugin-transform-computed-properties": "^7.10.4", "@babel/plugin-transform-destructuring": "^7.10.4", @@ -70,19 +70,19 @@ "@babel/plugin-transform-jscript": "^7.10.4", "@babel/plugin-transform-literals": "^7.10.4", "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.5", "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.5", "@babel/plugin-transform-modules-umd": "^7.10.4", "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", "@babel/plugin-transform-new-target": "^7.10.4", "@babel/plugin-transform-object-assign": "^7.10.4", "@babel/plugin-transform-object-set-prototype-of-to-assign": "^7.10.4", "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.5", "@babel/plugin-transform-property-literals": "^7.10.4", "@babel/plugin-transform-property-mutators": "^7.10.4", - "@babel/plugin-transform-proto-to-assign": "^7.10.4", + "@babel/plugin-transform-proto-to-assign": "^7.10.5", "@babel/plugin-transform-react-constant-elements": "^7.10.4", "@babel/plugin-transform-react-display-name": "^7.10.4", "@babel/plugin-transform-react-inline-elements": "^7.10.4", @@ -90,17 +90,17 @@ "@babel/plugin-transform-react-jsx-compat": "^7.10.4", "@babel/plugin-transform-react-jsx-development": "^7.10.4", "@babel/plugin-transform-react-jsx-self": "^7.10.4", - "@babel/plugin-transform-react-jsx-source": "^7.10.4", + "@babel/plugin-transform-react-jsx-source": "^7.10.5", "@babel/plugin-transform-regenerator": "^7.10.4", "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-runtime": "^7.10.4", + "@babel/plugin-transform-runtime": "^7.10.5", "@babel/plugin-transform-shorthand-properties": "^7.10.4", "@babel/plugin-transform-spread": "^7.10.4", "@babel/plugin-transform-sticky-regex": "^7.10.4", "@babel/plugin-transform-strict-mode": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.5", "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.10.5", "@babel/plugin-transform-unicode-escapes": "^7.10.4", "@babel/plugin-transform-unicode-regex": "^7.10.4", "@babel/preset-env": "^7.10.4", diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json index d35b866b46c9..7095e2530b25 100644 --- a/packages/babel-traverse/package.json +++ b/packages/babel-traverse/package.json @@ -1,6 +1,6 @@ { "name": "@babel/traverse", - "version": "7.10.4", + "version": "7.10.5", "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -16,11 +16,11 @@ "main": "lib/index.js", "dependencies": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.4", + "@babel/generator": "^7.10.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" diff --git a/packages/babel-types/package.json b/packages/babel-types/package.json index bc73eac86c2d..7876a4c69637 100644 --- a/packages/babel-types/package.json +++ b/packages/babel-types/package.json @@ -1,6 +1,6 @@ { "name": "@babel/types", - "version": "7.10.4", + "version": "7.10.5", "description": "Babel Types is a Lodash-esque utility library for AST nodes", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -21,7 +21,7 @@ "to-fast-properties": "^2.0.0" }, "devDependencies": { - "@babel/generator": "^7.10.4", - "@babel/parser": "^7.10.4" + "@babel/generator": "^7.10.5", + "@babel/parser": "^7.10.5" } } From cc646fa10ad34052811071d6023fd540053e6ed4 Mon Sep 17 00:00:00 2001 From: Babel Bot Date: Tue, 14 Jul 2020 18:51:51 +0000 Subject: [PATCH 16/90] Add v7.10.5 to CHANGELOG.md [skip ci] --- CHANGELOG.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c269dbf98a88..4957b2ba5bf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,48 @@ See [`eslint-plugin-babel`'s releases](https://github.com/babel/eslint-plugin-ba +## v7.10.5 (2020-07-14) + +#### :bug: Bug Fix +* `babel-helper-builder-react-jsx-experimental`, `babel-helper-create-class-features-plugin`, `babel-helper-member-expression-to-functions`, `babel-helper-module-transforms`, `babel-helper-transform-fixture-test-runner`, `babel-plugin-proposal-async-generator-functions`, `babel-plugin-proposal-decorators`, `babel-plugin-proposal-function-bind`, `babel-plugin-proposal-partial-application`, `babel-plugin-proposal-pipeline-operator`, `babel-plugin-transform-block-scoping`, `babel-plugin-transform-modules-amd`, `babel-plugin-transform-modules-systemjs`, `babel-plugin-transform-parameters`, `babel-plugin-transform-react-jsx-source`, `babel-plugin-transform-runtime`, `babel-plugin-transform-template-literals`, `babel-plugin-transform-typescript` + * [#11807](https://github.com/babel/babel/pull/11807) Disallow duplicated AST nodes ([@JLHwung](https://github.com/JLHwung)) +* `babel-parser` + * [#11814](https://github.com/babel/babel/pull/11814) fix: add optional: false to chained optional call expression ([@JLHwung](https://github.com/JLHwung)) + * [#11774](https://github.com/babel/babel/pull/11774) fix: throw expect jsx plugin error when an idStart or > is seen ([@JLHwung](https://github.com/JLHwung)) +* `babel-plugin-transform-typescript` + * [#11816](https://github.com/babel/babel/pull/11816) Typescript transform now removes generic arguments from optional calls (Closes [#11813](https://github.com/babel/babel/issues/11813)) ([@RafaelSalguero](https://github.com/RafaelSalguero)) +* `babel-plugin-transform-block-scoping` + * [#11802](https://github.com/babel/babel/pull/11802) Fix break/continue when switch is nested inside loop ([@existentialism](https://github.com/existentialism)) +* `babel-generator`, `babel-plugin-transform-typescript`, `babel-types` + * [#11582](https://github.com/babel/babel/pull/11582) Refactor generated builder names in @babel/types ([@zxbodya](https://github.com/zxbodya)) +* `babel-compat-data` + * [#11783](https://github.com/babel/babel/pull/11783) fix: update class properties support matrix ([@JLHwung](https://github.com/JLHwung)) + +#### :memo: Documentation +* Other + * [#11799](https://github.com/babel/babel/pull/11799) docs: update README example and REPL link ([@JLHwung](https://github.com/JLHwung)) + * [#11761](https://github.com/babel/babel/pull/11761) Add note about running Make targets in Windows 10 ([@kaicataldo](https://github.com/kaicataldo)) +* `babel-parser` + * [#11729](https://github.com/babel/babel/pull/11729) docs: add AST spec on optional chain [skip ci] ([@JLHwung](https://github.com/JLHwung)) + +#### :house: Internal +* `babel-cli`, `babel-compat-data`, `babel-core`, `babel-helper-define-map`, `babel-helper-fixtures`, `babel-helper-module-transforms`, `babel-helper-regex`, `babel-helper-transform-fixture-test-runner`, `babel-node`, `babel-plugin-transform-proto-to-assign`, `babel-register`, `babel-traverse`, `babel-types` + * [#11818](https://github.com/babel/babel/pull/11818) Bump some deps for audit ([@existentialism](https://github.com/existentialism)) +* `babel-helper-fixtures`, `babel-traverse` + * [#11811](https://github.com/babel/babel/pull/11811) Replace lodash 'clone' usage with ES6 Spread initializer ([@jayaddison](https://github.com/jayaddison)) +* `babel-helper-fixtures`, `babel-helper-transform-fixture-test-runner` + * [#11812](https://github.com/babel/babel/pull/11812) Replace lodash 'extend' usage with Object.assign ([@jayaddison](https://github.com/jayaddison)) +* `babel-plugin-transform-block-scoping` + * [#11798](https://github.com/babel/babel/pull/11798) Reduce dependency on lodash functions: values, extends ([@jayaddison](https://github.com/jayaddison)) +* `babel-generator`, `babel-plugin-transform-typescript`, `babel-types` + * [#11582](https://github.com/babel/babel/pull/11582) Refactor generated builder names in @babel/types ([@zxbodya](https://github.com/zxbodya)) +* `babel-cli`, `babel-generator`, `babel-helper-transform-fixture-test-runner`, `babel-traverse`, `babel-types` + * [#11790](https://github.com/babel/babel/pull/11790) Reduce dependency on lodash functions: includes, uniq, repeat, isinteger ([@jayaddison](https://github.com/jayaddison)) +* Other + * [#11782](https://github.com/babel/babel/pull/11782) chore: refine yarn cache config ([@JLHwung](https://github.com/JLHwung)) +* `babel-register` + * [#11780](https://github.com/babel/babel/pull/11780) test: add console warn spy on babel-register tests ([@JLHwung](https://github.com/JLHwung)) + * [#11776](https://github.com/babel/babel/pull/11776) chore: remove babel-register generated test artifacts ([@JLHwung](https://github.com/JLHwung)) ## v7.10.4 (2020-06-30) #### :eyeglasses: Spec Compliance From 7eaf37ea3ed440d32b00a136dc2a8889d59d43f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 14 Jul 2020 18:14:25 -0400 Subject: [PATCH 17/90] chore: use repository HEAD when pulling third party repos (#11837) --- .circleci/config.yml | 2 +- Makefile | 12 ++++++------ .../scripts/download-compat-table.sh | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 21ff5b59d160..30397ea0cede 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -88,7 +88,7 @@ jobs: - run: name: Setup Test Runner command: | - git clone --recurse-submodules https://github.com/babel/babel-test262-runner + git clone --depth=1 --recurse-submodules https://github.com/babel/babel-test262-runner cd babel-test262-runner npm ci npm i tap-mocha-reporter --save-dev diff --git a/Makefile b/Makefile index 34a85b66d8f7..4d280f5b20df 100644 --- a/Makefile +++ b/Makefile @@ -164,8 +164,8 @@ test-ci-coverage: bootstrap-flow: rm -rf build/flow mkdir -p build - git clone --branch=master --single-branch --shallow-since=2018-11-01 https://github.com/facebook/flow.git build/flow - cd build/flow && git checkout $(FLOW_COMMIT) + git clone --single-branch --shallow-since=2018-11-01 https://github.com/facebook/flow.git build/flow + cd build/flow && git checkout -q $(FLOW_COMMIT) test-flow: $(NODE) scripts/parser-tests/flow @@ -179,8 +179,8 @@ test-flow-update-allowlist: bootstrap-typescript: rm -rf ./build/typescript mkdir -p ./build - git clone --branch=master --single-branch --shallow-since=2019-09-01 https://github.com/microsoft/TypeScript.git ./build/typescript - cd build/typescript && git checkout $(TYPESCRIPT_COMMIT) + git clone --single-branch --shallow-since=2019-09-01 https://github.com/microsoft/TypeScript.git ./build/typescript + cd build/typescript && git checkout -q $(TYPESCRIPT_COMMIT) test-typescript: $(NODE) scripts/parser-tests/typescript @@ -194,8 +194,8 @@ test-typescript-update-allowlist: bootstrap-test262: rm -rf build/test262 mkdir -p build - git clone --branch=master --single-branch --shallow-since=2019-12-01 https://github.com/tc39/test262.git build/test262 - cd build/test262 && git checkout $(TEST262_COMMIT) + git clone --single-branch --shallow-since=2019-12-01 https://github.com/tc39/test262.git build/test262 + cd build/test262 && git checkout -q $(TEST262_COMMIT) test-test262: $(NODE) scripts/parser-tests/test262 diff --git a/packages/babel-compat-data/scripts/download-compat-table.sh b/packages/babel-compat-data/scripts/download-compat-table.sh index bf8de677684a..b1f42b4e611a 100755 --- a/packages/babel-compat-data/scripts/download-compat-table.sh +++ b/packages/babel-compat-data/scripts/download-compat-table.sh @@ -16,5 +16,5 @@ fi rm -rf build/compat-table mkdir -p build -git clone --branch=gh-pages --single-branch --shallow-since=2020-04-01 https://github.com/kangax/compat-table.git build/compat-table -cd build/compat-table && git checkout -qf $COMPAT_TABLE_COMMIT +git clone --single-branch --shallow-since=2020-04-01 https://github.com/kangax/compat-table.git build/compat-table +cd build/compat-table && git checkout -q $COMPAT_TABLE_COMMIT From e12caf4f699946537f6ac82adf2cf3e6a0bad55e Mon Sep 17 00:00:00 2001 From: Joshua Ohlman Date: Wed, 15 Jul 2020 16:48:08 -0400 Subject: [PATCH 18/90] Always retain lines for async arrow (#11836) --- packages/babel-generator/src/generators/methods.js | 2 +- .../fixtures/parentheses/async-arrow-function/input.js | 10 ++++++++++ .../parentheses/async-arrow-function/options.json | 1 + .../parentheses/async-arrow-function/output.js | 8 ++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 packages/babel-generator/test/fixtures/parentheses/async-arrow-function/input.js create mode 100644 packages/babel-generator/test/fixtures/parentheses/async-arrow-function/options.json create mode 100644 packages/babel-generator/test/fixtures/parentheses/async-arrow-function/output.js diff --git a/packages/babel-generator/src/generators/methods.js b/packages/babel-generator/src/generators/methods.js index 1019aba04c7c..e9d0c67bded7 100644 --- a/packages/babel-generator/src/generators/methods.js +++ b/packages/babel-generator/src/generators/methods.js @@ -112,7 +112,7 @@ export function ArrowFunctionExpression(node: Object) { !hasTypes(node, firstParam) ) { if ( - this.format.retainLines && + (this.format.retainLines || node.async) && node.loc && node.body.loc && node.loc.start.line < node.body.loc.start.line diff --git a/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/input.js b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/input.js new file mode 100644 index 000000000000..e47e7f048eb5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/input.js @@ -0,0 +1,10 @@ +const x = async ( + // some comment + a +) => { + return foo(await a); +}; + +function foo(a) { + return a; +} diff --git a/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/options.json b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/options.json new file mode 100644 index 000000000000..0967ef424bce --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/options.json @@ -0,0 +1 @@ +{} diff --git a/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/output.js b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/output.js new file mode 100644 index 000000000000..eaf8a9076d5a --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/async-arrow-function/output.js @@ -0,0 +1,8 @@ +const x = async ( // some comment + a) => { + return foo(await a); +}; + +function foo(a) { + return a; +} From 02f30af59c29df9d143264639eb48981f621cbaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 15 Jul 2020 17:34:31 -0400 Subject: [PATCH 19/90] refactor: reorganize babel types definitions structure (#11843) * refactor: reorganize babel types definitions structure * chore: update generated artifacts --- .../src/asserts/generated/index.js | 54 +- .../src/builders/generated/index.js | 50 +- packages/babel-types/src/definitions/core.js | 838 ++++++++++++++++++ .../babel-types/src/definitions/es2015.js | 748 ---------------- .../src/definitions/experimental.js | 105 +-- packages/babel-types/src/definitions/index.js | 1 - .../babel-types/src/definitions/typescript.js | 6 +- .../src/validators/generated/index.js | 202 ++--- 8 files changed, 997 insertions(+), 1007 deletions(-) delete mode 100644 packages/babel-types/src/definitions/es2015.js diff --git a/packages/babel-types/src/asserts/generated/index.js b/packages/babel-types/src/asserts/generated/index.js index 457103a16b71..9ce3c1565f90 100644 --- a/packages/babel-types/src/asserts/generated/index.js +++ b/packages/babel-types/src/asserts/generated/index.js @@ -305,6 +305,33 @@ export function assertTemplateLiteral(node: Object, opts?: Object = {}): void { export function assertYieldExpression(node: Object, opts?: Object = {}): void { assert("YieldExpression", node, opts); } +export function assertAwaitExpression(node: Object, opts?: Object = {}): void { + assert("AwaitExpression", node, opts); +} +export function assertImport(node: Object, opts?: Object = {}): void { + assert("Import", node, opts); +} +export function assertBigIntLiteral(node: Object, opts?: Object = {}): void { + assert("BigIntLiteral", node, opts); +} +export function assertExportNamespaceSpecifier( + node: Object, + opts?: Object = {}, +): void { + assert("ExportNamespaceSpecifier", node, opts); +} +export function assertOptionalMemberExpression( + node: Object, + opts?: Object = {}, +): void { + assert("OptionalMemberExpression", node, opts); +} +export function assertOptionalCallExpression( + node: Object, + opts?: Object = {}, +): void { + assert("OptionalCallExpression", node, opts); +} export function assertAnyTypeAnnotation( node: Object, opts?: Object = {}, @@ -713,21 +740,12 @@ export function assertArgumentPlaceholder( ): void { assert("ArgumentPlaceholder", node, opts); } -export function assertAwaitExpression(node: Object, opts?: Object = {}): void { - assert("AwaitExpression", node, opts); -} export function assertBindExpression(node: Object, opts?: Object = {}): void { assert("BindExpression", node, opts); } export function assertClassProperty(node: Object, opts?: Object = {}): void { assert("ClassProperty", node, opts); } -export function assertOptionalMemberExpression( - node: Object, - opts?: Object = {}, -): void { - assert("OptionalMemberExpression", node, opts); -} export function assertPipelineTopicExpression( node: Object, opts?: Object = {}, @@ -746,12 +764,6 @@ export function assertPipelinePrimaryTopicReference( ): void { assert("PipelinePrimaryTopicReference", node, opts); } -export function assertOptionalCallExpression( - node: Object, - opts?: Object = {}, -): void { - assert("OptionalCallExpression", node, opts); -} export function assertClassPrivateProperty( node: Object, opts?: Object = {}, @@ -764,9 +776,6 @@ export function assertClassPrivateMethod( ): void { assert("ClassPrivateMethod", node, opts); } -export function assertImport(node: Object, opts?: Object = {}): void { - assert("Import", node, opts); -} export function assertImportAttribute(node: Object, opts?: Object = {}): void { assert("ImportAttribute", node, opts); } @@ -782,18 +791,9 @@ export function assertExportDefaultSpecifier( ): void { assert("ExportDefaultSpecifier", node, opts); } -export function assertExportNamespaceSpecifier( - node: Object, - opts?: Object = {}, -): void { - assert("ExportNamespaceSpecifier", node, opts); -} export function assertPrivateName(node: Object, opts?: Object = {}): void { assert("PrivateName", node, opts); } -export function assertBigIntLiteral(node: Object, opts?: Object = {}): void { - assert("BigIntLiteral", node, opts); -} export function assertRecordExpression(node: Object, opts?: Object = {}): void { assert("RecordExpression", node, opts); } diff --git a/packages/babel-types/src/builders/generated/index.js b/packages/babel-types/src/builders/generated/index.js index 321a666787ef..ec92b4687377 100644 --- a/packages/babel-types/src/builders/generated/index.js +++ b/packages/babel-types/src/builders/generated/index.js @@ -306,6 +306,31 @@ export function yieldExpression(...args: Array): Object { return builder("YieldExpression", ...args); } export { yieldExpression as YieldExpression }; +export function awaitExpression(...args: Array): Object { + return builder("AwaitExpression", ...args); +} +export { awaitExpression as AwaitExpression }; +function _import(...args: Array): Object { + return builder("Import", ...args); +} +export { _import as Import }; +export { _import as import }; +export function bigIntLiteral(...args: Array): Object { + return builder("BigIntLiteral", ...args); +} +export { bigIntLiteral as BigIntLiteral }; +export function exportNamespaceSpecifier(...args: Array): Object { + return builder("ExportNamespaceSpecifier", ...args); +} +export { exportNamespaceSpecifier as ExportNamespaceSpecifier }; +export function optionalMemberExpression(...args: Array): Object { + return builder("OptionalMemberExpression", ...args); +} +export { optionalMemberExpression as OptionalMemberExpression }; +export function optionalCallExpression(...args: Array): Object { + return builder("OptionalCallExpression", ...args); +} +export { optionalCallExpression as OptionalCallExpression }; export function anyTypeAnnotation(...args: Array): Object { return builder("AnyTypeAnnotation", ...args); } @@ -649,10 +674,6 @@ export function argumentPlaceholder(...args: Array): Object { return builder("ArgumentPlaceholder", ...args); } export { argumentPlaceholder as ArgumentPlaceholder }; -export function awaitExpression(...args: Array): Object { - return builder("AwaitExpression", ...args); -} -export { awaitExpression as AwaitExpression }; export function bindExpression(...args: Array): Object { return builder("BindExpression", ...args); } @@ -661,10 +682,6 @@ export function classProperty(...args: Array): Object { return builder("ClassProperty", ...args); } export { classProperty as ClassProperty }; -export function optionalMemberExpression(...args: Array): Object { - return builder("OptionalMemberExpression", ...args); -} -export { optionalMemberExpression as OptionalMemberExpression }; export function pipelineTopicExpression(...args: Array): Object { return builder("PipelineTopicExpression", ...args); } @@ -677,10 +694,6 @@ export function pipelinePrimaryTopicReference(...args: Array): Object { return builder("PipelinePrimaryTopicReference", ...args); } export { pipelinePrimaryTopicReference as PipelinePrimaryTopicReference }; -export function optionalCallExpression(...args: Array): Object { - return builder("OptionalCallExpression", ...args); -} -export { optionalCallExpression as OptionalCallExpression }; export function classPrivateProperty(...args: Array): Object { return builder("ClassPrivateProperty", ...args); } @@ -689,11 +702,6 @@ export function classPrivateMethod(...args: Array): Object { return builder("ClassPrivateMethod", ...args); } export { classPrivateMethod as ClassPrivateMethod }; -function _import(...args: Array): Object { - return builder("Import", ...args); -} -export { _import as Import }; -export { _import as import }; export function importAttribute(...args: Array): Object { return builder("ImportAttribute", ...args); } @@ -710,18 +718,10 @@ export function exportDefaultSpecifier(...args: Array): Object { return builder("ExportDefaultSpecifier", ...args); } export { exportDefaultSpecifier as ExportDefaultSpecifier }; -export function exportNamespaceSpecifier(...args: Array): Object { - return builder("ExportNamespaceSpecifier", ...args); -} -export { exportNamespaceSpecifier as ExportNamespaceSpecifier }; export function privateName(...args: Array): Object { return builder("PrivateName", ...args); } export { privateName as PrivateName }; -export function bigIntLiteral(...args: Array): Object { - return builder("BigIntLiteral", ...args); -} -export { bigIntLiteral as BigIntLiteral }; export function recordExpression(...args: Array): Object { return builder("RecordExpression", ...args); } diff --git a/packages/babel-types/src/definitions/core.js b/packages/babel-types/src/definitions/core.js index b909c13d39ad..03e16da49226 100644 --- a/packages/babel-types/src/definitions/core.js +++ b/packages/babel-types/src/definitions/core.js @@ -13,12 +13,15 @@ import { } from "../constants"; import defineType, { + assertShape, + assertOptionalChainStart, assertValueType, assertNodeType, assertNodeOrValueType, assertEach, chain, assertOneOf, + validateOptional, } from "./utils"; defineType("ArrayExpression", { @@ -1152,3 +1155,838 @@ defineType("WithStatement", { }, }, }); + +// --- ES2015 --- +defineType("AssignmentPattern", { + visitor: ["left", "right", "decorators" /* for legacy param decorators */], + builder: ["left", "right"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: { + ...patternLikeCommon, + left: { + validate: assertNodeType( + "Identifier", + "ObjectPattern", + "ArrayPattern", + "MemberExpression", + ), + }, + right: { + validate: assertNodeType("Expression"), + }, + // For TypeScript + decorators: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeType("Decorator")), + ), + optional: true, + }, + }, +}); + +defineType("ArrayPattern", { + visitor: ["elements", "typeAnnotation"], + builder: ["elements"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: { + ...patternLikeCommon, + elements: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeOrValueType("null", "PatternLike")), + ), + }, + // For TypeScript + decorators: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeType("Decorator")), + ), + optional: true, + }, + }, +}); + +defineType("ArrowFunctionExpression", { + builder: ["params", "body", "async"], + visitor: ["params", "body", "returnType", "typeParameters"], + aliases: [ + "Scopable", + "Function", + "BlockParent", + "FunctionParent", + "Expression", + "Pureish", + ], + fields: { + ...functionCommon, + ...functionTypeAnnotationCommon, + expression: { + // https://github.com/babel/babylon/issues/505 + validate: assertValueType("boolean"), + }, + body: { + validate: assertNodeType("BlockStatement", "Expression"), + }, + }, +}); + +defineType("ClassBody", { + visitor: ["body"], + fields: { + body: { + validate: chain( + assertValueType("array"), + assertEach( + assertNodeType( + "ClassMethod", + "ClassPrivateMethod", + "ClassProperty", + "ClassPrivateProperty", + "TSDeclareMethod", + "TSIndexSignature", + ), + ), + ), + }, + }, +}); + +defineType("ClassExpression", { + builder: ["id", "superClass", "body", "decorators"], + visitor: [ + "id", + "body", + "superClass", + "mixins", + "typeParameters", + "superTypeParameters", + "implements", + "decorators", + ], + aliases: ["Scopable", "Class", "Expression"], + fields: { + id: { + validate: assertNodeType("Identifier"), + // In declarations, this is missing if this is the + // child of an ExportDefaultDeclaration. + optional: true, + }, + typeParameters: { + validate: assertNodeType( + "TypeParameterDeclaration", + "TSTypeParameterDeclaration", + "Noop", + ), + optional: true, + }, + body: { + validate: assertNodeType("ClassBody"), + }, + superClass: { + optional: true, + validate: assertNodeType("Expression"), + }, + superTypeParameters: { + validate: assertNodeType( + "TypeParameterInstantiation", + "TSTypeParameterInstantiation", + ), + optional: true, + }, + implements: { + validate: chain( + assertValueType("array"), + assertEach( + assertNodeType("TSExpressionWithTypeArguments", "ClassImplements"), + ), + ), + optional: true, + }, + decorators: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeType("Decorator")), + ), + optional: true, + }, + mixins: { + validate: assertNodeType("InterfaceExtends"), + optional: true, + }, + }, +}); + +defineType("ClassDeclaration", { + inherits: "ClassExpression", + aliases: ["Scopable", "Class", "Statement", "Declaration"], + fields: { + id: { + validate: assertNodeType("Identifier"), + }, + typeParameters: { + validate: assertNodeType( + "TypeParameterDeclaration", + "TSTypeParameterDeclaration", + "Noop", + ), + optional: true, + }, + body: { + validate: assertNodeType("ClassBody"), + }, + superClass: { + optional: true, + validate: assertNodeType("Expression"), + }, + superTypeParameters: { + validate: assertNodeType( + "TypeParameterInstantiation", + "TSTypeParameterInstantiation", + ), + optional: true, + }, + implements: { + validate: chain( + assertValueType("array"), + assertEach( + assertNodeType("TSExpressionWithTypeArguments", "ClassImplements"), + ), + ), + optional: true, + }, + decorators: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeType("Decorator")), + ), + optional: true, + }, + mixins: { + validate: assertNodeType("InterfaceExtends"), + optional: true, + }, + declare: { + validate: assertValueType("boolean"), + optional: true, + }, + abstract: { + validate: assertValueType("boolean"), + optional: true, + }, + }, + validate: (function () { + const identifier = assertNodeType("Identifier"); + + return function (parent, key, node) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (!is("ExportDefaultDeclaration", parent)) { + identifier(node, "id", node.id); + } + }; + })(), +}); + +defineType("ExportAllDeclaration", { + visitor: ["source"], + aliases: [ + "Statement", + "Declaration", + "ModuleDeclaration", + "ExportDeclaration", + ], + fields: { + source: { + validate: assertNodeType("StringLiteral"), + }, + }, +}); + +defineType("ExportDefaultDeclaration", { + visitor: ["declaration"], + aliases: [ + "Statement", + "Declaration", + "ModuleDeclaration", + "ExportDeclaration", + ], + fields: { + declaration: { + validate: assertNodeType( + "FunctionDeclaration", + "TSDeclareFunction", + "ClassDeclaration", + "Expression", + ), + }, + }, +}); + +defineType("ExportNamedDeclaration", { + visitor: ["declaration", "specifiers", "source"], + aliases: [ + "Statement", + "Declaration", + "ModuleDeclaration", + "ExportDeclaration", + ], + fields: { + declaration: { + optional: true, + validate: chain( + assertNodeType("Declaration"), + Object.assign( + function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + // This validator isn't put at the top level because we can run it + // even if this node doesn't have a parent. + + if (val && node.specifiers.length) { + throw new TypeError( + "Only declaration or specifiers is allowed on ExportNamedDeclaration", + ); + } + }, + { oneOfNodeTypes: ["Declaration"] }, + ), + function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + // This validator isn't put at the top level because we can run it + // even if this node doesn't have a parent. + + if (val && node.source) { + throw new TypeError("Cannot export a declaration from a source"); + } + }, + ), + }, + specifiers: { + default: [], + validate: chain( + assertValueType("array"), + assertEach( + (function () { + const sourced = assertNodeType( + "ExportSpecifier", + "ExportDefaultSpecifier", + "ExportNamespaceSpecifier", + ); + const sourceless = assertNodeType("ExportSpecifier"); + + if (!process.env.BABEL_TYPES_8_BREAKING) return sourced; + + return function (node, key, val) { + const validator = node.source ? sourced : sourceless; + validator(node, key, val); + }; + })(), + ), + ), + }, + source: { + validate: assertNodeType("StringLiteral"), + optional: true, + }, + exportKind: validateOptional(assertOneOf("type", "value")), + }, +}); + +defineType("ExportSpecifier", { + visitor: ["local", "exported"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: assertNodeType("Identifier"), + }, + exported: { + validate: assertNodeType("Identifier"), + }, + }, +}); + +defineType("ForOfStatement", { + visitor: ["left", "right", "body"], + builder: ["left", "right", "body", "await"], + aliases: [ + "Scopable", + "Statement", + "For", + "BlockParent", + "Loop", + "ForXStatement", + ], + fields: { + left: { + validate: (function () { + if (!process.env.BABEL_TYPES_8_BREAKING) { + return assertNodeType("VariableDeclaration", "LVal"); + } + + const declaration = assertNodeType("VariableDeclaration"); + const lval = assertNodeType( + "Identifier", + "MemberExpression", + "ArrayPattern", + "ObjectPattern", + ); + + return function (node, key, val) { + if (is("VariableDeclaration", val)) { + declaration(node, key, val); + } else { + lval(node, key, val); + } + }; + })(), + }, + right: { + validate: assertNodeType("Expression"), + }, + body: { + validate: assertNodeType("Statement"), + }, + await: { + default: false, + }, + }, +}); + +defineType("ImportDeclaration", { + visitor: ["specifiers", "source"], + aliases: ["Statement", "Declaration", "ModuleDeclaration"], + fields: { + specifiers: { + validate: chain( + assertValueType("array"), + assertEach( + assertNodeType( + "ImportSpecifier", + "ImportDefaultSpecifier", + "ImportNamespaceSpecifier", + ), + ), + ), + }, + source: { + validate: assertNodeType("StringLiteral"), + }, + importKind: { + // Handle TypeScript/Flowtype's extension "import type foo from" + // TypeScript doesn't support typeof + validate: assertOneOf("type", "typeof", "value"), + optional: true, + }, + }, +}); + +defineType("ImportDefaultSpecifier", { + visitor: ["local"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: assertNodeType("Identifier"), + }, + }, +}); + +defineType("ImportNamespaceSpecifier", { + visitor: ["local"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: assertNodeType("Identifier"), + }, + }, +}); + +defineType("ImportSpecifier", { + visitor: ["local", "imported"], + aliases: ["ModuleSpecifier"], + fields: { + local: { + validate: assertNodeType("Identifier"), + }, + imported: { + validate: assertNodeType("Identifier"), + }, + importKind: { + // Handle Flowtype's extension "import {typeof foo} from" + validate: assertOneOf("type", "typeof"), + optional: true, + }, + }, +}); + +defineType("MetaProperty", { + visitor: ["meta", "property"], + aliases: ["Expression"], + fields: { + meta: { + validate: chain( + assertNodeType("Identifier"), + Object.assign( + function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + let property; + switch (val.name) { + case "function": + property = "sent"; + break; + case "new": + property = "target"; + break; + case "import": + property = "meta"; + break; + } + if (!is("Identifier", node.property, { name: property })) { + throw new TypeError("Unrecognised MetaProperty"); + } + }, + { oneOfNodeTypes: ["Identifier"] }, + ), + ), + }, + property: { + validate: assertNodeType("Identifier"), + }, + }, +}); + +export const classMethodOrPropertyCommon = { + abstract: { + validate: assertValueType("boolean"), + optional: true, + }, + accessibility: { + validate: assertOneOf("public", "private", "protected"), + optional: true, + }, + static: { + default: false, + }, + computed: { + default: false, + }, + optional: { + validate: assertValueType("boolean"), + optional: true, + }, + key: { + validate: chain( + (function () { + const normal = assertNodeType( + "Identifier", + "StringLiteral", + "NumericLiteral", + ); + const computed = assertNodeType("Expression"); + + return function (node: Object, key: string, val: any) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + })(), + assertNodeType( + "Identifier", + "StringLiteral", + "NumericLiteral", + "Expression", + ), + ), + }, +}; + +export const classMethodOrDeclareMethodCommon = { + ...functionCommon, + ...classMethodOrPropertyCommon, + kind: { + validate: assertOneOf("get", "set", "method", "constructor"), + default: "method", + }, + access: { + validate: chain( + assertValueType("string"), + assertOneOf("public", "private", "protected"), + ), + optional: true, + }, + decorators: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeType("Decorator")), + ), + optional: true, + }, +}; + +defineType("ClassMethod", { + aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], + builder: [ + "kind", + "key", + "params", + "body", + "computed", + "static", + "generator", + "async", + ], + visitor: [ + "key", + "params", + "body", + "decorators", + "returnType", + "typeParameters", + ], + fields: { + ...classMethodOrDeclareMethodCommon, + ...functionTypeAnnotationCommon, + body: { + validate: assertNodeType("BlockStatement"), + }, + }, +}); + +defineType("ObjectPattern", { + visitor: [ + "properties", + "typeAnnotation", + "decorators" /* for legacy param decorators */, + ], + builder: ["properties"], + aliases: ["Pattern", "PatternLike", "LVal"], + fields: { + ...patternLikeCommon, + properties: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeType("RestElement", "ObjectProperty")), + ), + }, + }, +}); + +defineType("SpreadElement", { + visitor: ["argument"], + aliases: ["UnaryLike"], + deprecatedAlias: "SpreadProperty", + fields: { + argument: { + validate: assertNodeType("Expression"), + }, + }, +}); + +defineType("Super", { + aliases: ["Expression"], +}); + +defineType("TaggedTemplateExpression", { + visitor: ["tag", "quasi"], + aliases: ["Expression"], + fields: { + tag: { + validate: assertNodeType("Expression"), + }, + quasi: { + validate: assertNodeType("TemplateLiteral"), + }, + typeParameters: { + validate: assertNodeType( + "TypeParameterInstantiation", + "TSTypeParameterInstantiation", + ), + optional: true, + }, + }, +}); + +defineType("TemplateElement", { + builder: ["value", "tail"], + fields: { + value: { + validate: assertShape({ + raw: { + validate: assertValueType("string"), + }, + cooked: { + validate: assertValueType("string"), + optional: true, + }, + }), + }, + tail: { + default: false, + }, + }, +}); + +defineType("TemplateLiteral", { + visitor: ["quasis", "expressions"], + aliases: ["Expression", "Literal"], + fields: { + quasis: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeType("TemplateElement")), + ), + }, + expressions: { + validate: chain( + assertValueType("array"), + assertEach(assertNodeType("Expression")), + function (node, key, val) { + if (node.quasis.length !== val.length + 1) { + throw new TypeError( + `Number of ${ + node.type + } quasis should be exactly one more than the number of expressions.\nExpected ${ + val.length + 1 + } quasis but got ${node.quasis.length}`, + ); + } + }, + ), + }, + }, +}); + +defineType("YieldExpression", { + builder: ["argument", "delegate"], + visitor: ["argument"], + aliases: ["Expression", "Terminatorless"], + fields: { + delegate: { + validate: chain( + assertValueType("boolean"), + Object.assign( + function (node, key, val) { + if (!process.env.BABEL_TYPES_8_BREAKING) return; + + if (val && !node.argument) { + throw new TypeError( + "Property delegate of YieldExpression cannot be true if there is no argument", + ); + } + }, + { type: "boolean" }, + ), + ), + default: false, + }, + argument: { + optional: true, + validate: assertNodeType("Expression"), + }, + }, +}); + +// --- ES2017 --- +defineType("AwaitExpression", { + builder: ["argument"], + visitor: ["argument"], + aliases: ["Expression", "Terminatorless"], + fields: { + argument: { + validate: assertNodeType("Expression"), + }, + }, +}); + +// --- ES2019 --- +defineType("Import", { + aliases: ["Expression"], +}); + +// --- ES2020 --- +defineType("BigIntLiteral", { + builder: ["value"], + fields: { + value: { + validate: assertValueType("string"), + }, + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"], +}); + +defineType("ExportNamespaceSpecifier", { + visitor: ["exported"], + aliases: ["ModuleSpecifier"], + fields: { + exported: { + validate: assertNodeType("Identifier"), + }, + }, +}); + +defineType("OptionalMemberExpression", { + builder: ["object", "property", "computed", "optional"], + visitor: ["object", "property"], + aliases: ["Expression"], + fields: { + object: { + validate: assertNodeType("Expression"), + }, + property: { + validate: (function () { + const normal = assertNodeType("Identifier"); + const computed = assertNodeType("Expression"); + + const validator = function (node, key, val) { + const validator = node.computed ? computed : normal; + validator(node, key, val); + }; + // todo(ts): can be discriminated union by `computed` property + validator.oneOfNodeTypes = ["Expression", "Identifier"]; + return validator; + })(), + }, + computed: { + default: false, + }, + optional: { + validate: !process.env.BABEL_TYPES_8_BREAKING + ? assertValueType("boolean") + : chain(assertValueType("boolean"), assertOptionalChainStart()), + }, + }, +}); + +defineType("OptionalCallExpression", { + visitor: ["callee", "arguments", "typeParameters", "typeArguments"], + builder: ["callee", "arguments", "optional"], + aliases: ["Expression"], + fields: { + callee: { + validate: assertNodeType("Expression"), + }, + arguments: { + validate: chain( + assertValueType("array"), + assertEach( + assertNodeType("Expression", "SpreadElement", "JSXNamespacedName"), + ), + ), + }, + optional: { + validate: !process.env.BABEL_TYPES_8_BREAKING + ? assertValueType("boolean") + : chain(assertValueType("boolean"), assertOptionalChainStart()), + }, + typeArguments: { + validate: assertNodeType("TypeParameterInstantiation"), + optional: true, + }, + typeParameters: { + validate: assertNodeType("TSTypeParameterInstantiation"), + optional: true, + }, + }, +}); diff --git a/packages/babel-types/src/definitions/es2015.js b/packages/babel-types/src/definitions/es2015.js deleted file mode 100644 index cebf5966e915..000000000000 --- a/packages/babel-types/src/definitions/es2015.js +++ /dev/null @@ -1,748 +0,0 @@ -// @flow -import defineType, { - assertShape, - assertNodeType, - assertValueType, - assertNodeOrValueType, - chain, - assertEach, - assertOneOf, - validateOptional, -} from "./utils"; -import { - functionCommon, - functionTypeAnnotationCommon, - patternLikeCommon, -} from "./core"; -import is from "../validators/is"; - -defineType("AssignmentPattern", { - visitor: ["left", "right", "decorators" /* for legacy param decorators */], - builder: ["left", "right"], - aliases: ["Pattern", "PatternLike", "LVal"], - fields: { - ...patternLikeCommon, - left: { - validate: assertNodeType( - "Identifier", - "ObjectPattern", - "ArrayPattern", - "MemberExpression", - ), - }, - right: { - validate: assertNodeType("Expression"), - }, - // For TypeScript - decorators: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeType("Decorator")), - ), - optional: true, - }, - }, -}); - -defineType("ArrayPattern", { - visitor: ["elements", "typeAnnotation"], - builder: ["elements"], - aliases: ["Pattern", "PatternLike", "LVal"], - fields: { - ...patternLikeCommon, - elements: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeOrValueType("null", "PatternLike")), - ), - }, - // For TypeScript - decorators: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeType("Decorator")), - ), - optional: true, - }, - }, -}); - -defineType("ArrowFunctionExpression", { - builder: ["params", "body", "async"], - visitor: ["params", "body", "returnType", "typeParameters"], - aliases: [ - "Scopable", - "Function", - "BlockParent", - "FunctionParent", - "Expression", - "Pureish", - ], - fields: { - ...functionCommon, - ...functionTypeAnnotationCommon, - expression: { - // https://github.com/babel/babylon/issues/505 - validate: assertValueType("boolean"), - }, - body: { - validate: assertNodeType("BlockStatement", "Expression"), - }, - }, -}); - -defineType("ClassBody", { - visitor: ["body"], - fields: { - body: { - validate: chain( - assertValueType("array"), - assertEach( - assertNodeType( - "ClassMethod", - "ClassPrivateMethod", - "ClassProperty", - "ClassPrivateProperty", - "TSDeclareMethod", - "TSIndexSignature", - ), - ), - ), - }, - }, -}); - -defineType("ClassExpression", { - builder: ["id", "superClass", "body", "decorators"], - visitor: [ - "id", - "body", - "superClass", - "mixins", - "typeParameters", - "superTypeParameters", - "implements", - "decorators", - ], - aliases: ["Scopable", "Class", "Expression"], - fields: { - id: { - validate: assertNodeType("Identifier"), - // In declarations, this is missing if this is the - // child of an ExportDefaultDeclaration. - optional: true, - }, - typeParameters: { - validate: assertNodeType( - "TypeParameterDeclaration", - "TSTypeParameterDeclaration", - "Noop", - ), - optional: true, - }, - body: { - validate: assertNodeType("ClassBody"), - }, - superClass: { - optional: true, - validate: assertNodeType("Expression"), - }, - superTypeParameters: { - validate: assertNodeType( - "TypeParameterInstantiation", - "TSTypeParameterInstantiation", - ), - optional: true, - }, - implements: { - validate: chain( - assertValueType("array"), - assertEach( - assertNodeType("TSExpressionWithTypeArguments", "ClassImplements"), - ), - ), - optional: true, - }, - decorators: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeType("Decorator")), - ), - optional: true, - }, - mixins: { - validate: assertNodeType("InterfaceExtends"), - optional: true, - }, - }, -}); - -defineType("ClassDeclaration", { - inherits: "ClassExpression", - aliases: ["Scopable", "Class", "Statement", "Declaration"], - fields: { - id: { - validate: assertNodeType("Identifier"), - }, - typeParameters: { - validate: assertNodeType( - "TypeParameterDeclaration", - "TSTypeParameterDeclaration", - "Noop", - ), - optional: true, - }, - body: { - validate: assertNodeType("ClassBody"), - }, - superClass: { - optional: true, - validate: assertNodeType("Expression"), - }, - superTypeParameters: { - validate: assertNodeType( - "TypeParameterInstantiation", - "TSTypeParameterInstantiation", - ), - optional: true, - }, - implements: { - validate: chain( - assertValueType("array"), - assertEach( - assertNodeType("TSExpressionWithTypeArguments", "ClassImplements"), - ), - ), - optional: true, - }, - decorators: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeType("Decorator")), - ), - optional: true, - }, - mixins: { - validate: assertNodeType("InterfaceExtends"), - optional: true, - }, - declare: { - validate: assertValueType("boolean"), - optional: true, - }, - abstract: { - validate: assertValueType("boolean"), - optional: true, - }, - }, - validate: (function () { - const identifier = assertNodeType("Identifier"); - - return function (parent, key, node) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (!is("ExportDefaultDeclaration", parent)) { - identifier(node, "id", node.id); - } - }; - })(), -}); - -defineType("ExportAllDeclaration", { - visitor: ["source"], - aliases: [ - "Statement", - "Declaration", - "ModuleDeclaration", - "ExportDeclaration", - ], - fields: { - source: { - validate: assertNodeType("StringLiteral"), - }, - }, -}); - -defineType("ExportDefaultDeclaration", { - visitor: ["declaration"], - aliases: [ - "Statement", - "Declaration", - "ModuleDeclaration", - "ExportDeclaration", - ], - fields: { - declaration: { - validate: assertNodeType( - "FunctionDeclaration", - "TSDeclareFunction", - "ClassDeclaration", - "Expression", - ), - }, - }, -}); - -defineType("ExportNamedDeclaration", { - visitor: ["declaration", "specifiers", "source"], - aliases: [ - "Statement", - "Declaration", - "ModuleDeclaration", - "ExportDeclaration", - ], - fields: { - declaration: { - optional: true, - validate: chain( - assertNodeType("Declaration"), - Object.assign( - function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - // This validator isn't put at the top level because we can run it - // even if this node doesn't have a parent. - - if (val && node.specifiers.length) { - throw new TypeError( - "Only declaration or specifiers is allowed on ExportNamedDeclaration", - ); - } - }, - { oneOfNodeTypes: ["Declaration"] }, - ), - function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - // This validator isn't put at the top level because we can run it - // even if this node doesn't have a parent. - - if (val && node.source) { - throw new TypeError("Cannot export a declaration from a source"); - } - }, - ), - }, - specifiers: { - default: [], - validate: chain( - assertValueType("array"), - assertEach( - (function () { - const sourced = assertNodeType( - "ExportSpecifier", - "ExportDefaultSpecifier", - "ExportNamespaceSpecifier", - ); - const sourceless = assertNodeType("ExportSpecifier"); - - if (!process.env.BABEL_TYPES_8_BREAKING) return sourced; - - return function (node, key, val) { - const validator = node.source ? sourced : sourceless; - validator(node, key, val); - }; - })(), - ), - ), - }, - source: { - validate: assertNodeType("StringLiteral"), - optional: true, - }, - exportKind: validateOptional(assertOneOf("type", "value")), - }, -}); - -defineType("ExportSpecifier", { - visitor: ["local", "exported"], - aliases: ["ModuleSpecifier"], - fields: { - local: { - validate: assertNodeType("Identifier"), - }, - exported: { - validate: assertNodeType("Identifier"), - }, - }, -}); - -defineType("ForOfStatement", { - visitor: ["left", "right", "body"], - builder: ["left", "right", "body", "await"], - aliases: [ - "Scopable", - "Statement", - "For", - "BlockParent", - "Loop", - "ForXStatement", - ], - fields: { - left: { - validate: (function () { - if (!process.env.BABEL_TYPES_8_BREAKING) { - return assertNodeType("VariableDeclaration", "LVal"); - } - - const declaration = assertNodeType("VariableDeclaration"); - const lval = assertNodeType( - "Identifier", - "MemberExpression", - "ArrayPattern", - "ObjectPattern", - ); - - return function (node, key, val) { - if (is("VariableDeclaration", val)) { - declaration(node, key, val); - } else { - lval(node, key, val); - } - }; - })(), - }, - right: { - validate: assertNodeType("Expression"), - }, - body: { - validate: assertNodeType("Statement"), - }, - await: { - default: false, - }, - }, -}); - -defineType("ImportDeclaration", { - visitor: ["specifiers", "source"], - aliases: ["Statement", "Declaration", "ModuleDeclaration"], - fields: { - specifiers: { - validate: chain( - assertValueType("array"), - assertEach( - assertNodeType( - "ImportSpecifier", - "ImportDefaultSpecifier", - "ImportNamespaceSpecifier", - ), - ), - ), - }, - source: { - validate: assertNodeType("StringLiteral"), - }, - importKind: { - // Handle TypeScript/Flowtype's extension "import type foo from" - // TypeScript doesn't support typeof - validate: assertOneOf("type", "typeof", "value"), - optional: true, - }, - }, -}); - -defineType("ImportDefaultSpecifier", { - visitor: ["local"], - aliases: ["ModuleSpecifier"], - fields: { - local: { - validate: assertNodeType("Identifier"), - }, - }, -}); - -defineType("ImportNamespaceSpecifier", { - visitor: ["local"], - aliases: ["ModuleSpecifier"], - fields: { - local: { - validate: assertNodeType("Identifier"), - }, - }, -}); - -defineType("ImportSpecifier", { - visitor: ["local", "imported"], - aliases: ["ModuleSpecifier"], - fields: { - local: { - validate: assertNodeType("Identifier"), - }, - imported: { - validate: assertNodeType("Identifier"), - }, - importKind: { - // Handle Flowtype's extension "import {typeof foo} from" - validate: assertOneOf("type", "typeof"), - optional: true, - }, - }, -}); - -defineType("MetaProperty", { - visitor: ["meta", "property"], - aliases: ["Expression"], - fields: { - meta: { - validate: chain( - assertNodeType("Identifier"), - Object.assign( - function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - let property; - switch (val.name) { - case "function": - property = "sent"; - break; - case "new": - property = "target"; - break; - case "import": - property = "meta"; - break; - } - if (!is("Identifier", node.property, { name: property })) { - throw new TypeError("Unrecognised MetaProperty"); - } - }, - { oneOfNodeTypes: ["Identifier"] }, - ), - ), - }, - property: { - validate: assertNodeType("Identifier"), - }, - }, -}); - -export const classMethodOrPropertyCommon = { - abstract: { - validate: assertValueType("boolean"), - optional: true, - }, - accessibility: { - validate: assertOneOf("public", "private", "protected"), - optional: true, - }, - static: { - default: false, - }, - computed: { - default: false, - }, - optional: { - validate: assertValueType("boolean"), - optional: true, - }, - key: { - validate: chain( - (function () { - const normal = assertNodeType( - "Identifier", - "StringLiteral", - "NumericLiteral", - ); - const computed = assertNodeType("Expression"); - - return function (node: Object, key: string, val: any) { - const validator = node.computed ? computed : normal; - validator(node, key, val); - }; - })(), - assertNodeType( - "Identifier", - "StringLiteral", - "NumericLiteral", - "Expression", - ), - ), - }, -}; - -export const classMethodOrDeclareMethodCommon = { - ...functionCommon, - ...classMethodOrPropertyCommon, - kind: { - validate: assertOneOf("get", "set", "method", "constructor"), - default: "method", - }, - access: { - validate: chain( - assertValueType("string"), - assertOneOf("public", "private", "protected"), - ), - optional: true, - }, - decorators: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeType("Decorator")), - ), - optional: true, - }, -}; - -defineType("ClassMethod", { - aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], - builder: [ - "kind", - "key", - "params", - "body", - "computed", - "static", - "generator", - "async", - ], - visitor: [ - "key", - "params", - "body", - "decorators", - "returnType", - "typeParameters", - ], - fields: { - ...classMethodOrDeclareMethodCommon, - ...functionTypeAnnotationCommon, - body: { - validate: assertNodeType("BlockStatement"), - }, - }, -}); - -defineType("ObjectPattern", { - visitor: [ - "properties", - "typeAnnotation", - "decorators" /* for legacy param decorators */, - ], - builder: ["properties"], - aliases: ["Pattern", "PatternLike", "LVal"], - fields: { - ...patternLikeCommon, - properties: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeType("RestElement", "ObjectProperty")), - ), - }, - }, -}); - -defineType("SpreadElement", { - visitor: ["argument"], - aliases: ["UnaryLike"], - deprecatedAlias: "SpreadProperty", - fields: { - argument: { - validate: assertNodeType("Expression"), - }, - }, -}); - -defineType("Super", { - aliases: ["Expression"], -}); - -defineType("TaggedTemplateExpression", { - visitor: ["tag", "quasi"], - aliases: ["Expression"], - fields: { - tag: { - validate: assertNodeType("Expression"), - }, - quasi: { - validate: assertNodeType("TemplateLiteral"), - }, - typeParameters: { - validate: assertNodeType( - "TypeParameterInstantiation", - "TSTypeParameterInstantiation", - ), - optional: true, - }, - }, -}); - -defineType("TemplateElement", { - builder: ["value", "tail"], - fields: { - value: { - validate: assertShape({ - raw: { - validate: assertValueType("string"), - }, - cooked: { - validate: assertValueType("string"), - optional: true, - }, - }), - }, - tail: { - default: false, - }, - }, -}); - -defineType("TemplateLiteral", { - visitor: ["quasis", "expressions"], - aliases: ["Expression", "Literal"], - fields: { - quasis: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeType("TemplateElement")), - ), - }, - expressions: { - validate: chain( - assertValueType("array"), - assertEach(assertNodeType("Expression")), - function (node, key, val) { - if (node.quasis.length !== val.length + 1) { - throw new TypeError( - `Number of ${ - node.type - } quasis should be exactly one more than the number of expressions.\nExpected ${ - val.length + 1 - } quasis but got ${node.quasis.length}`, - ); - } - }, - ), - }, - }, -}); - -defineType("YieldExpression", { - builder: ["argument", "delegate"], - visitor: ["argument"], - aliases: ["Expression", "Terminatorless"], - fields: { - delegate: { - validate: chain( - assertValueType("boolean"), - Object.assign( - function (node, key, val) { - if (!process.env.BABEL_TYPES_8_BREAKING) return; - - if (val && !node.argument) { - throw new TypeError( - "Property delegate of YieldExpression cannot be true if there is no argument", - ); - } - }, - { type: "boolean" }, - ), - ), - default: false, - }, - argument: { - optional: true, - validate: assertNodeType("Expression"), - }, - }, -}); diff --git a/packages/babel-types/src/definitions/experimental.js b/packages/babel-types/src/definitions/experimental.js index 6a989ffb1817..c3adc3395094 100644 --- a/packages/babel-types/src/definitions/experimental.js +++ b/packages/babel-types/src/definitions/experimental.js @@ -1,6 +1,5 @@ // @flow import defineType, { - assertOptionalChainStart, assertEach, assertNodeType, assertValueType, @@ -9,22 +8,11 @@ import defineType, { import { classMethodOrPropertyCommon, classMethodOrDeclareMethodCommon, -} from "./es2015"; -import { functionTypeAnnotationCommon } from "./core"; + functionTypeAnnotationCommon, +} from "./core"; defineType("ArgumentPlaceholder", {}); -defineType("AwaitExpression", { - builder: ["argument"], - visitor: ["argument"], - aliases: ["Expression", "Terminatorless"], - fields: { - argument: { - validate: assertNodeType("Expression"), - }, - }, -}); - defineType("BindExpression", { visitor: ["object", "callee"], aliases: ["Expression"], @@ -94,39 +82,6 @@ defineType("ClassProperty", { }, }); -defineType("OptionalMemberExpression", { - builder: ["object", "property", "computed", "optional"], - visitor: ["object", "property"], - aliases: ["Expression"], - fields: { - object: { - validate: assertNodeType("Expression"), - }, - property: { - validate: (function () { - const normal = assertNodeType("Identifier"); - const computed = assertNodeType("Expression"); - - const validator = function (node, key, val) { - const validator = node.computed ? computed : normal; - validator(node, key, val); - }; - // todo(ts): can be discriminated union by `computed` property - validator.oneOfNodeTypes = ["Expression", "Identifier"]; - return validator; - })(), - }, - computed: { - default: false, - }, - optional: { - validate: !process.env.BABEL_TYPES_8_BREAKING - ? assertValueType("boolean") - : chain(assertValueType("boolean"), assertOptionalChainStart()), - }, - }, -}); - defineType("PipelineTopicExpression", { builder: ["expression"], visitor: ["expression"], @@ -151,38 +106,6 @@ defineType("PipelinePrimaryTopicReference", { aliases: ["Expression"], }); -defineType("OptionalCallExpression", { - visitor: ["callee", "arguments", "typeParameters", "typeArguments"], - builder: ["callee", "arguments", "optional"], - aliases: ["Expression"], - fields: { - callee: { - validate: assertNodeType("Expression"), - }, - arguments: { - validate: chain( - assertValueType("array"), - assertEach( - assertNodeType("Expression", "SpreadElement", "JSXNamespacedName"), - ), - ), - }, - optional: { - validate: !process.env.BABEL_TYPES_8_BREAKING - ? assertValueType("boolean") - : chain(assertValueType("boolean"), assertOptionalChainStart()), - }, - typeArguments: { - validate: assertNodeType("TypeParameterInstantiation"), - optional: true, - }, - typeParameters: { - validate: assertNodeType("TSTypeParameterInstantiation"), - optional: true, - }, - }, -}); - defineType("ClassPrivateProperty", { visitor: ["key", "value", "decorators"], builder: ["key", "value", "decorators"], @@ -235,10 +158,6 @@ defineType("ClassPrivateMethod", { }, }); -defineType("Import", { - aliases: ["Expression"], -}); - defineType("ImportAttribute", { visitor: ["key", "value"], fields: { @@ -280,16 +199,6 @@ defineType("ExportDefaultSpecifier", { }, }); -defineType("ExportNamespaceSpecifier", { - visitor: ["exported"], - aliases: ["ModuleSpecifier"], - fields: { - exported: { - validate: assertNodeType("Identifier"), - }, - }, -}); - defineType("PrivateName", { visitor: ["id"], aliases: ["Private"], @@ -300,16 +209,6 @@ defineType("PrivateName", { }, }); -defineType("BigIntLiteral", { - builder: ["value"], - fields: { - value: { - validate: assertValueType("string"), - }, - }, - aliases: ["Expression", "Pureish", "Literal", "Immutable"], -}); - defineType("RecordExpression", { visitor: ["properties"], aliases: ["Expression"], diff --git a/packages/babel-types/src/definitions/index.js b/packages/babel-types/src/definitions/index.js index 7341c67369a9..4e41f0b77b41 100644 --- a/packages/babel-types/src/definitions/index.js +++ b/packages/babel-types/src/definitions/index.js @@ -1,7 +1,6 @@ // @flow import toFastProperties from "to-fast-properties"; import "./core"; -import "./es2015"; import "./flow"; import "./jsx"; import "./misc"; diff --git a/packages/babel-types/src/definitions/typescript.js b/packages/babel-types/src/definitions/typescript.js index e4ec9872d918..6a9d0fed50e0 100644 --- a/packages/babel-types/src/definitions/typescript.js +++ b/packages/babel-types/src/definitions/typescript.js @@ -12,8 +12,10 @@ import defineType, { validateOptionalType, validateType, } from "./utils"; -import { functionDeclarationCommon } from "./core"; -import { classMethodOrDeclareMethodCommon } from "./es2015"; +import { + functionDeclarationCommon, + classMethodOrDeclareMethodCommon, +} from "./core"; const bool = assertValueType("boolean"); diff --git a/packages/babel-types/src/validators/generated/index.js b/packages/babel-types/src/validators/generated/index.js index 746034390aaf..8962a809f033 100644 --- a/packages/babel-types/src/validators/generated/index.js +++ b/packages/babel-types/src/validators/generated/index.js @@ -1076,6 +1076,99 @@ export function isYieldExpression(node: ?Object, opts?: Object): boolean { return false; } +export function isAwaitExpression(node: ?Object, opts?: Object): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "AwaitExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} +export function isImport(node: ?Object, opts?: Object): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "Import") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} +export function isBigIntLiteral(node: ?Object, opts?: Object): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "BigIntLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} +export function isExportNamespaceSpecifier( + node: ?Object, + opts?: Object, +): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "ExportNamespaceSpecifier") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} +export function isOptionalMemberExpression( + node: ?Object, + opts?: Object, +): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "OptionalMemberExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} +export function isOptionalCallExpression( + node: ?Object, + opts?: Object, +): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "OptionalCallExpression") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} export function isAnyTypeAnnotation(node: ?Object, opts?: Object): boolean { if (!node) return false; @@ -2275,20 +2368,6 @@ export function isArgumentPlaceholder(node: ?Object, opts?: Object): boolean { return false; } -export function isAwaitExpression(node: ?Object, opts?: Object): boolean { - if (!node) return false; - - const nodeType = node.type; - if (nodeType === "AwaitExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return shallowEqual(node, opts); - } - } - - return false; -} export function isBindExpression(node: ?Object, opts?: Object): boolean { if (!node) return false; @@ -2317,23 +2396,6 @@ export function isClassProperty(node: ?Object, opts?: Object): boolean { return false; } -export function isOptionalMemberExpression( - node: ?Object, - opts?: Object, -): boolean { - if (!node) return false; - - const nodeType = node.type; - if (nodeType === "OptionalMemberExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return shallowEqual(node, opts); - } - } - - return false; -} export function isPipelineTopicExpression( node: ?Object, opts?: Object, @@ -2382,23 +2444,6 @@ export function isPipelinePrimaryTopicReference( return false; } -export function isOptionalCallExpression( - node: ?Object, - opts?: Object, -): boolean { - if (!node) return false; - - const nodeType = node.type; - if (nodeType === "OptionalCallExpression") { - if (typeof opts === "undefined") { - return true; - } else { - return shallowEqual(node, opts); - } - } - - return false; -} export function isClassPrivateProperty(node: ?Object, opts?: Object): boolean { if (!node) return false; @@ -2427,20 +2472,6 @@ export function isClassPrivateMethod(node: ?Object, opts?: Object): boolean { return false; } -export function isImport(node: ?Object, opts?: Object): boolean { - if (!node) return false; - - const nodeType = node.type; - if (nodeType === "Import") { - if (typeof opts === "undefined") { - return true; - } else { - return shallowEqual(node, opts); - } - } - - return false; -} export function isImportAttribute(node: ?Object, opts?: Object): boolean { if (!node) return false; @@ -2500,23 +2531,6 @@ export function isExportDefaultSpecifier( return false; } -export function isExportNamespaceSpecifier( - node: ?Object, - opts?: Object, -): boolean { - if (!node) return false; - - const nodeType = node.type; - if (nodeType === "ExportNamespaceSpecifier") { - if (typeof opts === "undefined") { - return true; - } else { - return shallowEqual(node, opts); - } - } - - return false; -} export function isPrivateName(node: ?Object, opts?: Object): boolean { if (!node) return false; @@ -2531,20 +2545,6 @@ export function isPrivateName(node: ?Object, opts?: Object): boolean { return false; } -export function isBigIntLiteral(node: ?Object, opts?: Object): boolean { - if (!node) return false; - - const nodeType = node.type; - if (nodeType === "BigIntLiteral") { - if (typeof opts === "undefined") { - return true; - } else { - return shallowEqual(node, opts); - } - } - - return false; -} export function isRecordExpression(node: ?Object, opts?: Object): boolean { if (!node) return false; @@ -3491,17 +3491,17 @@ export function isExpression(node: ?Object, opts?: Object): boolean { "TaggedTemplateExpression" === nodeType || "TemplateLiteral" === nodeType || "YieldExpression" === nodeType || + "AwaitExpression" === nodeType || + "Import" === nodeType || + "BigIntLiteral" === nodeType || + "OptionalMemberExpression" === nodeType || + "OptionalCallExpression" === nodeType || "TypeCastExpression" === nodeType || "JSXElement" === nodeType || "JSXFragment" === nodeType || - "AwaitExpression" === nodeType || "BindExpression" === nodeType || - "OptionalMemberExpression" === nodeType || "PipelinePrimaryTopicReference" === nodeType || - "OptionalCallExpression" === nodeType || - "Import" === nodeType || "DoExpression" === nodeType || - "BigIntLiteral" === nodeType || "RecordExpression" === nodeType || "TupleExpression" === nodeType || "TSAsExpression" === nodeType || @@ -4063,6 +4063,7 @@ export function isImmutable(node: ?Object, opts?: Object): boolean { "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || + "BigIntLiteral" === nodeType || "JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || @@ -4073,7 +4074,6 @@ export function isImmutable(node: ?Object, opts?: Object): boolean { "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType || - "BigIntLiteral" === nodeType || (nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) ) { if (typeof opts === "undefined") { @@ -4269,8 +4269,8 @@ export function isModuleSpecifier(node: ?Object, opts?: Object): boolean { "ImportDefaultSpecifier" === nodeType || "ImportNamespaceSpecifier" === nodeType || "ImportSpecifier" === nodeType || - "ExportDefaultSpecifier" === nodeType || - "ExportNamespaceSpecifier" === nodeType + "ExportNamespaceSpecifier" === nodeType || + "ExportDefaultSpecifier" === nodeType ) { if (typeof opts === "undefined") { return true; From 8f191ead92ab764ea95846868d3ba69d7627a42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 16 Jul 2020 17:01:20 -0400 Subject: [PATCH 20/90] chore: fix typo in codebase (#11846) --- .circleci/config.yml | 2 +- .../src/utils/get-reference-origin.js | 2 +- .../babel-compat-data/scripts/build-corejs3-proposals.js | 6 +++--- packages/babel-core/src/config/files/import.js | 2 +- packages/babel-core/src/gensync-utils/async.js | 2 +- .../src/rewrite-live-references.js | 2 +- packages/babel-helper-split-export-declaration/src/index.js | 2 +- packages/babel-parser/src/plugins/flow.js | 4 ++-- .../babel-plugin-proposal-object-rest-spread/src/index.js | 2 +- .../get-set/call-semantics-not-defined-on-parent/exec.js | 2 +- .../get-set/call-semantics-not-defined-on-parent/input.js | 2 +- .../get-set/call-semantics-not-defined-on-parent/output.js | 2 +- .../get-set/call-semantics-setter-defined-on-parent/exec.js | 2 +- packages/babel-preset-env/CONTRIBUTING.md | 4 ++-- packages/babel-preset-env/src/normalize-options.js | 2 +- packages/babel-traverse/src/path/introspection.js | 2 +- .../babel-types/src/builders/flow/createFlowUnionType.js | 2 +- .../src/builders/typescript/createTSUnionType.js | 2 +- 18 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 30397ea0cede..08e754be050f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -115,7 +115,7 @@ jobs: <<: *test262_workdir - store_artifacts: *artifact_test262_diff_tap - run: - name: Output comparision results and report to CircleCI + name: Output comparison results and report to CircleCI command: | mkdir -p ~/test-results/test262 cat ~/diff.tap | $(npm bin)/tap-merge | $(npm bin)/tap-mocha-reporter xunit | tee ~/test-results/test262/results.xml diff --git a/eslint/babel-eslint-plugin-development/src/utils/get-reference-origin.js b/eslint/babel-eslint-plugin-development/src/utils/get-reference-origin.js index 25fd7b0a541f..ffa90fe2a4e7 100644 --- a/eslint/babel-eslint-plugin-development/src/utils/get-reference-origin.js +++ b/eslint/babel-eslint-plugin-development/src/utils/get-reference-origin.js @@ -21,7 +21,7 @@ type ReferenceOrigin = // Given a node and a context, returns a description of where its value comes // from. // It resolves imports, parameters of exported functions and property accesses. -// See the ReferenceOrigin type for more informations. +// See the ReferenceOrigin type for more information. export default function getReferenceOrigin( node, scope, diff --git a/packages/babel-compat-data/scripts/build-corejs3-proposals.js b/packages/babel-compat-data/scripts/build-corejs3-proposals.js index 80cecb1b36a6..e3b4d867a4f7 100644 --- a/packages/babel-compat-data/scripts/build-corejs3-proposals.js +++ b/packages/babel-compat-data/scripts/build-corejs3-proposals.js @@ -25,10 +25,10 @@ const builtInDefinitionsPath = path.join( const builtInDefinitions = fs.readFileSync(builtInDefinitionsPath, "utf-8"); for (const feature of finishedProposals) { - const standarizedName = feature.replace("esnext.", "es."); - if (!builtInDefinitions.includes(standarizedName)) { + const standardizedName = feature.replace("esnext.", "es."); + if (!builtInDefinitions.includes(standardizedName)) { console.log( - `${feature} is now standarized as ${standarizedName}, please add "${standarizedName}" to "${builtInDefinitionsPath}"` + `${feature} is now standarized as ${standardizedName}, please add "${standardizedName}" to "${builtInDefinitionsPath}"` ); } } diff --git a/packages/babel-core/src/config/files/import.js b/packages/babel-core/src/config/files/import.js index d81b18f7539f..3db10a4e9e1b 100644 --- a/packages/babel-core/src/config/files/import.js +++ b/packages/babel-core/src/config/files/import.js @@ -1,5 +1,5 @@ // @flow -// We keep this in a seprate file so that in older node versions, where +// We keep this in a separate file so that in older node versions, where // import() isn't supported, we can try/catch around the require() call // when loading this file. diff --git a/packages/babel-core/src/gensync-utils/async.js b/packages/babel-core/src/gensync-utils/async.js index a7d70c47bc7c..2b474aeed692 100644 --- a/packages/babel-core/src/gensync-utils/async.js +++ b/packages/babel-core/src/gensync-utils/async.js @@ -10,7 +10,7 @@ const runGenerator = gensync(function* (item) { return yield* item; }); -// This Gensync returns true if the current execution contect is +// This Gensync returns true if the current execution context is // asynchronous, otherwise it returns false. export const isAsync = gensync<[], boolean>({ sync: () => false, diff --git a/packages/babel-helper-module-transforms/src/rewrite-live-references.js b/packages/babel-helper-module-transforms/src/rewrite-live-references.js index f036d578b6ba..6bf4aaad3cb5 100644 --- a/packages/babel-helper-module-transforms/src/rewrite-live-references.js +++ b/packages/babel-helper-module-transforms/src/rewrite-live-references.js @@ -12,7 +12,7 @@ export default function rewriteLiveReferences( const imported = new Map(); const exported = new Map(); const requeueInParent = path => { - // Manualy re-queue `exports.default =` expressions so that the ES3 + // Manually re-queue `exports.default =` expressions so that the ES3 // transform has an opportunity to convert them. Ideally this would // happen automatically from the replaceWith above. See #4140 for // more info. diff --git a/packages/babel-helper-split-export-declaration/src/index.js b/packages/babel-helper-split-export-declaration/src/index.js index c591f8746396..a2eae668e07a 100644 --- a/packages/babel-helper-split-export-declaration/src/index.js +++ b/packages/babel-helper-split-export-declaration/src/index.js @@ -2,7 +2,7 @@ import * as t from "@babel/types"; export default function splitExportDeclaration(exportDeclaration) { if (!exportDeclaration.isExportDeclaration()) { - throw new Error("Only export declarations can be splitted."); + throw new Error("Only export declarations can be split."); } // build specifiers that point back to this export declaration diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index 508845d1046c..9e052f4e80fb 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -1077,7 +1077,7 @@ export default (superClass: Class): Class => /* The inexact flag should only be added on ObjectTypeAnnotations that * are not the body of an interface, declare interface, or declare class. - * Since spreads are only allowed in objec types, checking that is + * Since spreads are only allowed in object types, checking that is * sufficient here. */ if (allowSpread) { @@ -2698,7 +2698,7 @@ export default (superClass: Class): Class => if (!arrow.error && arrowExpression) return arrowExpression; - // If we are here, both JSX and Flow parsing attemps failed. + // If we are here, both JSX and Flow parsing attempts failed. // Give the precedence to the JSX error, except if JSX had an // unrecoverable error while Flow didn't. // If the error is recoverable, we can only re-report it if there is diff --git a/packages/babel-plugin-proposal-object-rest-spread/src/index.js b/packages/babel-plugin-proposal-object-rest-spread/src/index.js index 173dd794f69a..e1f9b7d51016 100644 --- a/packages/babel-plugin-proposal-object-rest-spread/src/index.js +++ b/packages/babel-plugin-proposal-object-rest-spread/src/index.js @@ -596,7 +596,7 @@ export default declare((api, opts) => { exp = t.callExpression(t.cloneNode(helper), [ exp, // If we have static props, we need to insert an empty object - // becuase the odd arguments are copied with [[Get]], not + // because the odd arguments are copied with [[Get]], not // [[GetOwnProperty]] ...(hadProps ? [t.objectExpression([]), obj] : []), ]); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/exec.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/exec.js index 8ff77f141106..6e826647d0c3 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/exec.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/exec.js @@ -16,6 +16,6 @@ const obj = new Obj(); expect(() => { obj.call(); - // Asser that this throws, but that it's not + // Assert that this throws, but that it's not // Obj.p.test's error that is thrown }).toThrowError(TypeError) diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/input.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/input.js index 8ff77f141106..6e826647d0c3 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/input.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/input.js @@ -16,6 +16,6 @@ const obj = new Obj(); expect(() => { obj.call(); - // Asser that this throws, but that it's not + // Assert that this throws, but that it's not // Obj.p.test's error that is thrown }).toThrowError(TypeError) diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/output.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/output.js index 02de2a67244b..cac6975c65f6 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-not-defined-on-parent/output.js @@ -56,6 +56,6 @@ let Obj = /*#__PURE__*/function (_Base) { const obj = new Obj(); expect(() => { - obj.call(); // Asser that this throws, but that it's not + obj.call(); // Assert that this throws, but that it's not // Obj.p.test's error that is thrown }).toThrowError(TypeError); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-setter-defined-on-parent/exec.js b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-setter-defined-on-parent/exec.js index 184778853f1f..9b74ae7319b7 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-setter-defined-on-parent/exec.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/get-set/call-semantics-setter-defined-on-parent/exec.js @@ -19,6 +19,6 @@ const obj = new Obj(); expect(() => { obj.call(); - // Asser that this throws, but that it's not + // Assert that this throws, but that it's not // a gobbledygook error that is thrown }).toThrowError(TypeError) diff --git a/packages/babel-preset-env/CONTRIBUTING.md b/packages/babel-preset-env/CONTRIBUTING.md index b17d1f453b73..53fc57b64b54 100644 --- a/packages/babel-preset-env/CONTRIBUTING.md +++ b/packages/babel-preset-env/CONTRIBUTING.md @@ -51,13 +51,13 @@ const es = { } ``` -If you wan to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related `core-js` modules to [this file](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs2/built-in-definitions.js). +If you want to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related `core-js` modules to [this file](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs2/built-in-definitions.js). ### Update data for `core-js@3` polyfilling Just update the version of [`core-js-compat`](https://github.com/zloirock/core-js/tree/main/packages/core-js-compat) in dependencies. -If you wan to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related [`core-js`](https://github.com/zloirock/core-js/tree/main/packages/core-js/modules) modules to [this file](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs3/built-in-definitions.js). +If you want to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related [`core-js`](https://github.com/zloirock/core-js/tree/main/packages/core-js/modules) modules to [this file](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs3/built-in-definitions.js). If you want to mark a new proposal as shipped, add it to [this list](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs3/shipped-proposals.js). diff --git a/packages/babel-preset-env/src/normalize-options.js b/packages/babel-preset-env/src/normalize-options.js index f86621f5715b..bef9fe27677e 100644 --- a/packages/babel-preset-env/src/normalize-options.js +++ b/packages/babel-preset-env/src/normalize-options.js @@ -33,7 +33,7 @@ const validateTopLevelOptions = (options: Options) => { const allPluginsList = Object.keys(pluginsList); -// NOTE: Since module plugins are handled seperatly compared to other plugins (via the "modules" option) it +// NOTE: Since module plugins are handled separately compared to other plugins (via the "modules" option) it // should only be possible to exclude and not include module plugins, otherwise it's possible that preset-env // will add a module plugin twice. const modulePlugins = [ diff --git a/packages/babel-traverse/src/path/introspection.js b/packages/babel-traverse/src/path/introspection.js index 7060b6a2f51f..c816765c2c0e 100644 --- a/packages/babel-traverse/src/path/introspection.js +++ b/packages/babel-traverse/src/path/introspection.js @@ -402,7 +402,7 @@ export function _guessExecutionStatusRelativeToDifferentFunctions( return "unknown"; } - // Prevent infinte loops in recursive functions + // Prevent infinite loops in recursive functions if (executionOrderCheckedNodes.has(path.node)) continue; executionOrderCheckedNodes.add(path.node); diff --git a/packages/babel-types/src/builders/flow/createFlowUnionType.js b/packages/babel-types/src/builders/flow/createFlowUnionType.js index 30a6f08771d7..2f2dd03ffbc4 100644 --- a/packages/babel-types/src/builders/flow/createFlowUnionType.js +++ b/packages/babel-types/src/builders/flow/createFlowUnionType.js @@ -4,7 +4,7 @@ import removeTypeDuplicates from "../../modifications/flow/removeTypeDuplicates" /** * Takes an array of `types` and flattens them, removing duplicates and - * returns a `UnionTypeAnnotation` node containg them. + * returns a `UnionTypeAnnotation` node containing them. */ export default function createFlowUnionType(types: Array): Object { const flattened = removeTypeDuplicates(types); diff --git a/packages/babel-types/src/builders/typescript/createTSUnionType.js b/packages/babel-types/src/builders/typescript/createTSUnionType.js index 93d52c113f06..ae4e5ded1c2f 100644 --- a/packages/babel-types/src/builders/typescript/createTSUnionType.js +++ b/packages/babel-types/src/builders/typescript/createTSUnionType.js @@ -3,7 +3,7 @@ import removeTypeDuplicates from "../../modifications/typescript/removeTypeDupli /** * Takes an array of `types` and flattens them, removing duplicates and - * returns a `UnionTypeAnnotation` node containg them. + * returns a `UnionTypeAnnotation` node containing them. */ export default function createTSUnionType( typeAnnotations: Array, From f4eeff947d0c508e9c92ae432df5e065b66db192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 16 Jul 2020 18:11:06 -0400 Subject: [PATCH 21/90] fix: correctly set innerEndPos in CoverParenthesizedExpressionAndArrowParameterList (#11847) --- .../babel-parser/src/parser/expression.js | 4 +- .../sequence-expression-end/input.js | 4 ++ .../sequence-expression-end/output.json | 47 +++++++++++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/core/categorized/sequence-expression-end/input.js create mode 100644 packages/babel-parser/test/fixtures/core/categorized/sequence-expression-end/output.json diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index cec1bcd2a555..fc8446548d86 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1371,8 +1371,8 @@ export default class ExpressionParser extends LValParser { } } - const innerEndPos = this.state.start; - const innerEndLoc = this.state.startLoc; + const innerEndPos = this.state.lastTokEnd; + const innerEndLoc = this.state.lastTokEndLoc; this.expect(tt.parenR); this.state.maybeInArrowParameters = oldMaybeInArrowParameters; diff --git a/packages/babel-parser/test/fixtures/core/categorized/sequence-expression-end/input.js b/packages/babel-parser/test/fixtures/core/categorized/sequence-expression-end/input.js new file mode 100644 index 000000000000..a5926ad42e9b --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/categorized/sequence-expression-end/input.js @@ -0,0 +1,4 @@ +a = ( + b, + c +) diff --git a/packages/babel-parser/test/fixtures/core/categorized/sequence-expression-end/output.json b/packages/babel-parser/test/fixtures/core/categorized/sequence-expression-end/output.json new file mode 100644 index 000000000000..8db0508b75d9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/categorized/sequence-expression-end/output.json @@ -0,0 +1,47 @@ +{ + "type": "File", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "program": { + "type": "Program", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "expression": { + "type": "AssignmentExpression", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":1}}, + "operator": "=", + "left": { + "type": "Identifier", + "start":0,"end":1,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":1},"identifierName":"a"}, + "name": "a" + }, + "right": { + "type": "SequenceExpression", + "start":8,"end":14,"loc":{"start":{"line":2,"column":2},"end":{"line":3,"column":3}}, + "expressions": [ + { + "type": "Identifier", + "start":8,"end":9,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":3},"identifierName":"b"}, + "name": "b" + }, + { + "type": "Identifier", + "start":13,"end":14,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":3},"identifierName":"c"}, + "name": "c" + } + ], + "extra": { + "parenthesized": true, + "parenStart": 4 + } + } + } + } + ], + "directives": [] + } +} From 238cadda4c68bfda6794b44402eb67f20cfb3a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 16 Jul 2020 21:46:41 -0400 Subject: [PATCH 22/90] chore: update `spec-new` in CONTRIBUTING.md [skip ci] (#11706) * chore: update CONTRIBUTING.md [skip ci] * Update CONTRIBUTING.md [skip ci] Co-authored-by: Brian Ng * Update CONTRIBUTING.md [skip ci] Co-authored-by: Brian Ng * Apply suggestions from code review [skip ci] Co-authored-by: Brian Ng Co-authored-by: Brian Ng --- CONTRIBUTING.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 37cdadbd7008..82ce2de27a19 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -311,15 +311,22 @@ Note that the code shown in Chrome DevTools is compiled code and therefore diffe ## Creating a new plugin (`spec-new`) -> Example: https://github.com/babel/babylon/pull/541 +> Example: https://github.com/babel/babel/pull/11640 -- Create a new issue that describes the proposal (ex: [#538](https://github.com/babel/babylon/issues/538)). Include any relevant information like proposal repo/author, examples, parsing approaches, meeting notes, presentation slides, and more. -- The pull request should include: - - [ ] An update to the [plugins](https://github.com/babel/babel/tree/main/packages/babel-parser#plugins) part of the readme. Add a new entry to that list for the new plugin flag (and link to the proposal) - - [ ] If any new nodes or modifications need to be added to the AST, update [ast/spec.md](https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md) - - [ ] Make sure you use the `this.hasPlugin("plugin-name-here")` check in the babel parser so that your new plugin code only runs when that flag is turned on (not default behavior) +- Create a new PR that describes the proposed AST shape in [ESTree](https://github.com/estree/estree) (ex: [Decimal AST](https://github.com/estree/estree/pull/220)). The new AST should follow ESTree's [design philosophy](https://github.com/estree/estree#philosophy). +- After the ESTree PR is accepted, update [ast/spec.md](https://github.com/babel/babel/blob/master/packages/babel-parser/ast/spec.md). Note that there are differences between Babel AST and ESTree. In these cases, consistency with current Babel AST outweighs alignment to ESTree. Otherwise it should follow ESTree. + +- [ ] Implement parser plugins based on the new AST. The parser plugin name should be the unprefixed slug of the TC39 proposal URL in _camelcase_, i.e. `exportDefaultFrom` from `https://github.com/tc39/proposal-export-default-from`. + - [ ] Use the `this.expectPlugin("newSyntax")` check within `@babel/parser` to ensure your new plugin code only runs when that flag is turned on (not default behavior), and a friendly error is thrown if users forget to enable a plugin. - [ ] Add failing/passing tests according to spec behavior -- Start working about the Babel transform itself! + - [ ] Add `@babel/syntax-new-syntax` package. You can copy `packages/babel-plugin-syntax-decimal` and replace `decimal` to `new-syntax`. + - [ ] Add `@babel/syntax-new-syntax` to `@babel/standalone`. + - [ ] Add `@babel/syntax-new-syntax` to `package.json` + - [ ] Add `@babel/syntax-new-syntax` to [`pluginsConfig.json`](https://github.com/babel/babel/blob/master/packages/babel-standalone/scripts/pluginConfig.json), run `make generate-standalone`. + - [ ] Add `@babel/syntax-new-syntax` to `src/preset-stage-x`. + - [ ] Add `"newSyntax"` to parser [typings](https://github.com/babel/babel/blob/master/packages/babel-parser/typings/babel-parser.d.ts) +- [ ] Implement generator support in `packages/babel-generator/src/generators`. The generator converts AST to source code. +- [ ] If this feature can be transpiled, start working on the Babel transform. ## Internals From e51a91e131518fa650a998649d4159b4f32428d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Mon, 20 Jul 2020 17:06:27 -0400 Subject: [PATCH 23/90] fix: eval?.() is indirect (#11850) --- .../src/index.js | 6 ++++- .../general/optional-eval-call-loose/input.js | 22 +++++++++++++++++++ .../optional-eval-call-loose/options.json | 3 +++ .../optional-eval-call-loose/output.js | 17 ++++++++++++++ .../general/optional-eval-call/input.js | 22 +++++++++++++++++++ .../general/optional-eval-call/output.js | 17 ++++++++++++++ 6 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/input.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call/input.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call/output.js diff --git a/packages/babel-plugin-proposal-optional-chaining/src/index.js b/packages/babel-plugin-proposal-optional-chaining/src/index.js index a1f03bf94c95..3c80d4238c7a 100644 --- a/packages/babel-plugin-proposal-optional-chaining/src/index.js +++ b/packages/babel-plugin-proposal-optional-chaining/src/index.js @@ -78,7 +78,11 @@ export default declare((api, options) => { let ref; let check; - if (loose && isCall && isSimpleMemberExpression(chain)) { + if (isCall && t.isIdentifier(chain, { name: "eval" })) { + check = ref = chain; + // `eval?.()` is an indirect eval call transformed to `(0,eval)()` + node[replaceKey] = t.sequenceExpression([t.numericLiteral(0), ref]); + } else if (loose && isCall && isSimpleMemberExpression(chain)) { // If we are using a loose transform (avoiding a Function#call) and we are at the call, // we can avoid a needless memoize. We only do this if the callee is a simple member // expression, to avoid multiple calls to nested call expressions. diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/input.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/input.js new file mode 100644 index 000000000000..731610528ac4 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/input.js @@ -0,0 +1,22 @@ +var foo; + +/* indirect eval calls */ +eval?.(foo); + +(eval)?.(foo); + +eval?.()(); + +eval?.().foo; + +/* direct eval calls */ + +eval()?.(); + +eval()?.foo; + +/* plain function calls */ + +foo.eval?.(foo); + +eval.foo?.(foo); diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/options.json new file mode 100644 index 000000000000..39ea3f99c7ff --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["proposal-optional-chaining", { "loose": true }]] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/output.js new file mode 100644 index 000000000000..11a20e703be4 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call-loose/output.js @@ -0,0 +1,17 @@ +var _eval, _eval2; + +var foo; +/* indirect eval calls */ + +eval == null ? void 0 : (0, eval)(foo); +eval == null ? void 0 : (0, eval)(foo); +eval == null ? void 0 : (0, eval)()(); +eval == null ? void 0 : (0, eval)().foo; +/* direct eval calls */ + +(_eval = eval()) == null ? void 0 : _eval(); +(_eval2 = eval()) == null ? void 0 : _eval2.foo; +/* plain function calls */ + +foo.eval == null ? void 0 : foo.eval(foo); +eval.foo == null ? void 0 : eval.foo(foo); diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call/input.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call/input.js new file mode 100644 index 000000000000..731610528ac4 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call/input.js @@ -0,0 +1,22 @@ +var foo; + +/* indirect eval calls */ +eval?.(foo); + +(eval)?.(foo); + +eval?.()(); + +eval?.().foo; + +/* direct eval calls */ + +eval()?.(); + +eval()?.foo; + +/* plain function calls */ + +foo.eval?.(foo); + +eval.foo?.(foo); diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call/output.js new file mode 100644 index 000000000000..2bb22ae870b0 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/general/optional-eval-call/output.js @@ -0,0 +1,17 @@ +var _eval, _eval2, _foo$eval, _eval$foo; + +var foo; +/* indirect eval calls */ + +eval === null || eval === void 0 ? void 0 : (0, eval)(foo); +eval === null || eval === void 0 ? void 0 : (0, eval)(foo); +eval === null || eval === void 0 ? void 0 : (0, eval)()(); +eval === null || eval === void 0 ? void 0 : (0, eval)().foo; +/* direct eval calls */ + +(_eval = eval()) === null || _eval === void 0 ? void 0 : _eval(); +(_eval2 = eval()) === null || _eval2 === void 0 ? void 0 : _eval2.foo; +/* plain function calls */ + +(_foo$eval = foo.eval) === null || _foo$eval === void 0 ? void 0 : _foo$eval.call(foo, foo); +(_eval$foo = eval.foo) === null || _eval$foo === void 0 ? void 0 : _eval$foo.call(eval, foo); From 48be93b46c776f5e4947377f2a246cc6afc5ef5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Mon, 20 Jul 2020 17:11:21 -0400 Subject: [PATCH 24/90] refactor: replace caniuse-db by mdn-browser-compat-data (#11838) * refactor: replace caniuse-db by mdn-browser-compat-data * fix broken test --- .../data/native-modules.json | 15 ++-- packages/babel-compat-data/package.json | 4 +- .../scripts/build-modules-support.js | 75 ++++++++++++------- .../__snapshots__/targets-parser.spec.js.snap | 59 +++++++++++++++ .../test/targets-parser.spec.js | 46 +----------- .../_esmodules-no-bugfixes/stdout.txt | 9 ++- .../fixtures/bugfixes/_esmodules/stdout.txt | 21 +++--- .../stdout.txt | 9 ++- .../stdout.txt | 7 +- 9 files changed, 145 insertions(+), 100 deletions(-) create mode 100644 packages/babel-helper-compilation-targets/test/__snapshots__/targets-parser.spec.js.snap diff --git a/packages/babel-compat-data/data/native-modules.json b/packages/babel-compat-data/data/native-modules.json index 980db7b7d21b..4ede11b4dd97 100644 --- a/packages/babel-compat-data/data/native-modules.json +++ b/packages/babel-compat-data/data/native-modules.json @@ -1,15 +1,16 @@ { "es6.module": { + "chrome": "61", + "and_chr": "61", "edge": "16", "firefox": "60", - "chrome": "61", - "safari": "10.1", + "and_ff": "60", + "node": "13.2.0", "opera": "48", - "ios_saf": "10.3", - "android": "61", "op_mob": "48", - "and_chr": "61", - "and_ff": "60", - "samsung": "8.2" + "safari": "10.1", + "ios_saf": "10.3", + "samsung": "8.2", + "android": "61" } } diff --git a/packages/babel-compat-data/package.json b/packages/babel-compat-data/package.json index 4b7662da57bb..a5feee19b22c 100644 --- a/packages/babel-compat-data/package.json +++ b/packages/babel-compat-data/package.json @@ -21,7 +21,7 @@ "./plugin-bugfixes": "./data/plugin-bugfixes.json" }, "scripts": { - "build-data": "./scripts/download-compat-table.sh; node ./scripts/build-data.js; node ./scripts/build-modules-support.js; node ./scripts/build-bugfixes-targets.js" + "build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.js && node ./scripts/build-modules-support.js && node ./scripts/build-bugfixes-targets.js" }, "keywords": [ "babel", @@ -35,7 +35,7 @@ }, "devDependencies": { "@babel/helper-compilation-targets": "^7.10.4", - "caniuse-db": "1.0.30001035", + "mdn-browser-compat-data": "1.0.31", "electron-to-chromium": "1.3.377", "lodash": "^4.17.19" } diff --git a/packages/babel-compat-data/scripts/build-modules-support.js b/packages/babel-compat-data/scripts/build-modules-support.js index ac7eee8d7fef..3701fb587a2c 100644 --- a/packages/babel-compat-data/scripts/build-modules-support.js +++ b/packages/babel-compat-data/scripts/build-modules-support.js @@ -1,40 +1,59 @@ const path = require("path"); const fs = require("fs"); -const moduleSupport = require("caniuse-db/features-json/es6-module.json"); - -const acceptedWithCaveats = new Set(["safari", "ios_saf"]); +const compatData = require("mdn-browser-compat-data").javascript; +// Map mdn-browser-compat-data to browserslist browser names const browserNameMap = { - and_chr: "chrome", - and_ff: "firefox", - android: "chrome", // map to chrome here as Android WebView 61 is Chromium-based - op_mob: "opera", + chrome_android: "and_chr", + firefox_android: "and_ff", + safari_ios: "ios_saf", + nodejs: "node", + webview_android: "android", + opera_android: "op_mob", + samsunginternet_android: "samsung", +}; + +const browserSupportMap = { + android: "chrome_android", // map to chrome here as Android WebView 61 is Chromium-based }; -const { stats } = moduleSupport; - -const allowedBrowsers = {}; - -Object.keys(stats).forEach(browser => { - const browserName = browserNameMap[browser] || browser; - const browserVersions = stats[browserName]; - const allowedVersions = Object.keys(browserVersions) - .filter(value => { - // Edge 16/17 are marked as "y #6" - return acceptedWithCaveats.has(browserName) - ? browserVersions[value][0] === "a" - : browserVersions[value].startsWith("y"); - }) - .sort((a, b) => a - b); - - if (allowedVersions[0] !== undefined) { - // Handle cases where caniuse specifies version as: "11.0-11.2" - allowedBrowsers[browser] = allowedVersions[0].split("-")[0]; + +function browserVersion(browser, version_added) { + if (browser === "samsunginternet_android" && version_added === "8.0") { + return "8.2"; // samsung 8.0 is not defined in browserslist } -}); + // fixme: preset-env maps opera_android as opera, this is incorrect as they have different engine mappings + // see https://github.com/mdn/browser-compat-data/blob/master/browsers/opera_android.json + if (browser === "opera_android" && version_added === "45") { + return "48"; + } + return version_added; +} + +function process(source) { + const stats = source.__compat.support; + const allowedBrowsers = {}; + + Object.keys(stats).forEach(browser => { + const browserName = browserNameMap[browser] ?? browser; + let browserSupport = stats[browserSupportMap[browserName] ?? browser]; + if (Array.isArray(browserSupport)) { + browserSupport = browserSupport[0]; // The first item is the most progressive support + } + if (browserSupport.version_added && !browserSupport.flags) { + allowedBrowsers[browserName] = browserVersion( + browser, + browserSupport.version_added + ); + } + }); + + return allowedBrowsers; +} const dataPath = path.join(__dirname, "../data/native-modules.json"); const data = { - "es6.module": allowedBrowsers, + "es6.module": process(compatData.statements.export), }; fs.writeFileSync(dataPath, `${JSON.stringify(data, null, 2)}\n`); +exports.process = process; diff --git a/packages/babel-helper-compilation-targets/test/__snapshots__/targets-parser.spec.js.snap b/packages/babel-helper-compilation-targets/test/__snapshots__/targets-parser.spec.js.snap new file mode 100644 index 000000000000..5c3fed386ddf --- /dev/null +++ b/packages/babel-helper-compilation-targets/test/__snapshots__/targets-parser.spec.js.snap @@ -0,0 +1,59 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`getTargets esmodules returns browser supporting modules and keyed browser overrides 1`] = ` +Object { + "android": "61.0.0", + "chrome": "61.0.0", + "edge": "16.0.0", + "firefox": "60.0.0", + "ie": "11.0.0", + "ios": "10.3.0", + "node": "13.2.0", + "opera": "48.0.0", + "safari": "10.1.0", + "samsung": "8.2.0", +} +`; + +exports[`getTargets esmodules returns browser supporting modules and keyed browser overrides, ignoring browsers field 1`] = ` +Object { + "android": "61.0.0", + "chrome": "61.0.0", + "edge": "16.0.0", + "firefox": "60.0.0", + "ie": "11.0.0", + "ios": "10.3.0", + "node": "13.2.0", + "opera": "48.0.0", + "safari": "10.1.0", + "samsung": "8.2.0", +} +`; + +exports[`getTargets esmodules returns browsers supporting modules 1`] = ` +Object { + "android": "61.0.0", + "chrome": "61.0.0", + "edge": "16.0.0", + "firefox": "60.0.0", + "ios": "10.3.0", + "node": "13.2.0", + "opera": "48.0.0", + "safari": "10.1.0", + "samsung": "8.2.0", +} +`; + +exports[`getTargets esmodules returns browsers supporting modules, ignoring browsers key 1`] = ` +Object { + "android": "61.0.0", + "chrome": "61.0.0", + "edge": "16.0.0", + "firefox": "60.0.0", + "ios": "10.3.0", + "node": "13.2.0", + "opera": "48.0.0", + "safari": "10.1.0", + "samsung": "8.2.0", +} +`; diff --git a/packages/babel-helper-compilation-targets/test/targets-parser.spec.js b/packages/babel-helper-compilation-targets/test/targets-parser.spec.js index f44ae0060197..e5222b68cec8 100644 --- a/packages/babel-helper-compilation-targets/test/targets-parser.spec.js +++ b/packages/babel-helper-compilation-targets/test/targets-parser.spec.js @@ -203,16 +203,7 @@ describe("getTargets", () => { getTargets({ esmodules: true, }), - ).toEqual({ - android: "61.0.0", - chrome: "61.0.0", - edge: "16.0.0", - firefox: "60.0.0", - ios: "10.3.0", - opera: "48.0.0", - safari: "10.1.0", - samsung: "8.2.0", - }); + ).toMatchSnapshot(); }); it("returns browsers supporting modules, ignoring browsers key", () => { @@ -221,16 +212,7 @@ describe("getTargets", () => { esmodules: true, browsers: "ie 8", }), - ).toEqual({ - android: "61.0.0", - chrome: "61.0.0", - edge: "16.0.0", - firefox: "60.0.0", - ios: "10.3.0", - opera: "48.0.0", - safari: "10.1.0", - samsung: "8.2.0", - }); + ).toMatchSnapshot(); }); it("returns browser supporting modules and keyed browser overrides", () => { @@ -239,17 +221,7 @@ describe("getTargets", () => { esmodules: true, ie: 11, }), - ).toEqual({ - android: "61.0.0", - chrome: "61.0.0", - safari: "10.1.0", - firefox: "60.0.0", - opera: "48.0.0", - ios: "10.3.0", - ie: "11.0.0", - edge: "16.0.0", - samsung: "8.2.0", - }); + ).toMatchSnapshot(); }); it("returns browser supporting modules and keyed browser overrides, ignoring browsers field", () => { @@ -259,17 +231,7 @@ describe("getTargets", () => { browsers: "ie 10", ie: 11, }), - ).toEqual({ - android: "61.0.0", - chrome: "61.0.0", - safari: "10.1.0", - ios: "10.3.0", - ie: "11.0.0", - edge: "16.0.0", - firefox: "60.0.0", - opera: "48.0.0", - samsung: "8.2.0", - }); + ).toMatchSnapshot(); }); }); diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt index 7dd3383636d1..54e18667adb6 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt @@ -7,6 +7,7 @@ Using targets: "edge": "16", "firefox": "60", "ios": "10.3", + "node": "13.2", "opera": "48", "safari": "10.1", "samsung": "8.2" @@ -15,8 +16,8 @@ Using targets: Using modules transform: auto Using plugins: - proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-catch-binding { "android":"61", "chrome":"61", "edge":"16", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } transform-parameters { "edge":"16" } @@ -30,7 +31,7 @@ Using plugins: transform-function-name { "edge":"16" } transform-unicode-regex { "ios":"10.3", "safari":"10.1" } transform-block-scoping { "ios":"10.3", "safari":"10.1" } - transform-modules-commonjs { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - proposal-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + transform-modules-commonjs { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt index 3f19ec611846..fcb5cf111bc9 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt @@ -7,6 +7,7 @@ Using targets: "edge": "16", "firefox": "60", "ios": "10.3", + "node": "13.2", "opera": "48", "safari": "10.1", "samsung": "8.2" @@ -15,8 +16,8 @@ Using targets: Using modules transform: auto Using plugins: - proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-catch-binding { "android":"61", "chrome":"61", "edge":"16", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-async-generator-functions { "android":"61", "chrome":"61", "edge":"16", "ios":"10.3", "opera":"48", "safari":"10.1" } @@ -25,13 +26,13 @@ Using plugins: proposal-unicode-property-regex { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } transform-named-capturing-groups-regex { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } transform-unicode-regex { "ios":"10.3", "safari":"10.1" } - bugfix/transform-async-arrows-in-class { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - bugfix/transform-edge-default-parameters { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - bugfix/transform-edge-function-name { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - bugfix/transform-safari-block-shadowing { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - bugfix/transform-safari-for-shadowing { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - bugfix/transform-tagged-template-caching { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - transform-modules-commonjs { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - proposal-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + bugfix/transform-async-arrows-in-class { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + bugfix/transform-edge-default-parameters { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + bugfix/transform-edge-function-name { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + bugfix/transform-safari-block-shadowing { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + bugfix/transform-safari-for-shadowing { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + bugfix/transform-tagged-template-caching { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + transform-modules-commonjs { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. diff --git a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt index 800eb975dc7c..d73f0bba3fa5 100644 --- a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt @@ -7,6 +7,7 @@ Using targets: "edge": "16", "firefox": "60", "ios": "10.3", + "node": "13.2", "opera": "48", "safari": "10.1", "samsung": "8.2" @@ -15,8 +16,8 @@ Using targets: Using modules transform: false Using plugins: - proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-catch-binding { "android":"61", "chrome":"61", "edge":"16", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } transform-parameters { "edge":"16" } @@ -30,9 +31,9 @@ Using plugins: transform-function-name { "edge":"16" } transform-unicode-regex { "ios":"10.3", "safari":"10.1" } transform-block-scoping { "ios":"10.3", "safari":"10.1" } - syntax-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + syntax-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } Using polyfills with `usage` option: [/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/input.mjs] Added following core-js polyfill: - web.dom.iterable { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + web.dom.iterable { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt index 20ac22e7bc73..6536248a1ce3 100644 --- a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt @@ -7,6 +7,7 @@ Using targets: "edge": "16", "firefox": "60", "ios": "10.3", + "node": "13.2", "opera": "48", "safari": "10.1", "samsung": "8.2" @@ -15,8 +16,8 @@ Using targets: Using modules transform: false Using plugins: - proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } - proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-catch-binding { "android":"61", "chrome":"61", "edge":"16", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } transform-parameters { "edge":"16" } @@ -30,7 +31,7 @@ Using plugins: transform-function-name { "edge":"16" } transform-unicode-regex { "ios":"10.3", "safari":"10.1" } transform-block-scoping { "ios":"10.3", "safari":"10.1" } - syntax-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + syntax-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } Using polyfills with `usage` option: From 3680f019d70061a75c92ee7443be25c6ac3ff980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 21 Jul 2020 09:44:28 -0400 Subject: [PATCH 25/90] fix: allow 09.1_1 and 09e1_1 in sloppy mode (#11854) * fix: allow 09.1_1 and 09e1_1 in sloppy mode * polish: avoid extra input source scanning * chore: move comment [skip ci] --- packages/babel-parser/src/tokenizer/index.js | 37 ++++++++----------- .../valid-non-octal-exponents/input.js | 1 + .../valid-non-octal-exponents/output.json | 26 +++++++++++++ .../valid-non-octal-fragments/input.js | 1 + .../valid-non-octal-fragments/output.json | 26 +++++++++++++ 5 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/output.json diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index 1a8af6cbbdd8..b88755b1b1b9 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -1116,26 +1116,31 @@ export default class Tokenizer extends ParserErrors { const start = this.state.pos; let isFloat = false; let isBigInt = false; - let isNonOctalDecimalInt = false; + let isOctal = false; if (!startsWithDot && this.readInt(10) === null) { this.raise(start, Errors.InvalidNumber); } - let octal = + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === charCodes.digit0; - if (octal) { + + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); if (this.state.strict) { this.raise(start, Errors.StrictOctalLiteral); + } else if (this.hasPlugin("numericSeparator")) { + // disallow numeric separators in non octal decimals and legacy octal likes + const underscorePos = integer.indexOf("_"); + if (underscorePos > 0) { + this.raise(underscorePos + start, Errors.ZeroDigitNumericSeparator); + } } - if (/[89]/.test(this.input.slice(start, this.state.pos))) { - octal = false; - isNonOctalDecimalInt = true; - } + isOctal = hasLeadingZero && !/[89]/.test(integer); } let next = this.input.charCodeAt(this.state.pos); - if (next === charCodes.dot && !octal) { + if (next === charCodes.dot && !isOctal) { ++this.state.pos; this.readInt(10); isFloat = true; @@ -1144,7 +1149,7 @@ export default class Tokenizer extends ParserErrors { if ( (next === charCodes.uppercaseE || next === charCodes.lowercaseE) && - !octal + !isOctal ) { next = this.input.charCodeAt(++this.state.pos); if (next === charCodes.plusSign || next === charCodes.dash) { @@ -1155,16 +1160,6 @@ export default class Tokenizer extends ParserErrors { next = this.input.charCodeAt(this.state.pos); } - // disallow numeric separators in non octal decimals and legacy octal likes - if (this.hasPlugin("numericSeparator") && (octal || isNonOctalDecimalInt)) { - const underscorePos = this.input - .slice(start, this.state.pos) - .indexOf("_"); - if (underscorePos > 0) { - this.raise(underscorePos + start, Errors.ZeroDigitNumericSeparator); - } - } - if (next === charCodes.underscore) { this.expectPlugin("numericSeparator", this.state.pos); } @@ -1172,7 +1167,7 @@ export default class Tokenizer extends ParserErrors { if (next === charCodes.lowercaseN) { // disallow floats, legacy octal syntax and non octal decimals // new style octal ("0o") is handled in this.readRadixNumber - if (isFloat || octal || isNonOctalDecimalInt) { + if (isFloat || hasLeadingZero) { this.raise(start, Errors.InvalidBigIntLiteral); } ++this.state.pos; @@ -1191,7 +1186,7 @@ export default class Tokenizer extends ParserErrors { return; } - const val = octal ? parseInt(str, 8) : parseFloat(str); + const val = isOctal ? parseInt(str, 8) : parseFloat(str); this.finishToken(tt.num, val); } diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/input.js b/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/input.js new file mode 100644 index 000000000000..5aabedf5a064 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/input.js @@ -0,0 +1 @@ +09e1_1 diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/output.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/output.json new file mode 100644 index 000000000000..6762d5469772 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/output.json @@ -0,0 +1,26 @@ +{ + "type": "File", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "program": { + "type": "Program", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "expression": { + "type": "NumericLiteral", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "extra": { + "rawValue": 900000000000, + "raw": "09e1_1" + }, + "value": 900000000000 + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/input.js b/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/input.js new file mode 100644 index 000000000000..c3d2a8641c72 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/input.js @@ -0,0 +1 @@ +09.1_1 diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/output.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/output.json new file mode 100644 index 000000000000..9666443b7dd7 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/output.json @@ -0,0 +1,26 @@ +{ + "type": "File", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "program": { + "type": "Program", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "expression": { + "type": "NumericLiteral", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "extra": { + "rawValue": 9.11, + "raw": "09.1_1" + }, + "value": 9.11 + } + } + ], + "directives": [] + } +} \ No newline at end of file From 2bf38fb9149eb514a13bb608e5a9a0c06ad5cacd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 21 Jul 2020 09:44:56 -0400 Subject: [PATCH 26/90] fix: disallow \8, \9 in strict mode string (#11852) --- .../babel-parser/src/parser/error-message.js | 1 + packages/babel-parser/src/tokenizer/index.js | 4 +- .../input.js | 0 .../options.json | 0 .../output.json | 6 +- .../invalid-octal-strict-directive/input.js | 0 .../output.json | 10 +- .../non-octal-eight-and-nine/input.js | 5 + .../non-octal-eight-and-nine/output.json | 106 ++++++++++++++++++ .../numeric-escape-in-directive}/input.js | 0 .../numeric-escape-in-directive}/output.json | 2 +- .../numeric-escape-in-property-name}/input.js | 0 .../output.json | 2 +- .../numeric-escape}/input.js | 0 .../numeric-escape}/output.json | 2 +- .../invalid-syntax/migrated_0217/output.json | 2 +- .../invalid-syntax/migrated_0219/output.json | 2 +- .../invalid-syntax/migrated_0223/output.json | 2 +- 18 files changed, 129 insertions(+), 15 deletions(-) rename packages/babel-parser/test/fixtures/core/{regression => escape-string}/invalid-octal-strict-directive-function/input.js (100%) rename packages/babel-parser/test/fixtures/core/{regression => escape-string}/invalid-octal-strict-directive-function/options.json (100%) rename packages/babel-parser/test/fixtures/core/{regression => escape-string}/invalid-octal-strict-directive-function/output.json (98%) rename packages/babel-parser/test/fixtures/core/{regression => escape-string}/invalid-octal-strict-directive/input.js (100%) rename packages/babel-parser/test/fixtures/core/{regression => escape-string}/invalid-octal-strict-directive/output.json (92%) create mode 100644 packages/babel-parser/test/fixtures/core/escape-string/non-octal-eight-and-nine/input.js create mode 100644 packages/babel-parser/test/fixtures/core/escape-string/non-octal-eight-and-nine/output.json rename packages/babel-parser/test/fixtures/core/{uncategorised/503 => escape-string/numeric-escape-in-directive}/input.js (100%) rename packages/babel-parser/test/fixtures/core/{uncategorised/503 => escape-string/numeric-escape-in-directive}/output.json (97%) rename packages/babel-parser/test/fixtures/core/{uncategorised/501 => escape-string/numeric-escape-in-property-name}/input.js (100%) rename packages/babel-parser/test/fixtures/core/{uncategorised/501 => escape-string/numeric-escape-in-property-name}/output.json (97%) rename packages/babel-parser/test/fixtures/core/{uncategorised/499 => escape-string/numeric-escape}/input.js (100%) rename packages/babel-parser/test/fixtures/core/{uncategorised/499 => escape-string/numeric-escape}/output.json (96%) diff --git a/packages/babel-parser/src/parser/error-message.js b/packages/babel-parser/src/parser/error-message.js index 5a7df725361c..1651bb344dc3 100644 --- a/packages/babel-parser/src/parser/error-message.js +++ b/packages/babel-parser/src/parser/error-message.js @@ -139,6 +139,7 @@ export const ErrorMessages = Object.freeze({ StrictEvalArgumentsBinding: "Binding '%0' in strict mode", StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'", StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode", StrictWith: "'with' in strict mode", SuperNotAllowed: diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index b88755b1b1b9..d9b4e324e0a9 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -1357,6 +1357,8 @@ export default class Tokenizer extends ParserErrors { case charCodes.digit9: if (inTemplate) { return null; + } else if (this.state.strict) { + this.raise(this.state.pos - 1, Errors.StrictNumericEscape); } // fall through default: @@ -1385,7 +1387,7 @@ export default class Tokenizer extends ParserErrors { if (inTemplate) { return null; } else if (this.state.strict) { - this.raise(codePos, Errors.StrictOctalLiteral); + this.raise(codePos, Errors.StrictNumericEscape); } else { // This property is used to throw an error for // an octal literal in a directive that occurs prior diff --git a/packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive-function/input.js b/packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive-function/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive-function/input.js rename to packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive-function/input.js diff --git a/packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive-function/options.json b/packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive-function/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive-function/options.json rename to packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive-function/options.json diff --git a/packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive-function/output.json b/packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive-function/output.json similarity index 98% rename from packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive-function/output.json rename to packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive-function/output.json index 2eeced4be950..78d725b77c45 100644 --- a/packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive-function/output.json +++ b/packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive-function/output.json @@ -5,9 +5,9 @@ "SyntaxError: Legacy octal literals are not allowed in strict mode (2:4)", "SyntaxError: Legacy octal literals are not allowed in strict mode (7:4)", "SyntaxError: Legacy octal literals are not allowed in strict mode (8:4)", - "SyntaxError: Legacy octal literals are not allowed in strict mode (14:4)", - "SyntaxError: Legacy octal literals are not allowed in strict mode (19:4)", - "SyntaxError: Legacy octal literals are not allowed in strict mode (20:4)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (14:4)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (19:4)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (20:4)", "SyntaxError: Legacy octal literals are not allowed in strict mode (25:2)", "SyntaxError: Legacy octal literals are not allowed in strict mode (30:2)", "SyntaxError: Legacy octal literals are not allowed in strict mode (31:2)" diff --git a/packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive/input.js b/packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive/input.js rename to packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive/input.js diff --git a/packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive/output.json b/packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive/output.json similarity index 92% rename from packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive/output.json rename to packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive/output.json index f4d5ed29410f..e57ef5ed03f3 100644 --- a/packages/babel-parser/test/fixtures/core/regression/invalid-octal-strict-directive/output.json +++ b/packages/babel-parser/test/fixtures/core/escape-string/invalid-octal-strict-directive/output.json @@ -2,13 +2,13 @@ "type": "File", "start":0,"end":96,"loc":{"start":{"line":1,"column":0},"end":{"line":14,"column":22}}, "errors": [ - "SyntaxError: Legacy octal literals are not allowed in strict mode (8:2)", - "SyntaxError: Legacy octal literals are not allowed in strict mode (9:2)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (8:2)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (9:2)", "SyntaxError: Legacy octal literals are not allowed in strict mode (11:0)", "SyntaxError: Legacy octal literals are not allowed in strict mode (12:0)", - "SyntaxError: Legacy octal literals are not allowed in strict mode (14:2)", - "SyntaxError: Legacy octal literals are not allowed in strict mode (14:10)", - "SyntaxError: Legacy octal literals are not allowed in strict mode (14:18)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (14:2)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (14:10)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (14:18)", "SyntaxError: Legacy octal literals are not allowed in strict mode (1:2)", "SyntaxError: Legacy octal literals are not allowed in strict mode (1:10)", "SyntaxError: Legacy octal literals are not allowed in strict mode (1:18)", diff --git a/packages/babel-parser/test/fixtures/core/escape-string/non-octal-eight-and-nine/input.js b/packages/babel-parser/test/fixtures/core/escape-string/non-octal-eight-and-nine/input.js new file mode 100644 index 000000000000..191e53efd416 --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/escape-string/non-octal-eight-and-nine/input.js @@ -0,0 +1,5 @@ +"\8","\9"; +() => { + "use strict"; + "\8", "\9"; +} diff --git a/packages/babel-parser/test/fixtures/core/escape-string/non-octal-eight-and-nine/output.json b/packages/babel-parser/test/fixtures/core/escape-string/non-octal-eight-and-nine/output.json new file mode 100644 index 000000000000..0c5b417df26e --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/escape-string/non-octal-eight-and-nine/output.json @@ -0,0 +1,106 @@ +{ + "type": "File", + "start":0,"end":50,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":1}}, + "errors": [ + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (4:4)", + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (4:10)" + ], + "program": { + "type": "Program", + "start":0,"end":50,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":1}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "expression": { + "type": "SequenceExpression", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "expressions": [ + { + "type": "StringLiteral", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "extra": { + "rawValue": "8", + "raw": "\"\\8\"" + }, + "value": "8" + }, + { + "type": "StringLiteral", + "start":5,"end":9,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":9}}, + "extra": { + "rawValue": "9", + "raw": "\"\\9\"" + }, + "value": "9" + } + ] + } + }, + { + "type": "ExpressionStatement", + "start":11,"end":50,"loc":{"start":{"line":2,"column":0},"end":{"line":5,"column":1}}, + "expression": { + "type": "ArrowFunctionExpression", + "start":11,"end":50,"loc":{"start":{"line":2,"column":0},"end":{"line":5,"column":1}}, + "id": null, + "generator": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start":17,"end":50,"loc":{"start":{"line":2,"column":6},"end":{"line":5,"column":1}}, + "body": [ + { + "type": "ExpressionStatement", + "start":37,"end":48,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":13}}, + "expression": { + "type": "SequenceExpression", + "start":37,"end":47,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":12}}, + "expressions": [ + { + "type": "StringLiteral", + "start":37,"end":41,"loc":{"start":{"line":4,"column":2},"end":{"line":4,"column":6}}, + "extra": { + "rawValue": "8", + "raw": "\"\\8\"" + }, + "value": "8" + }, + { + "type": "StringLiteral", + "start":43,"end":47,"loc":{"start":{"line":4,"column":8},"end":{"line":4,"column":12}}, + "extra": { + "rawValue": "9", + "raw": "\"\\9\"" + }, + "value": "9" + } + ] + } + } + ], + "directives": [ + { + "type": "Directive", + "start":21,"end":34,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":15}}, + "value": { + "type": "DirectiveLiteral", + "start":21,"end":33,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":14}}, + "value": "use strict", + "extra": { + "raw": "\"use strict\"", + "rawValue": "use strict" + } + } + } + ] + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/503/input.js b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-directive/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/core/uncategorised/503/input.js rename to packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-directive/input.js diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/503/output.json b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-directive/output.json similarity index 97% rename from packages/babel-parser/test/fixtures/core/uncategorised/503/output.json rename to packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-directive/output.json index d559db4b5683..2c6c0e03d277 100644 --- a/packages/babel-parser/test/fixtures/core/uncategorised/503/output.json +++ b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-directive/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":76,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":76}}, "errors": [ - "SyntaxError: Legacy octal literals are not allowed in strict mode (1:69)" + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (1:69)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/501/input.js b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-property-name/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/core/uncategorised/501/input.js rename to packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-property-name/input.js diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/501/output.json b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-property-name/output.json similarity index 97% rename from packages/babel-parser/test/fixtures/core/uncategorised/501/output.json rename to packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-property-name/output.json index 2c29a7df14b9..0491546b1a61 100644 --- a/packages/babel-parser/test/fixtures/core/uncategorised/501/output.json +++ b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape-in-property-name/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":50,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}}, "errors": [ - "SyntaxError: Legacy octal literals are not allowed in strict mode (1:38)" + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (1:38)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/499/input.js b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/core/uncategorised/499/input.js rename to packages/babel-parser/test/fixtures/core/escape-string/numeric-escape/input.js diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/499/output.json b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape/output.json similarity index 96% rename from packages/babel-parser/test/fixtures/core/uncategorised/499/output.json rename to packages/babel-parser/test/fixtures/core/escape-string/numeric-escape/output.json index a7ce0eaeba38..e9e573c73f5e 100644 --- a/packages/babel-parser/test/fixtures/core/uncategorised/499/output.json +++ b/packages/babel-parser/test/fixtures/core/escape-string/numeric-escape/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":40,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}}, "errors": [ - "SyntaxError: Legacy octal literals are not allowed in strict mode (1:35)" + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (1:35)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0217/output.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0217/output.json index a7ce0eaeba38..e9e573c73f5e 100644 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0217/output.json +++ b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0217/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":40,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}}, "errors": [ - "SyntaxError: Legacy octal literals are not allowed in strict mode (1:35)" + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (1:35)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0219/output.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0219/output.json index 2c29a7df14b9..0491546b1a61 100644 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0219/output.json +++ b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0219/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":50,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}}, "errors": [ - "SyntaxError: Legacy octal literals are not allowed in strict mode (1:38)" + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (1:38)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0223/output.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0223/output.json index d559db4b5683..2c6c0e03d277 100644 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0223/output.json +++ b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0223/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":76,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":76}}, "errors": [ - "SyntaxError: Legacy octal literals are not allowed in strict mode (1:69)" + "SyntaxError: The only valid numeric escape in strict mode is '\\0' (1:69)" ], "program": { "type": "Program", From 3a0aa8e829ee8b0af9b01df5f581aad6a3f126c0 Mon Sep 17 00:00:00 2001 From: Sven Date: Sat, 25 Jul 2020 01:33:33 +0200 Subject: [PATCH 27/90] chore(github): fix issue template typo (#11875) --- .github/ISSUE_TEMPLATE/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index b4004b788b5d..d7b365c40c6b 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -5,7 +5,7 @@ contact_links: about: You may have an npm error related to proxies/caching. - name: 🗣 Ask a Question, Discuss url: https://github.com/babel/babel/discussions - about: How does X work 🤔? I made this! I have an idea.. + about: How does X work 🤔? I made this! I have an idea... - name: 💡 Propose an RFC url: https://github.com/babel/rfcs about: To suggest a new option or substantial change. From 6373eb5d82d527f9b86a0145bdd2c4c9970a16eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 28 Jul 2020 09:41:35 -0400 Subject: [PATCH 28/90] chore: use modules: "auto" (#11879) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: use modules: “auto” * address review comments --- babel.config.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/babel.config.js b/babel.config.js index 538d4c8b28fc..9236f7c53f90 100644 --- a/babel.config.js +++ b/babel.config.js @@ -7,9 +7,7 @@ module.exports = function (api) { const envOptsNoTargets = { loose: true, - modules: false, shippedProposals: true, - exclude: ["transform-typeof-symbol"], }; const envOpts = Object.assign({}, envOptsNoTargets); From cf425a0bde2efafad759a992d6b8d2b900439cd7 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Wed, 29 Jul 2020 23:40:02 +0300 Subject: [PATCH 29/90] feature: babel-core: add cloneInputAst (#10241) Co-authored-by: coderaiser --- packages/babel-core/src/config/partial.js | 2 ++ .../src/config/validation/options.js | 5 ++++ .../src/transformation/normalize-file.js | 6 ++++- packages/babel-core/test/api.js | 25 +++++++++++++++++++ packages/babel-core/test/config-chain.js | 1 + 5 files changed, 38 insertions(+), 1 deletion(-) diff --git a/packages/babel-core/src/config/partial.js b/packages/babel-core/src/config/partial.js index 4d8defe4b664..aa540781496d 100644 --- a/packages/babel-core/src/config/partial.js +++ b/packages/babel-core/src/config/partial.js @@ -81,6 +81,7 @@ export default function* loadPrivatePartialConfig( root: rootDir = ".", rootMode = "root", caller, + cloneInputAst = true, } = args; const absoluteCwd = path.resolve(cwd); const absoluteRootDir = yield* resolveRootMode( @@ -110,6 +111,7 @@ export default function* loadPrivatePartialConfig( // Tack the passes onto the object itself so that, if this object is // passed back to Babel a second time, it will be in the right structure // to not change behavior. + options.cloneInputAst = cloneInputAst; options.babelrc = false; options.configFile = false; options.passPerPreset = false; diff --git a/packages/babel-core/src/config/validation/options.js b/packages/babel-core/src/config/validation/options.js index d4500a747c26..df09c90deab2 100644 --- a/packages/babel-core/src/config/validation/options.js +++ b/packages/babel-core/src/config/validation/options.js @@ -51,6 +51,10 @@ const ROOT_VALIDATORS: ValidatorSet = { code: (assertBoolean: Validator<$PropertyType>), ast: (assertBoolean: Validator<$PropertyType>), + cloneInputAst: (assertBoolean: Validator< + $PropertyType, + >), + envName: (assertString: Validator< $PropertyType, >), @@ -184,6 +188,7 @@ export type ValidatedOptions = { rootMode?: RootMode, code?: boolean, ast?: boolean, + cloneInputAst?: boolean, inputSourceMap?: RootInputSourceMapOption, envName?: string, caller?: CallerMetadata, diff --git a/packages/babel-core/src/transformation/normalize-file.js b/packages/babel-core/src/transformation/normalize-file.js index 69afea4f9fd6..aca84e1e4e95 100644 --- a/packages/babel-core/src/transformation/normalize-file.js +++ b/packages/babel-core/src/transformation/normalize-file.js @@ -34,7 +34,11 @@ export default function* normalizeFile( } else if (ast.type !== "File") { throw new Error("AST root must be a Program or File node"); } - ast = cloneDeep(ast); + + const { cloneInputAst } = options; + if (cloneInputAst) { + ast = cloneDeep(ast); + } } else { ast = yield* parser(pluginPasses, options, code); } diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index 42fb53777862..8fb5fc190340 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -214,6 +214,31 @@ describe("api", function () { ); }); + it("transformFromAst should mutate the AST when cloneInputAst is false", function () { + const program = "const identifier = 1"; + const node = parse(program); + const { code } = transformFromAst(node, program, { + cloneInputAst: false, + plugins: [ + function () { + return { + visitor: { + Identifier: function (path) { + path.node.name = "replaced"; + }, + }, + }; + }, + ], + }); + + expect(code).toBe("const replaced = 1;"); + expect(node.program.body[0].declarations[0].id.name).toBe( + "replaced", + "original ast should have been mutated", + ); + }); + it("options throw on falsy true", function () { return expect(function () { transform("", { diff --git a/packages/babel-core/test/config-chain.js b/packages/babel-core/test/config-chain.js index c0b2e512c43f..d78bd6a3fc4a 100644 --- a/packages/babel-core/test/config-chain.js +++ b/packages/babel-core/test/config-chain.js @@ -984,6 +984,7 @@ describe("buildConfigChain", function () { passPerPreset: false, plugins: [], presets: [], + cloneInputAst: true, }); const realEnv = process.env.NODE_ENV; const realBabelEnv = process.env.BABEL_ENV; From 9daa50e005f4daf85a954bcfcb6b91b10a82c277 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 29 Jul 2020 21:41:20 +0100 Subject: [PATCH 30/90] babel-traverse: prefer clearer, reduced-bias option naming (#11791) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * babel-traverse: prefer clearer, reduced-bias option naming * Apply suggestions from code review Co-authored-by: Nicolò Ribaudo Co-authored-by: Nicolò Ribaudo --- packages/babel-traverse/src/index.js | 12 ++++++------ packages/babel-traverse/src/path/context.js | 11 +++++++---- packages/babel-traverse/src/visitors.js | 8 +++++++- packages/babel-traverse/test/traverse.js | 4 ++-- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/packages/babel-traverse/src/index.js b/packages/babel-traverse/src/index.js index 3d3af0f79e03..103d4c75546d 100644 --- a/packages/babel-traverse/src/index.js +++ b/packages/babel-traverse/src/index.js @@ -76,7 +76,7 @@ traverse.removeProperties = function (tree, opts) { return tree; }; -function hasBlacklistedType(path, state) { +function hasDenylistedType(path, state) { if (path.node.type === state.type) { state.has = true; path.stop(); @@ -86,10 +86,10 @@ function hasBlacklistedType(path, state) { traverse.hasType = function ( tree: Object, type: Object, - blacklistTypes?: Array, + denylistTypes?: Array, ): boolean { - // the node we're searching in is blacklisted - if (blacklistTypes?.includes(tree.type)) return false; + // the node we're searching in is denylisted + if (denylistTypes?.includes(tree.type)) return false; // the type we're looking for is the same as the passed node if (tree.type === type) return true; @@ -103,8 +103,8 @@ traverse.hasType = function ( tree, { noScope: true, - blacklist: blacklistTypes, - enter: hasBlacklistedType, + denylist: denylistTypes, + enter: hasDenylistedType, }, null, state, diff --git a/packages/babel-traverse/src/path/context.js b/packages/babel-traverse/src/path/context.js index 5587f0b9b559..03afe0205464 100644 --- a/packages/babel-traverse/src/path/context.js +++ b/packages/babel-traverse/src/path/context.js @@ -51,17 +51,20 @@ export function _call(fns?: Array): boolean { return false; } -export function isBlacklisted(): boolean { - const blacklist = this.opts.blacklist; - return blacklist && blacklist.indexOf(this.node.type) > -1; +export function isDenylisted(): boolean { + const denylist = this.opts.denylist ?? this.opts.blacklist; + return denylist && denylist.indexOf(this.node.type) > -1; } +// TODO: Remove in Babel 8 +export { isDenylisted as isBlacklisted }; + export function visit(): boolean { if (!this.node) { return false; } - if (this.isBlacklisted()) { + if (this.isDenylisted()) { return false; } diff --git a/packages/babel-traverse/src/visitors.js b/packages/babel-traverse/src/visitors.js index ef7203771927..51908c7beb4b 100644 --- a/packages/babel-traverse/src/visitors.js +++ b/packages/babel-traverse/src/visitors.js @@ -274,7 +274,13 @@ function shouldIgnoreKey(key) { if (key === "enter" || key === "exit" || key === "shouldSkip") return true; // ignore other options - if (key === "blacklist" || key === "noScope" || key === "skipKeys") { + if ( + key === "denylist" || + key === "noScope" || + key === "skipKeys" || + // TODO: Remove in Babel 8 + key === "blacklist" + ) { return true; } diff --git a/packages/babel-traverse/test/traverse.js b/packages/babel-traverse/test/traverse.js index d2492a71b329..adbe705cd290 100644 --- a/packages/babel-traverse/test/traverse.js +++ b/packages/babel-traverse/test/traverse.js @@ -61,7 +61,7 @@ describe("traverse", function () { }); }); - it("traverse blacklistTypes", function () { + it("traverse denylistTypes", function () { const expected = [ body[0], body[0].declarations[0], @@ -75,7 +75,7 @@ describe("traverse", function () { const actual = []; traverse(program, { - blacklist: ["MemberExpression"], + denylist: ["MemberExpression"], enter: function (path) { actual.push(path.node); }, From 059e9124ffb61b510fc21ec0b5629b3c899cbf1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 29 Jul 2020 16:43:15 -0400 Subject: [PATCH 31/90] Add decimal parsing support (#11640) * docs: add DecimalLiteral to AST spec * add decimal support * fix: throw invalid decimal on start * add DecimalLiteral type definitions * update parser typings * add generator support * add syntax-decimal plugin * Add syntax-decimal to babel-standalone * add syntax-decimal to missing plugin helpers * fix incorrect test macro --- .../src/parser/util/missing-plugin-helper.js | 6 + .../babel-generator/src/generators/types.js | 9 + .../minified/decimal-literal/input.js | 5 + .../minified/decimal-literal/options.json | 4 + .../minified/decimal-literal/output.js | 1 + .../fixtures/types/DecimalLiteral/input.js | 5 + .../types/DecimalLiteral/options.json | 3 + .../fixtures/types/DecimalLiteral/output.js | 5 + packages/babel-parser/ast/spec.md | 12 ++ .../babel-parser/src/parser/error-message.js | 1 + .../babel-parser/src/parser/expression.js | 8 +- packages/babel-parser/src/parser/util.js | 3 +- packages/babel-parser/src/plugins/estree.js | 14 ++ packages/babel-parser/src/tokenizer/index.js | 23 ++- packages/babel-parser/src/tokenizer/types.js | 1 + .../experimental/_no-plugin/decimal/input.js | 1 + .../_no-plugin/decimal/options.json | 3 + .../decimal/decimal-as-property-name/input.js | 1 + .../decimal-as-property-name/output.json | 188 ++++++++++++++++++ .../decimal/invalid-binary/input.js | 1 + .../decimal/invalid-binary/options.json | 6 + .../experimental/decimal/invalid-e/input.js | 1 + .../decimal/invalid-e/output.json | 29 +++ .../decimal/invalid-hexadecimal/input.js | 1 + .../decimal/invalid-hexadecimal/options.json | 6 + .../invalid-non-octal-decimal-int/input.js | 1 + .../invalid-non-octal-decimal-int/output.json | 29 +++ .../decimal/invalid-octal-legacy/input.js | 1 + .../decimal/invalid-octal-legacy/output.json | 29 +++ .../decimal/invalid-octal-new/input.js | 1 + .../decimal/invalid-octal-new/options.json | 6 + .../experimental/decimal/options.json | 3 + .../decimal/valid-decimal/input.js | 1 + .../decimal/valid-decimal/output.json | 26 +++ .../decimal/valid-float-decimal/input.js | 1 + .../decimal/valid-float-decimal/output.json | 26 +++ .../experimental/decimal/valid-float/input.js | 1 + .../decimal/valid-float/output.json | 26 +++ .../experimental/decimal/valid-large/input.js | 1 + .../decimal/valid-large/output.json | 26 +++ .../experimental/decimal/valid-small/input.js | 1 + .../decimal/valid-small/output.json | 26 +++ .../babel-parser/typings/babel-parser.d.ts | 1 + .../babel-plugin-syntax-decimal/.npmignore | 3 + .../babel-plugin-syntax-decimal/README.md | 19 ++ .../babel-plugin-syntax-decimal/package.json | 27 +++ .../babel-plugin-syntax-decimal/src/index.js | 13 ++ packages/babel-standalone/package.json | 1 + .../scripts/pluginConfig.json | 1 + .../babel-standalone/src/generated/plugins.js | 3 + .../babel-standalone/src/preset-stage-1.js | 1 + .../test/preset-stage-1.test.js | 13 ++ .../src/asserts/generated/index.js | 3 + .../src/builders/generated/index.js | 4 + .../src/definitions/experimental.js | 10 + .../src/validators/generated/index.js | 18 ++ 56 files changed, 655 insertions(+), 4 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/minified/decimal-literal/input.js create mode 100644 packages/babel-generator/test/fixtures/minified/decimal-literal/options.json create mode 100644 packages/babel-generator/test/fixtures/minified/decimal-literal/output.js create mode 100644 packages/babel-generator/test/fixtures/types/DecimalLiteral/input.js create mode 100644 packages/babel-generator/test/fixtures/types/DecimalLiteral/options.json create mode 100644 packages/babel-generator/test/fixtures/types/DecimalLiteral/output.js create mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/decimal/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/decimal/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/decimal-as-property-name/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/decimal-as-property-name/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-binary/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-binary/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-e/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-e/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-hexadecimal/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-hexadecimal/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-non-octal-decimal-int/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-non-octal-decimal-int/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-legacy/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-legacy/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-new/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-new/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-decimal/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-decimal/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-float-decimal/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-float-decimal/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-float/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-float/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-large/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-large/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-small/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decimal/valid-small/output.json create mode 100644 packages/babel-plugin-syntax-decimal/.npmignore create mode 100644 packages/babel-plugin-syntax-decimal/README.md create mode 100644 packages/babel-plugin-syntax-decimal/package.json create mode 100644 packages/babel-plugin-syntax-decimal/src/index.js create mode 100644 packages/babel-standalone/test/preset-stage-1.test.js 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 fad0d136e298..89f6dc91c961 100644 --- a/packages/babel-core/src/parser/util/missing-plugin-helper.js +++ b/packages/babel-core/src/parser/util/missing-plugin-helper.js @@ -31,6 +31,12 @@ const pluginNameMap = { url: "https://git.io/JvpRG", }, }, + decimal: { + syntax: { + name: "@babel/plugin-syntax-decimal", + url: "https://git.io/JfKOH", + }, + }, decorators: { syntax: { name: "@babel/plugin-syntax-decorators", diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js index cae6aed8d345..0b70c7a3d976 100644 --- a/packages/babel-generator/src/generators/types.js +++ b/packages/babel-generator/src/generators/types.js @@ -222,6 +222,15 @@ export function BigIntLiteral(node: Object) { this.token(node.value + "n"); } +export function DecimalLiteral(node: Object) { + const raw = this.getPossibleRaw(node); + if (!this.format.minified && raw != null) { + this.token(raw); + return; + } + this.token(node.value + "m"); +} + export function PipelineTopicExpression(node: Object) { this.print(node.expression, node); } diff --git a/packages/babel-generator/test/fixtures/minified/decimal-literal/input.js b/packages/babel-generator/test/fixtures/minified/decimal-literal/input.js new file mode 100644 index 000000000000..bde8a9a31991 --- /dev/null +++ b/packages/babel-generator/test/fixtures/minified/decimal-literal/input.js @@ -0,0 +1,5 @@ +100m; +9223372036854775807m; +0.m; +3.1415926535897932m; +100.000m; diff --git a/packages/babel-generator/test/fixtures/minified/decimal-literal/options.json b/packages/babel-generator/test/fixtures/minified/decimal-literal/options.json new file mode 100644 index 000000000000..739605a4b674 --- /dev/null +++ b/packages/babel-generator/test/fixtures/minified/decimal-literal/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["decimal"], + "minified": true +} diff --git a/packages/babel-generator/test/fixtures/minified/decimal-literal/output.js b/packages/babel-generator/test/fixtures/minified/decimal-literal/output.js new file mode 100644 index 000000000000..99661ce6bcf6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/minified/decimal-literal/output.js @@ -0,0 +1 @@ +100m;9223372036854775807m;0.m;3.1415926535897932m;100.000m; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/types/DecimalLiteral/input.js b/packages/babel-generator/test/fixtures/types/DecimalLiteral/input.js new file mode 100644 index 000000000000..bde8a9a31991 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/DecimalLiteral/input.js @@ -0,0 +1,5 @@ +100m; +9223372036854775807m; +0.m; +3.1415926535897932m; +100.000m; diff --git a/packages/babel-generator/test/fixtures/types/DecimalLiteral/options.json b/packages/babel-generator/test/fixtures/types/DecimalLiteral/options.json new file mode 100644 index 000000000000..f4a30fe3d611 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/DecimalLiteral/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["decimal"] +} diff --git a/packages/babel-generator/test/fixtures/types/DecimalLiteral/output.js b/packages/babel-generator/test/fixtures/types/DecimalLiteral/output.js new file mode 100644 index 000000000000..b03e65f9b1eb --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/DecimalLiteral/output.js @@ -0,0 +1,5 @@ +100m; +9223372036854775807m; +0.m; +3.1415926535897932m; +100.000m; \ No newline at end of file diff --git a/packages/babel-parser/ast/spec.md b/packages/babel-parser/ast/spec.md index 6e1ba6126da4..0484bc9f1faa 100644 --- a/packages/babel-parser/ast/spec.md +++ b/packages/babel-parser/ast/spec.md @@ -11,6 +11,7 @@ These are the core @babel/parser (babylon) AST node types. - [BooleanLiteral](#booleanliteral) - [NumericLiteral](#numericliteral) - [BigIntLiteral](#bigintliteral) + - [DecimalLiteral](#decimalliteral) - [Programs](#programs) - [Functions](#functions) - [Statements](#statements) @@ -253,6 +254,17 @@ interface BigIntLiteral <: Literal { The `value` property is the string representation of the `BigInt` value. It doesn't include the suffix `n`. +## DecimalLiteral + +```js +interface DecimalLiteral <: Literal { + type: "DecimalLiteral"; + value: string; +} +``` + +The `value` property is the string representation of the `BigDecimal` value. It doesn't include the suffix `m`. + # Programs ```js diff --git a/packages/babel-parser/src/parser/error-message.js b/packages/babel-parser/src/parser/error-message.js index 1651bb344dc3..77953092dc8e 100644 --- a/packages/babel-parser/src/parser/error-message.js +++ b/packages/babel-parser/src/parser/error-message.js @@ -61,6 +61,7 @@ export const ErrorMessages = Object.freeze({ ImportOutsideModule: `'import' and 'export' may appear only with 'sourceType: "module"'`, InvalidBigIntLiteral: "Invalid BigIntLiteral", InvalidCodePoint: "Code point out of bounds", + InvalidDecimal: "Invalid decimal", InvalidDigit: "Expected number in radix %0", InvalidEscapeSequence: "Bad character escape sequence", InvalidEscapeSequenceTemplate: "Invalid escape sequence in template", diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index fc8446548d86..1a7c973e094c 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1032,6 +1032,9 @@ export default class ExpressionParser extends LValParser { case tt.bigint: return this.parseLiteral(this.state.value, "BigIntLiteral"); + case tt.decimal: + return this.parseLiteral(this.state.value, "DecimalLiteral"); + case tt.string: return this.parseLiteral(this.state.value, "StringLiteral"); @@ -1859,7 +1862,10 @@ export default class ExpressionParser extends LValParser { this.state.inPropertyName = true; // We check if it's valid for it to be a private name when we push it. (prop: $FlowFixMe).key = - this.match(tt.num) || this.match(tt.string) || this.match(tt.bigint) + this.match(tt.num) || + this.match(tt.string) || + this.match(tt.bigint) || + this.match(tt.decimal) ? this.parseExprAtom() : this.parseMaybePrivateName(isPrivateNameAllowed); diff --git a/packages/babel-parser/src/parser/util.js b/packages/babel-parser/src/parser/util.js index 8928698e6b70..d6aa742df695 100644 --- a/packages/babel-parser/src/parser/util.js +++ b/packages/babel-parser/src/parser/util.js @@ -273,7 +273,8 @@ export default class UtilParser extends Tokenizer { !!this.state.type.keyword || this.match(tt.string) || this.match(tt.num) || - this.match(tt.bigint) + this.match(tt.bigint) || + this.match(tt.decimal) ); } } diff --git a/packages/babel-parser/src/plugins/estree.js b/packages/babel-parser/src/plugins/estree.js index 6c5f90780ea0..fce302d53047 100644 --- a/packages/babel-parser/src/plugins/estree.js +++ b/packages/babel-parser/src/plugins/estree.js @@ -43,6 +43,17 @@ export default (superClass: Class): Class => return node; } + estreeParseDecimalLiteral(value: any): N.Node { + // https://github.com/estree/estree/blob/master/experimental/decimal.md + // $FlowIgnore + // todo: use BigDecimal when node supports it. + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + + return node; + } + estreeParseLiteral(value: any): N.Node { return this.parseLiteral(value, "Literal"); } @@ -229,6 +240,9 @@ export default (superClass: Class): Class => case tt.bigint: return this.estreeParseBigIntLiteral(this.state.value); + case tt.decimal: + return this.estreeParseDecimalLiteral(this.state.value); + case tt._null: return this.estreeParseLiteral(null); diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index d9b4e324e0a9..4657690d2906 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -1095,6 +1095,8 @@ export default class Tokenizer extends ParserErrors { if (next === charCodes.lowercaseN) { ++this.state.pos; isBigInt = true; + } else if (next === charCodes.lowercaseM) { + throw this.raise(start, Errors.InvalidDecimal); } if (isIdentifierStart(this.input.codePointAt(this.state.pos))) { @@ -1116,6 +1118,8 @@ export default class Tokenizer extends ParserErrors { const start = this.state.pos; let isFloat = false; let isBigInt = false; + let isDecimal = false; + let hasExponent = false; let isOctal = false; if (!startsWithDot && this.readInt(10) === null) { @@ -1157,6 +1161,7 @@ export default class Tokenizer extends ParserErrors { } if (this.readInt(10) === null) this.raise(start, Errors.InvalidNumber); isFloat = true; + hasExponent = true; next = this.input.charCodeAt(this.state.pos); } @@ -1174,18 +1179,32 @@ export default class Tokenizer extends ParserErrors { isBigInt = true; } + if (next === charCodes.lowercaseM) { + this.expectPlugin("decimal", this.state.pos); + if (hasExponent || hasLeadingZero) { + this.raise(start, Errors.InvalidDecimal); + } + ++this.state.pos; + isDecimal = true; + } + if (isIdentifierStart(this.input.codePointAt(this.state.pos))) { throw this.raise(this.state.pos, Errors.NumberIdentifier); } - // remove "_" for numeric literal separator, and "n" for BigInts - const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + // remove "_" for numeric literal separator, and trailing `m` or `n` + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); if (isBigInt) { this.finishToken(tt.bigint, str); return; } + if (isDecimal) { + this.finishToken(tt.decimal, str); + return; + } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); this.finishToken(tt.num, val); } diff --git a/packages/babel-parser/src/tokenizer/types.js b/packages/babel-parser/src/tokenizer/types.js index acc456e9f952..535e16bd1204 100644 --- a/packages/babel-parser/src/tokenizer/types.js +++ b/packages/babel-parser/src/tokenizer/types.js @@ -86,6 +86,7 @@ function createBinop(name: string, binop: number) { export const types: { [name: string]: TokenType } = { num: new TokenType("num", { startsExpr }), bigint: new TokenType("bigint", { startsExpr }), + decimal: new TokenType("decimal", { startsExpr }), regexp: new TokenType("regexp", { startsExpr }), string: new TokenType("string", { startsExpr }), name: new TokenType("name", { startsExpr }), diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/decimal/input.js b/packages/babel-parser/test/fixtures/experimental/_no-plugin/decimal/input.js new file mode 100644 index 000000000000..f72cfcd590f9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/_no-plugin/decimal/input.js @@ -0,0 +1 @@ +.1m; diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/decimal/options.json b/packages/babel-parser/test/fixtures/experimental/_no-plugin/decimal/options.json new file mode 100644 index 000000000000..146c207dab5b --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/_no-plugin/decimal/options.json @@ -0,0 +1,3 @@ +{ + "throws": "This experimental syntax requires enabling the parser plugin: 'decimal' (1:2)" +} diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/decimal-as-property-name/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/decimal-as-property-name/input.js new file mode 100644 index 000000000000..61bed1edcf52 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/decimal-as-property-name/input.js @@ -0,0 +1 @@ +({ 0m: 0, .1m() {}, get 0.2m(){}, set 3m(_){}, async 4m() {}, *.5m() {} }); diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/decimal-as-property-name/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/decimal-as-property-name/output.json new file mode 100644 index 000000000000..fef2948b8d28 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/decimal-as-property-name/output.json @@ -0,0 +1,188 @@ +{ + "type": "File", + "start":0,"end":75,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":75}}, + "program": { + "type": "Program", + "start":0,"end":75,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":75}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":75,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":75}}, + "expression": { + "type": "ObjectExpression", + "start":1,"end":73,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":73}}, + "properties": [ + { + "type": "ObjectProperty", + "start":3,"end":8,"loc":{"start":{"line":1,"column":3},"end":{"line":1,"column":8}}, + "method": false, + "key": { + "type": "DecimalLiteral", + "start":3,"end":5,"loc":{"start":{"line":1,"column":3},"end":{"line":1,"column":5}}, + "extra": { + "rawValue": "0", + "raw": "0m" + }, + "value": "0" + }, + "computed": false, + "shorthand": false, + "value": { + "type": "NumericLiteral", + "start":7,"end":8,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":8}}, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + { + "type": "ObjectMethod", + "start":10,"end":18,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":18}}, + "method": true, + "key": { + "type": "DecimalLiteral", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13}}, + "extra": { + "rawValue": ".1", + "raw": ".1m" + }, + "value": ".1" + }, + "computed": false, + "kind": "method", + "id": null, + "generator": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start":16,"end":18,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":18}}, + "body": [], + "directives": [] + } + }, + { + "type": "ObjectMethod", + "start":20,"end":32,"loc":{"start":{"line":1,"column":20},"end":{"line":1,"column":32}}, + "method": false, + "key": { + "type": "DecimalLiteral", + "start":24,"end":28,"loc":{"start":{"line":1,"column":24},"end":{"line":1,"column":28}}, + "extra": { + "rawValue": "0.2", + "raw": "0.2m" + }, + "value": "0.2" + }, + "computed": false, + "kind": "get", + "id": null, + "generator": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start":30,"end":32,"loc":{"start":{"line":1,"column":30},"end":{"line":1,"column":32}}, + "body": [], + "directives": [] + } + }, + { + "type": "ObjectMethod", + "start":34,"end":45,"loc":{"start":{"line":1,"column":34},"end":{"line":1,"column":45}}, + "method": false, + "key": { + "type": "DecimalLiteral", + "start":38,"end":40,"loc":{"start":{"line":1,"column":38},"end":{"line":1,"column":40}}, + "extra": { + "rawValue": "3", + "raw": "3m" + }, + "value": "3" + }, + "computed": false, + "kind": "set", + "id": null, + "generator": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start":41,"end":42,"loc":{"start":{"line":1,"column":41},"end":{"line":1,"column":42},"identifierName":"_"}, + "name": "_" + } + ], + "body": { + "type": "BlockStatement", + "start":43,"end":45,"loc":{"start":{"line":1,"column":43},"end":{"line":1,"column":45}}, + "body": [], + "directives": [] + } + }, + { + "type": "ObjectMethod", + "start":47,"end":60,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":60}}, + "method": true, + "key": { + "type": "DecimalLiteral", + "start":53,"end":55,"loc":{"start":{"line":1,"column":53},"end":{"line":1,"column":55}}, + "extra": { + "rawValue": "4", + "raw": "4m" + }, + "value": "4" + }, + "computed": false, + "kind": "method", + "id": null, + "generator": false, + "async": true, + "params": [], + "body": { + "type": "BlockStatement", + "start":58,"end":60,"loc":{"start":{"line":1,"column":58},"end":{"line":1,"column":60}}, + "body": [], + "directives": [] + } + }, + { + "type": "ObjectMethod", + "start":62,"end":71,"loc":{"start":{"line":1,"column":62},"end":{"line":1,"column":71}}, + "method": true, + "key": { + "type": "DecimalLiteral", + "start":63,"end":66,"loc":{"start":{"line":1,"column":63},"end":{"line":1,"column":66}}, + "extra": { + "rawValue": ".5", + "raw": ".5m" + }, + "value": ".5" + }, + "computed": false, + "kind": "method", + "id": null, + "generator": true, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start":69,"end":71,"loc":{"start":{"line":1,"column":69},"end":{"line":1,"column":71}}, + "body": [], + "directives": [] + } + } + ], + "extra": { + "parenthesized": true, + "parenStart": 0 + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-binary/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-binary/input.js new file mode 100644 index 000000000000..7e56761a593a --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-binary/input.js @@ -0,0 +1 @@ +0b101011101m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-binary/options.json b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-binary/options.json new file mode 100644 index 000000000000..258615f550b5 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-binary/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "decimal" + ], + "throws": "Invalid decimal (1:0)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-e/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-e/input.js new file mode 100644 index 000000000000..075e884e4629 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-e/input.js @@ -0,0 +1 @@ +2e9m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-e/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-e/output.json new file mode 100644 index 000000000000..1ae22702c120 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-e/output.json @@ -0,0 +1,29 @@ +{ + "type": "File", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "errors": [ + "SyntaxError: Invalid decimal (1:0)" + ], + "program": { + "type": "Program", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "expression": { + "type": "DecimalLiteral", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "extra": { + "rawValue": "2e9", + "raw": "2e9m" + }, + "value": "2e9" + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-hexadecimal/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-hexadecimal/input.js new file mode 100644 index 000000000000..7b5b4d50d8f8 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-hexadecimal/input.js @@ -0,0 +1 @@ +0x16432m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-hexadecimal/options.json b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-hexadecimal/options.json new file mode 100644 index 000000000000..258615f550b5 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-hexadecimal/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "decimal" + ], + "throws": "Invalid decimal (1:0)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-non-octal-decimal-int/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-non-octal-decimal-int/input.js new file mode 100644 index 000000000000..b0d749efc714 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-non-octal-decimal-int/input.js @@ -0,0 +1 @@ +089m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-non-octal-decimal-int/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-non-octal-decimal-int/output.json new file mode 100644 index 000000000000..60c5dbd4f533 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-non-octal-decimal-int/output.json @@ -0,0 +1,29 @@ +{ + "type": "File", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "errors": [ + "SyntaxError: Invalid decimal (1:0)" + ], + "program": { + "type": "Program", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "expression": { + "type": "DecimalLiteral", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "extra": { + "rawValue": "089", + "raw": "089m" + }, + "value": "089" + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-legacy/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-legacy/input.js new file mode 100644 index 000000000000..c3fffee2f367 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-legacy/input.js @@ -0,0 +1 @@ +016432m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-legacy/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-legacy/output.json new file mode 100644 index 000000000000..2c49c0fb79fe --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-legacy/output.json @@ -0,0 +1,29 @@ +{ + "type": "File", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "errors": [ + "SyntaxError: Invalid decimal (1:0)" + ], + "program": { + "type": "Program", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "expression": { + "type": "DecimalLiteral", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "extra": { + "rawValue": "016432", + "raw": "016432m" + }, + "value": "016432" + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-new/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-new/input.js new file mode 100644 index 000000000000..af3272769d9c --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-new/input.js @@ -0,0 +1 @@ +0o16432m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-new/options.json b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-new/options.json new file mode 100644 index 000000000000..258615f550b5 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/invalid-octal-new/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "decimal" + ], + "throws": "Invalid decimal (1:0)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/options.json b/packages/babel-parser/test/fixtures/experimental/decimal/options.json new file mode 100644 index 000000000000..f4a30fe3d611 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["decimal"] +} diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-decimal/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/valid-decimal/input.js new file mode 100644 index 000000000000..762f620bbb4e --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-decimal/input.js @@ -0,0 +1 @@ +1.m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-decimal/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/valid-decimal/output.json new file mode 100644 index 000000000000..9273cf35d352 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-decimal/output.json @@ -0,0 +1,26 @@ +{ + "type": "File", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3}}, + "program": { + "type": "Program", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3}}, + "expression": { + "type": "DecimalLiteral", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3}}, + "extra": { + "rawValue": "1.", + "raw": "1.m" + }, + "value": "1." + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-float-decimal/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/valid-float-decimal/input.js new file mode 100644 index 000000000000..66c782047353 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-float-decimal/input.js @@ -0,0 +1 @@ +100.0m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-float-decimal/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/valid-float-decimal/output.json new file mode 100644 index 000000000000..3ad9bde5c4c2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-float-decimal/output.json @@ -0,0 +1,26 @@ +{ + "type": "File", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "program": { + "type": "Program", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "expression": { + "type": "DecimalLiteral", + "start":0,"end":6,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":6}}, + "extra": { + "rawValue": "100.0", + "raw": "100.0m" + }, + "value": "100.0" + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-float/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/valid-float/input.js new file mode 100644 index 000000000000..f53b99cf2635 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-float/input.js @@ -0,0 +1 @@ +100m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-float/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/valid-float/output.json new file mode 100644 index 000000000000..bc4b9d85d535 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-float/output.json @@ -0,0 +1,26 @@ +{ + "type": "File", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "program": { + "type": "Program", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "expression": { + "type": "DecimalLiteral", + "start":0,"end":4,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":4}}, + "extra": { + "rawValue": "100", + "raw": "100m" + }, + "value": "100" + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-large/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/valid-large/input.js new file mode 100644 index 000000000000..8d9ca018cf89 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-large/input.js @@ -0,0 +1 @@ +9223372036854775807m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-large/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/valid-large/output.json new file mode 100644 index 000000000000..084218fa1e9b --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-large/output.json @@ -0,0 +1,26 @@ +{ + "type": "File", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "program": { + "type": "Program", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "expression": { + "type": "DecimalLiteral", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "extra": { + "rawValue": "9223372036854775807", + "raw": "9223372036854775807m" + }, + "value": "9223372036854775807" + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-small/input.js b/packages/babel-parser/test/fixtures/experimental/decimal/valid-small/input.js new file mode 100644 index 000000000000..d36e0ec8ac19 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-small/input.js @@ -0,0 +1 @@ +100.m diff --git a/packages/babel-parser/test/fixtures/experimental/decimal/valid-small/output.json b/packages/babel-parser/test/fixtures/experimental/decimal/valid-small/output.json new file mode 100644 index 000000000000..29cf5bca6c5f --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decimal/valid-small/output.json @@ -0,0 +1,26 @@ +{ + "type": "File", + "start":0,"end":5,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":5}}, + "program": { + "type": "Program", + "start":0,"end":5,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":5}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":5,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":5}}, + "expression": { + "type": "DecimalLiteral", + "start":0,"end":5,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":5}}, + "extra": { + "rawValue": "100.", + "raw": "100.m" + }, + "value": "100." + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/typings/babel-parser.d.ts b/packages/babel-parser/typings/babel-parser.d.ts index bd406708a8fa..60fabcc52510 100644 --- a/packages/babel-parser/typings/babel-parser.d.ts +++ b/packages/babel-parser/typings/babel-parser.d.ts @@ -100,6 +100,7 @@ export type ParserPlugin = 'classPrivateMethods' | 'classPrivateProperties' | 'classProperties' | + 'decimal' | 'decorators' | 'decorators-legacy' | 'doExpressions' | diff --git a/packages/babel-plugin-syntax-decimal/.npmignore b/packages/babel-plugin-syntax-decimal/.npmignore new file mode 100644 index 000000000000..f9806945836e --- /dev/null +++ b/packages/babel-plugin-syntax-decimal/.npmignore @@ -0,0 +1,3 @@ +src +test +*.log diff --git a/packages/babel-plugin-syntax-decimal/README.md b/packages/babel-plugin-syntax-decimal/README.md new file mode 100644 index 000000000000..b0efd10dff31 --- /dev/null +++ b/packages/babel-plugin-syntax-decimal/README.md @@ -0,0 +1,19 @@ +# @babel/plugin-syntax-decimal + +> Allow parsing of decimal + +See our website [@babel/plugin-syntax-decimal](https://babeljs.io/docs/en/next/babel-plugin-syntax-decimal.html) for more information. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/plugin-syntax-decimal +``` + +or using yarn: + +```sh +yarn add @babel/plugin-syntax-decimal --dev +``` diff --git a/packages/babel-plugin-syntax-decimal/package.json b/packages/babel-plugin-syntax-decimal/package.json new file mode 100644 index 000000000000..47902609778f --- /dev/null +++ b/packages/babel-plugin-syntax-decimal/package.json @@ -0,0 +1,27 @@ +{ + "name": "@babel/plugin-syntax-decimal", + "version": "7.10.1", + "description": "Allow parsing of decimal", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-plugin-syntax-decimal" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "lib/index.js", + "exports": { + ".": "./lib/index.js" + }, + "keywords": [ + "babel-plugin" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } +} diff --git a/packages/babel-plugin-syntax-decimal/src/index.js b/packages/babel-plugin-syntax-decimal/src/index.js new file mode 100644 index 000000000000..6e7562d73e5e --- /dev/null +++ b/packages/babel-plugin-syntax-decimal/src/index.js @@ -0,0 +1,13 @@ +import { declare } from "@babel/helper-plugin-utils"; + +export default declare(api => { + api.assertVersion(7); + + return { + name: "syntax-decimal", + + manipulateOptions(opts, parserOpts) { + parserOpts.plugins.push("decimal"); + }, + }; +}); diff --git a/packages/babel-standalone/package.json b/packages/babel-standalone/package.json index 6bc21815cf0d..948ef473b451 100644 --- a/packages/babel-standalone/package.json +++ b/packages/babel-standalone/package.json @@ -37,6 +37,7 @@ "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0", "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-decimal": "^7.10.1", "@babel/plugin-syntax-decorators": "^7.10.4", "@babel/plugin-syntax-do-expressions": "^7.10.4", "@babel/plugin-syntax-export-default-from": "^7.10.4", diff --git a/packages/babel-standalone/scripts/pluginConfig.json b/packages/babel-standalone/scripts/pluginConfig.json index 9127553a4b26..2b2c3f3a4219 100644 --- a/packages/babel-standalone/scripts/pluginConfig.json +++ b/packages/babel-standalone/scripts/pluginConfig.json @@ -2,6 +2,7 @@ "external-helpers", "syntax-async-generators", "syntax-class-properties", + "syntax-decimal", "syntax-decorators", "syntax-do-expressions", "syntax-export-default-from", diff --git a/packages/babel-standalone/src/generated/plugins.js b/packages/babel-standalone/src/generated/plugins.js index 3ddd12be9731..757d39e53cc9 100644 --- a/packages/babel-standalone/src/generated/plugins.js +++ b/packages/babel-standalone/src/generated/plugins.js @@ -6,6 +6,7 @@ import externalHelpers from "@babel/plugin-external-helpers"; import syntaxAsyncGenerators from "@babel/plugin-syntax-async-generators"; import syntaxClassProperties from "@babel/plugin-syntax-class-properties"; +import syntaxDecimal from "@babel/plugin-syntax-decimal"; import syntaxDecorators from "@babel/plugin-syntax-decorators"; import syntaxDoExpressions from "@babel/plugin-syntax-do-expressions"; import syntaxExportDefaultFrom from "@babel/plugin-syntax-export-default-from"; @@ -98,6 +99,7 @@ export { externalHelpers, syntaxAsyncGenerators, syntaxClassProperties, + syntaxDecimal, syntaxDecorators, syntaxDoExpressions, syntaxExportDefaultFrom, @@ -191,6 +193,7 @@ export const all = { "external-helpers": externalHelpers, "syntax-async-generators": syntaxAsyncGenerators, "syntax-class-properties": syntaxClassProperties, + "syntax-decimal": syntaxDecimal, "syntax-decorators": syntaxDecorators, "syntax-do-expressions": syntaxDoExpressions, "syntax-export-default-from": syntaxExportDefaultFrom, diff --git a/packages/babel-standalone/src/preset-stage-1.js b/packages/babel-standalone/src/preset-stage-1.js index c11755b6681d..0e0cd18c138c 100644 --- a/packages/babel-standalone/src/preset-stage-1.js +++ b/packages/babel-standalone/src/preset-stage-1.js @@ -21,6 +21,7 @@ export default (_: any, opts: Object = {}) => { ], ], plugins: [ + babelPlugins.syntaxDecimal, [ babelPlugins.syntaxModuleAttributes, { version: moduleAttributesVersion }, diff --git a/packages/babel-standalone/test/preset-stage-1.test.js b/packages/babel-standalone/test/preset-stage-1.test.js new file mode 100644 index 000000000000..fbcb49b6ff0b --- /dev/null +++ b/packages/babel-standalone/test/preset-stage-1.test.js @@ -0,0 +1,13 @@ +(process.env.TEST_TYPE === "cov" ? describe.skip : describe)( + "stage-1 preset", + () => { + const Babel = require("../babel"); + + it("should parser decimal literal", () => { + const output = Babel.transform("0.3m", { + presets: [["stage-1", { decoratorsBeforeExport: true }]], + }).code; + expect(output).toBe("0.3m;"); + }); + }, +); diff --git a/packages/babel-types/src/asserts/generated/index.js b/packages/babel-types/src/asserts/generated/index.js index 9ce3c1565f90..4492e04f4499 100644 --- a/packages/babel-types/src/asserts/generated/index.js +++ b/packages/babel-types/src/asserts/generated/index.js @@ -800,6 +800,9 @@ export function assertRecordExpression(node: Object, opts?: Object = {}): void { export function assertTupleExpression(node: Object, opts?: Object = {}): void { assert("TupleExpression", node, opts); } +export function assertDecimalLiteral(node: Object, opts?: Object = {}): void { + assert("DecimalLiteral", node, opts); +} export function assertTSParameterProperty( node: Object, opts?: Object = {}, diff --git a/packages/babel-types/src/builders/generated/index.js b/packages/babel-types/src/builders/generated/index.js index ec92b4687377..5e9fe9292109 100644 --- a/packages/babel-types/src/builders/generated/index.js +++ b/packages/babel-types/src/builders/generated/index.js @@ -730,6 +730,10 @@ export function tupleExpression(...args: Array): Object { return builder("TupleExpression", ...args); } export { tupleExpression as TupleExpression }; +export function decimalLiteral(...args: Array): Object { + return builder("DecimalLiteral", ...args); +} +export { decimalLiteral as DecimalLiteral }; export function tsParameterProperty(...args: Array): Object { return builder("TSParameterProperty", ...args); } diff --git a/packages/babel-types/src/definitions/experimental.js b/packages/babel-types/src/definitions/experimental.js index c3adc3395094..984e1897da3d 100644 --- a/packages/babel-types/src/definitions/experimental.js +++ b/packages/babel-types/src/definitions/experimental.js @@ -235,3 +235,13 @@ defineType("TupleExpression", { visitor: ["elements"], aliases: ["Expression"], }); + +defineType("DecimalLiteral", { + builder: ["value"], + fields: { + value: { + validate: assertValueType("string"), + }, + }, + aliases: ["Expression", "Pureish", "Literal", "Immutable"], +}); diff --git a/packages/babel-types/src/validators/generated/index.js b/packages/babel-types/src/validators/generated/index.js index 8962a809f033..8b60e308674b 100644 --- a/packages/babel-types/src/validators/generated/index.js +++ b/packages/babel-types/src/validators/generated/index.js @@ -2573,6 +2573,20 @@ export function isTupleExpression(node: ?Object, opts?: Object): boolean { return false; } +export function isDecimalLiteral(node: ?Object, opts?: Object): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "DecimalLiteral") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} export function isTSParameterProperty(node: ?Object, opts?: Object): boolean { if (!node) return false; @@ -3504,6 +3518,7 @@ export function isExpression(node: ?Object, opts?: Object): boolean { "DoExpression" === nodeType || "RecordExpression" === nodeType || "TupleExpression" === nodeType || + "DecimalLiteral" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || @@ -3908,6 +3923,7 @@ export function isPureish(node: ?Object, opts?: Object): boolean { "RegExpLiteral" === nodeType || "ArrowFunctionExpression" === nodeType || "BigIntLiteral" === nodeType || + "DecimalLiteral" === nodeType || (nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) ) { if (typeof opts === "undefined") { @@ -4042,6 +4058,7 @@ export function isLiteral(node: ?Object, opts?: Object): boolean { "RegExpLiteral" === nodeType || "TemplateLiteral" === nodeType || "BigIntLiteral" === nodeType || + "DecimalLiteral" === nodeType || (nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) ) { if (typeof opts === "undefined") { @@ -4074,6 +4091,7 @@ export function isImmutable(node: ?Object, opts?: Object): boolean { "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType || + "DecimalLiteral" === nodeType || (nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) ) { if (typeof opts === "undefined") { From d7347fb8bd902b358d308feea963849bd46ec35f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 29 Jul 2020 16:46:29 -0400 Subject: [PATCH 32/90] eslint-parser: ES2020 features (#11815) * chore: update espree test on nullish coalescing * feat: add optional chaining support * fix: adapt to estree AST shape * chore: update lockfile * add estree optional-chaining test fixtures * address review comments * chore: simplify smoke test * export * support Co-authored-by: Brian Ng --- eslint/babel-eslint-parser/package.json | 4 +- .../src/convert/convertAST.js | 38 ++++++++------ .../src/convert/convertTokens.js | 7 ++- .../babel-eslint-parser/src/visitor-keys.js | 5 +- eslint/babel-eslint-parser/test/index.js | 35 ++++--------- .../src/rules/no-unused-expressions.js | 3 +- packages/babel-parser/src/plugins/estree.js | 36 +++++++++++-- .../optional-call-call/input.js | 1 + .../optional-call-call/output.json | 41 +++++++++++++++ .../optional-call-chained-call/input.js | 1 + .../optional-call-chained-call/output.json | 37 ++++++++++++++ .../optional-call-chained-member/input.js | 1 + .../optional-call-chained-member/output.json | 42 +++++++++++++++ .../optional-call-member/input.js | 1 + .../optional-call-member/output.json | 46 +++++++++++++++++ .../optional-call-optional-call/input.js | 1 + .../optional-call-optional-call/output.json | 37 ++++++++++++++ .../optional-call-optional-member/input.js | 1 + .../optional-call-optional-member/output.json | 42 +++++++++++++++ .../optional-chaining/optional-call/input.js | 1 + .../optional-call/output.json | 31 +++++++++++ .../optional-member-call/input.js | 1 + .../optional-member-call/output.json | 46 +++++++++++++++++ .../optional-member-chained-call/input.js | 1 + .../optional-member-chained-call/output.json | 42 +++++++++++++++ .../optional-member-chained-member/input.js | 1 + .../output.json | 47 +++++++++++++++++ .../optional-member-member/input.js | 1 + .../optional-member-member/output.json | 51 +++++++++++++++++++ .../optional-member-optional-call/input.js | 1 + .../optional-member-optional-call/output.json | 42 +++++++++++++++ .../optional-member-optional-member/input.js | 1 + .../output.json | 47 +++++++++++++++++ .../optional-member/input.js | 1 + .../optional-member/output.json | 36 +++++++++++++ yarn.lock | 25 +++++---- 36 files changed, 692 insertions(+), 62 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-call/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-call/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-call/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-call/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-member/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-member/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-member/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-member/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-call/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-call/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-member/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-member/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-call/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-call/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-call/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-call/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-member/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-member/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-member/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-member/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-call/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-call/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-member/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-member/output.json create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member/input.js create mode 100644 packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member/output.json diff --git a/eslint/babel-eslint-parser/package.json b/eslint/babel-eslint-parser/package.json index 4874f4a06289..81bcaf965c6f 100644 --- a/eslint/babel-eslint-parser/package.json +++ b/eslint/babel-eslint-parser/package.json @@ -23,8 +23,8 @@ "eslint": ">=6.0.0" }, "dependencies": { - "eslint-scope": "5.0.0", - "eslint-visitor-keys": "^1.1.0", + "eslint-scope": "5.1.0", + "eslint-visitor-keys": "^1.3.0", "semver": "^6.3.0" }, "devDependencies": { diff --git a/eslint/babel-eslint-parser/src/convert/convertAST.js b/eslint/babel-eslint-parser/src/convert/convertAST.js index 4cee65d0f6f7..d44cce84b203 100644 --- a/eslint/babel-eslint-parser/src/convert/convertAST.js +++ b/eslint/babel-eslint-parser/src/convert/convertAST.js @@ -1,4 +1,5 @@ import { types as t, traverse } from "@babel/core"; +import VISITOR_KEYS from "../visitor-keys"; function convertNodes(ast, code) { const astTransformVisitor = { @@ -81,21 +82,28 @@ function convertNodes(ast, code) { }; const state = { source: code }; - // Monkey patch visitor keys in order to be able to traverse the estree nodes - t.VISITOR_KEYS.Property = t.VISITOR_KEYS.ObjectProperty; - t.VISITOR_KEYS.MethodDefinition = [ - "key", - "value", - "decorators", - "returnType", - "typeParameters", - ]; - - traverse(ast, astTransformVisitor, null, state); - - // These can be safely deleted because they are not defined in the original visitor keys. - delete t.VISITOR_KEYS.Property; - delete t.VISITOR_KEYS.MethodDefinition; + const oldExportAllDeclarationKeys = t.VISITOR_KEYS.ExportAllDeclaration; + + try { + // Monkey patch visitor keys in order to be able to traverse the estree nodes + t.VISITOR_KEYS.ChainExpression = VISITOR_KEYS.ChainExpression; + t.VISITOR_KEYS.Property = VISITOR_KEYS.Property; + t.VISITOR_KEYS.MethodDefinition = VISITOR_KEYS.MethodDefinition; + + // Make sure we visit `exported` key to remove `identifierName` from loc node + t.VISITOR_KEYS.ExportAllDeclaration = t.VISITOR_KEYS.ExportAllDeclaration.concat( + "exported", + ); + + traverse(ast, astTransformVisitor, null, state); + } finally { + // These can be safely deleted because they are not defined in the original visitor keys. + delete t.VISITOR_KEYS.ChainExpression; + delete t.VISITOR_KEYS.MethodDefinition; + delete t.VISITOR_KEYS.Property; + + t.VISITOR_KEYS.ExportAllDeclaration = oldExportAllDeclarationKeys; + } } function convertProgramNode(ast) { diff --git a/eslint/babel-eslint-parser/src/convert/convertTokens.js b/eslint/babel-eslint-parser/src/convert/convertTokens.js index 402f02ebe6c6..0f5f43fb2386 100644 --- a/eslint/babel-eslint-parser/src/convert/convertTokens.js +++ b/eslint/babel-eslint-parser/src/convert/convertTokens.js @@ -115,7 +115,6 @@ function convertToken(token, source) { type === tt.incDec || type === tt.colon || type === tt.question || - type === tt.questionDot || type === tt.template || type === tt.backQuote || type === tt.dollarBraceL || @@ -173,6 +172,12 @@ function convertToken(token, source) { } else if (type === tt.bigint) { token.type = "Numeric"; token.value = `${token.value}n`; + } else if (type === tt.questionDot) { + token.value = type.label; + } + if (typeof token.type !== "string") { + // Acorn does not have rightAssociative + delete token.type.rightAssociative; } return token; diff --git a/eslint/babel-eslint-parser/src/visitor-keys.js b/eslint/babel-eslint-parser/src/visitor-keys.js index 6676a86602e3..9908664dced8 100644 --- a/eslint/babel-eslint-parser/src/visitor-keys.js +++ b/eslint/babel-eslint-parser/src/visitor-keys.js @@ -1,10 +1,13 @@ import { types as t } from "@babel/core"; import { KEYS as ESLINT_VISITOR_KEYS } from "eslint-visitor-keys"; -const { VISITOR_KEYS: BABEL_VISITOR_KEYS } = t; +/*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/ +const { ExportAllDeclaration, ...BABEL_VISITOR_KEYS } = t.VISITOR_KEYS; export default Object.assign( { + ChainExpression: ESLINT_VISITOR_KEYS.ChainExpression, + ExportAllDeclaration: ESLINT_VISITOR_KEYS.ExportAllDeclaration, Literal: ESLINT_VISITOR_KEYS.Literal, MethodDefinition: ["decorators"].concat( ESLINT_VISITOR_KEYS.MethodDefinition, diff --git a/eslint/babel-eslint-parser/test/index.js b/eslint/babel-eslint-parser/test/index.js index bea8b50ef894..e662efa3aa71 100644 --- a/eslint/babel-eslint-parser/test/index.js +++ b/eslint/babel-eslint-parser/test/index.js @@ -253,6 +253,10 @@ describe("Babel and Espree", () => { parseAndAssertSame('import "foo";'); }); + it("import meta", () => { + parseAndAssertSame("const url = import.meta.url"); + }); + it("export default class declaration", () => { parseAndAssertSame("export default class Foo {}"); }); @@ -273,15 +277,8 @@ describe("Babel and Espree", () => { parseAndAssertSame('export * from "foo";'); }); - // Espree doesn't support `export * as ns` yet it("export * as ns", () => { - const code = 'export * as Foo from "foo";'; - const babylonAST = parseForESLint(code, { - eslintVisitorKeys: true, - eslintScopeManager: true, - babelOptions: BABEL_OPTIONS, - }).ast; - expect(babylonAST.tokens[1].type).toEqual("Punctuator"); + parseAndAssertSame('export * as Foo from "foo";'); }); it("export named", () => { @@ -292,26 +289,12 @@ describe("Babel and Espree", () => { parseAndAssertSame("var foo = 1;export { foo as bar };"); }); - // Espree doesn't support the optional chaining operator yet - it("optional chaining operator (token)", () => { - const code = "foo?.bar"; - const babylonAST = parseForESLint(code, { - eslintVisitorKeys: true, - eslintScopeManager: true, - babelOptions: BABEL_OPTIONS, - }).ast; - expect(babylonAST.tokens[1].type).toEqual("Punctuator"); + it("optional chaining operator", () => { + parseAndAssertSame("foo?.bar?.().qux()"); }); - // Espree doesn't support the nullish coalescing operator yet - it("nullish coalescing operator (token)", () => { - const code = "foo ?? bar"; - const babylonAST = parseForESLint(code, { - eslintVisitorKeys: true, - eslintScopeManager: true, - babelOptions: BABEL_OPTIONS, - }).ast; - expect(babylonAST.tokens[1].type).toEqual("Punctuator"); + it("nullish coalescing operator", () => { + parseAndAssertSame("foo ?? bar"); }); // Espree doesn't support the pipeline operator yet diff --git a/eslint/babel-eslint-plugin/src/rules/no-unused-expressions.js b/eslint/babel-eslint-plugin/src/rules/no-unused-expressions.js index a313b0743245..455153474668 100644 --- a/eslint/babel-eslint-plugin/src/rules/no-unused-expressions.js +++ b/eslint/babel-eslint-plugin/src/rules/no-unused-expressions.js @@ -53,7 +53,8 @@ function isOptionalCallExpression(node) { return ( !!node && node.type === "ExpressionStatement" && - node.expression.type === "OptionalCallExpression" + node.expression.type === "ChainExpression" && + node.expression.expression.type === "CallExpression" ); } diff --git a/packages/babel-parser/src/plugins/estree.js b/packages/babel-parser/src/plugins/estree.js index fce302d53047..86c5872d43b0 100644 --- a/packages/babel-parser/src/plugins/estree.js +++ b/packages/babel-parser/src/plugins/estree.js @@ -388,8 +388,6 @@ export default (superClass: Class): Class => delete node.arguments; // $FlowIgnore - callee isn't optional in the type definition delete node.callee; - } else if (node.type === "CallExpression") { - (node: N.Node).optional = false; } return node; @@ -431,10 +429,38 @@ export default (superClass: Class): Class => return node; } - parseSubscript(...args) { - const node = super.parseSubscript(...args); + parseSubscript( + base: N.Expression, + startPos: number, + startLoc: Position, + noCalls: ?boolean, + state: N.ParseSubscriptState, + ) { + const node = super.parseSubscript( + base, + startPos, + startLoc, + noCalls, + state, + ); - if (node.type === "MemberExpression") { + if (state.optionalChainMember) { + // https://github.com/estree/estree/blob/master/es2020.md#chainexpression + if ( + node.type === "OptionalMemberExpression" || + node.type === "OptionalCallExpression" + ) { + node.type = node.type.substring(8); // strip Optional prefix + } + if (state.stop) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNode(chain, "ChainExpression"); + } + } else if ( + node.type === "MemberExpression" || + node.type === "CallExpression" + ) { node.optional = false; } diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-call/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-call/input.js new file mode 100644 index 000000000000..b3d7b711391b --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-call/input.js @@ -0,0 +1 @@ +(foo?.())() diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-call/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-call/output.json new file mode 100644 index 000000000000..5c349122bede --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-call/output.json @@ -0,0 +1,41 @@ +{ + "type": "File", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "program": { + "type": "Program", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "expression": { + "type": "CallExpression", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "callee": { + "type": "ChainExpression", + "start":1,"end":8,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":8}}, + "expression": { + "type": "CallExpression", + "start":1,"end":8,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":8}}, + "callee": { + "type": "Identifier", + "start":1,"end":4,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":4},"identifierName":"foo"}, + "name": "foo" + }, + "optional": true, + "arguments": [] + }, + "extra": { + "parenthesized": true, + "parenStart": 0 + } + }, + "arguments": [], + "optional": false + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-call/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-call/input.js new file mode 100644 index 000000000000..2b31720258c8 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-call/input.js @@ -0,0 +1 @@ +foo?.()() diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-call/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-call/output.json new file mode 100644 index 000000000000..c09278489170 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-call/output.json @@ -0,0 +1,37 @@ +{ + "type": "File", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "program": { + "type": "Program", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "expression": { + "type": "CallExpression", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "callee": { + "type": "CallExpression", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "callee": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "optional": true, + "arguments": [] + }, + "optional": false, + "arguments": [] + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-member/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-member/input.js new file mode 100644 index 000000000000..807074cdb89a --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-member/input.js @@ -0,0 +1 @@ +foo?.().bar diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-member/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-member/output.json new file mode 100644 index 000000000000..9369e8f489a2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-chained-member/output.json @@ -0,0 +1,42 @@ +{ + "type": "File", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "program": { + "type": "Program", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "expression": { + "type": "MemberExpression", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "object": { + "type": "CallExpression", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "callee": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "optional": true, + "arguments": [] + }, + "property": { + "type": "Identifier", + "start":8,"end":11,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":11},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": false + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-member/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-member/input.js new file mode 100644 index 000000000000..1d1d847e00d2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-member/input.js @@ -0,0 +1 @@ +(foo?.()).bar diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-member/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-member/output.json new file mode 100644 index 000000000000..0fe7f00909fd --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-member/output.json @@ -0,0 +1,46 @@ +{ + "type": "File", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "program": { + "type": "Program", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "expression": { + "type": "MemberExpression", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "object": { + "type": "ChainExpression", + "start":1,"end":8,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":8}}, + "expression": { + "type": "CallExpression", + "start":1,"end":8,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":8}}, + "callee": { + "type": "Identifier", + "start":1,"end":4,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":4},"identifierName":"foo"}, + "name": "foo" + }, + "optional": true, + "arguments": [] + }, + "extra": { + "parenthesized": true, + "parenStart": 0 + } + }, + "property": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": false + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-call/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-call/input.js new file mode 100644 index 000000000000..37fc6ab1c9ea --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-call/input.js @@ -0,0 +1 @@ +foo?.()?.() diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-call/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-call/output.json new file mode 100644 index 000000000000..5f3a6de4284b --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-call/output.json @@ -0,0 +1,37 @@ +{ + "type": "File", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "program": { + "type": "Program", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "expression": { + "type": "CallExpression", + "start":0,"end":11,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":11}}, + "callee": { + "type": "CallExpression", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "callee": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "optional": true, + "arguments": [] + }, + "optional": true, + "arguments": [] + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-member/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-member/input.js new file mode 100644 index 000000000000..224bf8cbcf4a --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-member/input.js @@ -0,0 +1 @@ +foo?.()?.bar diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-member/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-member/output.json new file mode 100644 index 000000000000..e80ce5e918cd --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call-optional-member/output.json @@ -0,0 +1,42 @@ +{ + "type": "File", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "program": { + "type": "Program", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "expression": { + "type": "MemberExpression", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "object": { + "type": "CallExpression", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "callee": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "optional": true, + "arguments": [] + }, + "property": { + "type": "Identifier", + "start":9,"end":12,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":12},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": true + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call/input.js new file mode 100644 index 000000000000..58728f9a32ee --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call/input.js @@ -0,0 +1 @@ +foo?.() diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call/output.json new file mode 100644 index 000000000000..fa463157eecd --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-call/output.json @@ -0,0 +1,31 @@ +{ + "type": "File", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "program": { + "type": "Program", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "expression": { + "type": "CallExpression", + "start":0,"end":7,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":7}}, + "callee": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "optional": true, + "arguments": [] + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-call/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-call/input.js new file mode 100644 index 000000000000..36546dc139c4 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-call/input.js @@ -0,0 +1 @@ +(foo?.bar)() diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-call/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-call/output.json new file mode 100644 index 000000000000..71ea0bec2f4d --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-call/output.json @@ -0,0 +1,46 @@ +{ + "type": "File", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "program": { + "type": "Program", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "expression": { + "type": "CallExpression", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "callee": { + "type": "ChainExpression", + "start":1,"end":9,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":9}}, + "expression": { + "type": "MemberExpression", + "start":1,"end":9,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":9}}, + "object": { + "type": "Identifier", + "start":1,"end":4,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":4},"identifierName":"foo"}, + "name": "foo" + }, + "property": { + "type": "Identifier", + "start":6,"end":9,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":9},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": true + }, + "extra": { + "parenthesized": true, + "parenStart": 0 + } + }, + "arguments": [], + "optional": false + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-call/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-call/input.js new file mode 100644 index 000000000000..62587bbd256a --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-call/input.js @@ -0,0 +1 @@ +foo?.bar() diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-call/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-call/output.json new file mode 100644 index 000000000000..b09b5792ae77 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-call/output.json @@ -0,0 +1,42 @@ +{ + "type": "File", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "program": { + "type": "Program", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "expression": { + "type": "CallExpression", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "callee": { + "type": "MemberExpression", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "object": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "property": { + "type": "Identifier", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": true + }, + "optional": false, + "arguments": [] + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-member/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-member/input.js new file mode 100644 index 000000000000..bb1224f5f2d2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-member/input.js @@ -0,0 +1 @@ +foo?.bar.qux diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-member/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-member/output.json new file mode 100644 index 000000000000..ad36a4f6b33d --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-chained-member/output.json @@ -0,0 +1,47 @@ +{ + "type": "File", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "program": { + "type": "Program", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "expression": { + "type": "MemberExpression", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "object": { + "type": "MemberExpression", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "object": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "property": { + "type": "Identifier", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": true + }, + "property": { + "type": "Identifier", + "start":9,"end":12,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":12},"identifierName":"qux"}, + "name": "qux" + }, + "computed": false, + "optional": false + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-member/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-member/input.js new file mode 100644 index 000000000000..92d4b9c2e976 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-member/input.js @@ -0,0 +1 @@ +(foo?.bar).qux diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-member/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-member/output.json new file mode 100644 index 000000000000..0e9d26ac4e78 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-member/output.json @@ -0,0 +1,51 @@ +{ + "type": "File", + "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, + "program": { + "type": "Program", + "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, + "expression": { + "type": "MemberExpression", + "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, + "object": { + "type": "ChainExpression", + "start":1,"end":9,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":9}}, + "expression": { + "type": "MemberExpression", + "start":1,"end":9,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":9}}, + "object": { + "type": "Identifier", + "start":1,"end":4,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":4},"identifierName":"foo"}, + "name": "foo" + }, + "property": { + "type": "Identifier", + "start":6,"end":9,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":9},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": true + }, + "extra": { + "parenthesized": true, + "parenStart": 0 + } + }, + "property": { + "type": "Identifier", + "start":11,"end":14,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":14},"identifierName":"qux"}, + "name": "qux" + }, + "computed": false, + "optional": false + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-call/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-call/input.js new file mode 100644 index 000000000000..5585979981d2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-call/input.js @@ -0,0 +1 @@ +foo?.bar?.() diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-call/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-call/output.json new file mode 100644 index 000000000000..c6d55b054ad1 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-call/output.json @@ -0,0 +1,42 @@ +{ + "type": "File", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "program": { + "type": "Program", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "expression": { + "type": "CallExpression", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "callee": { + "type": "MemberExpression", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "object": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "property": { + "type": "Identifier", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": true + }, + "optional": true, + "arguments": [] + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-member/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-member/input.js new file mode 100644 index 000000000000..732b09bd4eed --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-member/input.js @@ -0,0 +1 @@ +foo?.bar?.qux diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-member/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-member/output.json new file mode 100644 index 000000000000..0bbc05854982 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member-optional-member/output.json @@ -0,0 +1,47 @@ +{ + "type": "File", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "program": { + "type": "Program", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "expression": { + "type": "MemberExpression", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "object": { + "type": "MemberExpression", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "object": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "property": { + "type": "Identifier", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": true + }, + "property": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"qux"}, + "name": "qux" + }, + "computed": false, + "optional": true + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member/input.js b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member/input.js new file mode 100644 index 000000000000..6ed5c83b9389 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member/input.js @@ -0,0 +1 @@ +foo?.bar diff --git a/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member/output.json b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member/output.json new file mode 100644 index 000000000000..2429cf521f27 --- /dev/null +++ b/packages/babel-parser/test/fixtures/estree/optional-chaining/optional-member/output.json @@ -0,0 +1,36 @@ +{ + "type": "File", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "program": { + "type": "Program", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "expression": { + "type": "ChainExpression", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "expression": { + "type": "MemberExpression", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "object": { + "type": "Identifier", + "start":0,"end":3,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":3},"identifierName":"foo"}, + "name": "foo" + }, + "property": { + "type": "Identifier", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8},"identifierName":"bar"}, + "name": "bar" + }, + "computed": false, + "optional": true + } + } + } + ] + } +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index be37146a7a73..f9a88e060136 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2120,12 +2120,7 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.0.0, acorn@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== - -acorn@^7.1.1: +acorn@^7.0.0, acorn@^7.1.0, acorn@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== @@ -4365,7 +4360,7 @@ eslint-plugin-prettier@^3.1.2: dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@5.0.0, eslint-scope@^5.0.0: +eslint-scope@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== @@ -4373,6 +4368,14 @@ eslint-scope@5.0.0, eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@5.1.0, eslint-scope@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-utils@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" @@ -4380,10 +4383,10 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint@^6.8.0: version "6.8.0" From 5b4b3a3e4a8ea7a248b309516040cfbc2822bedc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 30 Jun 2020 01:04:39 +0200 Subject: [PATCH 33/90] TypeScript 4.0: Allow spread in the middle of tuples (#11753) --- .../src/plugins/typescript/index.js | 11 +--- .../types/tuple-rest-invalid/input.ts | 1 - .../types/tuple-rest-invalid/options.json | 5 -- .../types/tuple-rest-not-last/input.ts | 1 + .../types/tuple-rest-not-last/options.json | 4 ++ .../types/tuple-rest-not-last/output.json | 62 +++++++++++++++++++ 6 files changed, 69 insertions(+), 15 deletions(-) delete mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-rest-invalid/input.ts delete mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-rest-invalid/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/output.json diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index 6309c8ea8fcb..dd74f5c32cec 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -630,9 +630,8 @@ export default (superClass: Class): Class => /* skipFirstToken */ false, ); - // Validate the elementTypes to ensure: - // No mandatory elements may follow optional elements - // If there's a rest element, it must be at the end of the tuple + // Validate the elementTypes to ensure that no mandatory elements + // follow optional elements let seenOptionalElement = false; node.elementTypes.forEach(elementNode => { if (elementNode.type === "TSOptionalType") { @@ -651,12 +650,6 @@ export default (superClass: Class): Class => const restNode: N.TsRestType = this.startNode(); this.next(); // skips ellipsis restNode.typeAnnotation = this.tsParseType(); - if ( - this.match(tt.comma) && - this.lookaheadCharCode() !== charCodes.rightSquareBracket - ) { - this.raiseRestNotLast(this.state.start); - } return this.finishNode(restNode, "TSRestType"); } diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-invalid/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-invalid/input.ts deleted file mode 100644 index 2bfeae2e87eb..000000000000 --- a/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-invalid/input.ts +++ /dev/null @@ -1 +0,0 @@ -let x: [...number[], string] diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-invalid/options.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-invalid/options.json deleted file mode 100644 index 82b4f09fc940..000000000000 --- a/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-invalid/options.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sourceType": "module", - "plugins": ["typescript"], - "throws": "Rest element must be last element (1:19)" -} diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/input.ts new file mode 100644 index 000000000000..050a60b540ea --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/input.ts @@ -0,0 +1 @@ +let x: [...[number, string], string] diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/options.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/options.json new file mode 100644 index 000000000000..fe9bffaa5e1a --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript"] +} diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/output.json new file mode 100644 index 000000000000..5d0076a745ba --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-rest-not-last/output.json @@ -0,0 +1,62 @@ +{ + "type": "File", + "start":0,"end":36,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "program": { + "type": "Program", + "start":0,"end":36,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":36,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":36,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":36}}, + "id": { + "type": "Identifier", + "start":4,"end":36,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":36},"identifierName":"x"}, + "name": "x", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":5,"end":36,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":36}}, + "typeAnnotation": { + "type": "TSTupleType", + "start":7,"end":36,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":36}}, + "elementTypes": [ + { + "type": "TSRestType", + "start":8,"end":27,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":27}}, + "typeAnnotation": { + "type": "TSTupleType", + "start":11,"end":27,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":27}}, + "elementTypes": [ + { + "type": "TSNumberKeyword", + "start":12,"end":18,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":18}} + }, + { + "type": "TSStringKeyword", + "start":20,"end":26,"loc":{"start":{"line":1,"column":20},"end":{"line":1,"column":26}} + } + ] + } + }, + { + "type": "TSStringKeyword", + "start":29,"end":35,"loc":{"start":{"line":1,"column":29},"end":{"line":1,"column":35}} + } + ] + } + } + }, + "init": null + } + ], + "kind": "let" + } + ], + "directives": [] + } +} \ No newline at end of file From 8a1d7e41f216bc8c74ba90d9d0c79305b98def0f Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 30 Jun 2020 03:40:20 -0500 Subject: [PATCH 34/90] Allow unknown/any in TS catch clause param (#11755) --- Makefile | 2 +- packages/babel-parser/src/parser/statement.js | 15 +- .../src/plugins/typescript/index.js | 11 + .../typescript/catch-clause/unknown/input.ts | 9 + .../catch-clause/unknown/output.json | 278 ++++++++++++++++++ scripts/parser-tests/typescript/allowlist.txt | 26 ++ .../parser-tests/typescript/error-codes.js | 2 +- 7 files changed, 337 insertions(+), 6 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json diff --git a/Makefile b/Makefile index 4d280f5b20df..f0118381e39a 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ FLOW_COMMIT = a1f9a4c709dcebb27a5084acf47755fbae699c25 TEST262_COMMIT = 058adfed86b1d4129996faaf50a85ea55379a66a -TYPESCRIPT_COMMIT = 5fc917be2e4dd64c8e9504d36615cd7fbfdd4cd3 +TYPESCRIPT_COMMIT = ffa35d3272647fe48ddf173e1f0928f772c18630 FORCE_PUBLISH = "@babel/runtime,@babel/runtime-corejs2,@babel/runtime-corejs3,@babel/standalone" diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 9bbed6ca25f1..224515cd76e2 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -636,6 +636,16 @@ export default class StatementParser extends ExpressionParser { return this.finishNode(node, "ThrowStatement"); } + parseCatchClauseParam(): N.Identifier { + const param = this.parseBindingAtom(); + + const simple = param.type === "Identifier"; + this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0); + this.checkLVal(param, BIND_LEXICAL, null, "catch clause"); + + return param; + } + parseTryStatement(node: N.TryStatement): N.TryStatement { this.next(); @@ -647,10 +657,7 @@ export default class StatementParser extends ExpressionParser { this.next(); if (this.match(tt.parenL)) { this.expect(tt.parenL); - clause.param = this.parseBindingAtom(); - const simple = clause.param.type === "Identifier"; - this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0); - this.checkLVal(clause.param, BIND_LEXICAL, null, "catch clause"); + clause.param = this.parseCatchClauseParam(); this.expect(tt.parenR); } else { clause.param = null; diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index dd74f5c32cec..b2cca834ebfa 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -2660,4 +2660,15 @@ export default (superClass: Class): Class => return hasContextParam ? baseCount + 1 : baseCount; } + + parseCatchClauseParam(): N.Identifier { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + + if (type) { + param.type = type; + } + + return param; + } }; diff --git a/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/input.ts b/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/input.ts new file mode 100644 index 000000000000..6e5c28505572 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/input.ts @@ -0,0 +1,9 @@ +try {} catch (ex) {} +try {} catch (ex: unknown) {} +try {} catch (ex: any) {} + +// The following can't be error'd at parse time +try {} catch (ex: A) {} +try {} catch (ex: Error) {} +try {} catch (ex: string) {} +try {} catch (ex: string | number) {} diff --git a/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json b/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json new file mode 100644 index 000000000000..5232fb1fcdb1 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json @@ -0,0 +1,278 @@ +{ + "type": "File", + "start":0,"end":244,"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":37}}, + "program": { + "type": "Program", + "start":0,"end":244,"loc":{"start":{"line":1,"column":0},"end":{"line":9,"column":37}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TryStatement", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "block": { + "type": "BlockStatement", + "start":4,"end":6,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":6}}, + "body": [], + "directives": [] + }, + "handler": { + "type": "CatchClause", + "start":7,"end":20,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":20}}, + "param": { + "type": "Identifier", + "start":14,"end":16,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":16},"identifierName":"ex"}, + "name": "ex" + }, + "body": { + "type": "BlockStatement", + "start":18,"end":20,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":20}}, + "body": [], + "directives": [] + } + }, + "finalizer": null + }, + { + "type": "TryStatement", + "start":21,"end":50,"loc":{"start":{"line":2,"column":0},"end":{"line":2,"column":29}}, + "block": { + "type": "BlockStatement", + "start":25,"end":27,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":6}}, + "body": [], + "directives": [] + }, + "handler": { + "type": "CatchClause", + "start":28,"end":50,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":29}}, + "param": { + "type": { + "type": "TSTypeAnnotation", + "start":37,"end":46,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":25}}, + "typeAnnotation": { + "type": "TSUnknownKeyword", + "start":39,"end":46,"loc":{"start":{"line":2,"column":18},"end":{"line":2,"column":25}} + } + }, + "start":35,"end":37,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":16},"identifierName":"ex"}, + "name": "ex" + }, + "body": { + "type": "BlockStatement", + "start":48,"end":50,"loc":{"start":{"line":2,"column":27},"end":{"line":2,"column":29}}, + "body": [], + "directives": [] + } + }, + "finalizer": null + }, + { + "type": "TryStatement", + "start":51,"end":76,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":25}}, + "block": { + "type": "BlockStatement", + "start":55,"end":57,"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":6}}, + "body": [], + "directives": [] + }, + "handler": { + "type": "CatchClause", + "start":58,"end":76,"loc":{"start":{"line":3,"column":7},"end":{"line":3,"column":25}}, + "param": { + "type": { + "type": "TSTypeAnnotation", + "start":67,"end":72,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":21}}, + "typeAnnotation": { + "type": "TSAnyKeyword", + "start":69,"end":72,"loc":{"start":{"line":3,"column":18},"end":{"line":3,"column":21}} + } + }, + "start":65,"end":67,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":16},"identifierName":"ex"}, + "name": "ex" + }, + "body": { + "type": "BlockStatement", + "start":74,"end":76,"loc":{"start":{"line":3,"column":23},"end":{"line":3,"column":25}}, + "body": [], + "directives": [] + } + }, + "finalizer": null, + "trailingComments": [ + { + "type": "CommentLine", + "value": " The following can't be error'd at parse time", + "start":78,"end":125,"loc":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}} + } + ] + }, + { + "type": "TryStatement", + "start":126,"end":149,"loc":{"start":{"line":6,"column":0},"end":{"line":6,"column":23}}, + "block": { + "type": "BlockStatement", + "start":130,"end":132,"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":6}}, + "body": [], + "directives": [] + }, + "handler": { + "type": "CatchClause", + "start":133,"end":149,"loc":{"start":{"line":6,"column":7},"end":{"line":6,"column":23}}, + "param": { + "type": { + "type": "TSTypeAnnotation", + "start":142,"end":145,"loc":{"start":{"line":6,"column":16},"end":{"line":6,"column":19}}, + "typeAnnotation": { + "type": "TSTypeReference", + "start":144,"end":145,"loc":{"start":{"line":6,"column":18},"end":{"line":6,"column":19}}, + "typeName": { + "type": "Identifier", + "start":144,"end":145,"loc":{"start":{"line":6,"column":18},"end":{"line":6,"column":19},"identifierName":"A"}, + "name": "A" + } + } + }, + "start":140,"end":142,"loc":{"start":{"line":6,"column":14},"end":{"line":6,"column":16},"identifierName":"ex"}, + "name": "ex" + }, + "body": { + "type": "BlockStatement", + "start":147,"end":149,"loc":{"start":{"line":6,"column":21},"end":{"line":6,"column":23}}, + "body": [], + "directives": [] + } + }, + "finalizer": null, + "leadingComments": [ + { + "type": "CommentLine", + "value": " The following can't be error'd at parse time", + "start":78,"end":125,"loc":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}} + } + ] + }, + { + "type": "TryStatement", + "start":150,"end":177,"loc":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}}, + "block": { + "type": "BlockStatement", + "start":154,"end":156,"loc":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}, + "body": [], + "directives": [] + }, + "handler": { + "type": "CatchClause", + "start":157,"end":177,"loc":{"start":{"line":7,"column":7},"end":{"line":7,"column":27}}, + "param": { + "type": { + "type": "TSTypeAnnotation", + "start":166,"end":173,"loc":{"start":{"line":7,"column":16},"end":{"line":7,"column":23}}, + "typeAnnotation": { + "type": "TSTypeReference", + "start":168,"end":173,"loc":{"start":{"line":7,"column":18},"end":{"line":7,"column":23}}, + "typeName": { + "type": "Identifier", + "start":168,"end":173,"loc":{"start":{"line":7,"column":18},"end":{"line":7,"column":23},"identifierName":"Error"}, + "name": "Error" + } + } + }, + "start":164,"end":166,"loc":{"start":{"line":7,"column":14},"end":{"line":7,"column":16},"identifierName":"ex"}, + "name": "ex" + }, + "body": { + "type": "BlockStatement", + "start":175,"end":177,"loc":{"start":{"line":7,"column":25},"end":{"line":7,"column":27}}, + "body": [], + "directives": [] + } + }, + "finalizer": null + }, + { + "type": "TryStatement", + "start":178,"end":206,"loc":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}}, + "block": { + "type": "BlockStatement", + "start":182,"end":184,"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":6}}, + "body": [], + "directives": [] + }, + "handler": { + "type": "CatchClause", + "start":185,"end":206,"loc":{"start":{"line":8,"column":7},"end":{"line":8,"column":28}}, + "param": { + "type": { + "type": "TSTypeAnnotation", + "start":194,"end":202,"loc":{"start":{"line":8,"column":16},"end":{"line":8,"column":24}}, + "typeAnnotation": { + "type": "TSStringKeyword", + "start":196,"end":202,"loc":{"start":{"line":8,"column":18},"end":{"line":8,"column":24}} + } + }, + "start":192,"end":194,"loc":{"start":{"line":8,"column":14},"end":{"line":8,"column":16},"identifierName":"ex"}, + "name": "ex" + }, + "body": { + "type": "BlockStatement", + "start":204,"end":206,"loc":{"start":{"line":8,"column":26},"end":{"line":8,"column":28}}, + "body": [], + "directives": [] + } + }, + "finalizer": null + }, + { + "type": "TryStatement", + "start":207,"end":244,"loc":{"start":{"line":9,"column":0},"end":{"line":9,"column":37}}, + "block": { + "type": "BlockStatement", + "start":211,"end":213,"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":6}}, + "body": [], + "directives": [] + }, + "handler": { + "type": "CatchClause", + "start":214,"end":244,"loc":{"start":{"line":9,"column":7},"end":{"line":9,"column":37}}, + "param": { + "type": { + "type": "TSTypeAnnotation", + "start":223,"end":240,"loc":{"start":{"line":9,"column":16},"end":{"line":9,"column":33}}, + "typeAnnotation": { + "type": "TSUnionType", + "start":225,"end":240,"loc":{"start":{"line":9,"column":18},"end":{"line":9,"column":33}}, + "types": [ + { + "type": "TSStringKeyword", + "start":225,"end":231,"loc":{"start":{"line":9,"column":18},"end":{"line":9,"column":24}} + }, + { + "type": "TSNumberKeyword", + "start":234,"end":240,"loc":{"start":{"line":9,"column":27},"end":{"line":9,"column":33}} + } + ] + } + }, + "start":221,"end":223,"loc":{"start":{"line":9,"column":14},"end":{"line":9,"column":16},"identifierName":"ex"}, + "name": "ex" + }, + "body": { + "type": "BlockStatement", + "start":242,"end":244,"loc":{"start":{"line":9,"column":35},"end":{"line":9,"column":37}}, + "body": [], + "directives": [] + } + }, + "finalizer": null + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentLine", + "value": " The following can't be error'd at parse time", + "start":78,"end":125,"loc":{"start":{"line":5,"column":0},"end":{"line":5,"column":47}} + } + ] +} \ No newline at end of file diff --git a/scripts/parser-tests/typescript/allowlist.txt b/scripts/parser-tests/typescript/allowlist.txt index eac6245793ea..ad5eb837ec79 100644 --- a/scripts/parser-tests/typescript/allowlist.txt +++ b/scripts/parser-tests/typescript/allowlist.txt @@ -48,6 +48,8 @@ augmentedTypesFunction.ts augmentedTypesInterface.ts augmentedTypesVar.ts bigintIndex.ts +binderBinaryExpressionStress.ts +binderBinaryExpressionStressJs.ts cacheResolutions.ts cachedModuleResolution1.ts cachedModuleResolution2.ts @@ -64,6 +66,7 @@ classCannotExtendVar.ts classExpressionWithDecorator1.ts classExtendsAcrossFiles.ts classExtendsMultipleBaseClasses.ts +classIndexer5.ts classOverloadForFunction.ts collisionExportsRequireAndClass.ts commonSourceDir5.ts @@ -87,8 +90,10 @@ declarationEmitDestructuringOptionalBindingParametersInOverloads.ts declarationEmitDestructuringParameterProperties.ts declarationEmitDestructuringWithOptionalBindingParameters.ts declarationEmitExpandoPropertyPrivateName.ts +declarationEmitExportAssignedNamespaceNoTripleSlashTypesReference.ts declarationEmitExportAssignment.ts declarationEmitExportDeclaration.ts +declarationEmitForModuleImportingModuleAugmentationRetainsImport.ts declarationEmitForTypesWhichNeedImportTypes.ts declarationEmitInterfaceWithNonEntityNameExpressionHeritage.ts declarationEmitPrefersPathKindBasedOnBundling.ts @@ -98,6 +103,7 @@ declarationImportTypeAliasInferredAndEmittable.ts declarationMapsMultifile.ts declarationMapsOutFile.ts declarationsForInferredTypeFromOtherFile.ts +declarationsIndirectGeneratedAliasReference.ts declareModifierOnImport1.ts decoratorMetadataRestParameterWithImportedType.ts decoratorMetadataWithImportDeclarationNameCollision.ts @@ -195,6 +201,7 @@ exportSameNameFuncVar.ts exportSpecifierAndExportedMemberDeclaration.ts exportSpecifierAndLocalMemberDeclaration.ts exportStarFromEmptyModule.ts +exportStarNotElided.ts expressionsForbiddenInParameterInitializers.ts extendingClassFromAliasAndUsageInIndexer.ts extendsClauseAlreadySeen.ts @@ -209,6 +216,8 @@ functionExpressionInWithBlock.ts functionExpressionWithResolutionOfTypeNamedArguments01.ts gettersAndSettersErrors.ts giant.ts +globalThisDeclarationEmit.ts +globalThisDeclarationEmit2.ts implementClausePrecedingExtends.ts implementsClauseAlreadySeen.ts importAndVariableDeclarationConflict1.ts @@ -227,13 +236,24 @@ importHelpersNoHelpers.ts importHelpersNoModule.ts importHelpersOutFile.ts importHelpersSystem.ts +importNonExportedMember10.ts +importNonExportedMember11.ts +importNonExportedMember4.ts +importNonExportedMember5.ts +importNonExportedMember6.ts +importNonExportedMember7.ts +importNonExportedMember8.ts +importNonExportedMember9.ts importWithTrailingSlash.ts +importedEnumMemberMergedWithExportedAliasIsError.ts importedModuleClassNameClash.ts indexSignatureWithAccessibilityModifier.ts indexSignatureWithInitializer1.ts +indexSignatureWithTrailingComma.ts indexTypeCheck.ts indexWithoutParamType.ts indexerSignatureWithRestParam.ts +inferrenceInfiniteLoopWithSubtyping.ts initializedParameterBeforeNonoptionalNotOptional.ts interfaceMayNotBeExtendedWitACall.ts interfaceWithImplements1.ts @@ -242,12 +262,15 @@ isLiteral1.ts isLiteral2.ts isolatedModulesReExportType.ts jsEnumTagOnObjectFrozen.ts +jsExportMemberMergedWithModuleAugmentation.ts jsFileCompilationBindDuplicateIdentifier.ts jsFileCompilationDuplicateFunctionImplementation.ts jsFileCompilationDuplicateFunctionImplementationFileOrderReversed.ts jsFileCompilationExternalPackageError.ts +jsFileImportPreservedWhenUsed.ts jsNoImplicitAnyNoCascadingReferenceErrors.ts jsdocAccessEnumType.ts +jsdocPropertyTagInvalid.ts jsxAttributeWithoutExpressionReact.tsx jsxIntrinsicElementsExtendsRecord.tsx letAndVarRedeclaration.ts @@ -335,6 +358,8 @@ preserveUnusedImports.ts privacyCheckExternalModuleExportAssignmentOfGenericClass.ts privacyTopLevelAmbientExternalModuleImportWithExport.ts privacyTopLevelAmbientExternalModuleImportWithoutExport.ts +privateFieldAssignabilityFromUnknown.ts +privateNameWeakMapCollision.ts reExportGlobalDeclaration1.ts reExportUndefined1.ts reExportUndefined2.ts @@ -388,6 +413,7 @@ unusedImports3.ts unusedImports4.ts unusedImports5.ts unusedInvalidTypeArguments.ts +usedImportNotElidedInJs.ts varAndFunctionShareName.ts varArgConstructorMemberParameter.ts withStatement.ts diff --git a/scripts/parser-tests/typescript/error-codes.js b/scripts/parser-tests/typescript/error-codes.js index 2a2580dfb8a2..16ce4eb71c94 100644 --- a/scripts/parser-tests/typescript/error-codes.js +++ b/scripts/parser-tests/typescript/error-codes.js @@ -40,7 +40,7 @@ module.exports = [ "TS1163", // A 'yield' expression is only allowed in a generator body. "TS1184", // Modifiers cannot appear here. "TS1191", // An import declaration cannot have modifiers. - "TS1196", // Catch clause variable cannot have a type annotation. + "TS1196", // Catch clause variable type annotation must be 'any' or 'unknown' if specified. "TS1197", // Catch clause variable cannot have an initializer. "TS1200", // Line terminator not permitted before arrow. "TS1312", // '=' can only be used in an object literal property inside a destructuring assignment. From 9e6663f125bc931d468453c7361d038ffe6aa34d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 30 Jun 2020 16:42:15 -0400 Subject: [PATCH 35/90] Follow-up on initial TS4 catch param support (#11767) * refactor: align with AST shape convention * feat: print catch param type annotations * test: add test case on transform --- .../src/generators/statements.js | 1 + .../typescript/catch-param-type/input.js | 2 + .../typescript/catch-param-type/output.js | 3 ++ .../src/plugins/typescript/index.js | 2 +- .../catch-clause/unknown/output.json | 54 ++++++++++--------- .../fixtures/catch-clause/param-type/input.ts | 1 + .../catch-clause/param-type/options.json | 4 ++ .../catch-clause/param-type/output.mjs | 1 + 8 files changed, 43 insertions(+), 25 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/typescript/catch-param-type/input.js create mode 100644 packages/babel-generator/test/fixtures/typescript/catch-param-type/output.js create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/input.ts create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/options.json create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/output.mjs diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js index 24f9a2dbe5cd..dbeb45bf32b9 100644 --- a/packages/babel-generator/src/generators/statements.js +++ b/packages/babel-generator/src/generators/statements.js @@ -174,6 +174,7 @@ export function CatchClause(node: Object) { if (node.param) { this.token("("); this.print(node.param, node); + this.print(node.param.typeAnnotation, node); this.token(")"); this.space(); } diff --git a/packages/babel-generator/test/fixtures/typescript/catch-param-type/input.js b/packages/babel-generator/test/fixtures/typescript/catch-param-type/input.js new file mode 100644 index 000000000000..76318908d8b3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/catch-param-type/input.js @@ -0,0 +1,2 @@ +try {} catch (e: unknown) {} +try {} catch (e: any) {} diff --git a/packages/babel-generator/test/fixtures/typescript/catch-param-type/output.js b/packages/babel-generator/test/fixtures/typescript/catch-param-type/output.js new file mode 100644 index 000000000000..e9e71a8acf93 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/catch-param-type/output.js @@ -0,0 +1,3 @@ +try {} catch (e: unknown) {} + +try {} catch (e: any) {} \ No newline at end of file diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index b2cca834ebfa..7ba2b6abae08 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -2666,7 +2666,7 @@ export default (superClass: Class): Class => const type = this.tsTryParseTypeAnnotation(); if (type) { - param.type = type; + param.typeAnnotation = type; } return param; diff --git a/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json b/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json index 5232fb1fcdb1..fa244b40b2b2 100644 --- a/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json +++ b/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json @@ -46,16 +46,17 @@ "type": "CatchClause", "start":28,"end":50,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":29}}, "param": { - "type": { + "type": "Identifier", + "start":35,"end":37,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":16},"identifierName":"ex"}, + "name": "ex", + "typeAnnotation": { "type": "TSTypeAnnotation", "start":37,"end":46,"loc":{"start":{"line":2,"column":16},"end":{"line":2,"column":25}}, "typeAnnotation": { "type": "TSUnknownKeyword", "start":39,"end":46,"loc":{"start":{"line":2,"column":18},"end":{"line":2,"column":25}} } - }, - "start":35,"end":37,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":16},"identifierName":"ex"}, - "name": "ex" + } }, "body": { "type": "BlockStatement", @@ -79,16 +80,17 @@ "type": "CatchClause", "start":58,"end":76,"loc":{"start":{"line":3,"column":7},"end":{"line":3,"column":25}}, "param": { - "type": { + "type": "Identifier", + "start":65,"end":67,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":16},"identifierName":"ex"}, + "name": "ex", + "typeAnnotation": { "type": "TSTypeAnnotation", "start":67,"end":72,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":21}}, "typeAnnotation": { "type": "TSAnyKeyword", "start":69,"end":72,"loc":{"start":{"line":3,"column":18},"end":{"line":3,"column":21}} } - }, - "start":65,"end":67,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":16},"identifierName":"ex"}, - "name": "ex" + } }, "body": { "type": "BlockStatement", @@ -119,7 +121,10 @@ "type": "CatchClause", "start":133,"end":149,"loc":{"start":{"line":6,"column":7},"end":{"line":6,"column":23}}, "param": { - "type": { + "type": "Identifier", + "start":140,"end":142,"loc":{"start":{"line":6,"column":14},"end":{"line":6,"column":16},"identifierName":"ex"}, + "name": "ex", + "typeAnnotation": { "type": "TSTypeAnnotation", "start":142,"end":145,"loc":{"start":{"line":6,"column":16},"end":{"line":6,"column":19}}, "typeAnnotation": { @@ -131,9 +136,7 @@ "name": "A" } } - }, - "start":140,"end":142,"loc":{"start":{"line":6,"column":14},"end":{"line":6,"column":16},"identifierName":"ex"}, - "name": "ex" + } }, "body": { "type": "BlockStatement", @@ -164,7 +167,10 @@ "type": "CatchClause", "start":157,"end":177,"loc":{"start":{"line":7,"column":7},"end":{"line":7,"column":27}}, "param": { - "type": { + "type": "Identifier", + "start":164,"end":166,"loc":{"start":{"line":7,"column":14},"end":{"line":7,"column":16},"identifierName":"ex"}, + "name": "ex", + "typeAnnotation": { "type": "TSTypeAnnotation", "start":166,"end":173,"loc":{"start":{"line":7,"column":16},"end":{"line":7,"column":23}}, "typeAnnotation": { @@ -176,9 +182,7 @@ "name": "Error" } } - }, - "start":164,"end":166,"loc":{"start":{"line":7,"column":14},"end":{"line":7,"column":16},"identifierName":"ex"}, - "name": "ex" + } }, "body": { "type": "BlockStatement", @@ -202,16 +206,17 @@ "type": "CatchClause", "start":185,"end":206,"loc":{"start":{"line":8,"column":7},"end":{"line":8,"column":28}}, "param": { - "type": { + "type": "Identifier", + "start":192,"end":194,"loc":{"start":{"line":8,"column":14},"end":{"line":8,"column":16},"identifierName":"ex"}, + "name": "ex", + "typeAnnotation": { "type": "TSTypeAnnotation", "start":194,"end":202,"loc":{"start":{"line":8,"column":16},"end":{"line":8,"column":24}}, "typeAnnotation": { "type": "TSStringKeyword", "start":196,"end":202,"loc":{"start":{"line":8,"column":18},"end":{"line":8,"column":24}} } - }, - "start":192,"end":194,"loc":{"start":{"line":8,"column":14},"end":{"line":8,"column":16},"identifierName":"ex"}, - "name": "ex" + } }, "body": { "type": "BlockStatement", @@ -235,7 +240,10 @@ "type": "CatchClause", "start":214,"end":244,"loc":{"start":{"line":9,"column":7},"end":{"line":9,"column":37}}, "param": { - "type": { + "type": "Identifier", + "start":221,"end":223,"loc":{"start":{"line":9,"column":14},"end":{"line":9,"column":16},"identifierName":"ex"}, + "name": "ex", + "typeAnnotation": { "type": "TSTypeAnnotation", "start":223,"end":240,"loc":{"start":{"line":9,"column":16},"end":{"line":9,"column":33}}, "typeAnnotation": { @@ -252,9 +260,7 @@ } ] } - }, - "start":221,"end":223,"loc":{"start":{"line":9,"column":14},"end":{"line":9,"column":16},"identifierName":"ex"}, - "name": "ex" + } }, "body": { "type": "BlockStatement", diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/input.ts new file mode 100644 index 000000000000..0aa11053c6ee --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/input.ts @@ -0,0 +1 @@ +try {} catch (e: any) {} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/options.json b/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/options.json new file mode 100644 index 000000000000..d5e8a7e4201b --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["transform-typescript"], + "sourceType": "module" +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/output.mjs b/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/output.mjs new file mode 100644 index 000000000000..0ead89004c5c --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/catch-clause/param-type/output.mjs @@ -0,0 +1 @@ +try {} catch (e) {} From eba4c3b6eded17b2389f679990cabbcc27bff002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 15 Jul 2020 00:23:09 +0200 Subject: [PATCH 36/90] TypeScript 4.0: Support labeled tuple elements (#11754) * TypeScript 4.0: Support labeled tuple elements * More tests * Disallow mixing labeled and unlabeled elements * Update AST shape * Enable test after rebase * Allow labeled spread types * Fix flow * Add types and generator suport * Update packages/babel-parser/src/plugins/typescript/index.js * Prettier --- .../src/generators/typescript.js | 8 ++ .../typescript/tuple-labeled/input.js | 1 + .../typescript/tuple-labeled/output.js | 1 + .../src/plugins/typescript/index.js | 86 ++++++++++++++++--- packages/babel-parser/src/types.js | 11 ++- .../types/tuple-invalid-label-1/input.ts | 1 + .../types/tuple-invalid-label-1/options.json | 6 ++ .../types/tuple-invalid-label-1/output.json | 63 ++++++++++++++ .../types/tuple-invalid-label-2/input.ts | 1 + .../types/tuple-invalid-label-2/options.json | 6 ++ .../types/tuple-invalid-label-2/output.json | 69 +++++++++++++++ .../tuple-labeled-after-unlabeled/input.ts | 1 + .../tuple-labeled-after-unlabeled/output.json | 59 +++++++++++++ .../tuple-labeled-before-unlabeled/input.ts | 1 + .../output.json | 59 +++++++++++++ .../tuple-labeled-invalid-optional/input.ts | 1 + .../options.json | 7 ++ .../types/tuple-labeled-spread/input.ts | 1 + .../types/tuple-labeled-spread/output.json | 76 ++++++++++++++++ .../typescript/types/tuple-labeled/input.ts | 1 + .../types/tuple-labeled/output.json | 56 ++++++++++++ .../input.ts | 1 + .../output.json | 69 +++++++++++++++ .../input.ts | 1 + .../output.json | 63 ++++++++++++++ .../input.ts | 1 + .../output.json | 63 ++++++++++++++ .../src/asserts/generated/index.js | 6 ++ .../src/builders/generated/index.js | 5 ++ .../babel-types/src/definitions/typescript.js | 15 +++- .../src/validators/generated/index.js | 14 +++ 31 files changed, 736 insertions(+), 17 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/typescript/tuple-labeled/input.js create mode 100644 packages/babel-generator/test/fixtures/typescript/tuple-labeled/output.js create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-after-unlabeled/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-after-unlabeled/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-before-unlabeled/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-before-unlabeled/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-invalid-optional/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-invalid-optional/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-spread/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-spread/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-labeled/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-required-after-labeled-optional/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-required-after-labeled-optional/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-after-labeled/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-after-labeled/output.json create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-before-labeled/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-before-labeled/output.json diff --git a/packages/babel-generator/src/generators/typescript.js b/packages/babel-generator/src/generators/typescript.js index 39c580d74d2f..ea3e2218437d 100644 --- a/packages/babel-generator/src/generators/typescript.js +++ b/packages/babel-generator/src/generators/typescript.js @@ -262,6 +262,14 @@ export function TSRestType(node) { this.print(node.typeAnnotation, node); } +export function TSNamedTupleMember(node) { + this.print(node.label, node); + if (node.optional) this.token("?"); + this.token(":"); + this.space(); + this.print(node.elementType, node); +} + export function TSUnionType(node) { this.tsPrintUnionOrIntersectionType(node, "|"); } diff --git a/packages/babel-generator/test/fixtures/typescript/tuple-labeled/input.js b/packages/babel-generator/test/fixtures/typescript/tuple-labeled/input.js new file mode 100644 index 000000000000..a8d132c09bd3 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/tuple-labeled/input.js @@ -0,0 +1 @@ +type T = [x: A, y?: B, ...z: C]; diff --git a/packages/babel-generator/test/fixtures/typescript/tuple-labeled/output.js b/packages/babel-generator/test/fixtures/typescript/tuple-labeled/output.js new file mode 100644 index 000000000000..b9111dbd9aa6 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/tuple-labeled/output.js @@ -0,0 +1 @@ +type T = [x: A, y?: B, ...z: C]; \ No newline at end of file diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index 7ba2b6abae08..bb3a5a10ccb7 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -74,6 +74,10 @@ const TSErrors = Object.freeze({ IndexSignatureHasAccessibility: "Index signatures cannot have an accessibility modifier ('%0')", IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier", + InvalidTupleMemberLabel: + "Tuple members must be labeled with a simple identifier.", + MixedLabeledAndUnlabeledElements: + "Tuple members must all have names or all not have names.", OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", PatternIsOptional: @@ -633,33 +637,87 @@ export default (superClass: Class): Class => // Validate the elementTypes to ensure that no mandatory elements // follow optional elements let seenOptionalElement = false; + let labeledElements = null; node.elementTypes.forEach(elementNode => { - if (elementNode.type === "TSOptionalType") { - seenOptionalElement = true; - } else if (seenOptionalElement && elementNode.type !== "TSRestType") { + let { type } = elementNode; + + if ( + seenOptionalElement && + type !== "TSRestType" && + type !== "TSOptionalType" && + !(type === "TSNamedTupleMember" && elementNode.optional) + ) { this.raise(elementNode.start, TSErrors.OptionalTypeBeforeRequired); } + + // Flow doesn't support ||= + seenOptionalElement = + seenOptionalElement || + (type === "TSNamedTupleMember" && elementNode.optional) || + type === "TSOptionalType"; + + // When checking labels, check the argument of the spread operator + if (type === "TSRestType") { + elementNode = elementNode.typeAnnotation; + type = elementNode.type; + } + + const isLabeled = type === "TSNamedTupleMember"; + // Flow doesn't support ??= + labeledElements = labeledElements ?? isLabeled; + if (labeledElements !== isLabeled) { + this.raise( + elementNode.start, + TSErrors.MixedLabeledAndUnlabeledElements, + ); + } }); return this.finishNode(node, "TSTupleType"); } - tsParseTupleElementType(): N.TsType { + tsParseTupleElementType(): N.TsType | N.TsNamedTupleMember { // parses `...TsType[]` - if (this.match(tt.ellipsis)) { - const restNode: N.TsRestType = this.startNode(); - this.next(); // skips ellipsis - restNode.typeAnnotation = this.tsParseType(); - return this.finishNode(restNode, "TSRestType"); - } - const type = this.tsParseType(); - // parses `TsType?` - if (this.eat(tt.question)) { + const { start: startPos, startLoc } = this.state; + + const rest = this.eat(tt.ellipsis); + let type = this.tsParseType(); + const optional = this.eat(tt.question); + const labeled = this.eat(tt.colon); + + if (labeled) { + const labeledNode: N.TsNamedTupleMember = this.startNodeAtNode(type); + labeledNode.optional = optional; + + if ( + type.type === "TSTypeReference" && + !type.typeParameters && + type.typeName.type === "Identifier" + ) { + labeledNode.label = (type.typeName: N.Identifier); + } else { + this.raise(type.start, TSErrors.InvalidTupleMemberLabel); + // This produces an invalid AST, but at least we don't drop + // nodes representing the invalid source. + // $FlowIgnore + labeledNode.label = type; + } + + labeledNode.elementType = this.tsParseType(); + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { const optionalTypeNode: N.TsOptionalType = this.startNodeAtNode(type); optionalTypeNode.typeAnnotation = type; - return this.finishNode(optionalTypeNode, "TSOptionalType"); + type = this.finishNode(optionalTypeNode, "TSOptionalType"); } + + if (rest) { + const restNode: N.TsRestType = this.startNodeAt(startPos, startLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + return type; } diff --git a/packages/babel-parser/src/types.js b/packages/babel-parser/src/types.js index 17f96dc4934c..3566baaafbe2 100644 --- a/packages/babel-parser/src/types.js +++ b/packages/babel-parser/src/types.js @@ -1264,7 +1264,14 @@ export type TsArrayType = TsTypeBase & { export type TsTupleType = TsTypeBase & { type: "TSTupleType", - elementTypes: $ReadOnlyArray, + elementTypes: $ReadOnlyArray, +}; + +export type TsNamedTupleMember = NodeBase & { + type: "TSNamedTupleMember", + label: Identifier, + optional: boolean, + elementType: TsType, }; export type TsOptionalType = TsTypeBase & { @@ -1274,7 +1281,7 @@ export type TsOptionalType = TsTypeBase & { export type TsRestType = TsTypeBase & { type: "TSRestType", - typeAnnotation: TsType, + typeAnnotation: TsType | TsNamedTupleMember, }; export type TsUnionOrIntersectionType = TsUnionType | TsIntersectionType; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/input.ts new file mode 100644 index 000000000000..8b4d80dddbfb --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/input.ts @@ -0,0 +1 @@ +type T = [x.y: A]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/options.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/options.json new file mode 100644 index 000000000000..d1b7c8ebeace --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/options.json @@ -0,0 +1,6 @@ +{ + "sourceType": "module", + "plugins": [ + "typescript" + ] +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/output.json new file mode 100644 index 000000000000..f78fc791b541 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-1/output.json @@ -0,0 +1,63 @@ +{ + "type": "File", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}}, + "errors": [ + "SyntaxError: Tuple members must be labeled with a simple identifier. (1:10)" + ], + "program": { + "type": "Program", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"T"}, + "name": "T" + }, + "typeAnnotation": { + "type": "TSTupleType", + "start":9,"end":17,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":17}}, + "elementTypes": [ + { + "type": "TSNamedTupleMember", + "start":10,"end":16,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":16}}, + "optional": false, + "label": { + "type": "TSTypeReference", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13}}, + "typeName": { + "type": "TSQualifiedName", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13}}, + "left": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"x"}, + "name": "x" + }, + "right": { + "type": "Identifier", + "start":12,"end":13,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":13},"identifierName":"y"}, + "name": "y" + } + } + }, + "elementType": { + "type": "TSTypeReference", + "start":15,"end":16,"loc":{"start":{"line":1,"column":15},"end":{"line":1,"column":16}}, + "typeName": { + "type": "Identifier", + "start":15,"end":16,"loc":{"start":{"line":1,"column":15},"end":{"line":1,"column":16},"identifierName":"A"}, + "name": "A" + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/input.ts new file mode 100644 index 000000000000..dc499f225690 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/input.ts @@ -0,0 +1 @@ +type T = [x: A]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/options.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/options.json new file mode 100644 index 000000000000..d1b7c8ebeace --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/options.json @@ -0,0 +1,6 @@ +{ + "sourceType": "module", + "plugins": [ + "typescript" + ] +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/output.json new file mode 100644 index 000000000000..37710a11ffc3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-invalid-label-2/output.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "errors": [ + "SyntaxError: Tuple members must be labeled with a simple identifier. (1:10)" + ], + "program": { + "type": "Program", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"T"}, + "name": "T" + }, + "typeAnnotation": { + "type": "TSTupleType", + "start":9,"end":18,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":18}}, + "elementTypes": [ + { + "type": "TSNamedTupleMember", + "start":10,"end":17,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":17}}, + "optional": false, + "label": { + "type": "TSTypeReference", + "start":10,"end":14,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":14}}, + "typeName": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"x"}, + "name": "x" + }, + "typeParameters": { + "type": "TSTypeParameterInstantiation", + "start":11,"end":14,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":14}}, + "params": [ + { + "type": "TSTypeReference", + "start":12,"end":13,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":13}}, + "typeName": { + "type": "Identifier", + "start":12,"end":13,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":13},"identifierName":"y"}, + "name": "y" + } + } + ] + } + }, + "elementType": { + "type": "TSTypeReference", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, + "typeName": { + "type": "Identifier", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17},"identifierName":"A"}, + "name": "A" + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-after-unlabeled/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-after-unlabeled/input.ts new file mode 100644 index 000000000000..938829fbc562 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-after-unlabeled/input.ts @@ -0,0 +1 @@ +type T = [A, y: B]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-after-unlabeled/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-after-unlabeled/output.json new file mode 100644 index 000000000000..c0deaecdd5f3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-after-unlabeled/output.json @@ -0,0 +1,59 @@ +{ + "type": "File", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "errors": [ + "SyntaxError: Tuple members must all have names or all not have names. (1:13)" + ], + "program": { + "type": "Program", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"T"}, + "name": "T" + }, + "typeAnnotation": { + "type": "TSTupleType", + "start":9,"end":18,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":18}}, + "elementTypes": [ + { + "type": "TSTypeReference", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11}}, + "typeName": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"A"}, + "name": "A" + } + }, + { + "type": "TSNamedTupleMember", + "start":13,"end":17,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":17}}, + "optional": false, + "label": { + "type": "Identifier", + "start":13,"end":14,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":14},"identifierName":"y"}, + "name": "y" + }, + "elementType": { + "type": "TSTypeReference", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, + "typeName": { + "type": "Identifier", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17},"identifierName":"B"}, + "name": "B" + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-before-unlabeled/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-before-unlabeled/input.ts new file mode 100644 index 000000000000..c0191826d929 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-before-unlabeled/input.ts @@ -0,0 +1 @@ +type T = [x: A, B]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-before-unlabeled/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-before-unlabeled/output.json new file mode 100644 index 000000000000..083db448c753 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-before-unlabeled/output.json @@ -0,0 +1,59 @@ +{ + "type": "File", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "errors": [ + "SyntaxError: Tuple members must all have names or all not have names. (1:16)" + ], + "program": { + "type": "Program", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"T"}, + "name": "T" + }, + "typeAnnotation": { + "type": "TSTupleType", + "start":9,"end":18,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":18}}, + "elementTypes": [ + { + "type": "TSNamedTupleMember", + "start":10,"end":14,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":14}}, + "optional": false, + "label": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"x"}, + "name": "x" + }, + "elementType": { + "type": "TSTypeReference", + "start":13,"end":14,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":14}}, + "typeName": { + "type": "Identifier", + "start":13,"end":14,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":14},"identifierName":"A"}, + "name": "A" + } + } + }, + { + "type": "TSTypeReference", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17}}, + "typeName": { + "type": "Identifier", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17},"identifierName":"B"}, + "name": "B" + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-invalid-optional/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-invalid-optional/input.ts new file mode 100644 index 000000000000..aa8784ffd62f --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-invalid-optional/input.ts @@ -0,0 +1 @@ +type T = [x: A?]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-invalid-optional/options.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-invalid-optional/options.json new file mode 100644 index 000000000000..32484cd670a1 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-invalid-optional/options.json @@ -0,0 +1,7 @@ +{ + "sourceType": "module", + "plugins": [ + "typescript" + ], + "throws": "Unexpected token, expected \",\" (1:14)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-spread/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-spread/input.ts new file mode 100644 index 000000000000..1f84d8117f3b --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-spread/input.ts @@ -0,0 +1 @@ +let x: [A: string, ...B: number[]] diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-spread/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-spread/output.json new file mode 100644 index 000000000000..e0a6607cfd8e --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled-spread/output.json @@ -0,0 +1,76 @@ +{ + "type": "File", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}}, + "program": { + "type": "Program", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":34,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":34}}, + "id": { + "type": "Identifier", + "start":4,"end":34,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":34},"identifierName":"x"}, + "name": "x", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start":5,"end":34,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":34}}, + "typeAnnotation": { + "type": "TSTupleType", + "start":7,"end":34,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":34}}, + "elementTypes": [ + { + "type": "TSNamedTupleMember", + "start":8,"end":17,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":17}}, + "optional": false, + "label": { + "type": "Identifier", + "start":8,"end":9,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":9},"identifierName":"A"}, + "name": "A" + }, + "elementType": { + "type": "TSStringKeyword", + "start":11,"end":17,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":17}} + } + }, + { + "type": "TSRestType", + "start":19,"end":33,"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":33}}, + "typeAnnotation": { + "type": "TSNamedTupleMember", + "start":22,"end":33,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":33}}, + "optional": false, + "label": { + "type": "Identifier", + "start":22,"end":23,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":23},"identifierName":"B"}, + "name": "B" + }, + "elementType": { + "type": "TSArrayType", + "start":25,"end":33,"loc":{"start":{"line":1,"column":25},"end":{"line":1,"column":33}}, + "elementType": { + "type": "TSNumberKeyword", + "start":25,"end":31,"loc":{"start":{"line":1,"column":25},"end":{"line":1,"column":31}} + } + } + } + } + ] + } + } + }, + "init": null + } + ], + "kind": "let" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled/input.ts new file mode 100644 index 000000000000..4ded9c4935fa --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled/input.ts @@ -0,0 +1 @@ +type T = [foo: string, bar?: number]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled/output.json new file mode 100644 index 000000000000..f8ddae722eb3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-labeled/output.json @@ -0,0 +1,56 @@ +{ + "type": "File", + "start":0,"end":37,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}}, + "program": { + "type": "Program", + "start":0,"end":37,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":37,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"T"}, + "name": "T" + }, + "typeAnnotation": { + "type": "TSTupleType", + "start":9,"end":36,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":36}}, + "elementTypes": [ + { + "type": "TSNamedTupleMember", + "start":10,"end":21,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":21}}, + "optional": false, + "label": { + "type": "Identifier", + "start":10,"end":13,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":13},"identifierName":"foo"}, + "name": "foo" + }, + "elementType": { + "type": "TSStringKeyword", + "start":15,"end":21,"loc":{"start":{"line":1,"column":15},"end":{"line":1,"column":21}} + } + }, + { + "type": "TSNamedTupleMember", + "start":23,"end":35,"loc":{"start":{"line":1,"column":23},"end":{"line":1,"column":35}}, + "optional": true, + "label": { + "type": "Identifier", + "start":23,"end":26,"loc":{"start":{"line":1,"column":23},"end":{"line":1,"column":26},"identifierName":"bar"}, + "name": "bar" + }, + "elementType": { + "type": "TSNumberKeyword", + "start":29,"end":35,"loc":{"start":{"line":1,"column":29},"end":{"line":1,"column":35}} + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-required-after-labeled-optional/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-required-after-labeled-optional/input.ts new file mode 100644 index 000000000000..65546562d1c2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-required-after-labeled-optional/input.ts @@ -0,0 +1 @@ +type T = [x?: A, y: B]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-required-after-labeled-optional/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-required-after-labeled-optional/output.json new file mode 100644 index 000000000000..6675981261a0 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-required-after-labeled-optional/output.json @@ -0,0 +1,69 @@ +{ + "type": "File", + "start":0,"end":23,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "errors": [ + "SyntaxError: A required element cannot follow an optional element. (1:17)" + ], + "program": { + "type": "Program", + "start":0,"end":23,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":23,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":23}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"T"}, + "name": "T" + }, + "typeAnnotation": { + "type": "TSTupleType", + "start":9,"end":22,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":22}}, + "elementTypes": [ + { + "type": "TSNamedTupleMember", + "start":10,"end":15,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":15}}, + "optional": true, + "label": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"x"}, + "name": "x" + }, + "elementType": { + "type": "TSTypeReference", + "start":14,"end":15,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":15}}, + "typeName": { + "type": "Identifier", + "start":14,"end":15,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":15},"identifierName":"A"}, + "name": "A" + } + } + }, + { + "type": "TSNamedTupleMember", + "start":17,"end":21,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":21}}, + "optional": false, + "label": { + "type": "Identifier", + "start":17,"end":18,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":18},"identifierName":"y"}, + "name": "y" + }, + "elementType": { + "type": "TSTypeReference", + "start":20,"end":21,"loc":{"start":{"line":1,"column":20},"end":{"line":1,"column":21}}, + "typeName": { + "type": "Identifier", + "start":20,"end":21,"loc":{"start":{"line":1,"column":20},"end":{"line":1,"column":21},"identifierName":"B"}, + "name": "B" + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-after-labeled/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-after-labeled/input.ts new file mode 100644 index 000000000000..82ac1034fda4 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-after-labeled/input.ts @@ -0,0 +1 @@ +type T = [x: A, ...B]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-after-labeled/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-after-labeled/output.json new file mode 100644 index 000000000000..24e7d290ecd6 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-after-labeled/output.json @@ -0,0 +1,63 @@ +{ + "type": "File", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "errors": [ + "SyntaxError: Tuple members must all have names or all not have names. (1:19)" + ], + "program": { + "type": "Program", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"T"}, + "name": "T" + }, + "typeAnnotation": { + "type": "TSTupleType", + "start":9,"end":21,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":21}}, + "elementTypes": [ + { + "type": "TSNamedTupleMember", + "start":10,"end":14,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":14}}, + "optional": false, + "label": { + "type": "Identifier", + "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"x"}, + "name": "x" + }, + "elementType": { + "type": "TSTypeReference", + "start":13,"end":14,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":14}}, + "typeName": { + "type": "Identifier", + "start":13,"end":14,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":14},"identifierName":"A"}, + "name": "A" + } + } + }, + { + "type": "TSRestType", + "start":16,"end":20,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":20}}, + "typeAnnotation": { + "type": "TSTypeReference", + "start":19,"end":20,"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":20}}, + "typeName": { + "type": "Identifier", + "start":19,"end":20,"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":20},"identifierName":"B"}, + "name": "B" + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-before-labeled/input.ts b/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-before-labeled/input.ts new file mode 100644 index 000000000000..a45bda9425f3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-before-labeled/input.ts @@ -0,0 +1 @@ +type T = [...B, x: A]; diff --git a/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-before-labeled/output.json b/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-before-labeled/output.json new file mode 100644 index 000000000000..5115e0744bd4 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/types/tuple-unlabeled-spread-before-labeled/output.json @@ -0,0 +1,63 @@ +{ + "type": "File", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "errors": [ + "SyntaxError: Tuple members must all have names or all not have names. (1:16)" + ], + "program": { + "type": "Program", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "TSTypeAliasDeclaration", + "start":0,"end":22,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":22}}, + "id": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"T"}, + "name": "T" + }, + "typeAnnotation": { + "type": "TSTupleType", + "start":9,"end":21,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":21}}, + "elementTypes": [ + { + "type": "TSRestType", + "start":10,"end":14,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":14}}, + "typeAnnotation": { + "type": "TSTypeReference", + "start":13,"end":14,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":14}}, + "typeName": { + "type": "Identifier", + "start":13,"end":14,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":14},"identifierName":"B"}, + "name": "B" + } + } + }, + { + "type": "TSNamedTupleMember", + "start":16,"end":20,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":20}}, + "optional": false, + "label": { + "type": "Identifier", + "start":16,"end":17,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":17},"identifierName":"x"}, + "name": "x" + }, + "elementType": { + "type": "TSTypeReference", + "start":19,"end":20,"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":20}}, + "typeName": { + "type": "Identifier", + "start":19,"end":20,"loc":{"start":{"line":1,"column":19},"end":{"line":1,"column":20},"identifierName":"A"}, + "name": "A" + } + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-types/src/asserts/generated/index.js b/packages/babel-types/src/asserts/generated/index.js index 4492e04f4499..23a3e3cbb9e2 100644 --- a/packages/babel-types/src/asserts/generated/index.js +++ b/packages/babel-types/src/asserts/generated/index.js @@ -923,6 +923,12 @@ export function assertTSOptionalType(node: Object, opts?: Object = {}): void { export function assertTSRestType(node: Object, opts?: Object = {}): void { assert("TSRestType", node, opts); } +export function assertTSNamedTupleMember( + node: Object, + opts?: Object = {}, +): void { + assert("TSNamedTupleMember", node, opts); +} export function assertTSUnionType(node: Object, opts?: Object = {}): void { assert("TSUnionType", node, opts); } diff --git a/packages/babel-types/src/builders/generated/index.js b/packages/babel-types/src/builders/generated/index.js index 5e9fe9292109..44b76e7aea31 100644 --- a/packages/babel-types/src/builders/generated/index.js +++ b/packages/babel-types/src/builders/generated/index.js @@ -894,6 +894,11 @@ export function tsRestType(...args: Array): Object { } export { tsRestType as TSRestType }; export { tsRestType as tSRestType }; +export function tsNamedTupleMember(...args: Array): Object { + return builder("TSNamedTupleMember", ...args); +} +export { tsNamedTupleMember as TSNamedTupleMember }; +export { tsNamedTupleMember as tSNamedTupleMember }; export function tsUnionType(...args: Array): Object { return builder("TSUnionType", ...args); } diff --git a/packages/babel-types/src/definitions/typescript.js b/packages/babel-types/src/definitions/typescript.js index 6a9d0fed50e0..05e2e6f7e5f0 100644 --- a/packages/babel-types/src/definitions/typescript.js +++ b/packages/babel-types/src/definitions/typescript.js @@ -214,7 +214,7 @@ defineType("TSTupleType", { aliases: ["TSType"], visitor: ["elementTypes"], fields: { - elementTypes: validateArrayOfType("TSType"), + elementTypes: validateArrayOfType(["TSType", "TSNamedTupleMember"]), }, }); @@ -234,6 +234,19 @@ defineType("TSRestType", { }, }); +defineType("TSNamedTupleMember", { + visitor: ["label", "elementType"], + builder: ["label", "elementType", "optional"], + fields: { + label: validateType("Identifier"), + optional: { + validate: bool, + default: false, + }, + elementType: validateType("TSType"), + }, +}); + const unionOrIntersection = { aliases: ["TSType"], visitor: ["types"], diff --git a/packages/babel-types/src/validators/generated/index.js b/packages/babel-types/src/validators/generated/index.js index 8b60e308674b..a5c5b68bdf7b 100644 --- a/packages/babel-types/src/validators/generated/index.js +++ b/packages/babel-types/src/validators/generated/index.js @@ -3041,6 +3041,20 @@ export function isTSRestType(node: ?Object, opts?: Object): boolean { return false; } +export function isTSNamedTupleMember(node: ?Object, opts?: Object): boolean { + if (!node) return false; + + const nodeType = node.type; + if (nodeType === "TSNamedTupleMember") { + if (typeof opts === "undefined") { + return true; + } else { + return shallowEqual(node, opts); + } + } + + return false; +} export function isTSUnionType(node: ?Object, opts?: Object): boolean { if (!node) return false; From cdb81d7703c9a98055d2503f1d8140f51149d5ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 21 Jul 2020 16:56:31 -0400 Subject: [PATCH 37/90] Add `export-namespace-from` to `preset-env` (#11849) * feat: add compat-data of proposal-export-namespace-from * feat: add export-namespace-from to preset-env * chore: update test fixtures * address review comments --- packages/babel-compat-data/data/plugins.json | 8 +++++ .../babel-compat-data/scripts/build-data.js | 13 +++++++ packages/babel-preset-env/package.json | 2 ++ .../babel-preset-env/src/available-plugins.js | 4 +++ packages/babel-preset-env/src/index.js | 28 +++++++++++++-- .../_esmodules-no-bugfixes/stdout.txt | 1 + .../fixtures/bugfixes/_esmodules/stdout.txt | 1 + .../edge-default-params-chrome-40/stdout.txt | 1 + .../edge-default-params-chrome-70/stdout.txt | 1 + .../edge-default-params-edge-14/stdout.txt | 1 + .../edge-default-params-edge-15/stdout.txt | 1 + .../stdout.txt | 1 + .../edge-default-params-edge-17/stdout.txt | 1 + .../edge-default-params-edge-18/stdout.txt | 1 + .../stdout.txt | 1 + .../edge-function-name-edge-14/stdout.txt | 1 + .../edge-function-name-edge-15/stdout.txt | 1 + .../stdout.txt | 1 + .../safari-block-scoping-safari-10/stdout.txt | 1 + .../safari-block-scoping-safari-11/stdout.txt | 1 + .../safari-block-scoping-safari-9/stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../debug/browserslist-env/stdout.txt | 1 + .../debug/browserslists-android-3/stdout.txt | 1 + .../browserslists-defaults-not-ie/stdout.txt | 1 + .../debug/browserslists-defaults/stdout.txt | 1 + .../stdout.txt | 1 + .../corejs-without-usebuiltins/stdout.txt | 1 + .../debug/entry-corejs2-android/stdout.txt | 1 + .../debug/entry-corejs2-electron/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-corejs2-no-import/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-corejs2-proposals/stdout.txt | 1 + .../stdout.txt | 1 + .../entry-corejs2-shippedProposals/stdout.txt | 1 + .../entry-corejs2-specific-targets/stdout.txt | 1 + .../stdout.txt | 1 + .../entry-corejs2-versions-strings/stdout.txt | 1 + .../fixtures/debug/entry-corejs2/stdout.txt | 1 + .../entry-corejs3-all-chrome-71/stdout.txt | 1 + .../debug/entry-corejs3-all/stdout.txt | 1 + .../debug/entry-corejs3-android/stdout.txt | 1 + .../entry-corejs3-babel-polyfill/stdout.txt | 1 + .../debug/entry-corejs3-electron/stdout.txt | 1 + .../entry-corejs3-es-chrome-71/stdout.txt | 1 + .../stdout.txt | 1 + .../entry-corejs3-es-proposals/stdout.txt | 1 + .../debug/entry-corejs3-es/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-corejs3-no-import/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-corejs3-proposals/stdout.txt | 1 + .../stdout.txt | 1 + .../entry-corejs3-runtime-only/stdout.txt | 1 + .../stdout.txt | 1 + .../entry-corejs3-specific-entries/stdout.txt | 1 + .../entry-corejs3-specific-targets/stdout.txt | 1 + .../entry-corejs3-stable-chrome-71/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-corejs3-stable/stdout.txt | 1 + .../entry-corejs3-stage-chrome-71/stdout.txt | 1 + .../debug/entry-corejs3-stage/stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../entry-corejs3-versions-strings/stdout.txt | 1 + .../entry-corejs3-web-chrome-71/stdout.txt | 1 + .../debug/entry-corejs3-web/stdout.txt | 1 + .../fixtures/debug/entry-corejs3/stdout.txt | 1 + .../entry-no-corejs-no-import/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-no-corejs-uglify/stdout.txt | 1 + .../fixtures/debug/entry-no-corejs/stdout.txt | 1 + .../fixtures/debug/plugins-only/stdout.txt | 1 + .../shippedProposals-chrome-80/stdout.txt | 1 + .../shippedProposals-chrome-84/stdout.txt | 1 + .../fixtures/debug/usage-corejs2-1/stdout.txt | 1 + .../fixtures/debug/usage-corejs2-2/stdout.txt | 1 + .../usage-corejs2-chrome-71-1/stdout.txt | 1 + .../usage-corejs2-chrome-71-2/stdout.txt | 1 + .../debug/usage-corejs2-none-1/stdout.txt | 1 + .../debug/usage-corejs2-none-2/stdout.txt | 1 + .../usage-corejs2-proposals-1/stdout.txt | 1 + .../usage-corejs2-proposals-2/stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../usage-corejs2-with-import/stdout.txt | 1 + .../fixtures/debug/usage-corejs3-1/stdout.txt | 1 + .../fixtures/debug/usage-corejs3-2/stdout.txt | 1 + .../usage-corejs3-chrome-71-1/stdout.txt | 1 + .../usage-corejs3-chrome-71-2/stdout.txt | 1 + .../debug/usage-corejs3-none-1/stdout.txt | 1 + .../debug/usage-corejs3-none-2/stdout.txt | 1 + .../usage-corejs3-proposals-1/stdout.txt | 1 + .../usage-corejs3-proposals-2/stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../usage-corejs3-with-import/stdout.txt | 1 + .../debug/usage-no-corejs-1/stdout.txt | 1 + .../debug/usage-no-corejs-2/stdout.txt | 1 + .../debug/usage-no-corejs-none-1/stdout.txt | 1 + .../debug/usage-no-corejs-none-2/stdout.txt | 1 + .../auto-esm-not-supported/input.mjs | 1 + .../auto-esm-not-supported/options.json | 10 ++++++ .../auto-esm-not-supported/output.js | 12 +++++++ .../input.mjs | 1 + .../options.json | 9 +++++ .../output.mjs | 2 ++ .../input.mjs | 1 + .../options.json | 7 ++++ .../output.mjs | 2 ++ .../input.mjs | 1 + .../options.json | 7 ++++ .../output.mjs | 2 ++ .../input.mjs | 1 + .../options.json | 7 ++++ .../output.mjs | 1 + .../safari-10_3-block-scoped/stdout.txt | 1 + packages/babel-preset-env/test/index.spec.js | 36 ++++++++++++++++--- 129 files changed, 255 insertions(+), 8 deletions(-) create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/input.mjs create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/options.json create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/output.js create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/input.mjs create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/options.json create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/output.mjs create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/input.mjs create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/options.json create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/output.mjs create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/input.mjs create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/options.json create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/output.mjs create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/input.mjs create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/options.json create mode 100644 packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/output.mjs diff --git a/packages/babel-compat-data/data/plugins.json b/packages/babel-compat-data/data/plugins.json index 26f711b3f5ac..d2957432eb94 100644 --- a/packages/babel-compat-data/data/plugins.json +++ b/packages/babel-compat-data/data/plugins.json @@ -410,5 +410,13 @@ "phantom": "2", "samsung": "1", "electron": "0.20" + }, + "proposal-export-namespace-from": { + "chrome": "72", + "edge": "79", + "opera": "60", + "firefox": "80", + "node": "13.2", + "samsung": "11.0" } } diff --git a/packages/babel-compat-data/scripts/build-data.js b/packages/babel-compat-data/scripts/build-data.js index bda20e1e4c09..94248e5f5e1c 100644 --- a/packages/babel-compat-data/scripts/build-data.js +++ b/packages/babel-compat-data/scripts/build-data.js @@ -9,6 +9,19 @@ for (const target of ["plugin", "corejs2-built-in"]) { environments, require(`./data/${target}-features`) ); + if (target === "plugin") { + // add export-namespace-from from mdn-browser-compat-data + // todo: replace the hardcoded compat data to mdn-browser-compat-data + // after https://github.com/mdn/browser-compat-data/pull/6394 is published + newData["proposal-export-namespace-from"] = { + chrome: "72", + edge: "79", + opera: "60", + firefox: "80", + node: "13.2", + samsung: "11.0", + }; + } const dataPath = path.join(__dirname, `../data/${target}s.json`); if (!writeFile(newData, dataPath, target)) { diff --git a/packages/babel-preset-env/package.json b/packages/babel-preset-env/package.json index 285af9f080d7..d8b68bfbeaa2 100644 --- a/packages/babel-preset-env/package.json +++ b/packages/babel-preset-env/package.json @@ -22,6 +22,7 @@ "@babel/plugin-proposal-async-generator-functions": "^7.10.4", "@babel/plugin-proposal-class-properties": "^7.10.4", "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", "@babel/plugin-proposal-json-strings": "^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", "@babel/plugin-proposal-numeric-separator": "^7.10.4", @@ -33,6 +34,7 @@ "@babel/plugin-syntax-async-generators": "^7.8.0", "@babel/plugin-syntax-class-properties": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4", diff --git a/packages/babel-preset-env/src/available-plugins.js b/packages/babel-preset-env/src/available-plugins.js index 939199ae987d..9fd8e49100b2 100644 --- a/packages/babel-preset-env/src/available-plugins.js +++ b/packages/babel-preset-env/src/available-plugins.js @@ -4,6 +4,7 @@ import syntaxAsyncGenerators from "@babel/plugin-syntax-async-generators"; import syntaxClassProperties from "@babel/plugin-syntax-class-properties"; import syntaxDynamicImport from "@babel/plugin-syntax-dynamic-import"; +import syntaxExportNamespaceFrom from "@babel/plugin-syntax-export-namespace-from"; import syntaxJsonStrings from "@babel/plugin-syntax-json-strings"; import syntaxNullishCoalescingOperator from "@babel/plugin-syntax-nullish-coalescing-operator"; import syntaxNumericSeparator from "@babel/plugin-syntax-numeric-separator"; @@ -14,6 +15,7 @@ import syntaxTopLevelAwait from "@babel/plugin-syntax-top-level-await"; import proposalAsyncGeneratorFunctions from "@babel/plugin-proposal-async-generator-functions"; import proposalClassProperties from "@babel/plugin-proposal-class-properties"; import proposalDynamicImport from "@babel/plugin-proposal-dynamic-import"; +import proposalExportNamespaceFrom from "@babel/plugin-proposal-export-namespace-from"; import proposalJsonStrings from "@babel/plugin-proposal-json-strings"; import proposalNullishCoalescingOperator from "@babel/plugin-proposal-nullish-coalescing-operator"; import proposalNumericSeparator from "@babel/plugin-proposal-numeric-separator"; @@ -72,6 +74,7 @@ export default { "proposal-async-generator-functions": proposalAsyncGeneratorFunctions, "proposal-class-properties": proposalClassProperties, "proposal-dynamic-import": proposalDynamicImport, + "proposal-export-namespace-from": proposalExportNamespaceFrom, "proposal-json-strings": proposalJsonStrings, "proposal-nullish-coalescing-operator": proposalNullishCoalescingOperator, "proposal-numeric-separator": proposalNumericSeparator, @@ -83,6 +86,7 @@ export default { "syntax-async-generators": syntaxAsyncGenerators, "syntax-class-properties": syntaxClassProperties, "syntax-dynamic-import": syntaxDynamicImport, + "syntax-export-namespace-from": syntaxExportNamespaceFrom, "syntax-json-strings": syntaxJsonStrings, "syntax-nullish-coalescing-operator": syntaxNullishCoalescingOperator, "syntax-numeric-separator": syntaxNumericSeparator, diff --git a/packages/babel-preset-env/src/index.js b/packages/babel-preset-env/src/index.js index 1fe9bfe424e3..e3cfb7a623ce 100644 --- a/packages/babel-preset-env/src/index.js +++ b/packages/babel-preset-env/src/index.js @@ -99,14 +99,16 @@ export const getModulesPluginNames = ({ transformations, shouldTransformESM, shouldTransformDynamicImport, + shouldTransformExportNamespaceFrom, shouldParseTopLevelAwait, -}: { +}: {| modules: ModuleOption, transformations: ModuleTransformationsType, shouldTransformESM: boolean, shouldTransformDynamicImport: boolean, + shouldTransformExportNamespaceFrom: boolean, shouldParseTopLevelAwait: boolean, -}) => { +|}) => { const modulesPluginNames = []; if (modules !== false && transformations[modules]) { if (shouldTransformESM) { @@ -132,6 +134,12 @@ export const getModulesPluginNames = ({ modulesPluginNames.push("syntax-dynamic-import"); } + if (shouldTransformExportNamespaceFrom) { + modulesPluginNames.push("proposal-export-namespace-from"); + } else { + modulesPluginNames.push("syntax-export-namespace-from"); + } + if (shouldParseTopLevelAwait) { modulesPluginNames.push("syntax-top-level-await"); } @@ -206,6 +214,10 @@ function supportsDynamicImport(caller) { return !!caller?.supportsDynamicImport; } +function supportsExportNamespaceFrom(caller) { + return !!caller?.supportsExportNamespaceFrom; +} + function supportsTopLevelAwait(caller) { return !!caller?.supportsTopLevelAwait; } @@ -265,6 +277,15 @@ export default declare((api, opts) => { const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets; + const compatData = getPluginList(shippedProposals, bugfixes); + const shouldSkipExportNamespaceFrom = + (modules === "auto" && api.caller?.(supportsExportNamespaceFrom)) || + (modules === false && + !isRequired("proposal-export-namespace-from", transformTargets, { + compatData, + includes: include.plugins, + excludes: exclude.plugins, + })); const modulesPluginNames = getModulesPluginNames({ modules, transformations: moduleTransformations, @@ -273,11 +294,12 @@ export default declare((api, opts) => { shouldTransformESM: modules !== "auto" || !api.caller?.(supportsStaticESM), shouldTransformDynamicImport: modules !== "auto" || !api.caller?.(supportsDynamicImport), + shouldTransformExportNamespaceFrom: !shouldSkipExportNamespaceFrom, shouldParseTopLevelAwait: !api.caller || api.caller(supportsTopLevelAwait), }); const pluginNames = filterItems( - getPluginList(shippedProposals, bugfixes), + compatData, include.plugins, exclude.plugins, transformTargets, diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt index 54e18667adb6..a3b757e75dc1 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt @@ -31,6 +31,7 @@ Using plugins: transform-function-name { "edge":"16" } transform-unicode-regex { "ios":"10.3", "safari":"10.1" } transform-block-scoping { "ios":"10.3", "safari":"10.1" } + proposal-export-namespace-from { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } transform-modules-commonjs { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt index fcb5cf111bc9..c31187f4912f 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt @@ -26,6 +26,7 @@ Using plugins: proposal-unicode-property-regex { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } transform-named-capturing-groups-regex { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } transform-unicode-regex { "ios":"10.3", "safari":"10.1" } + proposal-export-namespace-from { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } bugfix/transform-async-arrows-in-class { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } bugfix/transform-edge-default-parameters { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } bugfix/transform-edge-function-name { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt index 42b3c0122d78..152c2e2233b8 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt @@ -37,6 +37,7 @@ Using plugins: transform-block-scoping { "chrome":"40" } transform-new-target { "chrome":"40" } transform-regenerator { "chrome":"40" } + proposal-export-namespace-from { "chrome":"40" } transform-modules-commonjs { "chrome":"40" } proposal-dynamic-import { "chrome":"40" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt index 0cc2b0ed9d8e..e89bda5854f6 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"70" } syntax-async-generators { "chrome":"70" } syntax-object-rest-spread { "chrome":"70" } + proposal-export-namespace-from { "chrome":"70" } transform-modules-commonjs { "chrome":"70" } proposal-dynamic-import { "chrome":"70" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt index 7a388e0ae02c..93aeded847e0 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt @@ -21,6 +21,7 @@ Using plugins: transform-async-to-generator { "edge":"14" } transform-for-of { "edge":"14" } transform-destructuring { "edge":"14" } + proposal-export-namespace-from { "edge":"14" } bugfix/transform-edge-function-name { "edge":"14" } transform-modules-commonjs { "edge":"14" } proposal-dynamic-import { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt index 9510c3518847..e7b3ca3f82f7 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt @@ -17,6 +17,7 @@ Using plugins: transform-dotall-regex { "edge":"15" } proposal-unicode-property-regex { "edge":"15" } transform-named-capturing-groups-regex { "edge":"15" } + proposal-export-namespace-from { "edge":"15" } bugfix/transform-edge-default-parameters { "edge":"15" } bugfix/transform-edge-function-name { "edge":"15" } transform-modules-commonjs { "edge":"15" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt index 954199e544e4..b15a7c7e25d9 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt @@ -19,6 +19,7 @@ Using plugins: proposal-unicode-property-regex { "edge":"17" } transform-named-capturing-groups-regex { "edge":"17" } transform-function-name { "edge":"17" } + proposal-export-namespace-from { "edge":"17" } transform-modules-commonjs { "edge":"17" } proposal-dynamic-import { "edge":"17" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt index b728cabff9da..f18cf6a45443 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt @@ -17,6 +17,7 @@ Using plugins: transform-dotall-regex { "edge":"17" } proposal-unicode-property-regex { "edge":"17" } transform-named-capturing-groups-regex { "edge":"17" } + proposal-export-namespace-from { "edge":"17" } bugfix/transform-edge-default-parameters { "edge":"17" } bugfix/transform-edge-function-name { "edge":"17" } transform-modules-commonjs { "edge":"17" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt index 30bcc97de1ee..f32c7e31a58d 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt @@ -17,6 +17,7 @@ Using plugins: transform-dotall-regex { "edge":"18" } proposal-unicode-property-regex { "edge":"18" } transform-named-capturing-groups-regex { "edge":"18" } + proposal-export-namespace-from { "edge":"18" } bugfix/transform-edge-function-name { "edge":"18" } transform-modules-commonjs { "edge":"18" } proposal-dynamic-import { "edge":"18" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt index ac366c8a1cdb..f491d9ce25c1 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt @@ -22,6 +22,7 @@ Using plugins: transform-function-name { "edge":"14" } transform-for-of { "edge":"14" } transform-destructuring { "edge":"14" } + proposal-export-namespace-from { "edge":"14" } transform-modules-commonjs { "edge":"14" } proposal-dynamic-import { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt index 7a388e0ae02c..93aeded847e0 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt @@ -21,6 +21,7 @@ Using plugins: transform-async-to-generator { "edge":"14" } transform-for-of { "edge":"14" } transform-destructuring { "edge":"14" } + proposal-export-namespace-from { "edge":"14" } bugfix/transform-edge-function-name { "edge":"14" } transform-modules-commonjs { "edge":"14" } proposal-dynamic-import { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt index 9510c3518847..e7b3ca3f82f7 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt @@ -17,6 +17,7 @@ Using plugins: transform-dotall-regex { "edge":"15" } proposal-unicode-property-regex { "edge":"15" } transform-named-capturing-groups-regex { "edge":"15" } + proposal-export-namespace-from { "edge":"15" } bugfix/transform-edge-default-parameters { "edge":"15" } bugfix/transform-edge-function-name { "edge":"15" } transform-modules-commonjs { "edge":"15" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt index 6425e78aaaf7..307557b625a5 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt @@ -22,6 +22,7 @@ Using plugins: transform-template-literals { "safari":"10" } transform-unicode-regex { "safari":"10" } transform-block-scoping { "safari":"10" } + proposal-export-namespace-from { "safari":"10" } transform-modules-commonjs { "safari":"10" } proposal-dynamic-import { "safari":"10" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt index 779d34b4ba24..ca43b45ed6b3 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt @@ -20,6 +20,7 @@ Using plugins: transform-async-to-generator { "safari":"10" } transform-exponentiation-operator { "safari":"10" } transform-unicode-regex { "safari":"10" } + proposal-export-namespace-from { "safari":"10" } bugfix/transform-safari-block-shadowing { "safari":"10" } bugfix/transform-safari-for-shadowing { "safari":"10" } bugfix/transform-tagged-template-caching { "safari":"10" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt index e9cfcb3dd8b2..b2e2d6b7e215 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt @@ -18,6 +18,7 @@ Using plugins: proposal-unicode-property-regex { "safari":"11" } transform-named-capturing-groups-regex { "safari":"11" } transform-unicode-regex { "safari":"11" } + proposal-export-namespace-from { "safari":"11" } bugfix/transform-tagged-template-caching { "safari":"11" } transform-modules-commonjs { "safari":"11" } proposal-dynamic-import { "safari":"11" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt index c1dd2f892833..fc71158d5f30 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt @@ -31,6 +31,7 @@ Using plugins: transform-block-scoping { "safari":"9" } transform-new-target { "safari":"9" } transform-regenerator { "safari":"9" } + proposal-export-namespace-from { "safari":"9" } bugfix/transform-tagged-template-caching { "safari":"9" } transform-modules-commonjs { "safari":"9" } proposal-dynamic-import { "safari":"9" } diff --git a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt index d73f0bba3fa5..3f4504874eb6 100644 --- a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt @@ -31,6 +31,7 @@ Using plugins: transform-function-name { "edge":"16" } transform-unicode-regex { "ios":"10.3", "safari":"10.1" } transform-block-scoping { "ios":"10.3", "safari":"10.1" } + proposal-export-namespace-from { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } syntax-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt index 6536248a1ce3..ecb1e6823463 100644 --- a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt @@ -31,6 +31,7 @@ Using plugins: transform-function-name { "edge":"16" } transform-unicode-regex { "ios":"10.3", "safari":"10.1" } transform-block-scoping { "ios":"10.3", "safari":"10.1" } + proposal-export-namespace-from { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } syntax-dynamic-import { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } Using polyfills with `usage` option: diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt index c3f8c841eabc..181694bfe513 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt @@ -39,6 +39,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "ie":"11" } + proposal-export-namespace-from { "ie":"11" } transform-modules-commonjs { "ie":"11" } proposal-dynamic-import { "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt index 5d2646157074..befd16705067 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt @@ -43,6 +43,7 @@ Using plugins: transform-member-expression-literals { "android":"3" } transform-property-literals { "android":"3" } transform-reserved-words { "android":"3" } + proposal-export-namespace-from { "android":"3" } transform-modules-commonjs { "android":"3" } proposal-dynamic-import { "android":"3" } 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 05e4d6ac50de..6b6c8fb39723 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 @@ -26,6 +26,7 @@ Using plugins: transform-named-capturing-groups-regex { "edge":"18", "firefox":"68" } transform-template-literals { "ios":"12.2" } transform-function-name { "edge":"18" } + proposal-export-namespace-from { "edge":"18", "firefox":"68", "ios":"12.2", "safari":"13", "samsung":"10.1" } transform-modules-commonjs { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" } proposal-dynamic-import { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" } 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 a5948b446b4b..6f953aec4f43 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 @@ -47,6 +47,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "ie":"11" } + proposal-export-namespace-from { "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "safari":"13", "samsung":"10.1" } transform-modules-commonjs { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" } proposal-dynamic-import { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" } 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 ded0e0bb3396..68e8f02769ee 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 @@ -24,6 +24,7 @@ Using plugins: transform-dotall-regex { "firefox":"75" } proposal-unicode-property-regex { "firefox":"75" } transform-named-capturing-groups-regex { "firefox":"75" } + proposal-export-namespace-from { "firefox":"75", "ios":"13.3", "safari":"13", "samsung":"10.1" } transform-modules-commonjs { "android":"80", "chrome":"80", "edge":"80", "firefox":"75", "ios":"13.3", "opera":"67", "safari":"13", "samsung":"10.1" } proposal-dynamic-import { "android":"80", "chrome":"80", "edge":"80", "firefox":"75", "ios":"13.3", "opera":"67", "safari":"13", "samsung":"10.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt index e38340b582aa..510cab341574 100644 --- a/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt @@ -43,6 +43,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt index 07ea2154593d..faff63971e8b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-new-target { "android":"4" } transform-regenerator { "android":"4" } transform-reserved-words { "android":"4" } + proposal-export-namespace-from { "android":"4" } transform-modules-commonjs { "android":"4" } proposal-dynamic-import { "android":"4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt index f578ebd93eb3..4cd3fd47b8b7 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt @@ -34,6 +34,7 @@ Using plugins: transform-destructuring { "electron":"0.36" } transform-block-scoping { "electron":"0.36" } transform-regenerator { "electron":"0.36" } + proposal-export-namespace-from { "electron":"0.36" } transform-modules-commonjs { "electron":"0.36" } proposal-dynamic-import { "electron":"0.36" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt index e0af4f56cd61..926708798118 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt @@ -43,6 +43,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from { "chrome":"55" } syntax-dynamic-import { "chrome":"55" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt index 78ce760b41b3..99cb53108466 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt @@ -22,6 +22,7 @@ Using plugins: transform-function-name { "node":"6" } transform-for-of { "node":"6" } transform-destructuring { "node":"6" } + proposal-export-namespace-from { "node":"6" } transform-modules-commonjs { "node":"6" } proposal-dynamic-import { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt index 7530969348af..018cba73ba55 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt index d6790ec06caf..045963db40ad 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt index d69016b0f012..650ecf60acdc 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt index 6a9e4c1d797e..54162f79d07c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt index a270601f4bd0..872e5a83ea4b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt @@ -45,6 +45,7 @@ Using plugins: transform-typeof-symbol { "ie":"10", "safari":"7" } transform-new-target { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } transform-regenerator { "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + proposal-export-namespace-from { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } transform-modules-commonjs { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-dynamic-import { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt index 83111b64646b..a192537e0acc 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt @@ -51,6 +51,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "electron":"0.36", "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } transform-modules-commonjs { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-dynamic-import { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt index eaea0d0653c7..657b2bb9f509 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt @@ -42,6 +42,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "ie":"10", "node":"6.10" } transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6.10" } proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt index d61f58659bef..5c628746724d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt @@ -42,6 +42,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "ie":"10", "node":"6" } transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6" } proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt index 8e968656d58d..4a4f5ec00e97 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt index e2839423b735..54f04283baf1 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt index 2598ed3ad41d..07832430b5b7 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-new-target { "android":"4" } transform-regenerator { "android":"4" } transform-reserved-words { "android":"4" } + proposal-export-namespace-from { "android":"4" } transform-modules-commonjs { "android":"4" } proposal-dynamic-import { "android":"4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt index 6e1869e102e8..ad6ce7eb4a86 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt index 579c0bbddc0c..eccf8f5657e9 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt @@ -34,6 +34,7 @@ Using plugins: transform-destructuring { "electron":"0.36" } transform-block-scoping { "electron":"0.36" } transform-regenerator { "electron":"0.36" } + proposal-export-namespace-from { "electron":"0.36" } transform-modules-commonjs { "electron":"0.36" } proposal-dynamic-import { "electron":"0.36" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt index fb530d67d5f6..0a8904106982 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt index 74af31dbbc93..fb0965e9a2c0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt index 577d9c5ae884..993f4396db90 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt index 30af4f73802b..da3de3a6d719 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt index 621510c0caa6..5786d12727c2 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt @@ -43,6 +43,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from { "chrome":"55" } syntax-dynamic-import { "chrome":"55" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt index d0765709ed86..9fbc4d6e4a1d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt @@ -22,6 +22,7 @@ Using plugins: transform-function-name { "node":"6" } transform-for-of { "node":"6" } transform-destructuring { "node":"6" } + proposal-export-namespace-from { "node":"6" } transform-modules-commonjs { "node":"6" } proposal-dynamic-import { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt index e68ee42d02c5..93c3c12d7da0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt index 5be4733d347c..41e6c2cdf35c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt index 59897d90fb9f..bad741b9f8c9 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt index 8e822ee48c6e..a39300a0bd4d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt index 4d28007cce1b..3b0296563cbd 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt index b1e37918f018..1b8bc65f355b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt index 72bcc4bcad1d..997430985966 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt @@ -45,6 +45,7 @@ Using plugins: transform-typeof-symbol { "ie":"10", "safari":"7" } transform-new-target { "edge":"13", "ie":"10", "ios":"9", "safari":"7" } transform-regenerator { "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + proposal-export-namespace-from { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } transform-modules-commonjs { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-dynamic-import { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt index 19f5637cd2b4..031089bf50f7 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt index 20db6564358a..8752ecccb1b3 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt @@ -19,6 +19,7 @@ Using plugins: syntax-object-rest-spread { "samsung":"8.2" } proposal-unicode-property-regex { "samsung":"8.2" } transform-named-capturing-groups-regex { "samsung":"8.2" } + proposal-export-namespace-from { "samsung":"8.2" } transform-modules-commonjs { "samsung":"8.2" } proposal-dynamic-import { "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt index 5a2bf8ca1996..e19fc90cf949 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt index 5e7c3a6c5dd7..fde96e49c95f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt index e2383378f7d9..747bdc67b67f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt index e0bc3e59b5cf..113ac74be187 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt @@ -51,6 +51,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "electron":"0.36", "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } transform-modules-commonjs { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-dynamic-import { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt index a791fa8bb25c..0ff9661d81dc 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt @@ -42,6 +42,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "ie":"10", "node":"6.10" } transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6.10" } proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt index 038f04373173..499e0d174fbe 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt @@ -42,6 +42,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "ie":"10", "node":"6.10" } transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6.10" } proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt index 046ba9c43aa8..2afbabd1eec0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt @@ -42,6 +42,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "ie":"10", "node":"6.10" } transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6.10" } proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt index 4ece0a3cf132..c17115edf0d4 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt @@ -17,6 +17,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt index 0f980182f166..d4e6342a99b3 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt index bb15384ae70c..25f117796837 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt @@ -42,6 +42,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "ie":"10", "node":"6" } transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6" } proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt index 5a3f2a1bf3cc..d7f06943d51c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt @@ -22,6 +22,7 @@ Using plugins: transform-function-name { "node":"6" } transform-for-of { "node":"6" } transform-destructuring { "node":"6" } + proposal-export-namespace-from { "node":"6" } transform-modules-commonjs { "node":"6" } proposal-dynamic-import { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt index 41cdc83d1cf9..962d24b7ad51 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from {} transform-modules-commonjs {} proposal-dynamic-import {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt index 6575dd496548..dfcf40046e6d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt @@ -46,6 +46,7 @@ Using plugins: transform-member-expression-literals {} transform-property-literals {} transform-reserved-words {} + proposal-export-namespace-from { "chrome":"55" } syntax-dynamic-import { "chrome":"55" } Using polyfills with `entry` option: diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt index f5bae02fca9e..2be735b8b919 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt @@ -42,6 +42,7 @@ Using plugins: transform-typeof-symbol { "ie":"10" } transform-new-target { "ie":"10" } transform-regenerator { "ie":"10" } + proposal-export-namespace-from { "chrome":"54", "ie":"10", "node":"6" } transform-modules-commonjs { "chrome":"54", "ie":"10", "node":"6" } proposal-dynamic-import { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt index d03017f54097..70fafa58a91b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt @@ -30,6 +30,7 @@ Using plugins: transform-for-of { "firefox":"52" } transform-unicode-escapes { "firefox":"52" } transform-destructuring { "firefox":"52" } + proposal-export-namespace-from { "firefox":"52", "node":"7.4" } transform-modules-commonjs { "firefox":"52", "node":"7.4" } proposal-dynamic-import { "firefox":"52", "node":"7.4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt index 4589851ccb4e..b6dd7732118d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt @@ -19,5 +19,6 @@ Using plugins: syntax-object-rest-spread { "chrome":"80" } transform-modules-commonjs { "chrome":"80" } proposal-dynamic-import { "chrome":"80" } + proposal-export-namespace-from {} Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. diff --git a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt index fcaa34179929..c1574a4cd164 100644 --- a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt @@ -18,5 +18,6 @@ Using plugins: syntax-object-rest-spread { "chrome":"84" } transform-modules-commonjs { "chrome":"84" } proposal-dynamic-import { "chrome":"84" } + proposal-export-namespace-from {} Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set. diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt index 5d11f0292efa..7886c483a3ab 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt index c2e91644b730..64ff15ef56ce 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt index 86ae8fc24991..1634e84fe962 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt index d1ed996d7e2c..0a229add6703 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt index eecc8369739e..d9a4d2181e5c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt index 15738ee29493..e53003b4e4ce 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt index 84684166e0da..3fc536c67b25 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt index 5bea33c8717a..0489ebca79ee 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt index 130f8d8d3002..a66303a7078b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt index efe8c9bf0a24..07398cdf420a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt index 995cbb8e53e2..c014bc109b60 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt index d9fbcc21294a..711083d143bc 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt index 25f7f945af46..0a4fe92b09bf 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt @@ -17,6 +17,7 @@ Using plugins: transform-dotall-regex { "chrome":"55" } proposal-unicode-property-regex { "chrome":"55" } transform-named-capturing-groups-regex { "chrome":"55" } + proposal-export-namespace-from { "chrome":"55" } transform-modules-commonjs { "chrome":"55" } proposal-dynamic-import { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt index b72e59025a8b..5820c0795de5 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt index 64bedff98a21..333c7c8a6357 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt index 91f9f62e9885..1a7616a6aa2d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt index dfeb23a0356a..db9996ac1e99 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt index 20f2154d7384..e90244dc8b34 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt index 3bb3da9097ed..40508644c19e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt index 19a90b47adc9..9cefb70be863 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt index af74441f807d..70f022712fa9 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt index db3815977e15..904605f89d87 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt index 7b02e2d05164..088a18251832 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt @@ -14,6 +14,7 @@ Using plugins: syntax-optional-catch-binding { "chrome":"71" } syntax-async-generators { "chrome":"71" } syntax-object-rest-spread { "chrome":"71" } + proposal-export-namespace-from { "chrome":"71" } transform-modules-commonjs { "chrome":"71" } proposal-dynamic-import { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt index f0b9d8369f79..78cbc6c2436c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt index 1b8f41e13300..bd4a88669c3b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt @@ -44,6 +44,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt index 4579f2c1a33b..fa2c02152c61 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt index cfb581f2b978..9ab3a55877d3 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt index 45d9d8b50fd3..5d29e2148755 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt index 27ee227d2bf4..ef0387e5ff62 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt index c14d41b62de9..a84b6fa1e35e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt @@ -17,6 +17,7 @@ Using plugins: transform-dotall-regex { "chrome":"55" } proposal-unicode-property-regex { "chrome":"55" } transform-named-capturing-groups-regex { "chrome":"55" } + proposal-export-namespace-from { "chrome":"55" } transform-modules-commonjs { "chrome":"55" } proposal-dynamic-import { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt index dbd065e328d6..e9ac9b3ba17a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt index c37a1fc2431d..265613e8ecfb 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt index d7a676f138f3..5bbc79d53ac3 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt index f33dfedca1aa..af52d0586377 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt @@ -41,6 +41,7 @@ Using plugins: transform-typeof-symbol { "ie":"11" } transform-new-target { "ie":"11" } transform-regenerator { "firefox":"50", "ie":"11" } + proposal-export-namespace-from { "chrome":"52", "firefox":"50", "ie":"11" } transform-modules-commonjs { "chrome":"52", "firefox":"50", "ie":"11" } proposal-dynamic-import { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/input.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/input.mjs new file mode 100644 index 000000000000..3d03df801311 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/input.mjs @@ -0,0 +1 @@ +export * as foo from "./foo.mjs"; diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/options.json b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/options.json new file mode 100644 index 000000000000..7796846968f4 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/options.json @@ -0,0 +1,10 @@ +{ + "validateLogs": true, + "caller": { + "name": "test-fixture", + "supportsStaticESM": false, + "supportsDynamicImport": false, + "supportsExportNamespaceFrom": false + }, + "presets": ["env"] +} diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/output.js b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/output.js new file mode 100644 index 000000000000..26e344a3dfb8 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-esm-not-supported/output.js @@ -0,0 +1,12 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.foo = void 0; + +var _foo = _interopRequireDefault(require("./foo.mjs")); + +exports.foo = _foo; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/input.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/input.mjs new file mode 100644 index 000000000000..3d03df801311 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/input.mjs @@ -0,0 +1 @@ +export * as foo from "./foo.mjs"; diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/options.json b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/options.json new file mode 100644 index 000000000000..8ba60ebe9eb5 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/options.json @@ -0,0 +1,9 @@ +{ + "caller": { + "name": "test-fixture", + "supportsStaticESM": true, + "supportsDynamicImport": true, + "supportsExportNamespaceFrom": false + }, + "presets": ["env"] +} diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/output.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/output.mjs new file mode 100644 index 000000000000..da4d09cb8227 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/auto-export-namespace-not-supported/output.mjs @@ -0,0 +1,2 @@ +import * as _foo from "./foo.mjs"; +export { _foo as foo }; diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/input.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/input.mjs new file mode 100644 index 000000000000..3d03df801311 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/input.mjs @@ -0,0 +1 @@ +export * as foo from "./foo.mjs"; diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/options.json b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/options.json new file mode 100644 index 000000000000..a996d7e96ea7 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/options.json @@ -0,0 +1,7 @@ +{ + "caller": { + "name": "test-fixture", + "supportsExportNamespaceFrom": true + }, + "presets": [["env", { "modules": false, "targets": "chrome 71" }]] +} diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/output.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/output.mjs new file mode 100644 index 000000000000..da4d09cb8227 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported-caller-supported/output.mjs @@ -0,0 +1,2 @@ +import * as _foo from "./foo.mjs"; +export { _foo as foo }; diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/input.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/input.mjs new file mode 100644 index 000000000000..3d03df801311 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/input.mjs @@ -0,0 +1 @@ +export * as foo from "./foo.mjs"; diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/options.json b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/options.json new file mode 100644 index 000000000000..9d6ac234690f --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/options.json @@ -0,0 +1,7 @@ +{ + "caller": { + "name": "test-fixture", + "supportsExportNamespaceFrom": false + }, + "presets": [["env", { "modules": false, "targets": "chrome 71" }]] +} diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/output.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/output.mjs new file mode 100644 index 000000000000..da4d09cb8227 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-not-supported/output.mjs @@ -0,0 +1,2 @@ +import * as _foo from "./foo.mjs"; +export { _foo as foo }; diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/input.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/input.mjs new file mode 100644 index 000000000000..3d03df801311 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/input.mjs @@ -0,0 +1 @@ +export * as foo from "./foo.mjs"; diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/options.json b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/options.json new file mode 100644 index 000000000000..e60343c1b6a5 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/options.json @@ -0,0 +1,7 @@ +{ + "caller": { + "name": "test-fixture", + "supportsExportNamespaceFrom": false + }, + "presets": [["env", { "modules": false, "targets": "chrome 72" }]] +} diff --git a/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/output.mjs b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/output.mjs new file mode 100644 index 000000000000..3d03df801311 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/export-namespace-from/false-export-namespace-supported/output.mjs @@ -0,0 +1 @@ +export * as foo from "./foo.mjs"; diff --git a/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt b/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt index 6425e78aaaf7..307557b625a5 100644 --- a/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt @@ -22,6 +22,7 @@ Using plugins: transform-template-literals { "safari":"10" } transform-unicode-regex { "safari":"10" } transform-block-scoping { "safari":"10" } + proposal-export-namespace-from { "safari":"10" } transform-modules-commonjs { "safari":"10" } proposal-dynamic-import { "safari":"10" } diff --git a/packages/babel-preset-env/test/index.spec.js b/packages/babel-preset-env/test/index.spec.js index f275da47abf2..291bb26c71e5 100644 --- a/packages/babel-preset-env/test/index.spec.js +++ b/packages/babel-preset-env/test/index.spec.js @@ -42,28 +42,30 @@ describe("babel-preset-env", () => { }); describe("getModulesPluginNames", () => { describe("modules is set to false", () => { - it("returns only syntax-dynamic-import", () => { + it("returns only syntax plugins", () => { expect( babelPresetEnv.getModulesPluginNames({ modules: false, transformations, shouldTransformESM: false, shouldTransformDynamicImport: false, + shouldTransformExportNamespaceFrom: false, }), - ).toEqual(["syntax-dynamic-import"]); + ).toEqual(["syntax-dynamic-import", "syntax-export-namespace-from"]); }); }); describe("modules is not set to false", () => { describe("ESMs should not be transformed", () => { - it("returns syntax-dynamic-import", () => { + it("returns syntax plugins", () => { expect( babelPresetEnv.getModulesPluginNames({ modules: "commonjs", transformations, shouldTransformESM: false, shouldTransformDynamicImport: false, + shouldTransformExportNamespaceFrom: false, }), - ).toEqual(["syntax-dynamic-import"]); + ).toEqual(["syntax-dynamic-import", "syntax-export-namespace-from"]); }); }); describe("ESMs should be transformed", () => { @@ -75,8 +77,13 @@ describe("babel-preset-env", () => { transformations, shouldTransformESM: true, shouldTransformDynamicImport: false, + shouldTransformExportNamespaceFrom: false, }), - ).toEqual(["transform-modules-commonjs", "syntax-dynamic-import"]); + ).toEqual([ + "transform-modules-commonjs", + "syntax-dynamic-import", + "syntax-export-namespace-from", + ]); }); }); describe("dynamic imports should be transformed", () => { @@ -87,12 +94,31 @@ describe("babel-preset-env", () => { transformations, shouldTransformESM: true, shouldTransformDynamicImport: true, + shouldTransformExportNamespaceFrom: false, }), ).toEqual([ "transform-modules-systemjs", "proposal-dynamic-import", + "syntax-export-namespace-from", ]); }); + describe("export namespace from should be transformed", () => { + it("works", () => { + expect( + babelPresetEnv.getModulesPluginNames({ + modules: "systemjs", + transformations, + shouldTransformESM: true, + shouldTransformDynamicImport: true, + shouldTransformExportNamespaceFrom: true, + }), + ).toEqual([ + "transform-modules-systemjs", + "proposal-dynamic-import", + "proposal-export-namespace-from", + ]); + }); + }); }); }); }); From ccd98f042cd36c5ea531c5ee6573c049b5d261fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 22 Jul 2020 04:46:08 -0400 Subject: [PATCH 38/90] Add `numeric-separator` to `preset-env` (#11865) --- packages/babel-compat-data/data/plugins.json | 22 +++++++++---------- .../scripts/data/plugin-features.js | 6 ++++- .../data/shipped-proposals.js | 1 - .../_esmodules-no-bugfixes/stdout.txt | 1 + .../fixtures/bugfixes/_esmodules/stdout.txt | 1 + .../edge-default-params-chrome-40/stdout.txt | 1 + .../edge-default-params-chrome-70/stdout.txt | 1 + .../edge-default-params-edge-14/stdout.txt | 1 + .../edge-default-params-edge-15/stdout.txt | 1 + .../stdout.txt | 1 + .../edge-default-params-edge-17/stdout.txt | 1 + .../edge-default-params-edge-18/stdout.txt | 1 + .../stdout.txt | 1 + .../edge-function-name-edge-14/stdout.txt | 1 + .../edge-function-name-edge-15/stdout.txt | 1 + .../stdout.txt | 1 + .../safari-block-scoping-safari-10/stdout.txt | 1 + .../safari-block-scoping-safari-11/stdout.txt | 1 + .../safari-block-scoping-safari-9/stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../debug/browserslist-env/stdout.txt | 1 + .../debug/browserslists-android-3/stdout.txt | 1 + .../browserslists-defaults-not-ie/stdout.txt | 1 + .../debug/browserslists-defaults/stdout.txt | 1 + .../stdout.txt | 1 + .../corejs-without-usebuiltins/stdout.txt | 1 + .../debug/entry-corejs2-android/stdout.txt | 1 + .../debug/entry-corejs2-electron/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-corejs2-no-import/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-corejs2-proposals/stdout.txt | 1 + .../stdout.txt | 2 +- .../entry-corejs2-shippedProposals/stdout.txt | 2 +- .../entry-corejs2-specific-targets/stdout.txt | 1 + .../stdout.txt | 1 + .../entry-corejs2-versions-strings/stdout.txt | 1 + .../fixtures/debug/entry-corejs2/stdout.txt | 1 + .../entry-corejs3-all-chrome-71/stdout.txt | 2 +- .../debug/entry-corejs3-all/stdout.txt | 2 +- .../debug/entry-corejs3-android/stdout.txt | 1 + .../entry-corejs3-babel-polyfill/stdout.txt | 2 +- .../debug/entry-corejs3-electron/stdout.txt | 1 + .../entry-corejs3-es-chrome-71/stdout.txt | 2 +- .../stdout.txt | 2 +- .../entry-corejs3-es-proposals/stdout.txt | 2 +- .../debug/entry-corejs3-es/stdout.txt | 2 +- .../stdout.txt | 1 + .../debug/entry-corejs3-no-import/stdout.txt | 1 + .../stdout.txt | 1 + .../debug/entry-corejs3-proposals/stdout.txt | 1 + .../stdout.txt | 2 +- .../entry-corejs3-runtime-only/stdout.txt | 2 +- .../stdout.txt | 2 +- .../entry-corejs3-specific-entries/stdout.txt | 2 +- .../entry-corejs3-specific-targets/stdout.txt | 1 + .../entry-corejs3-stable-chrome-71/stdout.txt | 2 +- .../stdout.txt | 2 +- .../debug/entry-corejs3-stable/stdout.txt | 2 +- .../entry-corejs3-stage-chrome-71/stdout.txt | 2 +- .../debug/entry-corejs3-stage/stdout.txt | 2 +- .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../entry-corejs3-versions-strings/stdout.txt | 1 + .../entry-corejs3-web-chrome-71/stdout.txt | 2 +- .../debug/entry-corejs3-web/stdout.txt | 2 +- .../fixtures/debug/entry-corejs3/stdout.txt | 1 + .../entry-no-corejs-no-import/stdout.txt | 1 + .../stdout.txt | 2 +- .../debug/entry-no-corejs-uglify/stdout.txt | 1 + .../fixtures/debug/entry-no-corejs/stdout.txt | 1 + .../fixtures/debug/plugins-only/stdout.txt | 1 + .../shippedProposals-chrome-80/stdout.txt | 2 +- .../shippedProposals-chrome-84/stdout.txt | 2 +- .../fixtures/debug/usage-corejs2-1/stdout.txt | 1 + .../fixtures/debug/usage-corejs2-2/stdout.txt | 1 + .../usage-corejs2-chrome-71-1/stdout.txt | 1 + .../usage-corejs2-chrome-71-2/stdout.txt | 1 + .../debug/usage-corejs2-none-1/stdout.txt | 1 + .../debug/usage-corejs2-none-2/stdout.txt | 1 + .../usage-corejs2-proposals-1/stdout.txt | 1 + .../usage-corejs2-proposals-2/stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 2 +- .../stdout.txt | 2 +- .../usage-corejs2-with-import/stdout.txt | 1 + .../fixtures/debug/usage-corejs3-1/stdout.txt | 1 + .../fixtures/debug/usage-corejs3-2/stdout.txt | 1 + .../usage-corejs3-chrome-71-1/stdout.txt | 1 + .../usage-corejs3-chrome-71-2/stdout.txt | 1 + .../debug/usage-corejs3-none-1/stdout.txt | 1 + .../debug/usage-corejs3-none-2/stdout.txt | 1 + .../usage-corejs3-proposals-1/stdout.txt | 1 + .../usage-corejs3-proposals-2/stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 2 +- .../stdout.txt | 2 +- .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../stdout.txt | 1 + .../usage-corejs3-with-import/stdout.txt | 1 + .../debug/usage-no-corejs-1/stdout.txt | 1 + .../debug/usage-no-corejs-2/stdout.txt | 1 + .../debug/usage-no-corejs-none-1/stdout.txt | 1 + .../debug/usage-no-corejs-none-2/stdout.txt | 1 + .../safari-10_3-block-scoped/stdout.txt | 1 + 111 files changed, 124 insertions(+), 40 deletions(-) diff --git a/packages/babel-compat-data/data/plugins.json b/packages/babel-compat-data/data/plugins.json index d2957432eb94..3498fcee646e 100644 --- a/packages/babel-compat-data/data/plugins.json +++ b/packages/babel-compat-data/data/plugins.json @@ -1,15 +1,4 @@ { - "proposal-numeric-separator": { - "chrome": "75", - "opera": "62", - "edge": "79", - "firefox": "70", - "safari": "13", - "node": "12.5", - "ios": "13", - "samsung": "11", - "electron": "6" - }, "proposal-class-properties": { "chrome": "74", "opera": "61", @@ -21,6 +10,17 @@ "proposal-private-methods": { "chrome": "84" }, + "proposal-numeric-separator": { + "chrome": "75", + "opera": "62", + "edge": "79", + "firefox": "70", + "safari": "13", + "node": "12.5", + "ios": "13", + "samsung": "11", + "electron": "6" + }, "proposal-nullish-coalescing-operator": { "chrome": "80", "opera": "67", diff --git a/packages/babel-compat-data/scripts/data/plugin-features.js b/packages/babel-compat-data/scripts/data/plugin-features.js index 0eb5192f10a4..db087012d602 100644 --- a/packages/babel-compat-data/scripts/data/plugin-features.js +++ b/packages/babel-compat-data/scripts/data/plugin-features.js @@ -122,8 +122,11 @@ const es2020 = { "proposal-optional-chaining": "optional chaining operator (?.)", }; -const shippedProposal = { +const es2021 = { "proposal-numeric-separator": "numeric separator", +}; + +const shippedProposal = { "proposal-class-properties": { features: [ "static class fields", @@ -139,6 +142,7 @@ const shippedProposal = { module.exports = Object.assign( {}, shippedProposal, + es2021, es2020, es2019, es2015Parameter, diff --git a/packages/babel-preset-env/data/shipped-proposals.js b/packages/babel-preset-env/data/shipped-proposals.js index 34c13c0d73b4..95ca9b119225 100644 --- a/packages/babel-preset-env/data/shipped-proposals.js +++ b/packages/babel-preset-env/data/shipped-proposals.js @@ -4,7 +4,6 @@ const proposalPlugins = new Set([ "proposal-class-properties", - "proposal-numeric-separator", "proposal-private-methods" ]); diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt index a3b757e75dc1..73b2cef87504 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt @@ -16,6 +16,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt index c31187f4912f..1e1fa10807cc 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt @@ -16,6 +16,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt index 152c2e2233b8..6a97618ff273 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"40" } proposal-nullish-coalescing-operator { "chrome":"40" } proposal-optional-chaining { "chrome":"40" } proposal-json-strings { "chrome":"40" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt index e89bda5854f6..ea4b45d0fae3 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"70" } proposal-nullish-coalescing-operator { "chrome":"70" } proposal-optional-chaining { "chrome":"70" } syntax-json-strings { "chrome":"70" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt index 93aeded847e0..322568b2a73c 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"14" } proposal-nullish-coalescing-operator { "edge":"14" } proposal-optional-chaining { "edge":"14" } proposal-json-strings { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt index e7b3ca3f82f7..cde9782c69b4 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"15" } proposal-nullish-coalescing-operator { "edge":"15" } proposal-optional-chaining { "edge":"15" } proposal-json-strings { "edge":"15" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt index b15a7c7e25d9..e20d9c23246a 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"17" } proposal-nullish-coalescing-operator { "edge":"17" } proposal-optional-chaining { "edge":"17" } proposal-json-strings { "edge":"17" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt index f18cf6a45443..bd2e0d012665 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"17" } proposal-nullish-coalescing-operator { "edge":"17" } proposal-optional-chaining { "edge":"17" } proposal-json-strings { "edge":"17" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt index f32c7e31a58d..8fa6540973cb 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"18" } proposal-nullish-coalescing-operator { "edge":"18" } proposal-optional-chaining { "edge":"18" } proposal-json-strings { "edge":"18" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt index f491d9ce25c1..9bf7b1fcafa7 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"14" } proposal-nullish-coalescing-operator { "edge":"14" } proposal-optional-chaining { "edge":"14" } proposal-json-strings { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt index 93aeded847e0..322568b2a73c 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"14" } proposal-nullish-coalescing-operator { "edge":"14" } proposal-optional-chaining { "edge":"14" } proposal-json-strings { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt index e7b3ca3f82f7..cde9782c69b4 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"15" } proposal-nullish-coalescing-operator { "edge":"15" } proposal-optional-chaining { "edge":"15" } proposal-json-strings { "edge":"15" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt index 307557b625a5..3a9f7db02e24 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "safari":"10" } proposal-nullish-coalescing-operator { "safari":"10" } proposal-optional-chaining { "safari":"10" } proposal-json-strings { "safari":"10" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt index ca43b45ed6b3..08271f0994a2 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "safari":"10" } proposal-nullish-coalescing-operator { "safari":"10" } proposal-optional-chaining { "safari":"10" } proposal-json-strings { "safari":"10" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt index b2e2d6b7e215..5e5e377d2912 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "safari":"11" } proposal-nullish-coalescing-operator { "safari":"11" } proposal-optional-chaining { "safari":"11" } proposal-json-strings { "safari":"11" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt index fc71158d5f30..9c31230a72cb 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "safari":"9" } proposal-nullish-coalescing-operator { "safari":"9" } proposal-optional-chaining { "safari":"9" } proposal-json-strings { "safari":"9" } diff --git a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt index 3f4504874eb6..761605fea6cf 100644 --- a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt @@ -16,6 +16,7 @@ Using targets: Using modules transform: false Using plugins: + proposal-numeric-separator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt index ecb1e6823463..6253b95e5773 100644 --- a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt @@ -16,6 +16,7 @@ Using targets: Using modules transform: false Using plugins: + proposal-numeric-separator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt index 181694bfe513..3a343d2aa3c1 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "ie":"11" } proposal-nullish-coalescing-operator { "ie":"11" } proposal-optional-chaining { "ie":"11" } proposal-json-strings { "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt index befd16705067..5b51a1545c61 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "android":"3" } proposal-nullish-coalescing-operator { "android":"3" } proposal-optional-chaining { "android":"3" } proposal-json-strings { "android":"3" } 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 6b6c8fb39723..cc20149ca4fe 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 @@ -15,6 +15,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"18", "firefox":"68", "ios":"12.2", "samsung":"10.1" } proposal-nullish-coalescing-operator { "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "safari":"13", "samsung":"10.1" } proposal-optional-chaining { "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "safari":"13", "samsung":"10.1" } proposal-json-strings { "edge":"18" } 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 6f953aec4f43..93a537f4fd90 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 @@ -16,6 +16,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "samsung":"10.1" } proposal-nullish-coalescing-operator { "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "safari":"13", "samsung":"10.1" } proposal-optional-chaining { "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "safari":"13", "samsung":"10.1" } proposal-json-strings { "edge":"18", "ie":"11" } 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 68e8f02769ee..601145f4ca3d 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 @@ -15,6 +15,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "samsung":"10.1" } proposal-nullish-coalescing-operator { "ios":"13.3", "safari":"13", "samsung":"10.1" } proposal-optional-chaining { "ios":"13.3", "safari":"13", "samsung":"10.1" } syntax-json-strings { "android":"80", "chrome":"80", "edge":"80", "firefox":"75", "ios":"13.3", "opera":"67", "safari":"13", "samsung":"10.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt index 510cab341574..609eb299e81a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt index faff63971e8b..59b7dc0b99b3 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "android":"4" } proposal-nullish-coalescing-operator { "android":"4" } proposal-optional-chaining { "android":"4" } proposal-json-strings { "android":"4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt index 4cd3fd47b8b7..3859bffe8a43 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt @@ -15,6 +15,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "electron":"0.36" } proposal-nullish-coalescing-operator { "electron":"0.36" } proposal-optional-chaining { "electron":"0.36" } proposal-json-strings { "electron":"0.36" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt index 926708798118..c7a6c7242655 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: false Using plugins: + proposal-numeric-separator { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt index 99cb53108466..396016476bee 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "node":"6" } proposal-nullish-coalescing-operator { "node":"6" } proposal-optional-chaining { "node":"6" } proposal-json-strings { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt index 018cba73ba55..0aea2bc0f98e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt index 045963db40ad..c1907591d0e4 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt @@ -6,6 +6,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt index 650ecf60acdc..61915c8c91a9 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt index 54162f79d07c..d19b53a442fb 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt index 872e5a83ea4b..fd749310699c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt @@ -13,6 +13,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-nullish-coalescing-operator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-optional-chaining { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-json-strings { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt index a192537e0acc..6442a791d39a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt @@ -19,6 +19,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-nullish-coalescing-operator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-optional-chaining { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-json-strings { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt index 657b2bb9f509..254c7336f970 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6.10" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt index 5c628746724d..0138f4686301 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt index 4a4f5ec00e97..2090a2ea2664 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt index 54f04283baf1..7ec0c50b7e4f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt index 07832430b5b7..f1a66958dad4 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "android":"4" } proposal-nullish-coalescing-operator { "android":"4" } proposal-optional-chaining { "android":"4" } proposal-json-strings { "android":"4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt index ad6ce7eb4a86..5270d0846433 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt index eccf8f5657e9..aa9a0a594c5f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt @@ -15,6 +15,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "electron":"0.36" } proposal-nullish-coalescing-operator { "electron":"0.36" } proposal-optional-chaining { "electron":"0.36" } proposal-json-strings { "electron":"0.36" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt index 0a8904106982..f07f8afad343 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt index fb0965e9a2c0..6f75c4c0e610 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt index 993f4396db90..cd478a24306a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt index da3de3a6d719..2dc70fa3909a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt index 5786d12727c2..fd661fd589b4 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: false Using plugins: + proposal-numeric-separator { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt index 9fbc4d6e4a1d..6f05bc01857c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "node":"6" } proposal-nullish-coalescing-operator { "node":"6" } proposal-optional-chaining { "node":"6" } proposal-json-strings { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt index 93c3c12d7da0..22c04a0dbbc1 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt index 41e6c2cdf35c..eac8e8d7185e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt @@ -6,6 +6,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt index bad741b9f8c9..37b28bfc203d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt index a39300a0bd4d..e96638c2f739 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt index 3b0296563cbd..e987f121aae7 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt index 1b8bc65f355b..95581caf4050 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt index 997430985966..b98cbd7fb9d4 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt @@ -13,6 +13,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-nullish-coalescing-operator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-optional-chaining { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-json-strings { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt index 031089bf50f7..401cb3386a54 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt index 8752ecccb1b3..bad74953f395 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "samsung":"8.2" } proposal-class-properties { "samsung":"8.2" } proposal-private-methods { "samsung":"8.2" } + proposal-numeric-separator { "samsung":"8.2" } proposal-nullish-coalescing-operator { "samsung":"8.2" } proposal-optional-chaining { "samsung":"8.2" } proposal-json-strings { "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt index e19fc90cf949..e37600d62ddf 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt index fde96e49c95f..7eec005b3b6d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt index 747bdc67b67f..f2c9e7435b27 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt index 113ac74be187..82f2b3275fc0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt @@ -19,6 +19,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-nullish-coalescing-operator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-optional-chaining { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-json-strings { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt index 0ff9661d81dc..e96003028c3e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6.10" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt index 499e0d174fbe..9ec53aa86eaf 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6.10" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt index 2afbabd1eec0..5a138fb67c26 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6.10" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt index c17115edf0d4..d17a73b5e0d2 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"71" } proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt index d4e6342a99b3..50f5d8d86713 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt index 25f117796837..201c6be79863 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt index d7f06943d51c..0aa49415771b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "node":"6" } proposal-nullish-coalescing-operator { "node":"6" } proposal-optional-chaining { "node":"6" } proposal-json-strings { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt index 962d24b7ad51..3c052a81f966 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt @@ -6,9 +6,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator {} proposal-class-properties {} proposal-private-methods {} + proposal-numeric-separator {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt index dfcf40046e6d..57b6d0483553 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt @@ -11,6 +11,7 @@ Using targets: Using modules transform: false Using plugins: + proposal-numeric-separator { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt index 2be735b8b919..6a0ec4965b21 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt index 70fafa58a91b..9296a8b197bd 100644 --- a/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt @@ -16,6 +16,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "firefox":"52", "node":"7.4" } proposal-nullish-coalescing-operator { "firefox":"52", "node":"7.4" } proposal-optional-chaining { "firefox":"52", "node":"7.4" } proposal-json-strings { "firefox":"52", "node":"7.4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt index b6dd7732118d..5f2f3d163d94 100644 --- a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt @@ -8,9 +8,9 @@ Using targets: Using modules transform: auto Using plugins: - syntax-numeric-separator { "chrome":"80" } proposal-class-properties { "chrome":"80" } proposal-private-methods { "chrome":"80" } + syntax-numeric-separator { "chrome":"80" } syntax-nullish-coalescing-operator { "chrome":"80" } syntax-optional-chaining { "chrome":"80" } syntax-json-strings { "chrome":"80" } diff --git a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt index c1574a4cd164..32126b902b5a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt @@ -8,8 +8,8 @@ Using targets: Using modules transform: auto Using plugins: - syntax-numeric-separator { "chrome":"84" } syntax-class-properties { "chrome":"84" } + syntax-numeric-separator { "chrome":"84" } syntax-nullish-coalescing-operator { "chrome":"84" } syntax-optional-chaining { "chrome":"84" } syntax-json-strings { "chrome":"84" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt index 7886c483a3ab..a108b3eead08 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt index 64ff15ef56ce..d8f4c238176a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt index 1634e84fe962..454255e849d3 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt index 0a229add6703..708826fdfec4 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt index d9a4d2181e5c..3c52c1453147 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt index e53003b4e4ce..b42c95bada8d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt index 3fc536c67b25..9c13d4fc1776 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt index 0489ebca79ee..c7f19e52059d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt index a66303a7078b..52d7bf591fa3 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt index 07398cdf420a..1a4dc0d52072 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt index c014bc109b60..ce9b7af62226 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt @@ -10,9 +10,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-class-properties { "chrome":"52", "firefox":"50", "ie":"11" } proposal-private-methods { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt index 711083d143bc..c744af89053c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt @@ -10,9 +10,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-class-properties { "chrome":"52", "firefox":"50", "ie":"11" } proposal-private-methods { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt index 0a4fe92b09bf..ffecf75de0cb 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt index 5820c0795de5..fb00903cd080 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt index 333c7c8a6357..6de04c9de0ac 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt index 1a7616a6aa2d..dbd7d1df6be8 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt index db9996ac1e99..208737af2ec0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt index e90244dc8b34..08734d418a44 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt index 40508644c19e..700224ba32bb 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt index 9cefb70be863..473b41ef4698 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt index 70f022712fa9..30ce6cc3ecde 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt index 904605f89d87..7d7b97095d88 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt index 088a18251832..1a4776bebb1a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt index 78cbc6c2436c..89a56d17b9ee 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt @@ -10,9 +10,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-class-properties { "chrome":"52", "firefox":"50", "ie":"11" } proposal-private-methods { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt index bd4a88669c3b..d38eceb0a082 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt @@ -10,9 +10,9 @@ Using targets: Using modules transform: auto Using plugins: - proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-class-properties { "chrome":"52", "firefox":"50", "ie":"11" } proposal-private-methods { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt index fa2c02152c61..aefa65b990bb 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt index 9ab3a55877d3..28fb1224ab94 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt index 5d29e2148755..f7aefb106399 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt index ef0387e5ff62..c23837ddc749 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt index a84b6fa1e35e..9c11db637e27 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt index e9ac9b3ba17a..69d16357b155 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt index 265613e8ecfb..ef013160d53a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt index 5bbc79d53ac3..1cd9829d6654 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt index af52d0586377..3b53a2a11921 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt @@ -10,6 +10,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt b/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt index 307557b625a5..3a9f7db02e24 100644 --- a/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt @@ -8,6 +8,7 @@ Using targets: Using modules transform: auto Using plugins: + proposal-numeric-separator { "safari":"10" } proposal-nullish-coalescing-operator { "safari":"10" } proposal-optional-chaining { "safari":"10" } proposal-json-strings { "safari":"10" } From 0e985fb287725b63f565e01e625815a221714391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 22 Jul 2020 04:47:27 -0400 Subject: [PATCH 39/90] feat: enable numericSeparator parsing support (#11863) --- packages/babel-parser/src/tokenizer/index.js | 48 ++++++++----------- .../identifier-start-0/input.js | 0 .../identifier-start-0/output.json | 0 .../numeric-separator/invalid-0/input.js | 0 .../numeric-separator/invalid-0/output.json | 0 .../numeric-separator/invalid-1/input.js | 0 .../numeric-separator/invalid-1/output.json | 0 .../numeric-separator/invalid-10/input.js | 0 .../numeric-separator/invalid-10/output.json | 0 .../numeric-separator/invalid-100/input.js | 0 .../numeric-separator/invalid-100/output.json | 0 .../numeric-separator/invalid-101/input.js | 0 .../numeric-separator/invalid-101/output.json | 0 .../numeric-separator/invalid-102/input.js | 0 .../numeric-separator/invalid-102/output.json | 0 .../numeric-separator/invalid-103/input.js | 0 .../numeric-separator/invalid-103/output.json | 0 .../numeric-separator/invalid-104/input.js | 0 .../numeric-separator/invalid-104/output.json | 0 .../numeric-separator/invalid-105/input.js | 0 .../numeric-separator/invalid-105/output.json | 0 .../numeric-separator/invalid-106/input.js | 0 .../numeric-separator/invalid-106/output.json | 0 .../numeric-separator/invalid-107/input.js | 0 .../numeric-separator/invalid-107/output.json | 0 .../numeric-separator/invalid-108/input.js | 0 .../numeric-separator/invalid-108/output.json | 0 .../numeric-separator/invalid-109/input.js | 0 .../numeric-separator/invalid-109/output.json | 0 .../numeric-separator/invalid-11/input.js | 0 .../numeric-separator/invalid-11/output.json | 0 .../numeric-separator/invalid-110/input.js | 0 .../numeric-separator/invalid-110/output.json | 0 .../numeric-separator/invalid-111/input.js | 0 .../numeric-separator/invalid-111/output.json | 0 .../numeric-separator/invalid-112/input.js | 0 .../numeric-separator/invalid-112/output.json | 0 .../numeric-separator/invalid-113/input.js | 0 .../numeric-separator/invalid-113/output.json | 0 .../numeric-separator/invalid-114/input.js | 0 .../numeric-separator/invalid-114/output.json | 0 .../numeric-separator/invalid-115/input.js | 0 .../numeric-separator/invalid-115/output.json | 0 .../numeric-separator/invalid-116/input.js | 0 .../numeric-separator/invalid-116/output.json | 0 .../numeric-separator/invalid-117/input.js | 0 .../numeric-separator/invalid-117/output.json | 0 .../numeric-separator/invalid-118/input.js | 0 .../numeric-separator/invalid-118/output.json | 0 .../numeric-separator/invalid-119/input.js | 0 .../numeric-separator/invalid-119/output.json | 0 .../numeric-separator/invalid-12/input.js | 0 .../numeric-separator/invalid-12/output.json | 0 .../numeric-separator/invalid-120/input.js | 0 .../numeric-separator/invalid-120/output.json | 0 .../numeric-separator/invalid-121/input.js | 0 .../numeric-separator/invalid-121/output.json | 0 .../numeric-separator/invalid-122/input.js | 0 .../numeric-separator/invalid-122/output.json | 0 .../numeric-separator/invalid-123/input.js | 0 .../numeric-separator/invalid-123/output.json | 0 .../numeric-separator/invalid-124/input.js | 0 .../numeric-separator/invalid-124/output.json | 0 .../numeric-separator/invalid-125/input.js | 0 .../numeric-separator/invalid-125/output.json | 0 .../numeric-separator/invalid-126/input.js | 0 .../numeric-separator/invalid-126/output.json | 0 .../numeric-separator/invalid-127/input.js | 0 .../numeric-separator/invalid-127/output.json | 0 .../numeric-separator/invalid-128/input.js | 0 .../numeric-separator/invalid-128/output.json | 0 .../numeric-separator/invalid-129/input.js | 0 .../numeric-separator/invalid-129/output.json | 0 .../numeric-separator/invalid-13/input.js | 0 .../numeric-separator/invalid-13/output.json | 0 .../numeric-separator/invalid-130/input.js | 0 .../numeric-separator/invalid-130/output.json | 0 .../numeric-separator/invalid-131/input.js | 0 .../numeric-separator/invalid-131/output.json | 0 .../numeric-separator/invalid-132/input.js | 0 .../numeric-separator/invalid-132/output.json | 0 .../numeric-separator/invalid-133/input.js | 0 .../numeric-separator/invalid-133/output.json | 0 .../numeric-separator/invalid-134/input.js | 0 .../numeric-separator/invalid-134/output.json | 0 .../numeric-separator/invalid-135/input.js | 0 .../numeric-separator/invalid-135/output.json | 0 .../numeric-separator/invalid-136/input.js | 0 .../numeric-separator/invalid-136/output.json | 0 .../numeric-separator/invalid-137/input.js | 0 .../numeric-separator/invalid-137/output.json | 0 .../numeric-separator/invalid-138/input.js | 0 .../numeric-separator/invalid-138/output.json | 0 .../numeric-separator/invalid-139/input.js | 0 .../numeric-separator/invalid-139/output.json | 0 .../numeric-separator/invalid-14/input.js | 0 .../numeric-separator/invalid-14/output.json | 0 .../numeric-separator/invalid-140/input.js | 0 .../numeric-separator/invalid-140/output.json | 0 .../numeric-separator/invalid-141/input.js | 0 .../numeric-separator/invalid-141/output.json | 0 .../numeric-separator/invalid-142/input.js | 0 .../numeric-separator/invalid-142/output.json | 0 .../numeric-separator/invalid-143/input.js | 0 .../numeric-separator/invalid-143/output.json | 0 .../numeric-separator/invalid-144/input.js | 0 .../numeric-separator/invalid-144/output.json | 0 .../numeric-separator/invalid-145/input.js | 0 .../numeric-separator/invalid-145/output.json | 0 .../numeric-separator/invalid-146/input.js | 0 .../numeric-separator/invalid-146/output.json | 0 .../numeric-separator/invalid-147/input.js | 0 .../numeric-separator/invalid-147/output.json | 0 .../numeric-separator/invalid-15/input.js | 0 .../numeric-separator/invalid-15/output.json | 0 .../numeric-separator/invalid-16/input.js | 0 .../numeric-separator/invalid-16/output.json | 0 .../numeric-separator/invalid-17/input.js | 0 .../numeric-separator/invalid-17/output.json | 0 .../numeric-separator/invalid-18/input.js | 0 .../numeric-separator/invalid-18/output.json | 0 .../numeric-separator/invalid-19/input.js | 0 .../numeric-separator/invalid-19/output.json | 0 .../numeric-separator/invalid-2/input.js | 0 .../numeric-separator/invalid-2/output.json | 0 .../numeric-separator/invalid-20/input.js | 0 .../numeric-separator/invalid-20/output.json | 0 .../numeric-separator/invalid-21/input.js | 0 .../numeric-separator/invalid-21/output.json | 0 .../numeric-separator/invalid-22/input.js | 0 .../numeric-separator/invalid-22/output.json | 0 .../numeric-separator/invalid-23/input.js | 0 .../numeric-separator/invalid-23/output.json | 0 .../numeric-separator/invalid-24/input.js | 0 .../numeric-separator/invalid-24/options.json | 0 .../numeric-separator/invalid-25/input.js | 0 .../numeric-separator/invalid-25/output.json | 0 .../numeric-separator/invalid-26/input.js | 0 .../numeric-separator/invalid-26/output.json | 0 .../numeric-separator/invalid-27/input.js | 0 .../numeric-separator/invalid-27/options.json | 0 .../numeric-separator/invalid-28/input.js | 0 .../numeric-separator/invalid-28/output.json | 0 .../numeric-separator/invalid-29/input.js | 0 .../numeric-separator/invalid-29/output.json | 0 .../numeric-separator/invalid-3/input.js | 0 .../numeric-separator/invalid-3/output.json | 0 .../numeric-separator/invalid-30/input.js | 0 .../numeric-separator/invalid-30/output.json | 0 .../numeric-separator/invalid-31/input.js | 0 .../numeric-separator/invalid-31/output.json | 0 .../numeric-separator/invalid-32/input.js | 0 .../numeric-separator/invalid-32/output.json | 0 .../numeric-separator/invalid-33/input.js | 0 .../numeric-separator/invalid-33/output.json | 0 .../numeric-separator/invalid-34/input.js | 0 .../numeric-separator/invalid-34/output.json | 0 .../numeric-separator/invalid-35/input.js | 0 .../numeric-separator/invalid-35/output.json | 0 .../numeric-separator/invalid-36/input.js | 0 .../numeric-separator/invalid-36/output.json | 0 .../numeric-separator/invalid-37/input.js | 0 .../numeric-separator/invalid-37/output.json | 0 .../numeric-separator/invalid-38/input.js | 0 .../numeric-separator/invalid-38/output.json | 0 .../numeric-separator/invalid-39/input.js | 0 .../numeric-separator/invalid-39/output.json | 0 .../numeric-separator/invalid-4/input.js | 0 .../numeric-separator/invalid-4/output.json | 0 .../numeric-separator/invalid-40/input.js | 0 .../numeric-separator/invalid-40/output.json | 0 .../numeric-separator/invalid-41/input.js | 0 .../numeric-separator/invalid-41/output.json | 0 .../numeric-separator/invalid-42/input.js | 0 .../numeric-separator/invalid-42/output.json | 0 .../numeric-separator/invalid-43/input.js | 0 .../numeric-separator/invalid-43/output.json | 0 .../numeric-separator/invalid-44/input.js | 0 .../numeric-separator/invalid-44/output.json | 0 .../numeric-separator/invalid-45/input.js | 0 .../numeric-separator/invalid-45/output.json | 0 .../numeric-separator/invalid-46/input.js | 0 .../numeric-separator/invalid-46/output.json | 0 .../numeric-separator/invalid-47/input.js | 0 .../numeric-separator/invalid-47/output.json | 0 .../numeric-separator/invalid-48/input.js | 0 .../numeric-separator/invalid-48/output.json | 0 .../numeric-separator/invalid-49/input.js | 0 .../numeric-separator/invalid-49/output.json | 0 .../numeric-separator/invalid-5/input.js | 0 .../numeric-separator/invalid-5/output.json | 0 .../numeric-separator/invalid-50/input.js | 0 .../numeric-separator/invalid-50/output.json | 0 .../numeric-separator/invalid-51/input.js | 0 .../numeric-separator/invalid-51/output.json | 0 .../numeric-separator/invalid-52/input.js | 0 .../numeric-separator/invalid-52/output.json | 0 .../numeric-separator/invalid-53/input.js | 0 .../numeric-separator/invalid-53/output.json | 0 .../numeric-separator/invalid-54/input.js | 0 .../numeric-separator/invalid-54/output.json | 0 .../numeric-separator/invalid-55/input.js | 0 .../numeric-separator/invalid-55/output.json | 0 .../numeric-separator/invalid-56/input.js | 0 .../numeric-separator/invalid-56/output.json | 0 .../numeric-separator/invalid-57/input.js | 0 .../numeric-separator/invalid-57/output.json | 0 .../numeric-separator/invalid-58/input.js | 0 .../numeric-separator/invalid-58/output.json | 0 .../numeric-separator/invalid-59/input.js | 0 .../numeric-separator/invalid-59/output.json | 0 .../numeric-separator/invalid-6/input.js | 0 .../numeric-separator/invalid-6/output.json | 0 .../numeric-separator/invalid-60/input.js | 0 .../numeric-separator/invalid-60/output.json | 0 .../numeric-separator/invalid-61/input.js | 0 .../numeric-separator/invalid-61/output.json | 0 .../numeric-separator/invalid-62/input.js | 0 .../numeric-separator/invalid-62/output.json | 0 .../numeric-separator/invalid-63/input.js | 0 .../numeric-separator/invalid-63/output.json | 0 .../numeric-separator/invalid-64/input.js | 0 .../numeric-separator/invalid-64/output.json | 0 .../numeric-separator/invalid-65/input.js | 0 .../numeric-separator/invalid-65/output.json | 0 .../numeric-separator/invalid-66/input.js | 0 .../numeric-separator/invalid-66/output.json | 0 .../numeric-separator/invalid-67/input.js | 0 .../numeric-separator/invalid-67/output.json | 0 .../numeric-separator/invalid-68/input.js | 0 .../numeric-separator/invalid-68/output.json | 0 .../numeric-separator/invalid-69/input.js | 0 .../numeric-separator/invalid-69/output.json | 0 .../numeric-separator/invalid-7/input.js | 0 .../numeric-separator/invalid-7/output.json | 0 .../numeric-separator/invalid-70/input.js | 0 .../numeric-separator/invalid-70/output.json | 0 .../numeric-separator/invalid-71/input.js | 0 .../numeric-separator/invalid-71/output.json | 0 .../numeric-separator/invalid-72/input.js | 0 .../numeric-separator/invalid-72/output.json | 0 .../numeric-separator/invalid-73/input.js | 0 .../numeric-separator/invalid-73/output.json | 0 .../numeric-separator/invalid-74/input.js | 0 .../numeric-separator/invalid-74/output.json | 0 .../numeric-separator/invalid-75/input.js | 0 .../numeric-separator/invalid-75/output.json | 0 .../numeric-separator/invalid-76/input.js | 0 .../numeric-separator/invalid-76/output.json | 0 .../numeric-separator/invalid-77/input.js | 0 .../numeric-separator/invalid-77/output.json | 0 .../numeric-separator/invalid-78/input.js | 0 .../numeric-separator/invalid-78/output.json | 0 .../numeric-separator/invalid-79/input.js | 0 .../numeric-separator/invalid-79/output.json | 0 .../numeric-separator/invalid-8/input.js | 0 .../numeric-separator/invalid-8/output.json | 0 .../numeric-separator/invalid-80/input.js | 0 .../numeric-separator/invalid-80/output.json | 0 .../numeric-separator/invalid-81/input.js | 0 .../numeric-separator/invalid-81/output.json | 0 .../numeric-separator/invalid-82/input.js | 0 .../numeric-separator/invalid-82/output.json | 0 .../numeric-separator/invalid-83/input.js | 0 .../numeric-separator/invalid-83/output.json | 0 .../numeric-separator/invalid-84/input.js | 0 .../numeric-separator/invalid-84/output.json | 0 .../numeric-separator/invalid-85/input.js | 0 .../numeric-separator/invalid-85/output.json | 0 .../numeric-separator/invalid-86/input.js | 0 .../numeric-separator/invalid-86/output.json | 0 .../numeric-separator/invalid-87/input.js | 0 .../numeric-separator/invalid-87/output.json | 0 .../numeric-separator/invalid-88/input.js | 0 .../numeric-separator/invalid-88/output.json | 0 .../numeric-separator/invalid-89/input.js | 0 .../numeric-separator/invalid-89/output.json | 0 .../numeric-separator/invalid-9/input.js | 0 .../numeric-separator/invalid-9/output.json | 0 .../numeric-separator/invalid-90/input.js | 0 .../numeric-separator/invalid-90/output.json | 0 .../numeric-separator/invalid-91/input.js | 0 .../numeric-separator/invalid-91/output.json | 0 .../numeric-separator/invalid-92/input.js | 0 .../numeric-separator/invalid-92/output.json | 0 .../numeric-separator/invalid-93/input.js | 0 .../numeric-separator/invalid-93/output.json | 0 .../numeric-separator/invalid-94/input.js | 0 .../numeric-separator/invalid-94/output.json | 0 .../numeric-separator/invalid-95/input.js | 0 .../numeric-separator/invalid-95/output.json | 0 .../numeric-separator/invalid-96/input.js | 0 .../numeric-separator/invalid-96/output.json | 0 .../numeric-separator/invalid-97/input.js | 0 .../numeric-separator/invalid-97/output.json | 0 .../numeric-separator/invalid-98/input.js | 0 .../numeric-separator/invalid-98/output.json | 0 .../numeric-separator/invalid-99/input.js | 0 .../numeric-separator/invalid-99/output.json | 0 .../numeric-separator/invalid-hex/input.js | 0 .../numeric-separator/invalid-hex/output.json | 0 .../invalid-leading-zero/input.js | 0 .../invalid-leading-zero/output.json | 0 .../invalid-legacy-octal-literal/input.js | 0 .../invalid-legacy-octal-literal/output.json | 0 .../invalid-non-octal-decimal-int/input.js | 0 .../invalid-non-octal-decimal-int/output.json | 0 .../invalid-unicode-2/input.js | 0 .../invalid-unicode-2/output.json | 0 .../invalid-unicode/input.js | 0 .../invalid-unicode/output.json | 0 .../numeric-separator/valid-0/input.js | 0 .../numeric-separator/valid-0/output.json | 0 .../numeric-separator/valid-1/input.js | 0 .../numeric-separator/valid-1/output.json | 0 .../numeric-separator/valid-10/input.js | 0 .../numeric-separator/valid-10/output.json | 0 .../numeric-separator/valid-11/input.js | 0 .../numeric-separator/valid-11/output.json | 0 .../numeric-separator/valid-12/input.js | 0 .../numeric-separator/valid-12/output.json | 0 .../numeric-separator/valid-13/input.js | 0 .../numeric-separator/valid-13/output.json | 0 .../numeric-separator/valid-14/input.js | 0 .../numeric-separator/valid-14/output.json | 0 .../numeric-separator/valid-15/input.js | 0 .../numeric-separator/valid-15/output.json | 0 .../numeric-separator/valid-2/input.js | 0 .../numeric-separator/valid-2/output.json | 0 .../numeric-separator/valid-3/input.js | 0 .../numeric-separator/valid-3/output.json | 0 .../numeric-separator/valid-4/input.js | 0 .../numeric-separator/valid-4/output.json | 0 .../numeric-separator/valid-5/input.js | 0 .../numeric-separator/valid-5/output.json | 0 .../numeric-separator/valid-6/input.js | 0 .../numeric-separator/valid-6/output.json | 0 .../numeric-separator/valid-7/input.js | 0 .../numeric-separator/valid-7/output.json | 0 .../numeric-separator/valid-8/input.js | 0 .../numeric-separator/valid-8/output.json | 0 .../numeric-separator/valid-9/input.js | 0 .../numeric-separator/valid-9/output.json | 0 .../valid-non-octal-exponents/input.js | 0 .../valid-non-octal-exponents/output.json | 0 .../valid-non-octal-fragments/input.js | 0 .../valid-non-octal-fragments/output.json | 0 .../numeric-separator-radix/input.js | 1 - .../numeric-separator-radix/options.json | 3 -- .../_no-plugin/numeric-separator/input.js | 1 - .../_no-plugin/numeric-separator/options.json | 3 -- .../invalid-hex/options.json | 3 -- .../invalid-leading-zero/options.json | 3 -- .../invalid-legacy-octal-literal/options.json | 3 -- .../options.json | 3 -- .../invalid-unicode-2/options.json | 3 -- .../invalid-unicode/options.json | 3 -- .../numeric-separator/options.json | 3 -- 358 files changed, 19 insertions(+), 58 deletions(-) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/identifier-start-0/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/identifier-start-0/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-0/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-0/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-1/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-1/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-10/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-10/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-100/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-100/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-101/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-101/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-102/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-102/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-103/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-103/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-104/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-104/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-105/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-105/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-106/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-106/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-107/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-107/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-108/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-108/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-109/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-109/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-11/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-11/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-110/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-110/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-111/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-111/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-112/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-112/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-113/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-113/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-114/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-114/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-115/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-115/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-116/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-116/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-117/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-117/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-118/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-118/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-119/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-119/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-12/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-12/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-120/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-120/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-121/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-121/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-122/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-122/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-123/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-123/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-124/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-124/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-125/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-125/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-126/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-126/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-127/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-127/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-128/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-128/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-129/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-129/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-13/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-13/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-130/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-130/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-131/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-131/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-132/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-132/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-133/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-133/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-134/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-134/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-135/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-135/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-136/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-136/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-137/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-137/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-138/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-138/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-139/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-139/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-14/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-14/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-140/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-140/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-141/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-141/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-142/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-142/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-143/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-143/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-144/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-144/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-145/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-145/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-146/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-146/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-147/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-147/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-15/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-15/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-16/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-16/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-17/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-17/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-18/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-18/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-19/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-19/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-2/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-2/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-20/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-20/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-21/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-21/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-22/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-22/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-23/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-23/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-24/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-24/options.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-25/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-25/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-26/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-26/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-27/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-27/options.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-28/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-28/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-29/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-29/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-3/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-3/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-30/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-30/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-31/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-31/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-32/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-32/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-33/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-33/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-34/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-34/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-35/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-35/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-36/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-36/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-37/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-37/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-38/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-38/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-39/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-39/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-4/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-4/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-40/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-40/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-41/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-41/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-42/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-42/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-43/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-43/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-44/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-44/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-45/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-45/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-46/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-46/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-47/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-47/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-48/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-48/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-49/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-49/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-5/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-5/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-50/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-50/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-51/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-51/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-52/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-52/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-53/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-53/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-54/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-54/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-55/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-55/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-56/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-56/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-57/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-57/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-58/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-58/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-59/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-59/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-6/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-6/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-60/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-60/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-61/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-61/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-62/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-62/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-63/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-63/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-64/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-64/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-65/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-65/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-66/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-66/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-67/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-67/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-68/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-68/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-69/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-69/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-7/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-7/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-70/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-70/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-71/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-71/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-72/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-72/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-73/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-73/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-74/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-74/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-75/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-75/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-76/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-76/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-77/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-77/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-78/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-78/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-79/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-79/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-8/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-8/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-80/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-80/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-81/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-81/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-82/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-82/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-83/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-83/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-84/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-84/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-85/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-85/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-86/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-86/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-87/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-87/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-88/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-88/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-89/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-89/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-9/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-9/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-90/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-90/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-91/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-91/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-92/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-92/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-93/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-93/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-94/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-94/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-95/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-95/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-96/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-96/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-97/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-97/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-98/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-98/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-99/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-99/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-hex/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-hex/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-leading-zero/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-leading-zero/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-legacy-octal-literal/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-legacy-octal-literal/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-non-octal-decimal-int/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-non-octal-decimal-int/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-unicode-2/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-unicode-2/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-unicode/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/invalid-unicode/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-0/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-0/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-1/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-1/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-10/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-10/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-11/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-11/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-12/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-12/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-13/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-13/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-14/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-14/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-15/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-15/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-2/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-2/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-3/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-3/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-4/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-4/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-5/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-5/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-6/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-6/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-7/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-7/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-8/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-8/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-9/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-9/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-non-octal-exponents/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-non-octal-exponents/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-non-octal-fragments/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/numeric-separator/valid-non-octal-fragments/output.json (100%) delete mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator-radix/input.js delete mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator-radix/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator/input.js delete mode 100644 packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-hex/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-leading-zero/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-non-octal-decimal-int/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode-2/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/numeric-separator/options.json diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index 4657690d2906..74db04c5914f 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -1016,28 +1016,26 @@ export default class Tokenizer extends ParserErrors { const code = this.input.charCodeAt(this.state.pos); let val; - if (this.hasPlugin("numericSeparator")) { - if (code === charCodes.underscore) { - const prev = this.input.charCodeAt(this.state.pos - 1); - const next = this.input.charCodeAt(this.state.pos + 1); - if (allowedSiblings.indexOf(next) === -1) { - this.raise(this.state.pos, Errors.UnexpectedNumericSeparator); - } else if ( - forbiddenSiblings.indexOf(prev) > -1 || - forbiddenSiblings.indexOf(next) > -1 || - Number.isNaN(next) - ) { - this.raise(this.state.pos, Errors.UnexpectedNumericSeparator); - } - - if (!allowNumSeparator) { - this.raise(this.state.pos, Errors.NumericSeparatorInEscapeSequence); - } + if (code === charCodes.underscore) { + const prev = this.input.charCodeAt(this.state.pos - 1); + const next = this.input.charCodeAt(this.state.pos + 1); + if (allowedSiblings.indexOf(next) === -1) { + this.raise(this.state.pos, Errors.UnexpectedNumericSeparator); + } else if ( + forbiddenSiblings.indexOf(prev) > -1 || + forbiddenSiblings.indexOf(next) > -1 || + Number.isNaN(next) + ) { + this.raise(this.state.pos, Errors.UnexpectedNumericSeparator); + } - // Ignore this _ character - ++this.state.pos; - continue; + if (!allowNumSeparator) { + this.raise(this.state.pos, Errors.NumericSeparatorInEscapeSequence); } + + // Ignore this _ character + ++this.state.pos; + continue; } if (code >= charCodes.lowercaseA) { @@ -1088,10 +1086,6 @@ export default class Tokenizer extends ParserErrors { } const next = this.input.charCodeAt(this.state.pos); - if (next === charCodes.underscore) { - this.expectPlugin("numericSeparator", this.state.pos); - } - if (next === charCodes.lowercaseN) { ++this.state.pos; isBigInt = true; @@ -1133,7 +1127,7 @@ export default class Tokenizer extends ParserErrors { const integer = this.input.slice(start, this.state.pos); if (this.state.strict) { this.raise(start, Errors.StrictOctalLiteral); - } else if (this.hasPlugin("numericSeparator")) { + } else { // disallow numeric separators in non octal decimals and legacy octal likes const underscorePos = integer.indexOf("_"); if (underscorePos > 0) { @@ -1165,10 +1159,6 @@ export default class Tokenizer extends ParserErrors { next = this.input.charCodeAt(this.state.pos); } - if (next === charCodes.underscore) { - this.expectPlugin("numericSeparator", this.state.pos); - } - if (next === charCodes.lowercaseN) { // disallow floats, legacy octal syntax and non octal decimals // new style octal ("0o") is handled in this.readRadixNumber diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/identifier-start-0/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/identifier-start-0/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/identifier-start-0/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/identifier-start-0/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/identifier-start-0/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/identifier-start-0/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/identifier-start-0/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/identifier-start-0/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-0/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-0/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-0/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-0/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-0/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-0/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-0/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-0/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-1/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-1/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-1/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-1/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-1/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-1/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-1/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-1/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-10/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-10/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-10/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-10/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-10/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-10/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-10/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-10/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-100/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-100/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-100/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-100/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-100/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-100/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-100/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-100/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-101/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-101/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-101/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-101/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-101/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-101/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-101/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-101/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-102/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-102/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-102/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-102/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-102/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-102/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-102/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-102/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-103/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-103/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-103/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-103/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-103/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-103/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-103/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-103/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-104/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-104/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-104/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-104/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-104/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-104/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-104/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-104/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-105/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-105/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-105/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-105/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-105/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-105/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-105/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-105/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-106/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-106/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-106/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-106/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-106/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-106/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-106/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-106/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-107/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-107/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-107/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-107/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-107/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-107/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-107/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-107/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-108/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-108/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-108/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-108/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-108/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-108/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-108/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-108/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-109/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-109/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-109/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-109/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-109/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-109/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-109/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-109/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-11/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-11/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-11/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-11/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-11/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-11/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-11/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-11/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-110/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-110/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-110/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-110/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-110/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-110/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-110/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-110/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-111/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-111/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-111/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-111/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-111/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-111/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-111/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-111/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-112/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-112/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-112/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-112/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-112/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-112/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-112/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-112/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-113/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-113/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-113/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-113/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-113/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-113/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-113/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-113/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-114/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-114/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-114/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-114/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-114/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-114/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-114/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-114/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-115/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-115/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-115/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-115/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-115/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-115/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-115/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-115/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-116/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-116/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-116/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-116/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-116/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-116/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-116/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-116/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-117/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-117/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-117/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-117/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-117/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-117/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-117/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-117/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-118/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-118/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-118/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-118/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-118/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-118/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-118/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-118/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-119/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-119/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-119/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-119/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-119/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-119/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-119/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-119/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-12/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-12/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-12/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-12/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-12/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-12/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-12/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-12/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-120/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-120/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-120/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-120/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-120/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-120/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-120/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-120/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-121/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-121/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-121/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-121/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-121/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-121/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-121/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-121/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-122/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-122/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-122/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-122/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-122/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-122/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-122/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-122/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-123/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-123/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-123/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-123/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-123/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-123/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-123/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-123/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-124/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-124/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-124/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-124/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-124/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-124/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-124/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-124/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-125/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-125/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-125/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-125/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-125/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-125/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-125/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-125/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-126/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-126/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-126/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-126/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-126/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-126/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-126/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-126/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-127/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-127/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-127/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-127/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-127/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-127/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-127/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-127/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-128/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-128/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-128/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-128/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-128/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-128/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-128/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-128/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-129/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-129/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-129/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-129/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-129/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-129/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-129/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-129/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-13/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-13/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-13/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-13/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-13/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-13/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-13/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-13/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-130/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-130/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-130/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-130/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-130/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-130/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-130/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-130/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-131/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-131/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-131/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-131/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-131/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-131/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-131/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-131/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-132/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-132/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-132/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-132/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-132/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-132/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-132/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-132/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-133/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-133/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-133/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-133/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-133/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-133/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-133/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-133/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-134/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-134/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-134/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-134/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-134/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-134/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-134/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-134/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-135/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-135/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-135/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-135/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-135/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-135/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-135/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-135/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-136/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-136/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-136/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-136/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-136/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-136/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-136/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-136/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-137/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-137/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-137/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-137/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-137/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-137/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-137/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-137/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-138/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-138/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-138/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-138/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-138/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-138/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-138/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-138/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-139/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-139/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-139/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-139/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-139/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-139/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-139/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-139/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-14/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-14/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-14/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-14/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-14/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-14/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-14/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-14/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-140/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-140/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-140/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-140/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-140/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-140/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-140/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-140/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-141/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-141/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-141/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-141/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-141/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-141/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-141/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-141/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-142/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-142/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-142/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-142/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-142/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-142/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-142/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-142/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-143/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-143/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-143/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-143/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-143/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-143/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-143/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-143/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-144/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-144/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-144/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-144/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-144/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-144/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-144/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-144/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-145/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-145/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-145/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-145/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-145/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-145/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-145/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-145/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-146/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-146/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-146/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-146/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-146/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-146/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-146/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-146/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-147/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-147/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-147/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-147/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-147/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-147/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-147/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-147/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-15/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-15/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-15/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-15/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-15/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-15/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-15/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-15/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-16/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-16/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-16/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-16/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-16/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-16/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-16/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-16/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-17/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-17/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-17/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-17/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-17/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-17/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-17/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-17/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-18/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-18/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-18/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-18/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-18/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-18/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-18/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-18/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-19/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-19/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-19/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-19/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-19/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-19/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-19/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-19/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-2/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-2/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-2/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-2/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-2/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-2/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-2/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-2/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-20/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-20/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-20/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-20/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-20/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-20/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-20/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-20/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-21/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-21/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-21/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-21/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-21/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-21/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-21/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-21/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-22/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-22/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-22/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-22/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-22/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-22/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-22/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-22/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-23/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-23/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-23/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-23/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-23/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-23/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-23/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-23/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-24/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-24/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-24/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-24/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-24/options.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-24/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-24/options.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-24/options.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-25/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-25/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-25/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-25/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-25/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-25/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-25/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-25/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-26/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-26/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-26/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-26/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-26/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-26/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-26/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-26/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-27/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-27/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-27/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-27/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-27/options.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-27/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-27/options.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-27/options.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-28/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-28/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-28/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-28/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-28/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-28/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-28/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-28/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-29/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-29/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-29/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-29/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-29/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-29/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-29/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-29/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-3/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-3/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-3/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-3/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-3/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-3/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-3/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-3/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-30/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-30/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-30/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-30/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-30/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-30/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-30/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-30/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-31/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-31/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-31/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-31/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-31/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-31/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-31/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-31/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-32/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-32/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-32/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-32/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-32/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-32/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-32/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-32/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-33/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-33/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-33/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-33/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-33/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-33/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-33/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-33/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-34/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-34/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-34/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-34/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-34/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-34/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-34/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-34/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-35/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-35/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-35/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-35/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-35/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-35/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-35/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-35/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-36/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-36/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-36/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-36/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-36/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-36/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-36/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-36/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-37/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-37/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-37/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-37/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-37/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-37/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-37/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-37/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-38/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-38/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-38/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-38/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-38/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-38/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-38/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-38/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-39/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-39/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-39/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-39/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-39/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-39/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-39/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-39/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-4/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-4/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-4/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-4/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-4/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-4/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-4/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-4/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-40/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-40/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-40/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-40/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-40/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-40/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-40/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-40/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-41/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-41/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-41/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-41/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-41/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-41/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-41/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-41/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-42/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-42/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-42/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-42/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-42/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-42/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-42/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-42/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-43/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-43/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-43/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-43/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-43/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-43/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-43/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-43/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-44/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-44/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-44/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-44/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-44/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-44/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-44/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-44/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-45/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-45/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-45/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-45/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-45/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-45/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-45/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-45/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-46/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-46/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-46/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-46/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-46/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-46/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-46/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-46/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-47/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-47/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-47/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-47/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-47/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-47/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-47/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-47/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-48/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-48/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-48/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-48/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-48/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-48/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-48/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-48/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-49/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-49/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-49/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-49/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-49/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-49/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-49/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-49/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-5/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-5/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-5/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-5/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-5/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-5/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-5/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-5/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-50/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-50/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-50/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-50/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-50/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-50/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-50/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-50/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-51/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-51/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-51/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-51/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-51/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-51/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-51/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-51/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-52/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-52/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-52/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-52/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-52/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-52/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-52/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-52/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-53/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-53/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-53/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-53/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-53/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-53/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-53/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-53/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-54/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-54/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-54/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-54/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-54/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-54/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-54/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-54/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-55/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-55/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-55/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-55/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-55/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-55/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-55/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-55/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-56/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-56/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-56/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-56/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-56/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-56/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-56/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-56/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-57/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-57/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-57/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-57/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-57/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-57/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-57/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-57/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-58/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-58/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-58/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-58/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-58/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-58/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-58/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-58/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-59/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-59/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-59/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-59/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-59/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-59/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-59/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-59/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-6/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-6/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-6/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-6/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-6/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-6/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-6/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-6/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-60/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-60/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-60/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-60/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-60/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-60/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-60/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-60/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-61/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-61/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-61/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-61/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-61/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-61/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-61/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-61/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-62/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-62/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-62/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-62/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-62/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-62/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-62/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-62/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-63/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-63/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-63/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-63/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-63/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-63/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-63/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-63/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-64/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-64/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-64/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-64/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-64/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-64/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-64/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-64/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-65/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-65/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-65/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-65/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-65/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-65/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-65/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-65/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-66/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-66/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-66/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-66/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-66/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-66/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-66/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-66/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-67/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-67/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-67/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-67/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-67/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-67/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-67/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-67/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-68/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-68/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-68/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-68/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-68/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-68/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-68/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-68/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-69/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-69/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-69/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-69/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-69/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-69/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-69/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-69/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-7/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-7/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-7/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-7/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-7/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-7/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-7/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-7/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-70/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-70/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-70/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-70/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-70/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-70/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-70/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-70/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-71/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-71/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-71/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-71/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-71/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-71/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-71/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-71/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-72/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-72/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-72/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-72/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-72/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-72/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-72/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-72/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-73/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-73/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-73/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-73/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-73/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-73/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-73/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-73/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-74/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-74/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-74/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-74/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-74/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-74/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-74/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-74/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-75/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-75/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-75/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-75/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-75/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-75/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-75/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-75/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-76/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-76/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-76/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-76/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-76/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-76/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-76/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-76/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-77/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-77/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-77/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-77/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-77/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-77/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-77/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-77/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-78/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-78/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-78/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-78/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-78/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-78/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-78/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-78/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-79/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-79/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-79/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-79/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-79/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-79/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-79/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-79/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-8/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-8/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-8/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-8/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-8/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-8/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-8/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-8/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-80/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-80/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-80/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-80/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-80/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-80/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-80/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-80/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-81/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-81/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-81/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-81/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-81/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-81/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-81/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-81/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-82/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-82/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-82/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-82/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-82/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-82/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-82/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-82/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-83/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-83/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-83/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-83/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-83/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-83/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-83/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-83/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-84/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-84/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-84/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-84/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-84/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-84/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-84/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-84/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-85/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-85/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-85/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-85/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-85/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-85/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-85/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-85/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-86/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-86/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-86/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-86/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-86/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-86/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-86/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-86/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-87/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-87/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-87/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-87/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-87/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-87/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-87/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-87/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-88/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-88/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-88/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-88/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-88/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-88/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-88/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-88/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-89/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-89/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-89/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-89/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-89/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-89/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-89/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-89/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-9/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-9/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-9/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-9/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-9/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-9/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-9/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-9/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-90/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-90/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-90/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-90/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-90/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-90/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-90/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-90/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-91/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-91/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-91/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-91/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-91/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-91/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-91/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-91/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-92/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-92/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-92/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-92/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-92/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-92/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-92/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-92/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-93/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-93/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-93/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-93/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-93/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-93/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-93/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-93/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-94/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-94/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-94/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-94/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-94/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-94/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-94/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-94/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-95/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-95/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-95/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-95/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-95/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-95/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-95/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-95/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-96/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-96/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-96/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-96/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-96/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-96/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-96/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-96/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-97/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-97/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-97/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-97/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-97/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-97/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-97/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-97/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-98/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-98/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-98/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-98/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-98/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-98/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-98/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-98/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-99/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-99/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-99/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-99/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-99/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-99/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-99/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-99/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-hex/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-hex/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-hex/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-hex/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-hex/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-hex/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-hex/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-hex/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-leading-zero/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-leading-zero/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-leading-zero/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-leading-zero/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-leading-zero/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-leading-zero/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-leading-zero/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-leading-zero/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-legacy-octal-literal/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-legacy-octal-literal/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-legacy-octal-literal/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-legacy-octal-literal/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-non-octal-decimal-int/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-non-octal-decimal-int/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-non-octal-decimal-int/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-non-octal-decimal-int/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-non-octal-decimal-int/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-non-octal-decimal-int/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-non-octal-decimal-int/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-non-octal-decimal-int/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode-2/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-unicode-2/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode-2/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-unicode-2/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode-2/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-unicode-2/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode-2/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-unicode-2/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-unicode/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-unicode/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-unicode/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/invalid-unicode/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-0/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-0/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-0/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-0/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-0/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-0/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-0/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-0/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-1/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-1/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-1/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-1/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-1/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-1/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-1/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-1/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-10/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-10/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-10/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-10/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-10/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-10/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-10/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-10/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-11/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-11/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-11/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-11/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-11/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-11/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-11/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-11/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-12/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-12/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-12/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-12/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-12/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-12/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-12/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-12/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-13/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-13/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-13/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-13/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-13/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-13/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-13/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-13/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-14/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-14/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-14/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-14/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-14/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-14/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-14/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-14/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-15/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-15/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-15/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-15/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-15/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-15/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-15/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-15/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-2/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-2/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-2/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-2/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-2/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-2/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-2/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-2/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-3/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-3/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-3/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-3/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-3/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-3/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-3/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-3/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-4/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-4/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-4/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-4/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-4/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-4/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-4/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-4/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-5/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-5/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-5/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-5/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-5/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-5/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-5/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-5/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-6/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-6/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-6/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-6/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-6/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-6/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-6/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-6/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-7/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-7/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-7/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-7/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-7/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-7/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-7/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-7/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-8/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-8/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-8/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-8/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-8/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-8/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-8/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-8/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-9/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-9/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-9/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-9/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-9/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-9/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-9/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-9/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-non-octal-exponents/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-non-octal-exponents/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-non-octal-exponents/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-exponents/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-non-octal-exponents/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/input.js b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-non-octal-fragments/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/input.js rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-non-octal-fragments/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/output.json b/packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-non-octal-fragments/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/numeric-separator/valid-non-octal-fragments/output.json rename to packages/babel-parser/test/fixtures/es2021/numeric-separator/valid-non-octal-fragments/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator-radix/input.js b/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator-radix/input.js deleted file mode 100644 index 0fa2562844bb..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator-radix/input.js +++ /dev/null @@ -1 +0,0 @@ -0b1_0 diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator-radix/options.json b/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator-radix/options.json deleted file mode 100644 index 180f7a692d48..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator-radix/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "This experimental syntax requires enabling the parser plugin: 'numericSeparator' (1:3)" -} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator/input.js b/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator/input.js deleted file mode 100644 index ee01ab426063..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator/input.js +++ /dev/null @@ -1 +0,0 @@ -1_0 diff --git a/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator/options.json b/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator/options.json deleted file mode 100644 index ed83acd92c8c..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/_no-plugin/numeric-separator/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "This experimental syntax requires enabling the parser plugin: 'numericSeparator' (1:1)" -} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-hex/options.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-hex/options.json deleted file mode 100644 index 7832463eea97..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-hex/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["numericSeparator"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-leading-zero/options.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-leading-zero/options.json deleted file mode 100644 index 7832463eea97..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-leading-zero/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["numericSeparator"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/options.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/options.json deleted file mode 100644 index 7832463eea97..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-legacy-octal-literal/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["numericSeparator"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-non-octal-decimal-int/options.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-non-octal-decimal-int/options.json deleted file mode 100644 index 7832463eea97..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-non-octal-decimal-int/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["numericSeparator"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode-2/options.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode-2/options.json deleted file mode 100644 index 7832463eea97..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode-2/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["numericSeparator"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode/options.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode/options.json deleted file mode 100644 index 7832463eea97..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-unicode/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["numericSeparator"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/numeric-separator/options.json b/packages/babel-parser/test/fixtures/experimental/numeric-separator/options.json deleted file mode 100644 index 7832463eea97..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/numeric-separator/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["numericSeparator"] -} From b651a6f6aba7a283d5a13ff5c7576d9ffaba194f Mon Sep 17 00:00:00 2001 From: Vahagn Aharonian Date: Wed, 22 Jul 2020 21:14:37 +0400 Subject: [PATCH 40/90] Enable logical assignment by default in @babel/parser (#11860) (#11869) --- .../src/parser/util/missing-plugin-helper.js | 20 +++++++++---------- packages/babel-core/test/api.js | 4 ++-- .../syntax-and-transform/file.js | 4 +++- .../babel-parser/src/parser/expression.js | 6 ------ .../and-and-equals}/input.js | 0 .../and-and-equals/output.json | 0 .../mallet/input.js | 0 .../mallet/output.json | 0 .../qq-equals}/input.js | 0 .../qq-equals/output.json | 0 .../and-and-equals-no-plugin/options.json | 4 ---- .../and-and-equals/input.js | 2 -- .../and-and-equals/options.json | 3 --- .../mallet-no-plugin/input.js | 1 - .../mallet-no-plugin/options.json | 4 ---- .../mallet/options.json | 3 --- .../qq-equals-no-plugin/options.json | 3 --- .../qq-equals/input.js | 2 -- .../qq-equals/options.json | 3 --- 19 files changed, 15 insertions(+), 44 deletions(-) rename packages/babel-parser/test/fixtures/{experimental/logical-assignment-operator/and-and-equals-no-plugin => es2021/logical-assignment-operator/and-and-equals}/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/logical-assignment-operator/and-and-equals/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/logical-assignment-operator/mallet/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/logical-assignment-operator/mallet/output.json (100%) rename packages/babel-parser/test/fixtures/{experimental/logical-assignment-operator/qq-equals-no-plugin => es2021/logical-assignment-operator/qq-equals}/input.js (100%) rename packages/babel-parser/test/fixtures/{experimental => es2021}/logical-assignment-operator/qq-equals/output.json (100%) delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals-no-plugin/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/input.js delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet-no-plugin/input.js delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet-no-plugin/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals-no-plugin/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/input.js delete mode 100644 packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/options.json 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 89f6dc91c961..5a5f7082f253 100644 --- a/packages/babel-core/src/parser/util/missing-plugin-helper.js +++ b/packages/babel-core/src/parser/util/missing-plugin-helper.js @@ -129,16 +129,6 @@ const pluginNameMap = { url: "https://git.io/JfeDR", }, }, - logicalAssignment: { - syntax: { - name: "@babel/plugin-syntax-logical-assignment-operators", - url: "https://git.io/vAlBp", - }, - transform: { - name: "@babel/plugin-proposal-logical-assignment-operators", - url: "https://git.io/vAlRe", - }, - }, moduleAttributes: { syntax: { name: "@babel/plugin-syntax-module-attributes", @@ -226,6 +216,16 @@ const pluginNameMap = { url: "https://git.io/vb4yp", }, }, + logicalAssignment: { + syntax: { + name: "@babel/plugin-syntax-logical-assignment-operators", + url: "https://git.io/vAlBp", + }, + transform: { + name: "@babel/plugin-proposal-logical-assignment-operators", + url: "https://git.io/vAlRe", + }, + }, nullishCoalescingOperator: { syntax: { name: "@babel/plugin-syntax-nullish-coalescing-operator", diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index 8fb5fc190340..384ed7421872 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -804,10 +804,10 @@ describe("api", function () { options, function (err) { expect(err.message).toMatch( - "Support for the experimental syntax 'logicalAssignment' isn't currently enabled (1:3):", + "Support for the experimental syntax 'doExpressions' isn't currently enabled (1:2):", ); expect(err.message).toMatch( - "Add @babel/plugin-proposal-logical-assignment-operators (https://git.io/vAlRe) to the " + + "Add @babel/plugin-proposal-do-expressions (https://git.io/vb4S3) to the " + "'plugins' section of your Babel config to enable transformation.", ); done(); diff --git a/packages/babel-core/test/fixtures/api/parsing-errors/syntax-and-transform/file.js b/packages/babel-core/test/fixtures/api/parsing-errors/syntax-and-transform/file.js index 0cb4253cd41b..9fbdc7e7442f 100644 --- a/packages/babel-core/test/fixtures/api/parsing-errors/syntax-and-transform/file.js +++ b/packages/babel-core/test/fixtures/api/parsing-errors/syntax-and-transform/file.js @@ -1 +1,3 @@ -a ||= 2; +(do { + x; +}); diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 1a7c973e094c..6bcb866035d6 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -229,12 +229,6 @@ export default class ExpressionParser extends LValParser { const operator = this.state.value; node.operator = operator; - if (operator === "??=") { - this.expectPlugin("logicalAssignment"); - } - if (operator === "||=" || operator === "&&=") { - this.expectPlugin("logicalAssignment"); - } if (this.match(tt.eq)) { node.left = this.toAssignable(left); refExpressionErrors.doubleProto = -1; // reset because double __proto__ is valid in assignment expression diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals-no-plugin/input.js b/packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/and-and-equals/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals-no-plugin/input.js rename to packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/and-and-equals/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/output.json b/packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/and-and-equals/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/output.json rename to packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/and-and-equals/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet/input.js b/packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/mallet/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet/input.js rename to packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/mallet/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet/output.json b/packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/mallet/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet/output.json rename to packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/mallet/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals-no-plugin/input.js b/packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/qq-equals/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals-no-plugin/input.js rename to packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/qq-equals/input.js diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/output.json b/packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/qq-equals/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/output.json rename to packages/babel-parser/test/fixtures/es2021/logical-assignment-operator/qq-equals/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals-no-plugin/options.json b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals-no-plugin/options.json deleted file mode 100644 index 5b674fdee42e..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals-no-plugin/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": [], - "throws": "This experimental syntax requires enabling the parser plugin: 'logicalAssignment' (1:2)" -} diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/input.js b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/input.js deleted file mode 100644 index 740f1fa9268a..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/input.js +++ /dev/null @@ -1,2 +0,0 @@ -a &&= b; -obj.a &&= b; diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/options.json b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/options.json deleted file mode 100644 index 5041dbb19f81..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/and-and-equals/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["logicalAssignment"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet-no-plugin/input.js b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet-no-plugin/input.js deleted file mode 100644 index 53c87792bb2f..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet-no-plugin/input.js +++ /dev/null @@ -1 +0,0 @@ -a ||= b; diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet-no-plugin/options.json b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet-no-plugin/options.json deleted file mode 100644 index 5b674fdee42e..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet-no-plugin/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": [], - "throws": "This experimental syntax requires enabling the parser plugin: 'logicalAssignment' (1:2)" -} diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet/options.json b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet/options.json deleted file mode 100644 index 5041dbb19f81..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/mallet/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["logicalAssignment"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals-no-plugin/options.json b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals-no-plugin/options.json deleted file mode 100644 index 64389a45889e..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals-no-plugin/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "This experimental syntax requires enabling the parser plugin: 'logicalAssignment' (1:2)" -} diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/input.js b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/input.js deleted file mode 100644 index dcf876b17411..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/input.js +++ /dev/null @@ -1,2 +0,0 @@ -a ??= b; -obj.a ??= b; diff --git a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/options.json b/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/options.json deleted file mode 100644 index 5041dbb19f81..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/logical-assignment-operator/qq-equals/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["logicalAssignment"] -} From 2f89e723217d1607fcfda7cd0b63870a2ff0fede Mon Sep 17 00:00:00 2001 From: morrme Date: Wed, 29 Jul 2020 15:07:34 -0500 Subject: [PATCH 41/90] enable logical assignment in babel preset env (#11876) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Huáng Jùnliàng --- packages/babel-compat-data/data/plugins.json | 1 + packages/babel-compat-data/scripts/data/plugin-features.js | 1 + packages/babel-preset-env/package.json | 2 ++ packages/babel-preset-env/src/available-plugins.js | 4 ++++ .../test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt | 1 + .../test/fixtures/bugfixes/_esmodules/stdout.txt | 1 + .../bugfixes/edge-default-params-chrome-40/stdout.txt | 1 + .../bugfixes/edge-default-params-chrome-70/stdout.txt | 1 + .../fixtures/bugfixes/edge-default-params-edge-14/stdout.txt | 1 + .../fixtures/bugfixes/edge-default-params-edge-15/stdout.txt | 1 + .../edge-default-params-edge-17-no-bugfixes/stdout.txt | 1 + .../fixtures/bugfixes/edge-default-params-edge-17/stdout.txt | 1 + .../fixtures/bugfixes/edge-default-params-edge-18/stdout.txt | 1 + .../edge-function-name-edge-14-no-bugfixes/stdout.txt | 1 + .../fixtures/bugfixes/edge-function-name-edge-14/stdout.txt | 1 + .../fixtures/bugfixes/edge-function-name-edge-15/stdout.txt | 1 + .../safari-block-scoping-safari-10-no-bugfixes/stdout.txt | 1 + .../bugfixes/safari-block-scoping-safari-10/stdout.txt | 1 + .../bugfixes/safari-block-scoping-safari-11/stdout.txt | 1 + .../bugfixes/safari-block-scoping-safari-9/stdout.txt | 1 + .../corejs2/usage-browserslist-config-ignore/stdout.txt | 1 + .../corejs3/usage-browserslist-config-ignore/stdout.txt | 1 + .../test/fixtures/debug/browserslist-env/stdout.txt | 1 + .../test/fixtures/debug/browserslists-android-3/stdout.txt | 1 + .../fixtures/debug/browserslists-defaults-not-ie/stdout.txt | 1 + .../test/fixtures/debug/browserslists-defaults/stdout.txt | 1 + .../debug/browserslists-last-2-versions-not-ie/stdout.txt | 1 + .../test/fixtures/debug/corejs-without-usebuiltins/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs2-android/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs2-electron/stdout.txt | 1 + .../debug/entry-corejs2-force-all-transforms/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs2-no-import/stdout.txt | 1 + .../debug/entry-corejs2-proposals-chrome-71/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs2-proposals/stdout.txt | 1 + .../debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt | 1 + .../fixtures/debug/entry-corejs2-shippedProposals/stdout.txt | 1 + .../fixtures/debug/entry-corejs2-specific-targets/stdout.txt | 1 + .../fixtures/debug/entry-corejs2-versions-decimals/stdout.txt | 1 + .../fixtures/debug/entry-corejs2-versions-strings/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs2/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-all/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-android/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-electron/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt | 1 + .../debug/entry-corejs3-es-proposals-chrome-71/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-es/stdout.txt | 1 + .../debug/entry-corejs3-force-all-transforms/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-no-import/stdout.txt | 1 + .../debug/entry-corejs3-proposals-chrome-71/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-proposals/stdout.txt | 1 + .../debug/entry-corejs3-runtime-only-chrome-71/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt | 1 + .../debug/entry-corejs3-specific-entries-chrome-71/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-specific-entries/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-specific-targets/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt | 1 + .../debug/entry-corejs3-stable-samsung-8.2/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-stable/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-stage/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-versions-decimals/stdout.txt | 1 + .../debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt | 1 + .../debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-versions-strings/stdout.txt | 1 + .../fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3-web/stdout.txt | 1 + .../test/fixtures/debug/entry-corejs3/stdout.txt | 1 + .../test/fixtures/debug/entry-no-corejs-no-import/stdout.txt | 1 + .../debug/entry-no-corejs-shippedProposals/stdout.txt | 1 + .../test/fixtures/debug/entry-no-corejs-uglify/stdout.txt | 1 + .../test/fixtures/debug/entry-no-corejs/stdout.txt | 1 + .../test/fixtures/debug/plugins-only/stdout.txt | 1 + .../test/fixtures/debug/shippedProposals-chrome-80/stdout.txt | 1 + .../test/fixtures/debug/shippedProposals-chrome-84/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-1/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-2/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-none-1/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-none-2/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt | 1 + .../debug/usage-corejs2-proposals-chrome-71-1/stdout.txt | 1 + .../debug/usage-corejs2-proposals-chrome-71-2/stdout.txt | 1 + .../debug/usage-corejs2-shippedProposals-1/stdout.txt | 1 + .../debug/usage-corejs2-shippedProposals-2/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs2-with-import/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-1/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-2/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-none-1/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-none-2/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt | 1 + .../debug/usage-corejs3-proposals-chrome-71-1/stdout.txt | 1 + .../debug/usage-corejs3-proposals-chrome-71-2/stdout.txt | 1 + .../debug/usage-corejs3-shippedProposals-1/stdout.txt | 1 + .../debug/usage-corejs3-shippedProposals-2/stdout.txt | 1 + .../usage-corejs3-versions-strings-minor-3.0-1/stdout.txt | 1 + .../usage-corejs3-versions-strings-minor-3.0-2/stdout.txt | 1 + .../usage-corejs3-versions-strings-minor-3.1-1/stdout.txt | 1 + .../usage-corejs3-versions-strings-minor-3.1-2/stdout.txt | 1 + .../test/fixtures/debug/usage-corejs3-with-import/stdout.txt | 1 + .../test/fixtures/debug/usage-no-corejs-1/stdout.txt | 1 + .../test/fixtures/debug/usage-no-corejs-2/stdout.txt | 1 + .../test/fixtures/debug/usage-no-corejs-none-1/stdout.txt | 1 + .../test/fixtures/debug/usage-no-corejs-none-2/stdout.txt | 1 + .../preset-options/safari-10_3-block-scoped/stdout.txt | 1 + 112 files changed, 116 insertions(+) diff --git a/packages/babel-compat-data/data/plugins.json b/packages/babel-compat-data/data/plugins.json index 3498fcee646e..ca46ed43110d 100644 --- a/packages/babel-compat-data/data/plugins.json +++ b/packages/babel-compat-data/data/plugins.json @@ -21,6 +21,7 @@ "samsung": "11", "electron": "6" }, + "proposal-logical-assignment-operators": {}, "proposal-nullish-coalescing-operator": { "chrome": "80", "opera": "67", diff --git a/packages/babel-compat-data/scripts/data/plugin-features.js b/packages/babel-compat-data/scripts/data/plugin-features.js index db087012d602..2e6c23a0e8f8 100644 --- a/packages/babel-compat-data/scripts/data/plugin-features.js +++ b/packages/babel-compat-data/scripts/data/plugin-features.js @@ -124,6 +124,7 @@ const es2020 = { const es2021 = { "proposal-numeric-separator": "numeric separator", + "proposal-logical-assignment-operators": "Logical Assignment", }; const shippedProposal = { diff --git a/packages/babel-preset-env/package.json b/packages/babel-preset-env/package.json index d8b68bfbeaa2..2b94f636c8f1 100644 --- a/packages/babel-preset-env/package.json +++ b/packages/babel-preset-env/package.json @@ -24,6 +24,7 @@ "@babel/plugin-proposal-dynamic-import": "^7.10.4", "@babel/plugin-proposal-export-namespace-from": "^7.10.4", "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", "@babel/plugin-proposal-numeric-separator": "^7.10.4", "@babel/plugin-proposal-object-rest-spread": "^7.10.4", @@ -36,6 +37,7 @@ "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", diff --git a/packages/babel-preset-env/src/available-plugins.js b/packages/babel-preset-env/src/available-plugins.js index 9fd8e49100b2..99a09ac1ee2b 100644 --- a/packages/babel-preset-env/src/available-plugins.js +++ b/packages/babel-preset-env/src/available-plugins.js @@ -6,6 +6,7 @@ import syntaxClassProperties from "@babel/plugin-syntax-class-properties"; import syntaxDynamicImport from "@babel/plugin-syntax-dynamic-import"; import syntaxExportNamespaceFrom from "@babel/plugin-syntax-export-namespace-from"; import syntaxJsonStrings from "@babel/plugin-syntax-json-strings"; +import syntaxLogicalAssignmentOperators from "@babel/plugin-syntax-logical-assignment-operators"; import syntaxNullishCoalescingOperator from "@babel/plugin-syntax-nullish-coalescing-operator"; import syntaxNumericSeparator from "@babel/plugin-syntax-numeric-separator"; import syntaxObjectRestSpread from "@babel/plugin-syntax-object-rest-spread"; @@ -17,6 +18,7 @@ import proposalClassProperties from "@babel/plugin-proposal-class-properties"; import proposalDynamicImport from "@babel/plugin-proposal-dynamic-import"; import proposalExportNamespaceFrom from "@babel/plugin-proposal-export-namespace-from"; import proposalJsonStrings from "@babel/plugin-proposal-json-strings"; +import proposalLogicalAssignmentOperators from "@babel/plugin-proposal-logical-assignment-operators"; import proposalNullishCoalescingOperator from "@babel/plugin-proposal-nullish-coalescing-operator"; import proposalNumericSeparator from "@babel/plugin-proposal-numeric-separator"; import proposalObjectRestSpread from "@babel/plugin-proposal-object-rest-spread"; @@ -76,6 +78,7 @@ export default { "proposal-dynamic-import": proposalDynamicImport, "proposal-export-namespace-from": proposalExportNamespaceFrom, "proposal-json-strings": proposalJsonStrings, + "proposal-logical-assignment-operators": proposalLogicalAssignmentOperators, "proposal-nullish-coalescing-operator": proposalNullishCoalescingOperator, "proposal-numeric-separator": proposalNumericSeparator, "proposal-object-rest-spread": proposalObjectRestSpread, @@ -88,6 +91,7 @@ export default { "syntax-dynamic-import": syntaxDynamicImport, "syntax-export-namespace-from": syntaxExportNamespaceFrom, "syntax-json-strings": syntaxJsonStrings, + "syntax-logical-assignment-operators": syntaxLogicalAssignmentOperators, "syntax-nullish-coalescing-operator": syntaxNullishCoalescingOperator, "syntax-numeric-separator": syntaxNumericSeparator, "syntax-object-rest-spread": syntaxObjectRestSpread, diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt index 73b2cef87504..55f1575fea0c 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules-no-bugfixes/stdout.txt @@ -17,6 +17,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-logical-assignment-operators { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt index 1e1fa10807cc..6f41b1655a54 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/_esmodules/stdout.txt @@ -17,6 +17,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-logical-assignment-operators { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt index 6a97618ff273..e8f6552456e0 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-40/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"40" } + proposal-logical-assignment-operators { "chrome":"40" } proposal-nullish-coalescing-operator { "chrome":"40" } proposal-optional-chaining { "chrome":"40" } proposal-json-strings { "chrome":"40" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt index ea4b45d0fae3..e05c238fd23a 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-chrome-70/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"70" } + proposal-logical-assignment-operators { "chrome":"70" } proposal-nullish-coalescing-operator { "chrome":"70" } proposal-optional-chaining { "chrome":"70" } syntax-json-strings { "chrome":"70" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt index 322568b2a73c..61993d66977a 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-14/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"14" } + proposal-logical-assignment-operators { "edge":"14" } proposal-nullish-coalescing-operator { "edge":"14" } proposal-optional-chaining { "edge":"14" } proposal-json-strings { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt index cde9782c69b4..9f6eca76d949 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-15/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"15" } + proposal-logical-assignment-operators { "edge":"15" } proposal-nullish-coalescing-operator { "edge":"15" } proposal-optional-chaining { "edge":"15" } proposal-json-strings { "edge":"15" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt index e20d9c23246a..6a1702d4e5eb 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17-no-bugfixes/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"17" } + proposal-logical-assignment-operators { "edge":"17" } proposal-nullish-coalescing-operator { "edge":"17" } proposal-optional-chaining { "edge":"17" } proposal-json-strings { "edge":"17" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt index bd2e0d012665..6938b18f9878 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-17/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"17" } + proposal-logical-assignment-operators { "edge":"17" } proposal-nullish-coalescing-operator { "edge":"17" } proposal-optional-chaining { "edge":"17" } proposal-json-strings { "edge":"17" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt index 8fa6540973cb..dc34004f080f 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-default-params-edge-18/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"18" } + proposal-logical-assignment-operators { "edge":"18" } proposal-nullish-coalescing-operator { "edge":"18" } proposal-optional-chaining { "edge":"18" } proposal-json-strings { "edge":"18" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt index 9bf7b1fcafa7..9ab2f94fa377 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14-no-bugfixes/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"14" } + proposal-logical-assignment-operators { "edge":"14" } proposal-nullish-coalescing-operator { "edge":"14" } proposal-optional-chaining { "edge":"14" } proposal-json-strings { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt index 322568b2a73c..61993d66977a 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-14/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"14" } + proposal-logical-assignment-operators { "edge":"14" } proposal-nullish-coalescing-operator { "edge":"14" } proposal-optional-chaining { "edge":"14" } proposal-json-strings { "edge":"14" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt index cde9782c69b4..9f6eca76d949 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/edge-function-name-edge-15/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"15" } + proposal-logical-assignment-operators { "edge":"15" } proposal-nullish-coalescing-operator { "edge":"15" } proposal-optional-chaining { "edge":"15" } proposal-json-strings { "edge":"15" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt index 3a9f7db02e24..720eb9ca60a2 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10-no-bugfixes/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "safari":"10" } + proposal-logical-assignment-operators { "safari":"10" } proposal-nullish-coalescing-operator { "safari":"10" } proposal-optional-chaining { "safari":"10" } proposal-json-strings { "safari":"10" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt index 08271f0994a2..39fdf1a27996 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-10/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "safari":"10" } + proposal-logical-assignment-operators { "safari":"10" } proposal-nullish-coalescing-operator { "safari":"10" } proposal-optional-chaining { "safari":"10" } proposal-json-strings { "safari":"10" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt index 5e5e377d2912..5c62c644a4df 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-11/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "safari":"11" } + proposal-logical-assignment-operators { "safari":"11" } proposal-nullish-coalescing-operator { "safari":"11" } proposal-optional-chaining { "safari":"11" } proposal-json-strings { "safari":"11" } diff --git a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt index 9c31230a72cb..d83019ad8877 100644 --- a/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/bugfixes/safari-block-scoping-safari-9/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "safari":"9" } + proposal-logical-assignment-operators { "safari":"9" } proposal-nullish-coalescing-operator { "safari":"9" } proposal-optional-chaining { "safari":"9" } proposal-json-strings { "safari":"9" } diff --git a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt index 761605fea6cf..410ffbe544f7 100644 --- a/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs2/usage-browserslist-config-ignore/stdout.txt @@ -17,6 +17,7 @@ Using modules transform: false Using plugins: proposal-numeric-separator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-logical-assignment-operators { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt index 6253b95e5773..8a05983c158c 100644 --- a/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/corejs3/usage-browserslist-config-ignore/stdout.txt @@ -17,6 +17,7 @@ Using modules transform: false Using plugins: proposal-numeric-separator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } + proposal-logical-assignment-operators { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-nullish-coalescing-operator { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-optional-chaining { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "node":"13.2", "opera":"48", "safari":"10.1", "samsung":"8.2" } proposal-json-strings { "android":"61", "chrome":"61", "edge":"16", "firefox":"60", "ios":"10.3", "opera":"48", "safari":"10.1", "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt index 3a343d2aa3c1..898343c6bd4f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslist-env/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "ie":"11" } + proposal-logical-assignment-operators { "ie":"11" } proposal-nullish-coalescing-operator { "ie":"11" } proposal-optional-chaining { "ie":"11" } proposal-json-strings { "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt index 5b51a1545c61..e4d3f42c15aa 100644 --- a/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/browserslists-android-3/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "android":"3" } + proposal-logical-assignment-operators { "android":"3" } proposal-nullish-coalescing-operator { "android":"3" } proposal-optional-chaining { "android":"3" } proposal-json-strings { "android":"3" } 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 cc20149ca4fe..2a930d44c6cd 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 @@ -16,6 +16,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"18", "firefox":"68", "ios":"12.2", "samsung":"10.1" } + proposal-logical-assignment-operators { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" } proposal-nullish-coalescing-operator { "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "safari":"13", "samsung":"10.1" } proposal-optional-chaining { "chrome":"79", "edge":"18", "firefox":"68", "ios":"12.2", "safari":"13", "samsung":"10.1" } proposal-json-strings { "edge":"18" } 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 93a537f4fd90..08356daf80b1 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 @@ -17,6 +17,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "samsung":"10.1" } + proposal-logical-assignment-operators { "android":"80", "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "opera":"67", "safari":"13", "samsung":"10.1" } proposal-nullish-coalescing-operator { "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "safari":"13", "samsung":"10.1" } proposal-optional-chaining { "chrome":"79", "edge":"18", "firefox":"68", "ie":"11", "ios":"12.2", "safari":"13", "samsung":"10.1" } proposal-json-strings { "edge":"18", "ie":"11" } 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 601145f4ca3d..3158a6e7d4f9 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 @@ -16,6 +16,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "samsung":"10.1" } + proposal-logical-assignment-operators { "android":"80", "chrome":"80", "edge":"80", "firefox":"75", "ios":"13.3", "opera":"67", "safari":"13", "samsung":"10.1" } proposal-nullish-coalescing-operator { "ios":"13.3", "safari":"13", "samsung":"10.1" } proposal-optional-chaining { "ios":"13.3", "safari":"13", "samsung":"10.1" } syntax-json-strings { "android":"80", "chrome":"80", "edge":"80", "firefox":"75", "ios":"13.3", "opera":"67", "safari":"13", "samsung":"10.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt index 609eb299e81a..4e9aa05982c7 100644 --- a/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/corejs-without-usebuiltins/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt index 59b7dc0b99b3..b78d7f4368b0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-android/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "android":"4" } + proposal-logical-assignment-operators { "android":"4" } proposal-nullish-coalescing-operator { "android":"4" } proposal-optional-chaining { "android":"4" } proposal-json-strings { "android":"4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt index 3859bffe8a43..168d8138f3a6 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-electron/stdout.txt @@ -16,6 +16,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "electron":"0.36" } + proposal-logical-assignment-operators { "electron":"0.36" } proposal-nullish-coalescing-operator { "electron":"0.36" } proposal-optional-chaining { "electron":"0.36" } proposal-json-strings { "electron":"0.36" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt index c7a6c7242655..bb08ed18e08f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-force-all-transforms/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: false Using plugins: proposal-numeric-separator { "chrome":"55" } + proposal-logical-assignment-operators { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt index 396016476bee..699d773fb71d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-no-import/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "node":"6" } + proposal-logical-assignment-operators { "node":"6" } proposal-nullish-coalescing-operator { "node":"6" } proposal-optional-chaining { "node":"6" } proposal-json-strings { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt index 0aea2bc0f98e..0a2d950c84ff 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals-chrome-71/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt index c1907591d0e4..465104309835 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-proposals/stdout.txt @@ -7,6 +7,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt index 61915c8c91a9..524049e7df03 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt index d19b53a442fb..07b009bc1caa 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-shippedProposals/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt index fd749310699c..e51e7f0cab35 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-specific-targets/stdout.txt @@ -14,6 +14,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + proposal-logical-assignment-operators { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-nullish-coalescing-operator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-optional-chaining { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-json-strings { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt index 6442a791d39a..4d643c64dfaa 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-decimals/stdout.txt @@ -20,6 +20,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + proposal-logical-assignment-operators { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-nullish-coalescing-operator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-optional-chaining { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-json-strings { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt index 254c7336f970..4cb2da3e38aa 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2-versions-strings/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6.10" } + proposal-logical-assignment-operators { "chrome":"54", "ie":"10", "node":"6.10" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6.10" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt index 0138f4686301..e00fe8b07634 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6" } + proposal-logical-assignment-operators { "chrome":"54", "ie":"10", "node":"6" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt index 2090a2ea2664..9426e1b9317e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt index 7ec0c50b7e4f..fcd4ef066506 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-all/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt index f1a66958dad4..5238af8b0a56 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-android/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "android":"4" } + proposal-logical-assignment-operators { "android":"4" } proposal-nullish-coalescing-operator { "android":"4" } proposal-optional-chaining { "android":"4" } proposal-json-strings { "android":"4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt index 5270d0846433..0efbbce4ca9e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-babel-polyfill/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt index aa9a0a594c5f..f8d01520ab9a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-electron/stdout.txt @@ -16,6 +16,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "electron":"0.36" } + proposal-logical-assignment-operators { "electron":"0.36" } proposal-nullish-coalescing-operator { "electron":"0.36" } proposal-optional-chaining { "electron":"0.36" } proposal-json-strings { "electron":"0.36" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt index f07f8afad343..d759d177a9be 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt index 6f75c4c0e610..5f3495cac1b5 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt index cd478a24306a..c7451e2bc054 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es-proposals/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt index 2dc70fa3909a..eb3dcd27ecff 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-es/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt index fd661fd589b4..de53cfae68fc 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-force-all-transforms/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: false Using plugins: proposal-numeric-separator { "chrome":"55" } + proposal-logical-assignment-operators { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt index 6f05bc01857c..32cb32835499 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-no-import/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "node":"6" } + proposal-logical-assignment-operators { "node":"6" } proposal-nullish-coalescing-operator { "node":"6" } proposal-optional-chaining { "node":"6" } proposal-json-strings { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt index 22c04a0dbbc1..d2ec61e12aa5 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals-chrome-71/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt index eac8e8d7185e..cea01d65568b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-proposals/stdout.txt @@ -7,6 +7,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt index 37b28bfc203d..cbe85abc6148 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt index e96638c2f739..448fd024481e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-runtime-only/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt index e987f121aae7..46603c51245d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt index 95581caf4050..735ba6cfe664 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-entries/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt index b98cbd7fb9d4..a6775e4c1760 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-specific-targets/stdout.txt @@ -14,6 +14,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } + proposal-logical-assignment-operators { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-nullish-coalescing-operator { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-optional-chaining { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } proposal-json-strings { "chrome":"54", "edge":"13", "firefox":"49", "ie":"10", "ios":"9", "safari":"7" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt index 401cb3386a54..dbf6c1d8fba0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt index bad74953f395..64de7513aadf 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable-samsung-8.2/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "samsung":"8.2" } proposal-private-methods { "samsung":"8.2" } proposal-numeric-separator { "samsung":"8.2" } + proposal-logical-assignment-operators { "samsung":"8.2" } proposal-nullish-coalescing-operator { "samsung":"8.2" } proposal-optional-chaining { "samsung":"8.2" } proposal-json-strings { "samsung":"8.2" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt index e37600d62ddf..a178e13a0a06 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stable/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt index 7eec005b3b6d..deaea34b845f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt index f2c9e7435b27..b51278947e1b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-stage/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt index 82f2b3275fc0..c51b4f249bcb 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-decimals/stdout.txt @@ -20,6 +20,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } + proposal-logical-assignment-operators { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-nullish-coalescing-operator { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-optional-chaining { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } proposal-json-strings { "chrome":"54", "electron":"0.36", "ie":"10", "node":"6.1" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt index e96003028c3e..496785ee9a62 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.0/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6.10" } + proposal-logical-assignment-operators { "chrome":"54", "ie":"10", "node":"6.10" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6.10" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt index 9ec53aa86eaf..852333934ea0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings-minor-3.1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6.10" } + proposal-logical-assignment-operators { "chrome":"54", "ie":"10", "node":"6.10" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6.10" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt index 5a138fb67c26..e797d7dbe540 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-versions-strings/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6.10" } + proposal-logical-assignment-operators { "chrome":"54", "ie":"10", "node":"6.10" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6.10" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6.10" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6.10" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt index d17a73b5e0d2..b1b7d0718dc5 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web-chrome-71/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"71" } proposal-private-methods { "chrome":"71" } proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt index 50f5d8d86713..73635abb829f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3-web/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt index 201c6be79863..2c59258250b2 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-corejs3/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6" } + proposal-logical-assignment-operators { "chrome":"54", "ie":"10", "node":"6" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt index 0aa49415771b..0720357318a4 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-no-import/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "node":"6" } + proposal-logical-assignment-operators { "node":"6" } proposal-nullish-coalescing-operator { "node":"6" } proposal-optional-chaining { "node":"6" } proposal-json-strings { "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt index 3c052a81f966..c50a35891239 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-shippedProposals/stdout.txt @@ -9,6 +9,7 @@ Using plugins: proposal-class-properties {} proposal-private-methods {} proposal-numeric-separator {} + proposal-logical-assignment-operators {} proposal-nullish-coalescing-operator {} proposal-optional-chaining {} proposal-json-strings {} diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt index 57b6d0483553..e5d0f8374a01 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs-uglify/stdout.txt @@ -12,6 +12,7 @@ Using modules transform: false Using plugins: proposal-numeric-separator { "chrome":"55" } + proposal-logical-assignment-operators { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt index 6a0ec4965b21..3814bd26e82b 100644 --- a/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/entry-no-corejs/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"54", "ie":"10", "node":"6" } + proposal-logical-assignment-operators { "chrome":"54", "ie":"10", "node":"6" } proposal-nullish-coalescing-operator { "chrome":"54", "ie":"10", "node":"6" } proposal-optional-chaining { "chrome":"54", "ie":"10", "node":"6" } proposal-json-strings { "chrome":"54", "ie":"10", "node":"6" } diff --git a/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt index 9296a8b197bd..66e78828d9a2 100644 --- a/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/plugins-only/stdout.txt @@ -17,6 +17,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "firefox":"52", "node":"7.4" } + proposal-logical-assignment-operators { "firefox":"52", "node":"7.4" } proposal-nullish-coalescing-operator { "firefox":"52", "node":"7.4" } proposal-optional-chaining { "firefox":"52", "node":"7.4" } proposal-json-strings { "firefox":"52", "node":"7.4" } diff --git a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt index 5f2f3d163d94..de118c5fbafc 100644 --- a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-80/stdout.txt @@ -11,6 +11,7 @@ Using plugins: proposal-class-properties { "chrome":"80" } proposal-private-methods { "chrome":"80" } syntax-numeric-separator { "chrome":"80" } + proposal-logical-assignment-operators { "chrome":"80" } syntax-nullish-coalescing-operator { "chrome":"80" } syntax-optional-chaining { "chrome":"80" } syntax-json-strings { "chrome":"80" } diff --git a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt index 32126b902b5a..32f5d7496709 100644 --- a/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/shippedProposals-chrome-84/stdout.txt @@ -10,6 +10,7 @@ Using modules transform: auto Using plugins: syntax-class-properties { "chrome":"84" } syntax-numeric-separator { "chrome":"84" } + proposal-logical-assignment-operators { "chrome":"84" } syntax-nullish-coalescing-operator { "chrome":"84" } syntax-optional-chaining { "chrome":"84" } syntax-json-strings { "chrome":"84" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt index a108b3eead08..caaa3b891fcd 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt index d8f4c238176a..88920c011d29 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt index 454255e849d3..4aab8ec0ec25 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-1/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt index 708826fdfec4..d1e2c8dff3d0 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-chrome-71-2/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt index 3c52c1453147..2530eebb18bb 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt index b42c95bada8d..55e694211a65 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-none-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt index 9c13d4fc1776..625d85f1503a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt index c7f19e52059d..a08cbcbb18e7 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt index 52d7bf591fa3..7eb05e8bfc7d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-1/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt index 1a4dc0d52072..1631f41189a6 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-proposals-chrome-71-2/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt index ce9b7af62226..5c17da670d34 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-1/stdout.txt @@ -13,6 +13,7 @@ Using plugins: proposal-class-properties { "chrome":"52", "firefox":"50", "ie":"11" } proposal-private-methods { "chrome":"52", "firefox":"50", "ie":"11" } proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt index c744af89053c..c98dde4c5e8d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-shippedProposals-2/stdout.txt @@ -13,6 +13,7 @@ Using plugins: proposal-class-properties { "chrome":"52", "firefox":"50", "ie":"11" } proposal-private-methods { "chrome":"52", "firefox":"50", "ie":"11" } proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt index ffecf75de0cb..09dac483b76c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs2-with-import/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"55" } + proposal-logical-assignment-operators { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt index fb00903cd080..3f08c1758034 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt index 6de04c9de0ac..4083153255c9 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt index dbd7d1df6be8..b1dc294de984 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-1/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt index 208737af2ec0..6256191ca51a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-chrome-71-2/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt index 08734d418a44..8f5013c38de8 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt index 700224ba32bb..8bc949ecf280 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-none-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt index 473b41ef4698..f2b78cd8c281 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt index 30ce6cc3ecde..b1cc06c6f4c9 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt index 7d7b97095d88..b6bfc92bf64a 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-1/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt index 1a4776bebb1a..95d90e9390e8 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-proposals-chrome-71-2/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"71" } + proposal-logical-assignment-operators { "chrome":"71" } proposal-nullish-coalescing-operator { "chrome":"71" } proposal-optional-chaining { "chrome":"71" } syntax-json-strings { "chrome":"71" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt index 89a56d17b9ee..3b73cf06217e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-1/stdout.txt @@ -13,6 +13,7 @@ Using plugins: proposal-class-properties { "chrome":"52", "firefox":"50", "ie":"11" } proposal-private-methods { "chrome":"52", "firefox":"50", "ie":"11" } proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt index d38eceb0a082..28e2f370a660 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-shippedProposals-2/stdout.txt @@ -13,6 +13,7 @@ Using plugins: proposal-class-properties { "chrome":"52", "firefox":"50", "ie":"11" } proposal-private-methods { "chrome":"52", "firefox":"50", "ie":"11" } proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt index aefa65b990bb..0d93bdc754dd 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt index 28fb1224ab94..e575b0e7e99e 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.0-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt index f7aefb106399..049239fb9579 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt index c23837ddc749..a00e7c2cfedc 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-versions-strings-minor-3.1-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt index 9c11db637e27..91c608682a16 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-corejs3-with-import/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"55" } + proposal-logical-assignment-operators { "chrome":"55" } proposal-nullish-coalescing-operator { "chrome":"55" } proposal-optional-chaining { "chrome":"55" } proposal-json-strings { "chrome":"55" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt index 69d16357b155..19a2eaf39c0c 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt index ef013160d53a..58679fde4d8d 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt index 1cd9829d6654..1b431f765bec 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-1/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt index 3b53a2a11921..0c3bb844371f 100644 --- a/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/debug/usage-no-corejs-none-2/stdout.txt @@ -11,6 +11,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "chrome":"52", "firefox":"50", "ie":"11" } + proposal-logical-assignment-operators { "chrome":"52", "firefox":"50", "ie":"11" } proposal-nullish-coalescing-operator { "chrome":"52", "firefox":"50", "ie":"11" } proposal-optional-chaining { "chrome":"52", "firefox":"50", "ie":"11" } proposal-json-strings { "chrome":"52", "firefox":"50", "ie":"11" } diff --git a/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt b/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt index 3a9f7db02e24..720eb9ca60a2 100644 --- a/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt +++ b/packages/babel-preset-env/test/fixtures/preset-options/safari-10_3-block-scoped/stdout.txt @@ -9,6 +9,7 @@ Using modules transform: auto Using plugins: proposal-numeric-separator { "safari":"10" } + proposal-logical-assignment-operators { "safari":"10" } proposal-nullish-coalescing-operator { "safari":"10" } proposal-optional-chaining { "safari":"10" } proposal-json-strings { "safari":"10" } From 95fcb3e16c8d08bc4ff2980c4b53fa2506948774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 29 Jul 2020 17:09:26 -0400 Subject: [PATCH 42/90] Update compat-table (#11890) * chore: update compat-table * chore: friendly to node < 14 contributors Co-Authored-By: Brian Ng Co-authored-by: Brian Ng --- .../data/corejs2-built-ins.json | 26 +++---- .../data/plugin-bugfixes.json | 4 +- packages/babel-compat-data/data/plugins.json | 24 +++++-- packages/babel-compat-data/package.json | 2 +- .../scripts/build-modules-support.js | 4 +- .../scripts/download-compat-table.sh | 2 +- packages/babel-compat-data/yarn.lock | 70 ++++++------------- 7 files changed, 56 insertions(+), 76 deletions(-) diff --git a/packages/babel-compat-data/data/corejs2-built-ins.json b/packages/babel-compat-data/data/corejs2-built-ins.json index 4ed5c101c917..7efce2678676 100644 --- a/packages/babel-compat-data/data/corejs2-built-ins.json +++ b/packages/babel-compat-data/data/corejs2-built-ins.json @@ -8,7 +8,7 @@ "node": "4", "ios": "9", "samsung": "5", - "electron": "0.32" + "electron": "0.31" }, "es6.array.every": { "chrome": "5", @@ -33,7 +33,7 @@ "node": "4", "ios": "8", "samsung": "5", - "electron": "0.32" + "electron": "0.31" }, "es6.array.filter": { "chrome": "5", @@ -58,7 +58,7 @@ "node": "4", "ios": "8", "samsung": "5", - "electron": "0.32" + "electron": "0.31" }, "es6.array.find-index": { "chrome": "45", @@ -69,7 +69,7 @@ "node": "4", "ios": "8", "samsung": "5", - "electron": "0.32" + "electron": "0.31" }, "es7.array.flat-map": { "chrome": "69", @@ -194,7 +194,7 @@ "node": "4", "ios": "9", "samsung": "5", - "electron": "0.32" + "electron": "0.31" }, "es6.array.reduce": { "chrome": "5", @@ -573,7 +573,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "es6.number.epsilon": { "chrome": "34", @@ -1287,7 +1287,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "es6.string.ends-with": { "chrome": "41", @@ -1298,7 +1298,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "es6.string.fixed": { "chrome": "5", @@ -1348,7 +1348,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "es6.string.includes": { "chrome": "41", @@ -1359,7 +1359,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "es6.string.italics": { "chrome": "5", @@ -1429,7 +1429,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "es6.string.repeat": { "chrome": "41", @@ -1440,7 +1440,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "es6.string.small": { "chrome": "5", @@ -1464,7 +1464,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "es6.string.strike": { "chrome": "5", diff --git a/packages/babel-compat-data/data/plugin-bugfixes.json b/packages/babel-compat-data/data/plugin-bugfixes.json index 1768229cc446..e7c13dc5129d 100644 --- a/packages/babel-compat-data/data/plugin-bugfixes.json +++ b/packages/babel-compat-data/data/plugin-bugfixes.json @@ -109,7 +109,7 @@ "node": "4", "ios": "9", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "bugfix/transform-tagged-template-caching": { "chrome": "41", @@ -120,6 +120,6 @@ "node": "4", "ios": "13", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" } } diff --git a/packages/babel-compat-data/data/plugins.json b/packages/babel-compat-data/data/plugins.json index ca46ed43110d..5664681d2214 100644 --- a/packages/babel-compat-data/data/plugins.json +++ b/packages/babel-compat-data/data/plugins.json @@ -8,7 +8,9 @@ "electron": "6" }, "proposal-private-methods": { - "chrome": "84" + "chrome": "84", + "edge": "84", + "electron": "10" }, "proposal-numeric-separator": { "chrome": "75", @@ -21,7 +23,12 @@ "samsung": "11", "electron": "6" }, - "proposal-logical-assignment-operators": {}, + "proposal-logical-assignment-operators": { + "chrome": "85", + "firefox": "79", + "safari": "14", + "electron": "10" + }, "proposal-nullish-coalescing-operator": { "chrome": "80", "opera": "67", @@ -29,7 +36,8 @@ "firefox": "72", "safari": "13.1", "node": "14", - "electron": "8.1" + "ios": "13.4", + "electron": "8" }, "proposal-optional-chaining": { "chrome": "80", @@ -38,7 +46,8 @@ "firefox": "74", "safari": "13.1", "node": "14", - "electron": "8.1" + "ios": "13.4", + "electron": "8" }, "proposal-json-strings": { "chrome": "66", @@ -121,6 +130,7 @@ "chrome": "64", "opera": "51", "edge": "79", + "firefox": "78", "safari": "11.1", "node": "10", "ios": "11.3", @@ -158,7 +168,7 @@ "node": "4", "ios": "13", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "transform-literals": { "chrome": "44", @@ -203,7 +213,7 @@ "ie": "11", "ios": "10", "samsung": "3.4", - "electron": "0.22" + "electron": "0.21" }, "transform-classes": { "chrome": "46", @@ -236,7 +246,7 @@ "node": "4", "ios": "9", "samsung": "4", - "electron": "0.28" + "electron": "0.27" }, "transform-duplicate-keys": { "chrome": "42", diff --git a/packages/babel-compat-data/package.json b/packages/babel-compat-data/package.json index a5feee19b22c..9a94264e3778 100644 --- a/packages/babel-compat-data/package.json +++ b/packages/babel-compat-data/package.json @@ -36,7 +36,7 @@ "devDependencies": { "@babel/helper-compilation-targets": "^7.10.4", "mdn-browser-compat-data": "1.0.31", - "electron-to-chromium": "1.3.377", + "electron-to-chromium": "1.3.513", "lodash": "^4.17.19" } } diff --git a/packages/babel-compat-data/scripts/build-modules-support.js b/packages/babel-compat-data/scripts/build-modules-support.js index 3701fb587a2c..8ca691cdd6fb 100644 --- a/packages/babel-compat-data/scripts/build-modules-support.js +++ b/packages/babel-compat-data/scripts/build-modules-support.js @@ -35,8 +35,8 @@ function process(source) { const allowedBrowsers = {}; Object.keys(stats).forEach(browser => { - const browserName = browserNameMap[browser] ?? browser; - let browserSupport = stats[browserSupportMap[browserName] ?? browser]; + const browserName = browserNameMap[browser] || browser; + let browserSupport = stats[browserSupportMap[browserName] || browser]; if (Array.isArray(browserSupport)) { browserSupport = browserSupport[0]; // The first item is the most progressive support } diff --git a/packages/babel-compat-data/scripts/download-compat-table.sh b/packages/babel-compat-data/scripts/download-compat-table.sh index b1f42b4e611a..daf9e60c8f75 100755 --- a/packages/babel-compat-data/scripts/download-compat-table.sh +++ b/packages/babel-compat-data/scripts/download-compat-table.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -COMPAT_TABLE_COMMIT=50e5424d113869b08911a5df956d0e931722e5b5 +COMPAT_TABLE_COMMIT=163aacb6f93e325231d578e31c03141cd9086dbb GIT_HEAD=build/compat-table/.git/HEAD if [ -d "build/compat-table" ]; then diff --git a/packages/babel-compat-data/yarn.lock b/packages/babel-compat-data/yarn.lock index 5c477f6671cc..5e220c0e31e0 100644 --- a/packages/babel-compat-data/yarn.lock +++ b/packages/babel-compat-data/yarn.lock @@ -2,27 +2,7 @@ # yarn lockfile v1 -"@babel/compat-data@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" - integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== - dependencies: - browserslist "^4.11.1" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/helper-compilation-targets@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" - integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== - dependencies: - "@babel/compat-data" "^7.9.6" - browserslist "^4.11.1" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -browserslist@^4.11.1, browserslist@^4.12.0: +browserslist@^4.12.0: version "4.12.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== @@ -32,25 +12,20 @@ browserslist@^4.11.1, browserslist@^4.12.0: node-releases "^1.1.53" pkg-up "^2.0.0" -caniuse-db@1.0.30001035: - version "1.0.30001035" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001035.tgz#3a182cab9d556a4a02d945f1f739e81c18e73bfa" - integrity sha512-kLUON4XN3tq5Nwl7ZICDw+7/vMynSpRMVYDRkzLL31lgnpa6M2YXYdjst3h+xbzjMgdcveRTnRGE1h/1IcKK6A== - caniuse-lite@^1.0.30001043: version "1.0.30001053" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001053.tgz#b7ae027567ce2665b965b0437e4512b296ccd20d" integrity sha512-HtV4wwIZl6GA4Oznse8aR274XUOYGZnQLcf/P8vHgmlfqSNelwD+id8CyHOceqLqt9yfKmo7DUZTh1EuS9pukg== -electron-to-chromium@1.3.377: - version "1.3.377" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.377.tgz#b49d420b36ee6c48b0cd3137bfc7fec75f369b2e" - integrity sha512-cm2WzMKf/3dW5+hNANKm8GAW6SwIWOqLTJ6GPCD0Bbw1qJ9Wzm9nmx9M+byzSsgw8CdCv5fb/wzLFqVS5h6QrA== +electron-to-chromium@1.3.513, electron-to-chromium@^1.3.413: + version "1.3.513" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.513.tgz#d556da1e7d3142d209e2950bab4bf1c9b5fd75c9" + integrity sha512-4Mr0dfgKqe0VD6kq6FkdPmLIcJuEVsA6c6zfcs3rBb+eHEALYNI+KDhZYbzwyd+bbDuwha2Q44RHrB0I+bnXBw== -electron-to-chromium@^1.3.413: - version "1.3.430" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.430.tgz#33914f7c2db771bdcf30977bd4fd6258ee8a2f37" - integrity sha512-HMDYkANGhx6vfbqpOf/hc6hWEmiOipOHGDeRDeUb3HLD3XIWpvKQxFgWf0tgHcr3aNv6I/8VPecplqmQsXoZSw== +extend@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== find-up@^2.1.0: version "2.1.0" @@ -71,18 +46,6 @@ invariant@^2.2.4: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -91,10 +54,10 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== loose-envify@^1.0.0: version "1.4.0" @@ -103,6 +66,13 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +mdn-browser-compat-data@1.0.31: + version "1.0.31" + resolved "https://registry.yarnpkg.com/mdn-browser-compat-data/-/mdn-browser-compat-data-1.0.31.tgz#4bc736252fafcafc182f9dd43b105d6795b9a28e" + integrity sha512-GVQQYWgoH3jbBaIy8M4hrg34qaNpPedtZvwAjUmkpHq4FXKKCea8Ji5rlS32YJSU9dt7TPvuWWX7Cce5mZyFPA== + dependencies: + extend "3.0.2" + node-releases@^1.1.53: version "1.1.55" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.55.tgz#8af23b7c561d8e2e6e36a46637bab84633b07cee" From 4ac9c7afe227c2b4f8b69a39ffc1a039e6e4a252 Mon Sep 17 00:00:00 2001 From: Kai Cataldo Date: Wed, 29 Jul 2020 19:11:48 -0400 Subject: [PATCH 43/90] Upgrade to ESLint v7 (#11857) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Upgrade to ESLint v7 * Upgrade eslint-plugin-import * Update peer deps * Remove max-len from ESLint config * Update tests * Only test babel-eslint-* packages in Node >=10 * Remove babel-eslint * Fix linking in dev * Add comment to Makefile * Fix e2e tests * Add --ignore-engines flag when installing in ESLint packages * fix: convert tt.questionDot to Punctuator * chore: update lockfile Co-authored-by: Huáng Jùnliàng --- .eslintrc.js | 2 - Makefile | 2 + .../babel-eslint-config-internal/package.json | 2 +- eslint/babel-eslint-config-internal/yarn.lock | 4 + eslint/babel-eslint-parser/package.json | 7 +- .../src/convert/convertTokens.js | 3 +- eslint/babel-eslint-parser/test/index.js | 2 +- eslint/babel-eslint-parser/yarn.lock | 938 +++++++++++++ .../package.json | 7 +- .../test/rules/dry-error-messages.js | 2 +- .../yarn.lock | 709 ++++++++++ .../package.json | 8 +- .../test/rules/no-deprecated-clone.js | 22 +- .../test/rules/no-undefined-identifier.js | 2 +- .../test/rules/plugin-name.js | 6 +- .../babel-eslint-plugin-development/yarn.lock | 709 ++++++++++ eslint/babel-eslint-plugin/package.json | 7 +- .../babel-eslint-plugin/test/rules/new-cap.js | 2 +- .../test/rules/no-invalid-this.js | 2 +- .../test/rules/no-unused-expressions.js | 2 +- .../test/rules/object-curly-spacing.js | 2 +- eslint/babel-eslint-plugin/test/rules/semi.js | 10 +- eslint/babel-eslint-plugin/yarn.lock | 719 ++++++++++ .../babel-eslint-shared-fixtures/package.json | 1 - .../utils/RuleTester.js | 2 +- eslint/babel-eslint-shared-fixtures/yarn.lock | 1222 +++++++++++++++++ eslint/babel-eslint-tests/package.json | 7 +- .../test/helpers/verifyAndAssertMessages.js | 4 +- .../test/integration/eslint/eslint.js | 2 +- .../test/integration/eslint/rules/strict.js | 2 +- eslint/babel-eslint-tests/yarn.lock | 1123 +++++++++++++++ jest.config.js | 2 +- package.json | 5 +- .../e2e-babel-old-version.sh | 5 + scripts/integration-tests/e2e-babel.sh | 5 + yarn.lock | 422 +++--- 36 files changed, 5762 insertions(+), 209 deletions(-) create mode 100644 eslint/babel-eslint-config-internal/yarn.lock create mode 100644 eslint/babel-eslint-parser/yarn.lock create mode 100644 eslint/babel-eslint-plugin-development-internal/yarn.lock create mode 100644 eslint/babel-eslint-plugin-development/yarn.lock create mode 100644 eslint/babel-eslint-plugin/yarn.lock create mode 100644 eslint/babel-eslint-shared-fixtures/yarn.lock create mode 100644 eslint/babel-eslint-tests/yarn.lock diff --git a/.eslintrc.js b/.eslintrc.js index 4013bc661d5b..c5664b53628b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -14,8 +14,6 @@ module.exports = { extends: "@babel/internal", rules: { "prettier/prettier": "error", - // TODO: remove after babel-eslint-config-internal is fully integrated into this repository. - "max-len": "off", }, env: { node: true, diff --git a/Makefile b/Makefile index f0118381e39a..2a03bc59dce6 100644 --- a/Makefile +++ b/Makefile @@ -257,6 +257,8 @@ publish-eslint: bootstrap-only: lerna-bootstrap yarn-install: clean-all + # Install dependencies in individual packages so that we can link them at the top level. + for package in eslint/*/; do yarn --ignore-engines --cwd $$package; done # Gitpod prebuilds have a slow network connection, so we need more time yarn --ignore-engines --network-timeout 100000 diff --git a/eslint/babel-eslint-config-internal/package.json b/eslint/babel-eslint-config-internal/package.json index 013b99131543..3e720875ef3f 100644 --- a/eslint/babel-eslint-config-internal/package.json +++ b/eslint/babel-eslint-config-internal/package.json @@ -13,7 +13,7 @@ }, "main": "index.js", "peerDependencies": { - "@babel/eslint-parser": "*", + "@babel/eslint-parser": "^7.10.4", "eslint-plugin-flowtype": "^3.0.0" } } diff --git a/eslint/babel-eslint-config-internal/yarn.lock b/eslint/babel-eslint-config-internal/yarn.lock new file mode 100644 index 000000000000..fb57ccd13afb --- /dev/null +++ b/eslint/babel-eslint-config-internal/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + diff --git a/eslint/babel-eslint-parser/package.json b/eslint/babel-eslint-parser/package.json index 81bcaf965c6f..2c7f73e7347e 100644 --- a/eslint/babel-eslint-parser/package.json +++ b/eslint/babel-eslint-parser/package.json @@ -19,8 +19,8 @@ }, "main": "lib/index.js", "peerDependencies": { - "@babel/core": ">=7.2.0", - "eslint": ">=6.0.0" + "@babel/core": ">=7.10.4", + "eslint": ">=7.5.0" }, "dependencies": { "eslint-scope": "5.1.0", @@ -29,9 +29,8 @@ }, "devDependencies": { "@babel/core": "^7.10.4", - "@babel/eslint-shared-fixtures": "^7.10.4", "dedent": "^0.7.0", - "eslint": "^6.0.1", + "eslint": "^7.5.0", "lodash.clonedeep": "^4.5.0" } } diff --git a/eslint/babel-eslint-parser/src/convert/convertTokens.js b/eslint/babel-eslint-parser/src/convert/convertTokens.js index 0f5f43fb2386..f444d9941d54 100644 --- a/eslint/babel-eslint-parser/src/convert/convertTokens.js +++ b/eslint/babel-eslint-parser/src/convert/convertTokens.js @@ -135,6 +135,7 @@ function convertToken(token, source) { type === tt.tilde || type === tt.doubleColon || type === tt.hash || + type === tt.questionDot || type.isAssign ) { token.type = "Punctuator"; @@ -172,8 +173,6 @@ function convertToken(token, source) { } else if (type === tt.bigint) { token.type = "Numeric"; token.value = `${token.value}n`; - } else if (type === tt.questionDot) { - token.value = type.label; } if (typeof token.type !== "string") { // Acorn does not have rightAssociative diff --git a/eslint/babel-eslint-parser/test/index.js b/eslint/babel-eslint-parser/test/index.js index e662efa3aa71..a7f2d3e91ef6 100644 --- a/eslint/babel-eslint-parser/test/index.js +++ b/eslint/babel-eslint-parser/test/index.js @@ -6,7 +6,7 @@ import { parseForESLint } from "../src"; const BABEL_OPTIONS = { configFile: require.resolve( - "@babel/eslint-shared-fixtures/config/babel.config.js", + "../../babel-eslint-shared-fixtures/config/babel.config.js", ), }; const PROPS_TO_REMOVE = [ diff --git a/eslint/babel-eslint-parser/yarn.lock b/eslint/babel-eslint-parser/yarn.lock new file mode 100644 index 000000000000..8fe012483632 --- /dev/null +++ b/eslint/babel-eslint-parser/yarn.lock @@ -0,0 +1,938 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/core@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330" + integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.5" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.5" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.5" + "@babel/types" "^7.10.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69" + integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig== + dependencies: + "@babel/types" "^7.10.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz#172f56e7a63e78112f3a04055f24365af702e7ee" + integrity sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA== + dependencies: + "@babel/types" "^7.10.5" + +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-module-transforms@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6" + integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.4", "@babel/parser@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" + integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" + integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.5" + "@babel/types" "^7.10.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.10.4", "@babel/types@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" + integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + +ajv@^6.10.0, ajv@^6.10.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^4.0.1, debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@5.1.0, eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135" + integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.2.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" + integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== + dependencies: + acorn "^7.3.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +glob-parent@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +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.5" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash@^4.17.14, lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.3.2: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +semver@^5.4.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-json-comments@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" diff --git a/eslint/babel-eslint-plugin-development-internal/package.json b/eslint/babel-eslint-plugin-development-internal/package.json index af166197b898..2ca61ad2299d 100644 --- a/eslint/babel-eslint-plugin-development-internal/package.json +++ b/eslint/babel-eslint-plugin-development-internal/package.json @@ -26,11 +26,10 @@ }, "homepage": "https://github.com/babel/babel/tree/master/eslint/babel-eslint-plugin-development-internal", "peerDependencies": { - "@babel/eslint-parser": "0.0.0", - "eslint": ">=6.0.0" + "@babel/eslint-parser": ">=7.10.4", + "eslint": ">=7.5.0" }, "devDependencies": { - "@babel/eslint-shared-fixtures": "^7.10.4", - "eslint": "^6.0.0" + "eslint": "^7.5.0" } } diff --git a/eslint/babel-eslint-plugin-development-internal/test/rules/dry-error-messages.js b/eslint/babel-eslint-plugin-development-internal/test/rules/dry-error-messages.js index 5a3c5bf5336f..5f8d41479119 100644 --- a/eslint/babel-eslint-plugin-development-internal/test/rules/dry-error-messages.js +++ b/eslint/babel-eslint-plugin-development-internal/test/rules/dry-error-messages.js @@ -1,6 +1,6 @@ import path from "path"; import rule from "../../src/rules/dry-error-messages"; -import RuleTester from "@babel/eslint-shared-fixtures/utils/RuleTester"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; const FILENAME = path.resolve(__dirname, "test/lib/index.js"); const ERRORS_MODULE = "errorsModule"; diff --git a/eslint/babel-eslint-plugin-development-internal/yarn.lock b/eslint/babel-eslint-plugin-development-internal/yarn.lock new file mode 100644 index 000000000000..51aab77c8484 --- /dev/null +++ b/eslint/babel-eslint-plugin-development-internal/yarn.lock @@ -0,0 +1,709 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + +ajv@^6.10.0, ajv@^6.10.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135" + integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.2.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" + integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== + dependencies: + acorn "^7.3.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +glob-parent@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lodash@^4.17.14, lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-json-comments@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" diff --git a/eslint/babel-eslint-plugin-development/package.json b/eslint/babel-eslint-plugin-development/package.json index b0c22045de16..c885be49ede8 100644 --- a/eslint/babel-eslint-plugin-development/package.json +++ b/eslint/babel-eslint-plugin-development/package.json @@ -14,9 +14,6 @@ "url": "https://github.com/nicolo-ribaudo" }, "main": "lib/index.js", - "devDependencies": { - "eslint": "^5.9.0" - }, "engines": { "node": ">=10.9" }, @@ -32,5 +29,8 @@ "bugs": { "url": "https://github.com/babel/babel/issues" }, - "homepage": "https://babeljs.io/" + "homepage": "https://babeljs.io/", + "devDependencies": { + "eslint": "^7.5.0" + } } diff --git a/eslint/babel-eslint-plugin-development/test/rules/no-deprecated-clone.js b/eslint/babel-eslint-plugin-development/test/rules/no-deprecated-clone.js index 9905bc170f0c..bf9e4c87e857 100644 --- a/eslint/babel-eslint-plugin-development/test/rules/no-deprecated-clone.js +++ b/eslint/babel-eslint-plugin-development/test/rules/no-deprecated-clone.js @@ -1,5 +1,5 @@ import rule from "../../src/rules/no-deprecated-clone"; -import { RuleTester } from "eslint"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; const cloneError = "t.clone() is deprecated. Use t.cloneNode() instead."; const cloneDeepError = @@ -38,10 +38,12 @@ ruleTester.run("no-deprecated-clone", rule, { }, { code: `import * as t from "@babel/types"; t.clone();`, + output: `import * as t from "@babel/types"; t.cloneNode();`, errors: [cloneError], }, { code: `import * as t from "@babel/types"; t.cloneDeep();`, + output: `import * as t from "@babel/types"; t.cloneNode();`, errors: [cloneDeepError], }, { @@ -62,74 +64,92 @@ ruleTester.run("no-deprecated-clone", rule, { }, { code: `import * as babel from "@babel/core"; babel.types.clone();`, + output: `import * as babel from "@babel/core"; babel.types.cloneNode();`, errors: [cloneError], }, { code: `import * as babel from "@babel/core"; babel.types.cloneDeep();`, + output: `import * as babel from "@babel/core"; babel.types.cloneNode();`, errors: [cloneDeepError], }, { code: `import { types } from "@babel/core"; types.clone();`, + output: `import { types } from "@babel/core"; types.cloneNode();`, errors: [cloneError], }, { code: `import { types } from "@babel/core"; types.cloneDeep();`, + output: `import { types } from "@babel/core"; types.cloneNode();`, errors: [cloneDeepError], }, { code: `import { types as t } from "@babel/core"; t.clone();`, + output: `import { types as t } from "@babel/core"; t.cloneNode();`, errors: [cloneError], }, { code: `import { types as t } from "@babel/core"; t.cloneDeep();`, + output: `import { types as t } from "@babel/core"; t.cloneNode();`, errors: [cloneDeepError], }, { code: `export default function plugin(babel) { babel.types.clone() }`, + output: `export default function plugin(babel) { babel.types.cloneNode() }`, errors: [cloneError], }, { code: `export default function plugin(babel) { babel.types.cloneDeep() }`, + output: `export default function plugin(babel) { babel.types.cloneNode() }`, errors: [cloneDeepError], }, { code: `export default function plugin({ types }) { types.clone() }`, + output: `export default function plugin({ types }) { types.cloneNode() }`, errors: [cloneError], }, { code: `export default function plugin({ types }) { types.cloneDeep() }`, + output: `export default function plugin({ types }) { types.cloneNode() }`, errors: [cloneDeepError], }, { code: `export default function plugin({ types: t }) { t.clone() }`, + output: `export default function plugin({ types: t }) { t.cloneNode() }`, errors: [cloneError], }, { code: `export default function plugin({ types: t }) { t.cloneDeep() }`, + output: `export default function plugin({ types: t }) { t.cloneNode() }`, errors: [cloneDeepError], }, { code: `export default ({ types }) => { types.clone() }`, + output: `export default ({ types }) => { types.cloneNode() }`, errors: [cloneError], }, { code: `export default ({ types }) => { types.cloneDeep() }`, + output: `export default ({ types }) => { types.cloneNode() }`, errors: [cloneDeepError], }, { code: `module.exports = function plugin({ types }) { types.clone() }`, + output: `module.exports = function plugin({ types }) { types.cloneNode() }`, errors: [cloneError], }, { code: `module.exports = function plugin({ types }) { types.cloneDeep() }`, + output: `module.exports = function plugin({ types }) { types.cloneNode() }`, errors: [cloneDeepError], }, { code: `import { declare } from "@babel/helper-plugin-utils"; declare(({ types }) => { types.clone() });`, + output: `import { declare } from "@babel/helper-plugin-utils"; declare(({ types }) => { types.cloneNode() });`, errors: [cloneError], }, { code: `import { declare } from "@babel/helper-plugin-utils"; declare(({ types }) => { types.cloneDeep() });`, + output: `import { declare } from "@babel/helper-plugin-utils"; declare(({ types }) => { types.cloneNode() });`, errors: [cloneDeepError], }, ], diff --git a/eslint/babel-eslint-plugin-development/test/rules/no-undefined-identifier.js b/eslint/babel-eslint-plugin-development/test/rules/no-undefined-identifier.js index d6d8c6b28b6b..7b9a8c62d9e7 100644 --- a/eslint/babel-eslint-plugin-development/test/rules/no-undefined-identifier.js +++ b/eslint/babel-eslint-plugin-development/test/rules/no-undefined-identifier.js @@ -1,5 +1,5 @@ import rule from "../../src/rules/no-undefined-identifier"; -import { RuleTester } from "eslint"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; const error = "Use path.scope.buildUndefinedNode() to create an undefined identifier directly."; diff --git a/eslint/babel-eslint-plugin-development/test/rules/plugin-name.js b/eslint/babel-eslint-plugin-development/test/rules/plugin-name.js index d39924efe752..381c81192f70 100644 --- a/eslint/babel-eslint-plugin-development/test/rules/plugin-name.js +++ b/eslint/babel-eslint-plugin-development/test/rules/plugin-name.js @@ -1,12 +1,10 @@ import rule from "../../src/rules/plugin-name"; -import { RuleTester } from "eslint"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; const missingPluginError = "This file does not export a Babel plugin."; const missingNameError = "This Babel plugin doesn't have a 'name' property."; -const ruleTester = new RuleTester({ - parserOptions: { sourceType: "module" }, -}); +const ruleTester = new RuleTester(); ruleTester.run("plugin-name", rule, { valid: [ diff --git a/eslint/babel-eslint-plugin-development/yarn.lock b/eslint/babel-eslint-plugin-development/yarn.lock new file mode 100644 index 000000000000..51aab77c8484 --- /dev/null +++ b/eslint/babel-eslint-plugin-development/yarn.lock @@ -0,0 +1,709 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + +ajv@^6.10.0, ajv@^6.10.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135" + integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.2.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" + integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== + dependencies: + acorn "^7.3.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +glob-parent@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lodash@^4.17.14, lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-json-comments@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" diff --git a/eslint/babel-eslint-plugin/package.json b/eslint/babel-eslint-plugin/package.json index 12399c29d637..406f844361ba 100644 --- a/eslint/babel-eslint-plugin/package.json +++ b/eslint/babel-eslint-plugin/package.json @@ -26,15 +26,14 @@ }, "homepage": "https://babeljs.io/", "peerDependencies": { - "@babel/eslint-parser": "0.0.0", - "eslint": ">=6.0.0" + "@babel/eslint-parser": ">=7.10.4", + "eslint": ">=7.5.0" }, "dependencies": { "eslint-rule-composer": "^0.3.0" }, "devDependencies": { - "@babel/eslint-shared-fixtures": "^7.10.4", - "eslint": "^6.0.0", + "eslint": "^7.5.0", "lodash.clonedeep": "^4.5.0" } } diff --git a/eslint/babel-eslint-plugin/test/rules/new-cap.js b/eslint/babel-eslint-plugin/test/rules/new-cap.js index 669c51ee5765..824ea55053ac 100644 --- a/eslint/babel-eslint-plugin/test/rules/new-cap.js +++ b/eslint/babel-eslint-plugin/test/rules/new-cap.js @@ -1,5 +1,5 @@ import rule from "../../src/rules/new-cap"; -import RuleTester from "@babel/eslint-shared-fixtures/utils/RuleTester"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; const ruleTester = new RuleTester(); ruleTester.run("@babel/new-cap", rule, { diff --git a/eslint/babel-eslint-plugin/test/rules/no-invalid-this.js b/eslint/babel-eslint-plugin/test/rules/no-invalid-this.js index 47cd9d89ad10..7faa3bd745f5 100644 --- a/eslint/babel-eslint-plugin/test/rules/no-invalid-this.js +++ b/eslint/babel-eslint-plugin/test/rules/no-invalid-this.js @@ -1,6 +1,6 @@ import cloneDeep from "lodash.clonedeep"; import rule from "../../src/rules/no-invalid-this"; -import RuleTester from "@babel/eslint-shared-fixtures/utils/RuleTester"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; /** * A constant value for non strict mode environment. diff --git a/eslint/babel-eslint-plugin/test/rules/no-unused-expressions.js b/eslint/babel-eslint-plugin/test/rules/no-unused-expressions.js index 9ba9b5773952..351a09573ff0 100644 --- a/eslint/babel-eslint-plugin/test/rules/no-unused-expressions.js +++ b/eslint/babel-eslint-plugin/test/rules/no-unused-expressions.js @@ -1,5 +1,5 @@ import rule from "../../src/rules/no-unused-expressions"; -import RuleTester from "@babel/eslint-shared-fixtures/utils/RuleTester"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; const ruleTester = new RuleTester(); ruleTester.run("@babel/no-unused-expressions", rule, { diff --git a/eslint/babel-eslint-plugin/test/rules/object-curly-spacing.js b/eslint/babel-eslint-plugin/test/rules/object-curly-spacing.js index 1c3e270582e7..3501da6193a2 100644 --- a/eslint/babel-eslint-plugin/test/rules/object-curly-spacing.js +++ b/eslint/babel-eslint-plugin/test/rules/object-curly-spacing.js @@ -1,5 +1,5 @@ import rule from "../../src/rules/object-curly-spacing"; -import RuleTester from "@babel/eslint-shared-fixtures/utils/RuleTester"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; const ruleTester = new RuleTester(); ruleTester.run("@babel/object-curly-spacing", rule, { diff --git a/eslint/babel-eslint-plugin/test/rules/semi.js b/eslint/babel-eslint-plugin/test/rules/semi.js index cb0e8b85c316..ea622fae0254 100644 --- a/eslint/babel-eslint-plugin/test/rules/semi.js +++ b/eslint/babel-eslint-plugin/test/rules/semi.js @@ -1,5 +1,5 @@ import rule from "../../src/rules/semi"; -import RuleTester from "@babel/eslint-shared-fixtures/utils/RuleTester"; +import RuleTester from "../../../babel-eslint-shared-fixtures/utils/RuleTester"; const ruleTester = new RuleTester(); @@ -22,18 +22,22 @@ ruleTester.run("semi", rule, { invalid: [ { code: "class Foo { bar = 'example' }", + output: "class Foo { bar = 'example'; }", errors: [{ message: "Missing semicolon." }], }, { code: "class Foo { #bar = 'example' }", + output: "class Foo { #bar = 'example'; }", errors: [{ message: "Missing semicolon." }], }, { code: "class Foo { static bar = 'example' }", + output: "class Foo { static bar = 'example'; }", errors: [{ message: "Missing semicolon." }], }, { code: "class Foo { bar = () => {} }", + output: "class Foo { bar = () => {}; }", options: ["always", { omitLastInOneLineBlock: true }], errors: [{ message: "Missing semicolon." }], }, @@ -41,21 +45,25 @@ ruleTester.run("semi", rule, { // "never" { code: "class Foo { bar = 'example'; }", + output: "class Foo { bar = 'example' }", options: ["never"], errors: [{ message: "Extra semicolon." }], }, { code: "class Foo { #bar = 'example'; }", + output: "class Foo { #bar = 'example' }", options: ["never"], errors: [{ message: "Extra semicolon." }], }, { code: "class Foo { static bar = 'example'; }", + output: "class Foo { static bar = 'example' }", options: ["never"], errors: [{ message: "Extra semicolon." }], }, { code: "class Foo { bar = () => {}; }", + output: "class Foo { bar = () => {} }", options: ["never"], errors: [{ message: "Extra semicolon." }], }, diff --git a/eslint/babel-eslint-plugin/yarn.lock b/eslint/babel-eslint-plugin/yarn.lock new file mode 100644 index 000000000000..095726209237 --- /dev/null +++ b/eslint/babel-eslint-plugin/yarn.lock @@ -0,0 +1,719 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + +ajv@^6.10.0, ajv@^6.10.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + +eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135" + integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.2.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" + integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== + dependencies: + acorn "^7.3.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +glob-parent@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash@^4.17.14, lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-json-comments@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" diff --git a/eslint/babel-eslint-shared-fixtures/package.json b/eslint/babel-eslint-shared-fixtures/package.json index 3708ceb12db2..c912cccbe582 100644 --- a/eslint/babel-eslint-shared-fixtures/package.json +++ b/eslint/babel-eslint-shared-fixtures/package.json @@ -5,7 +5,6 @@ "license": "MIT", "private": true, "dependencies": { - "@babel/eslint-parser": "^7.10.4", "@babel/plugin-proposal-class-properties": "^7.10.4", "@babel/plugin-proposal-decorators": "^7.10.4", "@babel/plugin-proposal-do-expressions": "^7.10.4", diff --git a/eslint/babel-eslint-shared-fixtures/utils/RuleTester.js b/eslint/babel-eslint-shared-fixtures/utils/RuleTester.js index 58be2ff8d47e..943de8974e95 100644 --- a/eslint/babel-eslint-shared-fixtures/utils/RuleTester.js +++ b/eslint/babel-eslint-shared-fixtures/utils/RuleTester.js @@ -2,7 +2,7 @@ const path = require("path"); const { RuleTester } = require("eslint"); RuleTester.setDefaultConfig({ - parser: require.resolve("@babel/eslint-parser"), + parser: require.resolve("../../babel-eslint-parser"), parserOptions: { sourceType: "module", ecmaVersion: 11, diff --git a/eslint/babel-eslint-shared-fixtures/yarn.lock b/eslint/babel-eslint-shared-fixtures/yarn.lock new file mode 100644 index 000000000000..08224d888a47 --- /dev/null +++ b/eslint/babel-eslint-shared-fixtures/yarn.lock @@ -0,0 +1,1222 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.5.tgz#d38425e67ea96b1480a3f50404d1bf85676301a6" + integrity sha512-mPVoWNzIpYJHbWje0if7Ck36bpbtTvIxOi9+6WSK9wjGEXearAqlwBoTQvVjsAY2VIwgcs8V940geY3okzRCEw== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/generator@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69" + integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig== + dependencies: + "@babel/types" "^7.10.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-builder-react-jsx-experimental@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz#f35e956a19955ff08c1258e44a515a6d6248646b" + integrity sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/types" "^7.10.5" + +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== + dependencies: + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" + integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" + integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== + dependencies: + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz#172f56e7a63e78112f3a04055f24365af702e7ee" + integrity sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA== + dependencies: + "@babel/types" "^7.10.5" + +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6" + integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" + integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.4", "@babel/parser@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" + integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== + +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" + integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-decorators@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.5.tgz#42898bba478bc4b1ae242a703a953a7ad350ffb4" + integrity sha512-Sc5TAQSZuLzgY0664mMDn24Vw2P8g/VhyLyGPaWiHahhgLqeZvcGeyBZOrJW0oSKIK2mvQ22a1ENXBIQLhrEiQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.10.4" + +"@babel/plugin-proposal-do-expressions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.10.4.tgz#9a5190f3bf4818f83e41d673ee517ff76cf8e4ed" + integrity sha512-Gcc2wLVeMceRdP6m9tdDygP01lbUVmaQGBRoIRJZxzPfB5VTiUgmn1jGfORgqbEVgUpG0IQm/z4q5Y/qzG+8JQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-do-expressions" "^7.10.4" + +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" + +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" + integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-pipeline-operator@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.10.5.tgz#0fa2871dbfb74efe19eeb17722032056cb5697f3" + integrity sha512-tCpZ46KUAHgFoXsH593k9sX/ZKsNb4NlTGNif8PdlmkGbtYdbTQi6zNv8yibpRf+3sQFElOBLyNo3I5ZwVu90g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-pipeline-operator" "^7.10.4" + +"@babel/plugin-proposal-private-methods@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.7.4": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-decorators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz#6853085b2c429f9d322d02f5a635018cdeb2360c" + integrity sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-do-expressions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.10.4.tgz#0c7ebb749500c6bfa99a9f926db3bfd6cdbaded9" + integrity sha512-HyvaTg1aiwGo2I+Pu0nyurRMjIP7J89GpuZ2mcQ0fhO6Jt3BnyhEPbNJFG1hRE99NAPNfPYh93/7HO+GPVkTKg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz#e5494f95006355c10292a0ff1ce42a5746002ec8" + integrity sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-export-namespace-from@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" + integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" + integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-pipeline-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.10.4.tgz#31bf327cf780dd60e0444fd98561119795247a6c" + integrity sha512-QOmXevisZebt9pBkMdDdXWg+fndB8dT/puwSKKu/1K3P4oBwmydN/4dX1hdrNvPHbw4xE+ocIoEus7c4eh7Igg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz#b81b8aafefbfe68f0f65f7ef397b9ece68a6037d" + integrity sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-flow-strip-types@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" + integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" + integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== + dependencies: + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" + integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" + integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" + integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx-development@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" + integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-jsx-self@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" + integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-jsx-source@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz#34f1779117520a779c054f2cdd9680435b9222b4" + integrity sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" + integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-pure-annotations@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" + integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" + integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" + integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" + integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== + dependencies: + "@babel/compat-data" "^7.10.4" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" + "@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.10.4" + "@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" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.4" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-flow@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" + integrity sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-flow-strip-types" "^7.10.4" + +"@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/preset-react@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" + integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.10.4" + "@babel/plugin-transform-react-jsx-development" "^7.10.4" + "@babel/plugin-transform-react-jsx-self" "^7.10.4" + "@babel/plugin-transform-react-jsx-source" "^7.10.4" + "@babel/plugin-transform-react-pure-annotations" "^7.10.4" + +"@babel/runtime@^7.8.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.5.tgz#303d8bd440ecd5a491eae6117fd3367698674c5c" + integrity sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" + integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.5" + "@babel/types" "^7.10.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.4.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" + integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +browserslist@^4.12.0, browserslist@^4.8.5: + version "4.13.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d" + integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ== + dependencies: + caniuse-lite "^1.0.30001093" + electron-to-chromium "^1.3.488" + escalade "^3.0.1" + node-releases "^1.1.58" + +caniuse-lite@^1.0.30001093: + version "1.0.30001105" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001105.tgz#d2cb0b31e5cf2f3ce845033b61c5c01566549abf" + integrity sha512-JupOe6+dGMr7E20siZHIZQwYqrllxotAhiaej96y6x00b/48rPt42o+SzOSCPbrpsDWvRja40Hwrj0g0q6LZJg== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +electron-to-chromium@^1.3.488: + version "1.3.505" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.505.tgz#0e55edbdfc13700b6742a73c81c0af7d0d71364f" + integrity sha512-Aunrp3HWtmdiJLIl+IPSFtEvJ/4Q9a3eKaxmzCthaZF1gbTbpHUTCU2zOVnFPH7r/AD7zQXyuFidYXzSHXBdsw== + +escalade@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" + integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +node-releases@^1.1.58: + version "1.1.60" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" + integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +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" + +regenerate@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" + integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +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.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +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" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +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.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== diff --git a/eslint/babel-eslint-tests/package.json b/eslint/babel-eslint-tests/package.json index 99a0be351810..4b0be8416f46 100644 --- a/eslint/babel-eslint-tests/package.json +++ b/eslint/babel-eslint-tests/package.json @@ -5,11 +5,8 @@ "license": "MIT", "private": true, "devDependencies": { - "@babel/eslint-parser": "^7.10.4", - "@babel/eslint-plugin": "^7.10.4", - "@babel/eslint-shared-fixtures": "^7.10.4", "dedent": "^0.7.0", - "eslint": "^6.0.0", - "eslint-plugin-import": "^2.20.1" + "eslint": "^7.5.0", + "eslint-plugin-import": "^2.22.0" } } diff --git a/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js b/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js index 3d94edfd7906..609cb8f50b79 100644 --- a/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js +++ b/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js @@ -1,6 +1,6 @@ import eslint from "eslint"; import unpad from "dedent"; -import * as parser from "@babel/eslint-parser"; +import * as parser from "../../../babel-eslint-parser"; export default function verifyAndAssertMessages( code, @@ -25,7 +25,7 @@ export default function verifyAndAssertMessages( requireConfigFile: false, babelOptions: { configFile: require.resolve( - "@babel/eslint-shared-fixtures/config/babel.config.js", + "../../../babel-eslint-shared-fixtures/config/babel.config.js", ), }, ...overrideConfig?.parserOptions, diff --git a/eslint/babel-eslint-tests/test/integration/eslint/eslint.js b/eslint/babel-eslint-tests/test/integration/eslint/eslint.js index 1a62e20f56a9..5a8ed44b23b9 100644 --- a/eslint/babel-eslint-tests/test/integration/eslint/eslint.js +++ b/eslint/babel-eslint-tests/test/integration/eslint/eslint.js @@ -1081,7 +1081,7 @@ describe("verify", () => { sourceType, babelOptions: { configFile: require.resolve( - "@babel/eslint-shared-fixtures/config/babel.config.decorators-legacy.js", + "../../../../babel-eslint-shared-fixtures/config/babel.config.decorators-legacy.js", ), }, }, diff --git a/eslint/babel-eslint-tests/test/integration/eslint/rules/strict.js b/eslint/babel-eslint-tests/test/integration/eslint/rules/strict.js index 1bd83dd597b6..5753a114a320 100644 --- a/eslint/babel-eslint-tests/test/integration/eslint/rules/strict.js +++ b/eslint/babel-eslint-tests/test/integration/eslint/rules/strict.js @@ -1,7 +1,7 @@ import eslint from "eslint"; import fs from "fs"; import path from "path"; -import * as parser from "@babel/eslint-parser"; +import * as parser from "../../../../../babel-eslint-parser"; eslint.linter.defineParser("@babel/eslint-parser", parser); diff --git a/eslint/babel-eslint-tests/yarn.lock b/eslint/babel-eslint-tests/yarn.lock new file mode 100644 index 000000000000..2c375415d448 --- /dev/null +++ b/eslint/babel-eslint-tests/yarn.lock @@ -0,0 +1,1123 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + +ajv@^6.10.0, ajv@^6.10.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.22.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135" + integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.2.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" + integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== + dependencies: + acorn "^7.3.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +glob-parent@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +graceful-fs@^4.1.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== + dependencies: + has-symbols "^1.0.1" + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +isarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash@^4.17.14, lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +object-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-json-comments@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" diff --git a/jest.config.js b/jest.config.js index 6904684e4e50..ee63281e2c38 100644 --- a/jest.config.js +++ b/jest.config.js @@ -27,7 +27,7 @@ module.exports = { // The eslint/* packages use ESLint v6, which has dropped support for Node v6. // TODO: Remove this process.version check in Babel 8. testRegex: `./(packages|codemods${ - /^v6./u.test(process.version) ? "" : "|eslint" + Number(process.versions.node.split(".")[0]) < 10 ? "" : "|eslint" })/[^/]+/test/.+\\.m?js$`, testPathIgnorePatterns: [ "/node_modules/", diff --git a/package.json b/package.json index 68bb494a694e..f073aa51a7a5 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "@babel/register": "^7.10.4", "@babel/runtime": "^7.10.4", "@rollup/plugin-json": "4.0.1", - "babel-eslint": "^11.0.0-beta.2", "babel-jest": "^24.9.0", "babel-plugin-transform-charcodes": "^0.2.0", "browserify": "^16.2.3", @@ -39,10 +38,10 @@ "charcodes": "^0.2.0", "derequire": "^2.0.2", "enhanced-resolve": "^3.0.0", - "eslint": "^6.8.0", + "eslint": "^7.5.0", "eslint-import-resolver-node": "^0.3.3", "eslint-plugin-flowtype": "^4.6.0", - "eslint-plugin-import": "^2.20.1", + "eslint-plugin-import": "^2.22.0", "eslint-plugin-jest": "^23.8.2", "eslint-plugin-prettier": "^3.1.2", "fancy-log": "^1.3.3", diff --git a/scripts/integration-tests/e2e-babel-old-version.sh b/scripts/integration-tests/e2e-babel-old-version.sh index 1f72a237582d..20a3a881578d 100755 --- a/scripts/integration-tests/e2e-babel-old-version.sh +++ b/scripts/integration-tests/e2e-babel-old-version.sh @@ -21,6 +21,11 @@ cd ../.. #==============================================================================# startLocalRegistry "$PWD"/scripts/integration-tests/verdaccio-config.yml + +# Install dependencies in individual packages so that we can link them at the top level. +# todo: remove `-- -- --ignore-engines` in Babel 8 +for package in eslint/*/; do yarn --ignore-engines --cwd $package; done + yarn upgrade --scope @babel node -e "\ diff --git a/scripts/integration-tests/e2e-babel.sh b/scripts/integration-tests/e2e-babel.sh index f73b75f95bd5..90f59f906802 100755 --- a/scripts/integration-tests/e2e-babel.sh +++ b/scripts/integration-tests/e2e-babel.sh @@ -21,6 +21,11 @@ cd ../.. #==============================================================================# startLocalRegistry "$PWD"/scripts/integration-tests/verdaccio-config.yml + +# Install dependencies in individual packages so that we can link them at the top level. +# todo: remove `-- -- --ignore-engines` in Babel 8 +for package in eslint/*/; do yarn --ignore-engines --cwd $package; done + yarn upgrade --scope @babel # Test diff --git a/yarn.lock b/yarn.lock index f9a88e060136..4a89565ffb8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1978,6 +1978,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -2086,10 +2091,10 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: version "1.8.2" @@ -2120,7 +2125,12 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.0.0, acorn@^7.1.0, acorn@^7.1.1: +acorn@^7.0.0, acorn@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + +acorn@^7.1.1, acorn@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== @@ -2176,6 +2186,11 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-cyan@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" @@ -2188,13 +2203,6 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" - integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== - dependencies: - type-fest "^0.8.1" - ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" @@ -2241,7 +2249,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -2381,13 +2389,14 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" array-initial@^1.0.0: version "1.1.0" @@ -2445,14 +2454,13 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.2.tgz#8f3c71d245ba349b6b64b4078f76f5576f1fd723" - integrity sha512-VXjh7lAL4KXKF2hY4FnEW9eRW6IhdvFW1sN/JwLbmECbCgACCnBHNyP3lFiYuttr0jxRN9Bsc5+G27dMseSWqQ== +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== dependencies: define-properties "^1.1.3" - es-abstract "^1.15.0" - function-bind "^1.1.1" + es-abstract "^1.17.0-next.1" arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" @@ -2560,15 +2568,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== -babel-eslint@^11.0.0-beta.2: - version "11.0.0-beta.2" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-11.0.0-beta.2.tgz#de1f06795aa0d8cedcf6ac943e63056f5b4a7048" - integrity sha512-D2tunrOu04XloEdU2XVUminUu25FILlGruZmffqH5OSnLDhCheKNvUoM1ihrexdUvhizlix8bjqRnsss4V/UIQ== - dependencies: - eslint-scope "5.0.0" - eslint-visitor-keys "^1.1.0" - semver "^6.3.0" - babel-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" @@ -3132,7 +3131,7 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3141,6 +3140,14 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + charcodes@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" @@ -3210,13 +3217,6 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -3651,7 +3651,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -3671,6 +3671,15 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -3826,7 +3835,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -4150,6 +4159,13 @@ enhanced-resolve@^3.0.0: object-assign "^4.0.1" tapable "^0.2.7" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + env-paths@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" @@ -4174,7 +4190,24 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.12.0, es-abstract@^1.15.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.4.3, es-abstract@^1.5.1: version "1.16.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.3.tgz#52490d978f96ff9f89ec15b5cf244304a5bca161" integrity sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw== @@ -4305,7 +4338,7 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-import-resolver-node@^0.3.2, eslint-import-resolver-node@^0.3.3: +eslint-import-resolver-node@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== @@ -4313,10 +4346,10 @@ eslint-import-resolver-node@^0.3.2, eslint-import-resolver-node@^0.3.3: debug "^2.6.9" resolve "^1.13.1" -eslint-module-utils@^2.4.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.0.tgz#cdf0b40d623032274ccd2abd7e64c4e524d6e19c" - integrity sha512-kCo8pZaNz2dsAW7nCUjuVoI11EBXXpIzfNxmaoLhXoRDOnqXLC4iSGVRdZPhOitfbdEfMEfKOiENaK6wDPZEGw== +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== dependencies: debug "^2.6.9" pkg-dir "^2.0.0" @@ -4328,23 +4361,24 @@ eslint-plugin-flowtype@^4.6.0: dependencies: lodash "^4.17.15" -eslint-plugin-import@^2.20.1: - version "2.20.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== +eslint-plugin-import@^2.22.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" has "^1.0.3" minimatch "^3.0.4" - object.values "^1.1.0" + object.values "^1.1.1" read-pkg-up "^2.0.0" - resolve "^1.12.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" eslint-plugin-jest@^23.8.2: version "23.8.2" @@ -4360,15 +4394,7 @@ eslint-plugin-prettier@^3.1.2: dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@5.1.0, eslint-scope@^5.0.0: +eslint-scope@5.1.0, eslint-scope@^5.0.0, eslint-scope@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== @@ -4376,10 +4402,10 @@ eslint-scope@5.1.0, eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" @@ -4388,22 +4414,23 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135" + integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.2.0" + esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" @@ -4412,33 +4439,31 @@ eslint@^6.8.0: ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" - integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== +espree@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" + integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== dependencies: - acorn "^7.1.0" - acorn-jsx "^5.1.0" - eslint-visitor-keys "^1.1.0" + acorn "^7.3.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" esprima@^3.1.3: version "3.1.3" @@ -4450,12 +4475,12 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: - estraverse "^4.0.0" + estraverse "^5.1.0" esrecurse@^4.1.0: version "4.2.1" @@ -4464,11 +4489,16 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + estree-walker@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" @@ -4705,7 +4735,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -4749,13 +4779,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -5400,6 +5423,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" @@ -5726,25 +5754,6 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" - integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - insert-module-globals@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" @@ -5827,6 +5836,11 @@ is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -6028,6 +6042,13 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== + dependencies: + has-symbols "^1.0.1" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -6057,6 +6078,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -6641,6 +6667,13 @@ 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@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" @@ -6901,7 +6934,15 @@ levenary@^1.1.1: dependencies: leven "^3.1.0" -levn@^0.3.0, levn@~0.3.0: +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -7583,7 +7624,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@0.0.8, mute-stream@~0.0.4: +mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -7959,13 +8000,13 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" -object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" @@ -8005,7 +8046,7 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== -optionator@^0.8.1, optionator@^0.8.3: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -8017,6 +8058,18 @@ optionator@^0.8.1, optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -8511,6 +8564,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -8997,10 +9055,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== regexpu-core@^4.7.0: version "4.7.0" @@ -9178,13 +9236,20 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: +resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" +resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -9193,14 +9258,6 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -9432,11 +9489,16 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + semver@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" @@ -9907,6 +9969,14 @@ string.prototype.padend@^3.0.0: es-abstract "^1.4.3" function-bind "^1.0.2" +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" @@ -9923,6 +9993,14 @@ string.prototype.trimright@^2.1.0: define-properties "^1.1.3" function-bind "^1.1.1" +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -10020,10 +10098,10 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +strip-json-comments@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-json-comments@~2.0.1: version "2.0.1" @@ -10065,6 +10143,13 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + sver-compat@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" @@ -10346,6 +10431,16 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -10375,6 +10470,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -10830,7 +10932,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== From 01d46254125ccc42dfbdfbac7bda92dbea25f7ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 29 Jul 2020 19:40:52 -0400 Subject: [PATCH 44/90] Correctly check reserved word for PropertyDefinition: IdentifierReference (#11862) * fix: check IdentifierReference in PropertyDefinition * chore: add more test cases * fix: incorrect test title --- .../babel-parser/src/parser/expression.js | 6 +- .../binding-arguments-module}/input.js | 0 .../binding-arguments-module}/options.json | 0 .../binding-arguments-module}/output.json | 1 - .../binding-arguments-strict}/input.js | 0 .../binding-arguments-strict}/output.json | 1 - .../binding-eval}/input.js | 0 .../binding-eval}/output.json | 1 - .../test/fixtures/es2015/shorthand/1/input.js | 1 - .../fixtures/es2015/shorthand/1/output.json | 62 --------- .../test/fixtures/es2015/shorthand/2/input.js | 1 - .../fixtures/es2015/shorthand/2/output.json | 91 -------------- .../shorthand/get-eval-arguments/input.js | 1 + .../shorthand/get-eval-arguments/output.json | 99 +++++++++++++++ .../shorthand/reserved-word-strict/input.js | 2 + .../reserved-word-strict/output.json | 118 ++++++++++++++++++ .../es2015/shorthand/reserved-word/input.js | 1 + .../shorthand/reserved-word/output.json | 104 +++++++++++++++ 18 files changed, 330 insertions(+), 159 deletions(-) rename packages/babel-parser/test/fixtures/{core/uncategorised/548 => es2015/destructuring/binding-arguments-module}/input.js (100%) rename packages/babel-parser/test/fixtures/{core/uncategorised/548 => es2015/destructuring/binding-arguments-module}/options.json (100%) rename packages/babel-parser/test/fixtures/{core/uncategorised/548 => es2015/destructuring/binding-arguments-module}/output.json (97%) rename packages/babel-parser/test/fixtures/{core/uncategorised/547 => es2015/destructuring/binding-arguments-strict}/input.js (100%) rename packages/babel-parser/test/fixtures/{core/uncategorised/547 => es2015/destructuring/binding-arguments-strict}/output.json (97%) rename packages/babel-parser/test/fixtures/es2015/{uncategorised/333 => destructuring/binding-eval}/input.js (100%) rename packages/babel-parser/test/fixtures/es2015/{uncategorised/333 => destructuring/binding-eval}/output.json (98%) delete mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/1/input.js delete mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/1/output.json delete mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/2/input.js delete mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/2/output.json create mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/get-eval-arguments/input.js create mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/get-eval-arguments/output.json create mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word-strict/input.js create mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word-strict/output.json create mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word/input.js create mode 100644 packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word/output.json diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 6bcb866035d6..39df90005037 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1785,7 +1785,11 @@ export default class ExpressionParser extends LValParser { } if (!prop.computed && prop.key.type === "Identifier") { - this.checkReservedWord(prop.key.name, prop.key.start, true, true); + // PropertyDefinition: + // IdentifierReference + // CoveredInitializedName + // Note: `{ eval } = {}` will be checked in `checkLVal` later. + this.checkReservedWord(prop.key.name, prop.key.start, true, false); if (isPattern) { prop.value = this.parseMaybeDefault( diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/548/input.js b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-module/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/core/uncategorised/548/input.js rename to packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-module/input.js diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/548/options.json b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-module/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/core/uncategorised/548/options.json rename to packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-module/options.json diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/548/output.json b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-module/output.json similarity index 97% rename from packages/babel-parser/test/fixtures/core/uncategorised/548/output.json rename to packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-module/output.json index 6065ead49801..66f3fdbdeedf 100644 --- a/packages/babel-parser/test/fixtures/core/uncategorised/548/output.json +++ b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-module/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":28,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":28}}, "errors": [ - "SyntaxError: Unexpected reserved word 'arguments' (1:8)", "SyntaxError: Binding 'arguments' in strict mode (1:8)" ], "program": { diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/547/input.js b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-strict/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/core/uncategorised/547/input.js rename to packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-strict/input.js diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/547/output.json b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-strict/output.json similarity index 97% rename from packages/babel-parser/test/fixtures/core/uncategorised/547/output.json rename to packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-strict/output.json index c2e81901a1f2..4fb224686603 100644 --- a/packages/babel-parser/test/fixtures/core/uncategorised/547/output.json +++ b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-arguments-strict/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":42,"loc":{"start":{"line":1,"column":0},"end":{"line":2,"column":28}}, "errors": [ - "SyntaxError: Unexpected reserved word 'arguments' (2:8)", "SyntaxError: Binding 'arguments' in strict mode (2:8)" ], "program": { diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/333/input.js b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-eval/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/es2015/uncategorised/333/input.js rename to packages/babel-parser/test/fixtures/es2015/destructuring/binding-eval/input.js diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/333/output.json b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-eval/output.json similarity index 98% rename from packages/babel-parser/test/fixtures/es2015/uncategorised/333/output.json rename to packages/babel-parser/test/fixtures/es2015/destructuring/binding-eval/output.json index df2a6a81e4b1..9688161107e5 100644 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/333/output.json +++ b/packages/babel-parser/test/fixtures/es2015/destructuring/binding-eval/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":39,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":39}}, "errors": [ - "SyntaxError: Unexpected reserved word 'eval' (1:16)", "SyntaxError: Assigning to 'eval' in strict mode (1:16)" ], "program": { diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/1/input.js b/packages/babel-parser/test/fixtures/es2015/shorthand/1/input.js deleted file mode 100644 index 5ce7c9deac24..000000000000 --- a/packages/babel-parser/test/fixtures/es2015/shorthand/1/input.js +++ /dev/null @@ -1 +0,0 @@ -var x = ({ const }); diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/1/output.json b/packages/babel-parser/test/fixtures/es2015/shorthand/1/output.json deleted file mode 100644 index 7514d1429f5f..000000000000 --- a/packages/babel-parser/test/fixtures/es2015/shorthand/1/output.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "File", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "errors": [ - "SyntaxError: Unexpected keyword 'const' (1:11)" - ], - "program": { - "type": "Program", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "sourceType": "script", - "interpreter": null, - "body": [ - { - "type": "VariableDeclaration", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "declarations": [ - { - "type": "VariableDeclarator", - "start":4,"end":19,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":19}}, - "id": { - "type": "Identifier", - "start":4,"end":5,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":5},"identifierName":"x"}, - "name": "x" - }, - "init": { - "type": "ObjectExpression", - "start":9,"end":18,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":18}}, - "properties": [ - { - "type": "ObjectProperty", - "start":11,"end":16,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":16}}, - "method": false, - "key": { - "type": "Identifier", - "start":11,"end":16,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":16},"identifierName":"const"}, - "name": "const" - }, - "computed": false, - "shorthand": true, - "value": { - "type": "Identifier", - "start":11,"end":16,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":16},"identifierName":"const"}, - "name": "const" - }, - "extra": { - "shorthand": true - } - } - ], - "extra": { - "parenthesized": true, - "parenStart": 8 - } - } - } - ], - "kind": "var" - } - ], - "directives": [] - } -} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/2/input.js b/packages/babel-parser/test/fixtures/es2015/shorthand/2/input.js deleted file mode 100644 index fabf36837d53..000000000000 --- a/packages/babel-parser/test/fixtures/es2015/shorthand/2/input.js +++ /dev/null @@ -1 +0,0 @@ -({ get, this, if }); diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/2/output.json b/packages/babel-parser/test/fixtures/es2015/shorthand/2/output.json deleted file mode 100644 index 4ca2311d88fe..000000000000 --- a/packages/babel-parser/test/fixtures/es2015/shorthand/2/output.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "type": "File", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "errors": [ - "SyntaxError: Unexpected keyword 'this' (1:8)", - "SyntaxError: Unexpected keyword 'if' (1:14)" - ], - "program": { - "type": "Program", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "sourceType": "script", - "interpreter": null, - "body": [ - { - "type": "ExpressionStatement", - "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, - "expression": { - "type": "ObjectExpression", - "start":1,"end":18,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":18}}, - "properties": [ - { - "type": "ObjectProperty", - "start":3,"end":6,"loc":{"start":{"line":1,"column":3},"end":{"line":1,"column":6}}, - "method": false, - "key": { - "type": "Identifier", - "start":3,"end":6,"loc":{"start":{"line":1,"column":3},"end":{"line":1,"column":6},"identifierName":"get"}, - "name": "get" - }, - "computed": false, - "shorthand": true, - "value": { - "type": "Identifier", - "start":3,"end":6,"loc":{"start":{"line":1,"column":3},"end":{"line":1,"column":6},"identifierName":"get"}, - "name": "get" - }, - "extra": { - "shorthand": true - } - }, - { - "type": "ObjectProperty", - "start":8,"end":12,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":12}}, - "method": false, - "key": { - "type": "Identifier", - "start":8,"end":12,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":12},"identifierName":"this"}, - "name": "this" - }, - "computed": false, - "shorthand": true, - "value": { - "type": "Identifier", - "start":8,"end":12,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":12},"identifierName":"this"}, - "name": "this" - }, - "extra": { - "shorthand": true - } - }, - { - "type": "ObjectProperty", - "start":14,"end":16,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":16}}, - "method": false, - "key": { - "type": "Identifier", - "start":14,"end":16,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":16},"identifierName":"if"}, - "name": "if" - }, - "computed": false, - "shorthand": true, - "value": { - "type": "Identifier", - "start":14,"end":16,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":16},"identifierName":"if"}, - "name": "if" - }, - "extra": { - "shorthand": true - } - } - ], - "extra": { - "parenthesized": true, - "parenStart": 0 - } - } - } - ], - "directives": [] - } -} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/get-eval-arguments/input.js b/packages/babel-parser/test/fixtures/es2015/shorthand/get-eval-arguments/input.js new file mode 100644 index 000000000000..9562ef0e8d01 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/shorthand/get-eval-arguments/input.js @@ -0,0 +1 @@ +var x = ({ get, eval, arguments }); diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/get-eval-arguments/output.json b/packages/babel-parser/test/fixtures/es2015/shorthand/get-eval-arguments/output.json new file mode 100644 index 000000000000..75790e603e0a --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/shorthand/get-eval-arguments/output.json @@ -0,0 +1,99 @@ +{ + "type": "File", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "program": { + "type": "Program", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":34,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":34}}, + "id": { + "type": "Identifier", + "start":4,"end":5,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":5},"identifierName":"x"}, + "name": "x" + }, + "init": { + "type": "ObjectExpression", + "start":9,"end":33,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":33}}, + "properties": [ + { + "type": "ObjectProperty", + "start":11,"end":14,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":14}}, + "method": false, + "key": { + "type": "Identifier", + "start":11,"end":14,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":14},"identifierName":"get"}, + "name": "get" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":11,"end":14,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":14},"identifierName":"get"}, + "name": "get" + }, + "extra": { + "shorthand": true + } + }, + { + "type": "ObjectProperty", + "start":16,"end":20,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":20}}, + "method": false, + "key": { + "type": "Identifier", + "start":16,"end":20,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":20},"identifierName":"eval"}, + "name": "eval" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":16,"end":20,"loc":{"start":{"line":1,"column":16},"end":{"line":1,"column":20},"identifierName":"eval"}, + "name": "eval" + }, + "extra": { + "shorthand": true + } + }, + { + "type": "ObjectProperty", + "start":22,"end":31,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":31}}, + "method": false, + "key": { + "type": "Identifier", + "start":22,"end":31,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":31},"identifierName":"arguments"}, + "name": "arguments" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":22,"end":31,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":31},"identifierName":"arguments"}, + "name": "arguments" + }, + "extra": { + "shorthand": true + } + } + ], + "extra": { + "parenthesized": true, + "parenStart": 8 + } + } + } + ], + "kind": "var" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word-strict/input.js b/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word-strict/input.js new file mode 100644 index 000000000000..7127b8e2f8af --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word-strict/input.js @@ -0,0 +1,2 @@ +"use strict"; +var x = ({ implements, interface, package }); diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word-strict/output.json b/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word-strict/output.json new file mode 100644 index 000000000000..4549edcbc96a --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word-strict/output.json @@ -0,0 +1,118 @@ +{ + "type": "File", + "start":0,"end":59,"loc":{"start":{"line":1,"column":0},"end":{"line":2,"column":45}}, + "errors": [ + "SyntaxError: Unexpected reserved word 'implements' (2:11)", + "SyntaxError: Unexpected reserved word 'interface' (2:23)", + "SyntaxError: Unexpected reserved word 'package' (2:34)" + ], + "program": { + "type": "Program", + "start":0,"end":59,"loc":{"start":{"line":1,"column":0},"end":{"line":2,"column":45}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":14,"end":59,"loc":{"start":{"line":2,"column":0},"end":{"line":2,"column":45}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":18,"end":58,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":44}}, + "id": { + "type": "Identifier", + "start":18,"end":19,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":5},"identifierName":"x"}, + "name": "x" + }, + "init": { + "type": "ObjectExpression", + "start":23,"end":57,"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":43}}, + "properties": [ + { + "type": "ObjectProperty", + "start":25,"end":35,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":21}}, + "method": false, + "key": { + "type": "Identifier", + "start":25,"end":35,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":21},"identifierName":"implements"}, + "name": "implements" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":25,"end":35,"loc":{"start":{"line":2,"column":11},"end":{"line":2,"column":21},"identifierName":"implements"}, + "name": "implements" + }, + "extra": { + "shorthand": true + } + }, + { + "type": "ObjectProperty", + "start":37,"end":46,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":32}}, + "method": false, + "key": { + "type": "Identifier", + "start":37,"end":46,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":32},"identifierName":"interface"}, + "name": "interface" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":37,"end":46,"loc":{"start":{"line":2,"column":23},"end":{"line":2,"column":32},"identifierName":"interface"}, + "name": "interface" + }, + "extra": { + "shorthand": true + } + }, + { + "type": "ObjectProperty", + "start":48,"end":55,"loc":{"start":{"line":2,"column":34},"end":{"line":2,"column":41}}, + "method": false, + "key": { + "type": "Identifier", + "start":48,"end":55,"loc":{"start":{"line":2,"column":34},"end":{"line":2,"column":41},"identifierName":"package"}, + "name": "package" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":48,"end":55,"loc":{"start":{"line":2,"column":34},"end":{"line":2,"column":41},"identifierName":"package"}, + "name": "package" + }, + "extra": { + "shorthand": true + } + } + ], + "extra": { + "parenthesized": true, + "parenStart": 22 + } + } + } + ], + "kind": "var" + } + ], + "directives": [ + { + "type": "Directive", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "value": { + "type": "DirectiveLiteral", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":12}}, + "value": "use strict", + "extra": { + "raw": "\"use strict\"", + "rawValue": "use strict" + } + } + } + ] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word/input.js b/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word/input.js new file mode 100644 index 000000000000..c3cfce102a5a --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word/input.js @@ -0,0 +1 @@ +var x = ({ const, if, this }); diff --git a/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word/output.json b/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word/output.json new file mode 100644 index 000000000000..752251aa9b35 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/shorthand/reserved-word/output.json @@ -0,0 +1,104 @@ +{ + "type": "File", + "start":0,"end":30,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}}, + "errors": [ + "SyntaxError: Unexpected keyword 'const' (1:11)", + "SyntaxError: Unexpected keyword 'if' (1:18)", + "SyntaxError: Unexpected keyword 'this' (1:22)" + ], + "program": { + "type": "Program", + "start":0,"end":30,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":30,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":29,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":29}}, + "id": { + "type": "Identifier", + "start":4,"end":5,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":5},"identifierName":"x"}, + "name": "x" + }, + "init": { + "type": "ObjectExpression", + "start":9,"end":28,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":28}}, + "properties": [ + { + "type": "ObjectProperty", + "start":11,"end":16,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":16}}, + "method": false, + "key": { + "type": "Identifier", + "start":11,"end":16,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":16},"identifierName":"const"}, + "name": "const" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":11,"end":16,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":16},"identifierName":"const"}, + "name": "const" + }, + "extra": { + "shorthand": true + } + }, + { + "type": "ObjectProperty", + "start":18,"end":20,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":20}}, + "method": false, + "key": { + "type": "Identifier", + "start":18,"end":20,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":20},"identifierName":"if"}, + "name": "if" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":18,"end":20,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":20},"identifierName":"if"}, + "name": "if" + }, + "extra": { + "shorthand": true + } + }, + { + "type": "ObjectProperty", + "start":22,"end":26,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":26}}, + "method": false, + "key": { + "type": "Identifier", + "start":22,"end":26,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":26},"identifierName":"this"}, + "name": "this" + }, + "computed": false, + "shorthand": true, + "value": { + "type": "Identifier", + "start":22,"end":26,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":26},"identifierName":"this"}, + "name": "this" + }, + "extra": { + "shorthand": true + } + } + ], + "extra": { + "parenthesized": true, + "parenStart": 8 + } + } + } + ], + "kind": "var" + } + ], + "directives": [] + } +} \ No newline at end of file From 374a253d0c3635e1373c79b1d928d7de0a3e8ff7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2020 20:26:38 -0500 Subject: [PATCH 45/90] chore(deps): bump elliptic from 6.5.2 to 6.5.3 (#11891) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4a89565ffb8e..40d9ac971047 100644 --- a/yarn.lock +++ b/yarn.lock @@ -57,20 +57,20 @@ source-map "^0.5.0" "@babel/eslint-config-internal@link:./eslint/babel-eslint-config-internal": - version "0.0.0" - uid "" + version "7.10.4" "@babel/eslint-parser@link:./eslint/babel-eslint-parser": - version "0.0.0" - uid "" + version "7.10.4" + dependencies: + eslint-scope "5.1.0" + eslint-visitor-keys "^1.3.0" + semver "^6.3.0" "@babel/eslint-plugin-development-internal@link:./eslint/babel-eslint-plugin-development-internal": - version "0.0.0" - uid "" + version "7.10.4" "@babel/eslint-plugin-development@link:./eslint/babel-eslint-plugin-development": - version "0.0.0" - uid "" + version "7.10.4" "@babel/generator@^7.10.4", "@babel/generator@^7.4.0": version "7.10.4" @@ -2689,9 +2689,9 @@ bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== brace-expansion@^1.1.7: version "1.1.11" @@ -4113,9 +4113,9 @@ elegant-spinner@^1.0.1: integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" From 164a93945dec271e6a815ee5f2a5fe13f54058aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 30 Jul 2020 09:24:19 -0400 Subject: [PATCH 46/90] add showConfig support (#11588) * draft: showConfig support * feat: pass through showConfig command options * update test file * refactor: add createLogger to makeChainWalker * serializing dynamic plugin instance * fix flow errors * chore: add tests on extended config * fix: do not print empty presets * add more test cases * add windows testcases * address review comments * throw error when showConfigPath does not exist * print reason when showConfig is targetting an ignored file * remove showConfig: boolean * refactor: simplify environment flag name * rename test fixtures * fix: throw when SHOW_CONFIG_FOR is not a regular file * cleanup test fixtures * add test on only * Update packages/babel-core/src/config/files/configuration.js Co-authored-by: Brian Ng * address review comments * update test fixtures * feat: sort config items in ascending priority Co-authored-by: Brian Ng --- .../in-files/babel.config.json | 14 ++ .../in-files/src/index.js | 0 .../options.json | 7 + .../stdout.txt | 1 + .../in-files/babel.config.json | 13 ++ .../in-files/src/bar.js | 0 .../in-files/src/foo.js | 0 .../options.json | 7 + .../out-files/test.js | 1 + .../stdout.txt | 31 ++++ .../in-files/babel.config.json | 13 ++ .../in-files/src/bar.js | 0 .../in-files/src/foo.js | 0 .../options.json | 7 + .../out-files/test.js | 1 + .../stdout.txt | 31 ++++ .../in-files/babel.config.json | 14 ++ .../in-files/src/index.js | 0 .../options.json | 7 + .../stdout.txt | 1 + .../in-files/babel.config.json | 13 ++ .../in-files/src/bar.js | 0 .../in-files/src/foo.js | 0 .../options.json | 7 + .../out-files/lib/bar.js | 1 + .../env - SHOW_CONFIG_FOR-windows/stdout.txt | 32 ++++ .../in-files/my-config.js | 40 +++++ .../in-files/my-extended.js | 47 ++++++ .../node_modules/@foo/babel-plugin-1/index.js | 6 + .../node_modules/@foo/babel-plugin-2/index.js | 6 + .../node_modules/@foo/babel-plugin-3/index.js | 6 + .../node_modules/@foo/babel-plugin-4/index.js | 6 + .../node_modules/@foo/babel-preset-1/index.js | 4 + .../node_modules/@foo/babel-preset-2/index.js | 4 + .../node_modules/@foo/babel-preset-3/index.js | 4 + .../node_modules/@foo/babel-preset-4/index.js | 4 + .../in-files/src/index.js | 0 .../babel/env - SHOW_CONFIG_FOR/options.json | 8 + .../babel/env - SHOW_CONFIG_FOR/stdout.txt | 127 +++++++++++++++ .../in-files/babel.config.json | 13 ++ .../in-files/src/bar.js | 0 .../in-files/src/foo.js | 0 .../options.json | 8 + .../stderr.txt | 1 + .../in-files/babel.config.json | 13 ++ .../in-files/src/bar.js | 0 .../in-files/src/foo.js | 0 .../options.json | 8 + .../stderr.txt | 1 + packages/babel-cli/test/index.js | 35 +++-- .../babel-core/src/config/config-chain.js | 147 +++++++++++++++--- .../src/config/files/configuration.js | 17 ++ .../src/config/files/index-browser.js | 7 + packages/babel-core/src/config/files/index.js | 1 + packages/babel-core/src/config/partial.js | 14 +- packages/babel-core/src/config/printer.js | 133 ++++++++++++++++ packages/babel-core/src/gensync-utils/fs.js | 5 + 57 files changed, 827 insertions(+), 39 deletions(-) create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/in-files/babel.config.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/in-files/src/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/stdout.txt create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/babel.config.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/src/bar.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/src/foo.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/out-files/test.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/stdout.txt create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/babel.config.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/src/bar.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/src/foo.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/out-files/test.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/in-files/babel.config.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/in-files/src/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/stdout.txt create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/babel.config.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/src/bar.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/src/foo.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/out-files/lib/bar.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/my-config.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/my-extended.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-1/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-2/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-3/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-4/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-1/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-2/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-3/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-4/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/src/index.js create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/babel.config.json create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/src/bar.js create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/src/foo.js create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/stderr.txt create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/babel.config.json create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/src/bar.js create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/src/foo.js create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/options.json create mode 100644 packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/stderr.txt create mode 100644 packages/babel-core/src/config/printer.js diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/in-files/babel.config.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/in-files/babel.config.json new file mode 100644 index 000000000000..e27502349ff7 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/in-files/babel.config.json @@ -0,0 +1,14 @@ +{ + "sourceType": "script", + "overrides": [ + { + "test": "src/index.js", + "sourceType": "module" + } + ], + "env": { + "test": { + "ignore": ["./src/index.js"] + } + } +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/in-files/src/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/in-files/src/index.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/options.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/options.json new file mode 100644 index 000000000000..1843a59d10d6 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/options.json @@ -0,0 +1,7 @@ +{ + "args": ["./src/index.js"], + "env": { + "BABEL_SHOW_CONFIG_FOR": "./src/index.js" + }, + "os": ["darwin", "linux"] +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/stdout.txt new file mode 100644 index 000000000000..0f04e572f41d --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/stdout.txt @@ -0,0 +1 @@ +No config is applied to "/src/index.js" because it matches one of `ignore: ["./src/index.js"]` from "" diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/babel.config.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/babel.config.json new file mode 100644 index 000000000000..d0aed1111196 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/babel.config.json @@ -0,0 +1,13 @@ +{ + "sourceType": "script", + "overrides": [ + { + "test": "src/foo.js", + "sourceType": "module" + }, + { + "test": "src/bar.js", + "sourceType": "script" + } + ] +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/src/bar.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/src/bar.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/src/foo.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/in-files/src/foo.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/options.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/options.json new file mode 100644 index 000000000000..39dd94aba890 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/options.json @@ -0,0 +1,7 @@ +{ + "args": ["./src", "--out-file", "./test.js"], + "os": ["win32"], + "env": { + "BABEL_SHOW_CONFIG_FOR": "./src/foo.js" + } +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/out-files/test.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/out-files/test.js new file mode 100644 index 000000000000..3918c74e4463 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/out-files/test.js @@ -0,0 +1 @@ +"use strict"; diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/stdout.txt new file mode 100644 index 000000000000..303ac82e7f34 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/stdout.txt @@ -0,0 +1,31 @@ +Babel configs on "/src/foo.js" (ascending priority): +config /babel.config.json +{ + "sourceType": "script" +} + +config /babel.config.json .overrides[0] +{ + "test": "src/foo.js", + "sourceType": "module" +} + +config /.babelrc +{} + +programmatic options from @babel/cli +{ + "sourceFileName": "src/foo.js", + "presets": [ + "//packages//babel-preset-react" + ], + "plugins": [ + "//packages//babel-plugin-transform-arrow-functions", + "//packages//babel-plugin-transform-strict-mode", + "//packages//babel-plugin-transform-modules-commonjs" + ], + "caller": { + "name": "@babel/cli" + }, + "filename": "src//foo.js" +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/babel.config.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/babel.config.json new file mode 100644 index 000000000000..d0aed1111196 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/babel.config.json @@ -0,0 +1,13 @@ +{ + "sourceType": "script", + "overrides": [ + { + "test": "src/foo.js", + "sourceType": "module" + }, + { + "test": "src/bar.js", + "sourceType": "script" + } + ] +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/src/bar.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/src/bar.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/src/foo.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/in-files/src/foo.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/options.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/options.json new file mode 100644 index 000000000000..f825bf6da710 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/options.json @@ -0,0 +1,7 @@ +{ + "args": ["./src", "--out-file", "./test.js"], + "os": ["darwin", "linux"], + "env": { + "BABEL_SHOW_CONFIG_FOR": "./src/foo.js" + } +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/out-files/test.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/out-files/test.js new file mode 100644 index 000000000000..3918c74e4463 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/out-files/test.js @@ -0,0 +1 @@ +"use strict"; diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt new file mode 100644 index 000000000000..0f982f0e98c4 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt @@ -0,0 +1,31 @@ +Babel configs on "/src/foo.js" (ascending priority): +config /babel.config.json +{ + "sourceType": "script" +} + +config /babel.config.json .overrides[0] +{ + "test": "src/foo.js", + "sourceType": "module" +} + +config /.babelrc +{} + +programmatic options from @babel/cli +{ + "sourceFileName": "src/foo.js", + "presets": [ + "/packages/babel-preset-react" + ], + "plugins": [ + "/packages/babel-plugin-transform-arrow-functions", + "/packages/babel-plugin-transform-strict-mode", + "/packages/babel-plugin-transform-modules-commonjs" + ], + "caller": { + "name": "@babel/cli" + }, + "filename": "src/foo.js" +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/in-files/babel.config.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/in-files/babel.config.json new file mode 100644 index 000000000000..5a9bcd4c46f3 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/in-files/babel.config.json @@ -0,0 +1,14 @@ +{ + "sourceType": "script", + "overrides": [ + { + "test": "src/index.js", + "sourceType": "module" + } + ], + "env": { + "test": { + "only": ["./src/unicorn.js"] + } + } +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/in-files/src/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/in-files/src/index.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/options.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/options.json new file mode 100644 index 000000000000..1843a59d10d6 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/options.json @@ -0,0 +1,7 @@ +{ + "args": ["./src/index.js"], + "env": { + "BABEL_SHOW_CONFIG_FOR": "./src/index.js" + }, + "os": ["darwin", "linux"] +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/stdout.txt new file mode 100644 index 000000000000..e1e47232c0d4 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/stdout.txt @@ -0,0 +1 @@ +No config is applied to "/src/index.js" because it fails to match one of `only: ["./src/unicorn.js"]` from "" diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/babel.config.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/babel.config.json new file mode 100644 index 000000000000..d0aed1111196 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/babel.config.json @@ -0,0 +1,13 @@ +{ + "sourceType": "script", + "overrides": [ + { + "test": "src/foo.js", + "sourceType": "module" + }, + { + "test": "src/bar.js", + "sourceType": "script" + } + ] +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/src/bar.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/src/bar.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/src/foo.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/in-files/src/foo.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/options.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/options.json new file mode 100644 index 000000000000..afe564df4d72 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/options.json @@ -0,0 +1,7 @@ +{ + "args": ["./src", "-d", "lib"], + "env": { + "BABEL_SHOW_CONFIG_FOR": "./src/foo.js" + }, + "os": ["win32"] +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/out-files/lib/bar.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/out-files/lib/bar.js new file mode 100644 index 000000000000..3918c74e4463 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/out-files/lib/bar.js @@ -0,0 +1 @@ +"use strict"; diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt new file mode 100644 index 000000000000..5d5860f58f82 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt @@ -0,0 +1,32 @@ +Babel configs on "/src/foo.js" (ascending priority): +config /babel.config.json +{ + "sourceType": "script" +} + +config /babel.config.json .overrides[0] +{ + "test": "src/foo.js", + "sourceType": "module" +} + +config /.babelrc +{} + +programmatic options from @babel/cli +{ + "sourceFileName": "../src/foo.js", + "presets": [ + "//packages//babel-preset-react" + ], + "plugins": [ + "//packages//babel-plugin-transform-arrow-functions", + "//packages//babel-plugin-transform-strict-mode", + "//packages//babel-plugin-transform-modules-commonjs" + ], + "caller": { + "name": "@babel/cli" + }, + "filename": "src//foo.js" +} +Successfully compiled 1 file with Babel (123ms). diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/my-config.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/my-config.js new file mode 100644 index 000000000000..011eda3d4d61 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/my-config.js @@ -0,0 +1,40 @@ +module.exports = { + sourceType: "script", + plugins: [require("@foo/babel-plugin-1")], + extends: "./my-extended.js", + overrides: [ + { + test: "src/index.js", + plugins: [["@foo/babel-plugin-2", { noDocumentAll: true }]], + env: { + test: { + plugins: [ + "@foo/babel-plugin-1", + [ + { name: "@foo/inline-babel-plugin-1", visitor: { Program() {} } }, + { noDocumentAll: true }, + ], + ], + }, + }, + }, + { + exclude: "src/index.js", + plugins: ["@foo/babel-plugin-4"], + }, + ], + env: { + test: { + plugins: [ + [ + "@foo/babel-plugin-3", + { noDocumentAll: true }, + "@foo/babel-plugin-three", + ], + ], + }, + development: { + plugins: ["@foo/babel-plugin-4"], + }, + }, +}; diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/my-extended.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/my-extended.js new file mode 100644 index 000000000000..31ef7c081c62 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/my-extended.js @@ -0,0 +1,47 @@ +module.exports = { + sourceMaps: false, + presets: ["@foo/babel-preset-1"], + overrides: [ + { + test: "src/index.js", + presets: [["@foo/babel-preset-2", { noDocumentAll: true }]], + env: { + test: { + presets: [ + "@foo/babel-preset-1", + [ + { + name: "@foo/inline-babel-preset-1", + plugins: [ + { + name: "@foo/inline-babel-plugin-1", + visitor: { Program() {} }, + }, + ], + }, + { noDocumentAll: true }, + ], + ], + }, + }, + }, + { + exclude: "src/index.js", + presets: ["@foo/babel-preset-4"], + }, + ], + env: { + test: { + presets: [ + [ + "@foo/babel-preset-3", + { noDocumentAll: true }, + "@foo/babel-preset-three", + ], + ], + }, + development: { + presets: ["@foo/babel-preset-4"], + }, + }, +}; diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-1/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-1/index.js new file mode 100644 index 000000000000..2044637bfa46 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-1/index.js @@ -0,0 +1,6 @@ +module.exports = (api) => ({ + name: "@foo/" + __dirname, + visitor: { + Program() {} + } +}) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-2/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-2/index.js new file mode 100644 index 000000000000..2044637bfa46 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-2/index.js @@ -0,0 +1,6 @@ +module.exports = (api) => ({ + name: "@foo/" + __dirname, + visitor: { + Program() {} + } +}) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-3/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-3/index.js new file mode 100644 index 000000000000..2044637bfa46 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-3/index.js @@ -0,0 +1,6 @@ +module.exports = (api) => ({ + name: "@foo/" + __dirname, + visitor: { + Program() {} + } +}) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-4/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-4/index.js new file mode 100644 index 000000000000..2044637bfa46 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-plugin-4/index.js @@ -0,0 +1,6 @@ +module.exports = (api) => ({ + name: "@foo/" + __dirname, + visitor: { + Program() {} + } +}) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-1/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-1/index.js new file mode 100644 index 000000000000..1eff8b4a82a5 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-1/index.js @@ -0,0 +1,4 @@ +module.exports = (api) => ({ + name: "@foo/" + __dirname, + plugins: ["@foo/" + __dirname.replace("preset", "plugin")] +}) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-2/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-2/index.js new file mode 100644 index 000000000000..1eff8b4a82a5 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-2/index.js @@ -0,0 +1,4 @@ +module.exports = (api) => ({ + name: "@foo/" + __dirname, + plugins: ["@foo/" + __dirname.replace("preset", "plugin")] +}) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-3/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-3/index.js new file mode 100644 index 000000000000..1eff8b4a82a5 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-3/index.js @@ -0,0 +1,4 @@ +module.exports = (api) => ({ + name: "@foo/" + __dirname, + plugins: ["@foo/" + __dirname.replace("preset", "plugin")] +}) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-4/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-4/index.js new file mode 100644 index 000000000000..1eff8b4a82a5 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/node_modules/@foo/babel-preset-4/index.js @@ -0,0 +1,4 @@ +module.exports = (api) => ({ + name: "@foo/" + __dirname, + plugins: ["@foo/" + __dirname.replace("preset", "plugin")] +}) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/src/index.js b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/src/index.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/options.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/options.json new file mode 100644 index 000000000000..98fec747116f --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/options.json @@ -0,0 +1,8 @@ +{ + "args": ["--config-file", "./my-config.js", "./src/index.js"], + "env": { + "BABEL_ENV": "test", + "BABEL_SHOW_CONFIG_FOR": "./src/index.js" + }, + "os": ["darwin", "linux"] +} diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt new file mode 100644 index 000000000000..b648f9d8bb48 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt @@ -0,0 +1,127 @@ +Babel configs on "/src/index.js" (ascending priority): +config /my-extended.js +{ + "sourceMaps": false, + "presets": [ + "@foo/babel-preset-1" + ] +} + +config /my-extended.js .env["test"] +{ + "presets": [ + [ + "@foo/babel-preset-3", + { + "noDocumentAll": true + }, + "@foo/babel-preset-three" + ] + ] +} + +config /my-extended.js .overrides[0] +{ + "test": "src/index.js", + "presets": [ + [ + "@foo/babel-preset-2", + { + "noDocumentAll": true + } + ] + ] +} + +config /my-extended.js .overrides[0].env["test"] +{ + "presets": [ + "@foo/babel-preset-1", + [ + { + "name": "@foo/inline-babel-preset-1", + "plugins": [ + { + "name": "@foo/inline-babel-plugin-1", + "visitor": {} + } + ] + }, + { + "noDocumentAll": true + } + ] + ] +} + +config /my-config.js +{ + "sourceType": "script", + "plugins": [ + "[Function: (api) => ({/n name: /"@foo//" + __dirname,/n visitor ... ]" + ], + "extends": "./my-extended.js" +} + +config /my-config.js .env["test"] +{ + "plugins": [ + [ + "@foo/babel-plugin-3", + { + "noDocumentAll": true + }, + "@foo/babel-plugin-three" + ] + ] +} + +config /my-config.js .overrides[0] +{ + "test": "src/index.js", + "plugins": [ + [ + "@foo/babel-plugin-2", + { + "noDocumentAll": true + } + ] + ] +} + +config /my-config.js .overrides[0].env["test"] +{ + "plugins": [ + "@foo/babel-plugin-1", + [ + { + "name": "@foo/inline-babel-plugin-1", + "visitor": {} + }, + { + "noDocumentAll": true + } + ] + ] +} + +config /.babelrc +{} + +programmatic options from @babel/cli +{ + "sourceFileName": "./src/index.js", + "presets": [ + "/packages/babel-preset-react" + ], + "plugins": [ + "/packages/babel-plugin-transform-arrow-functions", + "/packages/babel-plugin-transform-strict-mode", + "/packages/babel-plugin-transform-modules-commonjs" + ], + "configFile": "./my-config.js", + "caller": { + "name": "@babel/cli" + }, + "filename": "./src/index.js" +} diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/babel.config.json b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/babel.config.json new file mode 100644 index 000000000000..d0aed1111196 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/babel.config.json @@ -0,0 +1,13 @@ +{ + "sourceType": "script", + "overrides": [ + { + "test": "src/foo.js", + "sourceType": "module" + }, + { + "test": "src/bar.js", + "sourceType": "script" + } + ] +} diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/src/bar.js b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/src/bar.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/src/foo.js b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/in-files/src/foo.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/options.json b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/options.json new file mode 100644 index 000000000000..47482647a1f8 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/options.json @@ -0,0 +1,8 @@ +{ + "args": ["./src", "-d", "lib"], + "env": { + "BABEL_SHOW_CONFIG_FOR": "./src" + }, + "os": ["win32"], + "stderrContains": true +} diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/stderr.txt b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/stderr.txt new file mode 100644 index 000000000000..643907675a08 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder-windows/stderr.txt @@ -0,0 +1 @@ +Error: \src: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported. diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/babel.config.json b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/babel.config.json new file mode 100644 index 000000000000..d0aed1111196 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/babel.config.json @@ -0,0 +1,13 @@ +{ + "sourceType": "script", + "overrides": [ + { + "test": "src/foo.js", + "sourceType": "module" + }, + { + "test": "src/bar.js", + "sourceType": "script" + } + ] +} diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/src/bar.js b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/src/bar.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/src/foo.js b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/in-files/src/foo.js new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/options.json b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/options.json new file mode 100644 index 000000000000..ad68f809aa27 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/options.json @@ -0,0 +1,8 @@ +{ + "args": ["./src", "-d", "lib"], + "env": { + "BABEL_SHOW_CONFIG_FOR": "./src" + }, + "os": ["darwin", "linux"], + "stderrContains": true +} diff --git a/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/stderr.txt b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/stderr.txt new file mode 100644 index 000000000000..6106f380f658 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/error - SHOW_CONFIG_FOR is a folder/stderr.txt @@ -0,0 +1 @@ +Error: /src: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported. diff --git a/packages/babel-cli/test/index.js b/packages/babel-cli/test/index.js index 0debf8a29414..7cedb49e334c 100644 --- a/packages/babel-cli/test/index.js +++ b/packages/babel-cli/test/index.js @@ -3,12 +3,14 @@ const helper = require("@babel/helper-fixtures"); const rimraf = require("rimraf"); const { sync: makeDirSync } = require("make-dir"); const child = require("child_process"); +const escapeRegExp = require("lodash/escapeRegExp"); const merge = require("lodash/merge"); const path = require("path"); const fs = require("fs"); const fixtureLoc = path.join(__dirname, "fixtures"); const tmpLoc = path.join(__dirname, "tmp"); +const rootDir = path.resolve(__dirname, "../../.."); const fileFilter = function (x) { return x !== ".DS_Store"; @@ -19,12 +21,12 @@ const outputFileSync = function (filePath, data) { fs.writeFileSync(filePath, data); }; -const presetLocs = [path.join(__dirname, "../../babel-preset-react")]; +const presetLocs = [path.join(rootDir, "./packages/babel-preset-react")]; const pluginLocs = [ - path.join(__dirname, "/../../babel-plugin-transform-arrow-functions"), - path.join(__dirname, "/../../babel-plugin-transform-strict-mode"), - path.join(__dirname, "/../../babel-plugin-transform-modules-commonjs"), + path.join(rootDir, "./packages/babel-plugin-transform-arrow-functions"), + path.join(rootDir, "./packages/babel-plugin-transform-strict-mode"), + path.join(rootDir, "./packages/babel-plugin-transform-modules-commonjs"), ].join(","); const readDir = function (loc, filter) { @@ -50,13 +52,21 @@ const saveInFiles = function (files) { }; const normalizeOutput = function (str, cwd) { - let prev; - do { - prev = str; - str = str.replace(cwd, ""); - } while (str !== prev); - - return str.replace(/\(\d+ms\)/g, "(123ms)"); + let result = str + .replace(/\(\d+ms\)/g, "(123ms)") + .replace(new RegExp(escapeRegExp(cwd), "g"), "") + // (non-win32) /foo/babel/packages -> /packages + // (win32) C:\foo\babel\packages -> \packages + .replace(new RegExp(escapeRegExp(rootDir), "g"), ""); + if (process.platform === "win32") { + result = result + // C:\\foo\\babel\\packages -> \\packages (in js string literal) + .replace( + new RegExp(escapeRegExp(rootDir.replace(/\\/g, "\\\\")), "g"), + "", + ); + } + return result; }; const assertTest = function (stdout, stderr, opts, cwd) { @@ -132,8 +142,9 @@ const buildTest = function (binName, testName, opts) { } args = args.concat(opts.args); + const env = { ...process.env, ...opts.env }; - const spawn = child.spawn(process.execPath, args); + const spawn = child.spawn(process.execPath, args, { env }); let stderr = ""; let stdout = ""; diff --git a/packages/babel-core/src/config/config-chain.js b/packages/babel-core/src/config/config-chain.js index f54dc4dcd6bd..2c897139fb3d 100644 --- a/packages/babel-core/src/config/config-chain.js +++ b/packages/babel-core/src/config/config-chain.js @@ -12,6 +12,7 @@ import { type CallerMetadata, } from "./validation/options"; import pathPatternToRegex from "./pattern-to-regex"; +import { ConfigPrinter, ChainFormatter } from "./printer"; const debug = buildDebug("babel:config:config-chain"); @@ -53,6 +54,7 @@ export type ConfigContext = { root: string, envName: string, caller: CallerMetadata | void, + showConfig: boolean, }; /** @@ -81,6 +83,7 @@ export const buildPresetChainWalker: ( overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index), overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName), + createLogger: () => () => {}, // Currently we don't support logging how preset is expanded }); const loadPresetDescriptors = makeWeakCacheSync((preset: PresetInstance) => buildRootDescriptors(preset, preset.alias, createUncachedDescriptors), @@ -134,14 +137,19 @@ export function* buildRootChain( opts: ValidatedOptions, context: ConfigContext, ): Handler { + let configReport, babelRcReport; + const programmaticLogger = new ConfigPrinter(); const programmaticChain = yield* loadProgrammaticChain( { options: opts, dirname: context.cwd, }, context, + undefined, + programmaticLogger, ); if (!programmaticChain) return null; + const programmaticReport = programmaticLogger.output(); let configFile; if (typeof opts.configFile === "string") { @@ -163,10 +171,17 @@ export function* buildRootChain( let babelrcRootsDirectory = context.cwd; const configFileChain = emptyChain(); + const configFileLogger = new ConfigPrinter(); if (configFile) { const validatedFile = validateConfigFile(configFile); - const result = yield* loadFileChain(validatedFile, context); + const result = yield* loadFileChain( + validatedFile, + context, + undefined, + configFileLogger, + ); if (!result) return null; + configReport = configFileLogger.output(); // Allow config files to toggle `.babelrc` resolution on and off and // specify where the roots are. @@ -208,16 +223,32 @@ export function* buildRootChain( } if (babelrcFile) { + const validatedFile = validateBabelrcFile(babelrcFile); + const babelrcLogger = new ConfigPrinter(); const result = yield* loadFileChain( - validateBabelrcFile(babelrcFile), + validatedFile, context, + undefined, + babelrcLogger, ); if (!result) return null; + babelRcReport = babelrcLogger.output(); mergeChain(fileChain, result); } } + if (context.showConfig) { + console.log( + // $FlowIgnore: context.showConfig implies context.filename is not null + `Babel configs on "${context.filename}" (ascending priority):\n` + + // print config by the order of ascending priority + [configReport, babelRcReport, programmaticReport] + .filter(x => !!x) + .join("\n\n"), + ); + return null; + } // Insert file chain in front so programmatic options have priority // over configuration file chain items. const chain = mergeChain( @@ -317,6 +348,8 @@ const loadProgrammaticChain = makeChainWalker({ index, envName, ), + createLogger: (input, context, baseLogger) => + buildProgrammaticLogger(input, context, baseLogger), }); /** @@ -328,6 +361,8 @@ const loadFileChain = makeChainWalker({ overrides: (file, index) => loadFileOverridesDescriptors(file)(index), overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName), + createLogger: (file, context, baseLogger) => + buildFileLogger(file.filepath, context, baseLogger), }); const loadFileDescriptors = makeWeakCacheSync((file: ValidatedFile) => buildRootDescriptors(file, file.filepath, createUncachedDescriptors), @@ -367,10 +402,32 @@ const loadFileOverridesEnvDescriptors = makeWeakCacheSync( ), ); +function buildFileLogger( + filepath: string, + context: ConfigContext, + baseLogger: ConfigPrinter | void, +) { + if (!baseLogger) { + return () => {}; + } + return baseLogger.configure(context.showConfig, ChainFormatter.Config, { + filepath, + }); +} + function buildRootDescriptors({ dirname, options }, alias, descriptors) { return descriptors(dirname, options, alias); } +function buildProgrammaticLogger(_, context, baseLogger: ConfigPrinter | void) { + if (!baseLogger) { + return () => {}; + } + return baseLogger.configure(context.showConfig, ChainFormatter.Programmatic, { + callerName: context.caller?.name, + }); +} + function buildEnvDescriptors( { dirname, options }, alias, @@ -418,41 +475,68 @@ function makeChainWalker({ env, overrides, overridesEnv, + createLogger, }: {| root: ArgT => OptionsAndDescriptors, env: (ArgT, string) => OptionsAndDescriptors | null, overrides: (ArgT, number) => OptionsAndDescriptors, overridesEnv: (ArgT, number, string) => OptionsAndDescriptors | null, + createLogger: ( + ArgT, + ConfigContext, + ConfigPrinter | void, + ) => (OptionsAndDescriptors, ?number, ?string) => void, |}): ( ArgT, ConfigContext, - Set | void, + files?: Set | void, + baseLogger: ConfigPrinter | void, ) => Handler { - return function* (input, context, files = new Set()) { + return function* (input, context, files = new Set(), baseLogger) { const { dirname } = input; - const flattenedConfigs = []; + const flattenedConfigs: Array<{| + config: OptionsAndDescriptors, + index: ?number, + envName: ?string, + |}> = []; const rootOpts = root(input); if (configIsApplicable(rootOpts, dirname, context)) { - flattenedConfigs.push(rootOpts); + flattenedConfigs.push({ + config: rootOpts, + envName: undefined, + index: undefined, + }); const envOpts = env(input, context.envName); if (envOpts && configIsApplicable(envOpts, dirname, context)) { - flattenedConfigs.push(envOpts); + flattenedConfigs.push({ + config: envOpts, + envName: context.envName, + index: undefined, + }); } (rootOpts.options.overrides || []).forEach((_, index) => { const overrideOps = overrides(input, index); if (configIsApplicable(overrideOps, dirname, context)) { - flattenedConfigs.push(overrideOps); + flattenedConfigs.push({ + config: overrideOps, + index, + envName: undefined, + }); const overrideEnvOpts = overridesEnv(input, index, context.envName); if ( overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context) ) { - flattenedConfigs.push(overrideEnvOpts); + flattenedConfigs.push({ + config: overrideEnvOpts, + index, + envName: context.envName, + }); } } }); @@ -462,7 +546,7 @@ function makeChainWalker({ // that we don't do extra work loading extended configs if a file is // ignored. if ( - flattenedConfigs.some(({ options: { ignore, only } }) => + flattenedConfigs.some(({ config: { options: { ignore, only } } }) => shouldIgnore(context, ignore, only, dirname), ) ) { @@ -470,15 +554,24 @@ function makeChainWalker({ } const chain = emptyChain(); + const logger = createLogger(input, context, baseLogger); - for (const op of flattenedConfigs) { + for (const { config, index, envName } of flattenedConfigs) { if ( - !(yield* mergeExtendsChain(chain, op.options, dirname, context, files)) + !(yield* mergeExtendsChain( + chain, + config.options, + dirname, + context, + files, + baseLogger, + )) ) { return null; } - mergeChainOpts(chain, op); + logger(config, index, envName); + mergeChainOpts(chain, config); } return chain; }; @@ -490,6 +583,7 @@ function* mergeExtendsChain( dirname: string, context: ConfigContext, files: Set, + baseLogger: ConfigPrinter | void, ): Handler { if (opts.extends === undefined) return true; @@ -513,6 +607,7 @@ function* mergeExtendsChain( validateExtendFile(file), context, files, + baseLogger, ); files.delete(file); @@ -650,22 +745,28 @@ function shouldIgnore( dirname: string, ): boolean { if (ignore && matchesPatterns(context, ignore, dirname)) { - debug( - "Ignored %o because it matched one of %O from %o", - context.filename, + const message = `No config is applied to "${ + context.filename ?? "(unknown)" + }" because it matches one of \`ignore: ${JSON.stringify( ignore, - dirname, - ); + )}\` from "${dirname}"`; + debug(message); + if (context.showConfig) { + console.log(message); + } return true; } if (only && !matchesPatterns(context, only, dirname)) { - debug( - "Ignored %o because it failed to match one of %O from %o", - context.filename, + const message = `No config is applied to "${ + context.filename ?? "(unknown)" + }" because it fails to match one of \`only: ${JSON.stringify( only, - dirname, - ); + )}\` from "${dirname}"`; + debug(message); + if (context.showConfig) { + console.log(message); + } return true; } diff --git a/packages/babel-core/src/config/files/configuration.js b/packages/babel-core/src/config/files/configuration.js index 887c0334fdf2..3107786cf3d8 100644 --- a/packages/babel-core/src/config/files/configuration.js +++ b/packages/babel-core/src/config/files/configuration.js @@ -299,6 +299,23 @@ const readIgnoreConfig = makeStaticFileCache((filepath, content) => { }; }); +export function* resolveShowConfigPath( + dirname: string, +): Handler { + const targetPath = process.env.BABEL_SHOW_CONFIG_FOR; + if (targetPath != null) { + const absolutePath = path.resolve(dirname, targetPath); + const stats = yield* fs.stat(absolutePath); + if (!stats.isFile()) { + throw new Error( + `${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`, + ); + } + return absolutePath; + } + return null; +} + function throwConfigError(): empty { throw new Error(`\ Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured diff --git a/packages/babel-core/src/config/files/index-browser.js b/packages/babel-core/src/config/files/index-browser.js index 8e3a8cf26ce2..2fb0b6eba1b8 100644 --- a/packages/babel-core/src/config/files/index-browser.js +++ b/packages/babel-core/src/config/files/index-browser.js @@ -58,6 +58,13 @@ export function* loadConfig( throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`); } +// eslint-disable-next-line require-yield +export function* resolveShowConfigPath( + dirname: string, // eslint-disable-line no-unused-vars +): Handler { + return null; +} + export const ROOT_CONFIG_FILENAMES = []; // eslint-disable-next-line no-unused-vars diff --git a/packages/babel-core/src/config/files/index.js b/packages/babel-core/src/config/files/index.js index 464ef66253f4..2321fb7605d9 100644 --- a/packages/babel-core/src/config/files/index.js +++ b/packages/babel-core/src/config/files/index.js @@ -14,6 +14,7 @@ export { findRelativeConfig, findRootConfig, loadConfig, + resolveShowConfigPath, ROOT_CONFIG_FILENAMES, } from "./configuration"; export type { diff --git a/packages/babel-core/src/config/partial.js b/packages/babel-core/src/config/partial.js index aa540781496d..c0308b6fd507 100644 --- a/packages/babel-core/src/config/partial.js +++ b/packages/babel-core/src/config/partial.js @@ -15,6 +15,7 @@ import { import { findConfigUpwards, + resolveShowConfigPath, ROOT_CONFIG_FILENAMES, type ConfigFile, type IgnoreFile, @@ -89,15 +90,20 @@ export default function* loadPrivatePartialConfig( rootMode, ); + const filename = + typeof args.filename === "string" + ? path.resolve(cwd, args.filename) + : undefined; + + const showConfigPath = yield* resolveShowConfigPath(absoluteCwd); + const context: ConfigContext = { - filename: - typeof args.filename === "string" - ? path.resolve(cwd, args.filename) - : undefined, + filename, cwd: absoluteCwd, root: absoluteRootDir, envName, caller, + showConfig: showConfigPath === filename, }; const configChain = yield* buildRootChain(args, context); diff --git a/packages/babel-core/src/config/printer.js b/packages/babel-core/src/config/printer.js new file mode 100644 index 000000000000..9f9d65787694 --- /dev/null +++ b/packages/babel-core/src/config/printer.js @@ -0,0 +1,133 @@ +// @flow + +import type { + OptionsAndDescriptors, + UnloadedDescriptor, +} from "./config-descriptors"; + +// todo: Use flow enums when @babel/transform-flow-types supports it +export const ChainFormatter = { + Programmatic: 0, + Config: 1, +}; + +type PrintableConfig = { + content: OptionsAndDescriptors, + type: $Values, + callerName: ?string, + filepath: ?string, + index: ?number, + envName: ?string, +}; + +const Formatter = { + title( + type: $Values, + callerName: ?string, + filepath: ?string, + ): string { + let title = ""; + if (type === ChainFormatter.Programmatic) { + title = "programmatic options"; + if (callerName) { + title += " from " + callerName; + } + } else { + // $FlowIgnore + title = "config " + filepath; + } + return title; + }, + loc(index: ?number, envName: ?string): string { + let loc = ""; + if (index != null) { + loc += `.overrides[${index}]`; + } + if (envName != null) { + loc += `.env["${envName}"]`; + } + return loc; + }, + + optionsAndDescriptors(opt: OptionsAndDescriptors) { + const content = { ...opt.options }; + // overrides and env will be printed as separated config items + delete content.overrides; + delete content.env; + // resolve to descriptors + const pluginDescriptors = [...opt.plugins()]; + if (pluginDescriptors.length) { + content.plugins = pluginDescriptors.map(d => descriptorToConfig(d)); + } + const presetDescriptors = [...opt.presets()]; + if (presetDescriptors.length) { + content.presets = [...presetDescriptors].map(d => descriptorToConfig(d)); + } + return JSON.stringify(content, undefined, 2); + }, +}; + +function descriptorToConfig(d: UnloadedDescriptor): string | {} | Array { + let name = d.file?.request; + if (name == null) { + if (typeof d.value === "object") { + name = d.value; + } else if (typeof d.value === "function") { + // If the unloaded descriptor is a function, i.e. `plugins: [ require("my-plugin") ]`, + // we print the first 50 characters of the function source code and hopefully we can see + // `name: 'my-plugin'` in the source + name = `[Function: ${d.value.toString().substr(0, 50)} ... ]`; + } + } + if (name == null) { + name = "[Unknown]"; + } + if (d.options === undefined) { + return name; + } else if (d.name == null) { + return [name, d.options]; + } else { + return [name, d.options, d.name]; + } +} + +export class ConfigPrinter { + _stack: Array = []; + configure( + enabled: boolean, + type: $Values, + { callerName, filepath }: { callerName?: string, filepath?: string }, + ) { + if (!enabled) return () => {}; + return ( + content: OptionsAndDescriptors, + index: ?number, + envName: ?string, + ) => { + this._stack.push({ + type, + callerName, + filepath, + content, + index, + envName, + }); + }; + } + static format(config: PrintableConfig): string { + let title = Formatter.title( + config.type, + config.callerName, + config.filepath, + ); + const loc = Formatter.loc(config.index, config.envName); + if (loc) title += ` ${loc}`; + const content = Formatter.optionsAndDescriptors(config.content); + return `${title}\n${content}`; + } + + output(): string { + if (this._stack.length === 0) return ""; + return this._stack.map(s => ConfigPrinter.format(s)).join("\n\n"); + } +} diff --git a/packages/babel-core/src/gensync-utils/fs.js b/packages/babel-core/src/gensync-utils/fs.js index 6b8f60c7b145..172fa6a9d024 100644 --- a/packages/babel-core/src/gensync-utils/fs.js +++ b/packages/babel-core/src/gensync-utils/fs.js @@ -19,3 +19,8 @@ export const exists = gensync<[string], boolean>({ }, errback: (path, cb) => fs.access(path, undefined, err => cb(null, !err)), }); + +export const stat = gensync<[string], *>({ + sync: fs.statSync, + errback: fs.stat, +}); From 4ce1b70adec6defff7020fb9d7f24122a5752ba9 Mon Sep 17 00:00:00 2001 From: SZ-Coder <65417876+sz-coder@users.noreply.github.com> Date: Thu, 30 Jul 2020 16:35:37 +0200 Subject: [PATCH 47/90] Fix incorrect module path when absoluteRuntime is specified (#11893) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * - Added failing tests for issue #11885. * - Fix issue #11885: absoluteRuntime does not work as expected with corejs3. * - Removed helper code from test output files (tests for issue #11885). * chore: add @babel/runtime-corejs3 to dev deps * chore: update test fixtures Co-authored-by: Huáng Jùnliàng --- .../package.json | 1 + .../src/index.js | 6 +-- .../true-corejs3-proposals/input.js | 8 ++++ .../true-corejs3-proposals/options.json | 7 ++++ .../true-corejs3-proposals/output.js | 41 +++++++++++++++++++ .../true-corejs3-stable/input.js | 8 ++++ .../true-corejs3-stable/options.json | 7 ++++ .../true-corejs3-stable/output.js | 41 +++++++++++++++++++ 8 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/output.js diff --git a/packages/babel-plugin-transform-runtime/package.json b/packages/babel-plugin-transform-runtime/package.json index dfa90b3b258a..774cbdabac6e 100644 --- a/packages/babel-plugin-transform-runtime/package.json +++ b/packages/babel-plugin-transform-runtime/package.json @@ -35,6 +35,7 @@ "@babel/plugin-transform-typeof-symbol": "^7.10.4", "@babel/preset-env": "^7.10.4", "@babel/runtime": "^7.10.5", + "@babel/runtime-corejs3": "^7.10.5", "@babel/template": "^7.10.4", "@babel/types": "^7.10.5" } diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 6559968ffa3c..12c1a20b889d 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -310,7 +310,7 @@ export default declare((api, options, dirname) => { node.callee = t.memberExpression( t.callExpression( this.addDefaultImport( - `${moduleName}/${corejsRoot}/instance/${InstanceProperties[propertyName].path}`, + `${modulePath}/${corejsRoot}/instance/${InstanceProperties[propertyName].path}`, `${propertyName}InstanceProperty`, ), [context2], @@ -379,7 +379,7 @@ export default declare((api, options, dirname) => { path.replaceWith( t.callExpression( this.addDefaultImport( - `${moduleName}/core-js/get-iterator-method`, + `${modulePath}/core-js/get-iterator-method`, "getIteratorMethod", ), [object], @@ -407,7 +407,7 @@ export default declare((api, options, dirname) => { path.replaceWith( t.callExpression( this.addDefaultImport( - `${moduleName}/${corejsRoot}/instance/${InstanceProperties[propertyName].path}`, + `${modulePath}/${corejsRoot}/instance/${InstanceProperties[propertyName].path}`, `${propertyName}InstanceProperty`, ), [object], diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/input.js new file mode 100644 index 000000000000..e75e32a6cb37 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/input.js @@ -0,0 +1,8 @@ +Array.map; +function* makeIterator() { + yield 1; + yield 2; +} +for (const itItem of makeIterator()) { + console.log(itItem); +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/options.json new file mode 100644 index 000000000000..9e14f2a7c2c2 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/options.json @@ -0,0 +1,7 @@ +{ + "presets": ["env"], + "plugins": [ + ["transform-runtime", { "absoluteRuntime": true, "corejs": { "version": 3, "proposals": true } }], + ["external-helpers", { "helperVersion": "7.100.0" }] + ] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/output.js new file mode 100644 index 000000000000..0e58adc155be --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-proposals/output.js @@ -0,0 +1,41 @@ +var _regeneratorRuntime = require("/packages/babel-plugin-transform-runtime/node_modules/@babel/runtime-corejs3/regenerator"); + +var _mapInstanceProperty = require("/packages/babel-plugin-transform-runtime/node_modules/@babel/runtime-corejs3/core-js/instance/map"); + +var _marked = /*#__PURE__*/_regeneratorRuntime.mark(makeIterator); + +_mapInstanceProperty(Array); + +function makeIterator() { + return _regeneratorRuntime.wrap(function makeIterator$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return 1; + + case 2: + _context.next = 4; + return 2; + + case 4: + case "end": + return _context.stop(); + } + } + }, _marked); +} + +var _iterator = babelHelpers.createForOfIteratorHelper(makeIterator()), + _step; + +try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var itItem = _step.value; + console.log(itItem); + } +} catch (err) { + _iterator.e(err); +} finally { + _iterator.f(); +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/input.js new file mode 100644 index 000000000000..e75e32a6cb37 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/input.js @@ -0,0 +1,8 @@ +Array.map; +function* makeIterator() { + yield 1; + yield 2; +} +for (const itItem of makeIterator()) { + console.log(itItem); +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/options.json new file mode 100644 index 000000000000..71281fc3d3c4 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/options.json @@ -0,0 +1,7 @@ +{ + "presets": ["env"], + "plugins": [ + ["transform-runtime", { "absoluteRuntime": true, "corejs": { "version": 3, "proposals": false } }], + ["external-helpers", { "helperVersion": "7.100.0" }] + ] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/output.js new file mode 100644 index 000000000000..c22ce7d5efe4 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/absoluteRuntime/true-corejs3-stable/output.js @@ -0,0 +1,41 @@ +var _regeneratorRuntime = require("/packages/babel-plugin-transform-runtime/node_modules/@babel/runtime-corejs3/regenerator"); + +var _mapInstanceProperty = require("/packages/babel-plugin-transform-runtime/node_modules/@babel/runtime-corejs3/core-js-stable/instance/map"); + +var _marked = /*#__PURE__*/_regeneratorRuntime.mark(makeIterator); + +_mapInstanceProperty(Array); + +function makeIterator() { + return _regeneratorRuntime.wrap(function makeIterator$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return 1; + + case 2: + _context.next = 4; + return 2; + + case 4: + case "end": + return _context.stop(); + } + } + }, _marked); +} + +var _iterator = babelHelpers.createForOfIteratorHelper(makeIterator()), + _step; + +try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var itItem = _step.value; + console.log(itItem); + } +} catch (err) { + _iterator.e(err); +} finally { + _iterator.f(); +} From 0e4cf1e6a2ffc04692bf9cd3c7a3d63fffaad8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 30 Jul 2020 12:54:56 -0400 Subject: [PATCH 48/90] chore: build standalone once in prepublish step (#11777) --- Makefile | 4 ++-- packages/babel-standalone/package.json | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 2a03bc59dce6..c44393339ab8 100644 --- a/Makefile +++ b/Makefile @@ -211,8 +211,8 @@ clone-license: ./scripts/clone-license.sh prepublish-build: clean-lib clean-runtime-helpers - NODE_ENV=production BABEL_ENV=production $(MAKE) build - $(MAKE) clone-license + NODE_ENV=production BABEL_ENV=production $(MAKE) build-bundle + $(MAKE) prepublish-build-standalone clone-license prepublish: $(MAKE) bootstrap-only diff --git a/packages/babel-standalone/package.json b/packages/babel-standalone/package.json index 948ef473b451..7ed1d77c8c03 100644 --- a/packages/babel-standalone/package.json +++ b/packages/babel-standalone/package.json @@ -7,9 +7,6 @@ "babel.js", "babel.min.js" ], - "scripts": { - "prepublishOnly": "cd ../.. && make prepublish-build-standalone" - }, "devDependencies": { "@babel/core": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", From 4c9929ca2830d7916e7485096269ccdf4e36a251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 30 Jul 2020 13:32:38 -0400 Subject: [PATCH 49/90] Prepare to publish `@babel/eslint-*` packages (#11894) * remove private flag, bump node and babel versions * disallow submodule imports * Revert "Do not automatically publish eslint packages (#10722)" This reverts commit 5ca8acdb38bc7a9a4669ad3249c219531f8f6579. # Conflicts: # Makefile # eslint/babel-eslint-parser/package.json # eslint/babel-eslint-plugin-development/package.json # lerna.json # scripts/integration-tests/publish-local.sh * disable submodule imports for babel-eslint-config-internal * chore: push back a bit to make tests happy --- Makefile | 12 ------------ eslint/babel-eslint-config-internal/package.json | 10 +++++++--- eslint/babel-eslint-parser/package.json | 14 +++++++++----- .../package.json | 5 +---- .../babel-eslint-plugin-development/package.json | 10 +++++++--- eslint/babel-eslint-plugin/package.json | 12 ++++++++---- lerna.json | 4 +--- scripts/integration-tests/publish-local.sh | 12 ------------ 8 files changed, 33 insertions(+), 46 deletions(-) diff --git a/Makefile b/Makefile index c44393339ab8..0e792557f673 100644 --- a/Makefile +++ b/Makefile @@ -249,11 +249,6 @@ endif $(YARN) lerna publish from-git --registry http://localhost:4873 --yes --tag-version-prefix="version-e2e-test-" $(MAKE) clean -publish-eslint: - $(call set-json-field, ./eslint/$(PKG)/package.json, private, false) - cd eslint/$(PKG); yarn publish - $(call set-json-field, ./eslint/$(PKG)/package.json, private, true) - bootstrap-only: lerna-bootstrap yarn-install: clean-all @@ -312,10 +307,3 @@ define clean-source-all rm -rf $(1)/*/package-lock.json endef - -define set-json-field - $(NODE) -e "\ - require('fs').writeFileSync('$1'.trim(), \ - JSON.stringify({ ...require('$1'.trim()), $2: $3 }, null, 2) + '\\n' \ - )" -endef diff --git a/eslint/babel-eslint-config-internal/package.json b/eslint/babel-eslint-config-internal/package.json index 3e720875ef3f..cdcf537af4b4 100644 --- a/eslint/babel-eslint-config-internal/package.json +++ b/eslint/babel-eslint-config-internal/package.json @@ -2,16 +2,20 @@ "name": "@babel/eslint-config-internal", "version": "7.10.4", "description": "The Babel Team's ESLint configuration. Since it's internal, it might not respect semver.", - "author": "Sebastian McKenzie ", + "author": "The Babel Team (https://babeljs.io/team)", "homepage": "https://babeljs.io/", "license": "MIT", - "private": true, "repository": { "type": "git", "url": "https://github.com/babel/babel.git", "directory": "eslint/babel-eslint-config-internal" }, - "main": "index.js", + "main": "./index.js", + "type": "commonjs", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, "peerDependencies": { "@babel/eslint-parser": "^7.10.4", "eslint-plugin-flowtype": "^3.0.0" diff --git a/eslint/babel-eslint-parser/package.json b/eslint/babel-eslint-parser/package.json index 2c7f73e7347e..2cd150eab58e 100644 --- a/eslint/babel-eslint-parser/package.json +++ b/eslint/babel-eslint-parser/package.json @@ -2,9 +2,8 @@ "name": "@babel/eslint-parser", "version": "7.10.4", "description": "ESLint parser that allows for linting of experimental syntax transformed by Babel", - "author": "Sebastian McKenzie ", + "author": "The Babel Team (https://babeljs.io/team)", "license": "MIT", - "private": true, "repository": { "type": "git", "url": "https://github.com/babel/babel.git", @@ -15,11 +14,16 @@ }, "homepage": "https://babeljs.io/", "engines": { - "node": ">=10.9" + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "main": "./lib/index.js", + "type": "commonjs", + "exports": { + ".": "./lib/index.js", + "./package.json": "./package.json" }, - "main": "lib/index.js", "peerDependencies": { - "@babel/core": ">=7.10.4", + "@babel/core": ">=7.10.0", "eslint": ">=7.5.0" }, "dependencies": { diff --git a/eslint/babel-eslint-plugin-development-internal/package.json b/eslint/babel-eslint-plugin-development-internal/package.json index 2ca61ad2299d..af0b7fccdad6 100644 --- a/eslint/babel-eslint-plugin-development-internal/package.json +++ b/eslint/babel-eslint-plugin-development-internal/package.json @@ -18,15 +18,12 @@ "author": "Kai Cataldo ", "license": "MIT", "private": true, - "engines": { - "node": ">=10.9" - }, "bugs": { "url": "https://github.com/babel/babel/issues" }, "homepage": "https://github.com/babel/babel/tree/master/eslint/babel-eslint-plugin-development-internal", "peerDependencies": { - "@babel/eslint-parser": ">=7.10.4", + "@babel/eslint-parser": ">=7.11.0", "eslint": ">=7.5.0" }, "devDependencies": { diff --git a/eslint/babel-eslint-plugin-development/package.json b/eslint/babel-eslint-plugin-development/package.json index c885be49ede8..a677eb3499a0 100644 --- a/eslint/babel-eslint-plugin-development/package.json +++ b/eslint/babel-eslint-plugin-development/package.json @@ -2,7 +2,6 @@ "name": "@babel/eslint-plugin-development", "version": "7.10.4", "description": "ESLint rules that enforce best practices in the development of Babel plugins.", - "private": true, "keywords": [ "eslint", "eslintplugin", @@ -13,9 +12,14 @@ "email": "nicolo.ribaudo@gmail.com", "url": "https://github.com/nicolo-ribaudo" }, - "main": "lib/index.js", + "main": "./lib/index.js", + "type": "commonjs", + "exports": { + ".": "./lib/index.js", + "./package.json": "./package.json" + }, "engines": { - "node": ">=10.9" + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "publishConfig": { "access": "public" diff --git a/eslint/babel-eslint-plugin/package.json b/eslint/babel-eslint-plugin/package.json index 406f844361ba..d48b3e387858 100644 --- a/eslint/babel-eslint-plugin/package.json +++ b/eslint/babel-eslint-plugin/package.json @@ -2,7 +2,12 @@ "name": "@babel/eslint-plugin", "version": "7.10.4", "description": "Companion rules for @babel/eslint-parser", - "main": "lib/index.js", + "main": "./lib/index.js", + "type": "commonjs", + "exports": { + ".": "./lib/index.js", + "./package.json": "./package.json" + }, "repository": { "type": "git", "url": "https://github.com/babel/babel.git", @@ -17,16 +22,15 @@ ], "author": "Jason Quense @monasticpanic", "license": "MIT", - "private": true, "engines": { - "node": ">=10.9" + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "bugs": { "url": "https://github.com/babel/babel/issues" }, "homepage": "https://babeljs.io/", "peerDependencies": { - "@babel/eslint-parser": ">=7.10.4", + "@babel/eslint-parser": ">=7.11.0", "eslint": ">=7.5.0" }, "dependencies": { diff --git a/lerna.json b/lerna.json index ecc214e2002a..c09415f6f7c2 100644 --- a/lerna.json +++ b/lerna.json @@ -24,9 +24,7 @@ "**/test/**", "codemods/**", "# We ignore every JSON file, except for native-modules, built-ins and plugins defined in babel-preset-env/data.", - "@(!(native-modules|built-ins|plugins|package)).json", - "# Until the ESLint packages version are aligned with Babel's, we ignore them", - "eslint/**" + "@(!(native-modules|built-ins|plugins|package)).json" ] } }, diff --git a/scripts/integration-tests/publish-local.sh b/scripts/integration-tests/publish-local.sh index 210bcc04b25b..7c1410735bd9 100755 --- a/scripts/integration-tests/publish-local.sh +++ b/scripts/integration-tests/publish-local.sh @@ -11,13 +11,6 @@ source utils/local-registry.sh source utils/git.sh source utils/cleanup.sh -function publishESLintPkg { - cd eslint/$1 - yarn version --new-version $2 --no-git-tag-version - cd ../.. - make -j publish-eslint PKG=$1 -} - # Echo every command being executed set -x @@ -43,9 +36,4 @@ VERSION=$( I_AM_USING_VERDACCIO=I_AM_SURE VERSION="$VERSION" make publish-test -publishESLintPkg babel-eslint-config-internal "$VERSION" -publishESLintPkg babel-eslint-parser "$VERSION" -publishESLintPkg babel-eslint-plugin "$VERSION" -publishESLintPkg babel-eslint-plugin-development "$VERSION" - cleanup From aa82ab6358a5026ff70a08b683e05166a5941e1d Mon Sep 17 00:00:00 2001 From: "James C. Davis" Date: Thu, 30 Jul 2020 14:06:45 -0400 Subject: [PATCH 50/90] Typescript: always strip declare from class fields (#11747) * test: add failing test for decorated declare * fix: always strip declare from class fields * test: add decorated-declare-properties test --- .../src/index.js | 1 + .../test/fixtures/class/declare/input.ts | 3 ++- .../test/fixtures/class/declare/options.json | 5 ++++- .../test/fixtures/class/declare/output.js | 5 ++++- .../decorated-declare-properties/input.ts | 3 +++ .../decorated-declare-properties/options.json | 7 +++++++ .../decorated-declare-properties/output.js | 21 +++++++++++++++++++ 7 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/input.ts create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/options.json create mode 100644 packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/output.js diff --git a/packages/babel-plugin-transform-typescript/src/index.js b/packages/babel-plugin-transform-typescript/src/index.js index 4aa2fcaa7aea..bc2dab189a45 100644 --- a/packages/babel-plugin-transform-typescript/src/index.js +++ b/packages/babel-plugin-transform-typescript/src/index.js @@ -93,6 +93,7 @@ export default declare( if (node.optional) node.optional = null; if (node.typeAnnotation) node.typeAnnotation = null; if (node.definite) node.definite = null; + if (node.declare) node.declare = null; }, method({ node }) { if (node.accessibility) node.accessibility = null; diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/input.ts index 7ab37b71fb39..396b74629b04 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/input.ts +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/input.ts @@ -1,3 +1,4 @@ class A { declare x; -} \ No newline at end of file + @foo declare y: string; +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/options.json b/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/options.json index a6d406a50e49..1cc5b964144a 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/options.json +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/options.json @@ -1,3 +1,6 @@ { - "plugins": [["transform-typescript", { "allowDeclareFields": true }]] + "plugins": [ + ["transform-typescript", { "allowDeclareFields": true }], + ["syntax-decorators", { "legacy": true }] + ] } diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/output.js b/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/output.js index a869c2849526..04c54f970bb2 100644 --- a/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/output.js +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/declare/output.js @@ -1 +1,4 @@ -class A {} +class A { + @foo + y; +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/input.ts b/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/input.ts new file mode 100644 index 000000000000..5f0bc188e6e8 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/input.ts @@ -0,0 +1,3 @@ +class Foo { + @decorator declare bar: string; +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/options.json b/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/options.json new file mode 100644 index 000000000000..8f17a067939d --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/options.json @@ -0,0 +1,7 @@ +{ + "plugins": [ + ["transform-typescript", { "allowDeclareFields": true }], + ["proposal-decorators", { "legacy": true }], + ["proposal-class-properties"] + ] +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/output.js b/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/output.js new file mode 100644 index 000000000000..f0e0fb4d9f64 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/class/decorated-declare-properties/output.js @@ -0,0 +1,21 @@ +var _class, _descriptor, _temp; + +function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } + +function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); } + +let Foo = (_class = (_temp = class Foo { + constructor() { + _initializerDefineProperty(this, "bar", _descriptor, this); + } + +}, _temp), (_descriptor = _applyDecoratedDescriptor(_class.prototype, "bar", [decorator], { + configurable: true, + enumerable: true, + writable: true, + initializer: null +})), _class); From 2ac49ba7c4133c485531409dd22c17a5e14e257b Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Thu, 30 Jul 2020 18:10:16 +0000 Subject: [PATCH 51/90] add support for logical assignments with private properties (#11702) * add support for logical assignments with private properties Patches the logic for handling assignment operators and adds support for handling the logical assignment operators appropriately. Fixes: https://github.com/babel/babel/issues/11646 * replace hardcoded logical assignment operators with constant Replace a hardcoded check for logical assignment operators with the LOGICAL_OPERATORS constant in plugin-proposal-logical-assignment-operators. Refs: https://github.com/babel/babel/pull/11702#discussion_r438554423 --- .../src/index.js | 43 ++++++++++++------- .../private-loose/logical-assignment/input.js | 17 ++++++++ .../logical-assignment/options.json | 6 +++ .../logical-assignment/output.js | 42 ++++++++++++++++++ .../private/logical-assignment/input.js | 17 ++++++++ .../private/logical-assignment/options.json | 6 +++ .../private/logical-assignment/output.js | 42 ++++++++++++++++++ .../src/index.js | 5 ++- 8 files changed, 161 insertions(+), 17 deletions(-) create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/options.json create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/output.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/input.js create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/options.json create mode 100644 packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/output.js diff --git a/packages/babel-helper-member-expression-to-functions/src/index.js b/packages/babel-helper-member-expression-to-functions/src/index.js index 4ea964fdb3bf..62d844b9f177 100644 --- a/packages/babel-helper-member-expression-to-functions/src/index.js +++ b/packages/babel-helper-member-expression-to-functions/src/index.js @@ -315,29 +315,42 @@ const handle = { // MEMBER = VALUE -> _set(MEMBER, VALUE) // MEMBER += VALUE -> _set(MEMBER, _get(MEMBER) + VALUE) + // MEMBER ??= VALUE -> _get(MEMBER) ?? _set(MEMBER, VALUE) if (parentPath.isAssignmentExpression({ left: node })) { if (this.simpleSet) { member.replaceWith(this.simpleSet(member)); return; } - const { operator, right } = parent; - let value = right; + const { operator, right: value } = parent; - if (operator !== "=") { - // Give the state handler a chance to memoise the member, since we'll - // reference it twice. The second access (the set) should do the memo - // assignment. - this.memoise(member, 2); - - value = t.binaryExpression( - operator.slice(0, -1), - this.get(member), - value, - ); + if (operator === "=") { + parentPath.replaceWith(this.set(member, value)); + } else { + const operatorTrunc = operator.slice(0, -1); + if (t.LOGICAL_OPERATORS.includes(operatorTrunc)) { + // Give the state handler a chance to memoise the member, since we'll + // reference it twice. The first access (the get) should do the memo + // assignment. + this.memoise(member, 1); + parentPath.replaceWith( + t.logicalExpression( + operatorTrunc, + this.get(member), + this.set(member, value), + ), + ); + } else { + // Here, the second access (the set) is evaluated first. + this.memoise(member, 2); + parentPath.replaceWith( + this.set( + member, + t.binaryExpression(operatorTrunc, this.get(member), value), + ), + ); + } } - - parentPath.replaceWith(this.set(member, value)); return; } diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/input.js new file mode 100644 index 000000000000..ea0daffff766 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/input.js @@ -0,0 +1,17 @@ +class Foo { + #nullish = 0; + #and = 0; + #or = 0; + + self() { + return this; + } + + test() { + this.#nullish ??= 42; + this.#and &&= 0; + this.#or ||= 0; + + this.self().#nullish ??= 42; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/options.json new file mode 100644 index 000000000000..25a0eb9883c4 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + ["proposal-logical-assignment-operators", { "loose": true }], + ["proposal-class-properties", { "loose": true }] + ] +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/output.js new file mode 100644 index 000000000000..e7d19cbdcdf6 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private-loose/logical-assignment/output.js @@ -0,0 +1,42 @@ +function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; } + +var id = 0; + +function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; } + +var _nullish = _classPrivateFieldLooseKey("nullish"); + +var _and = _classPrivateFieldLooseKey("and"); + +var _or = _classPrivateFieldLooseKey("or"); + +class Foo { + constructor() { + Object.defineProperty(this, _nullish, { + writable: true, + value: 0 + }); + Object.defineProperty(this, _and, { + writable: true, + value: 0 + }); + Object.defineProperty(this, _or, { + writable: true, + value: 0 + }); + } + + self() { + return this; + } + + test() { + var _classPrivateFieldLoo, _classPrivateFieldLoo2, _classPrivateFieldLoo3, _classPrivateFieldLoo4; + + (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _nullish))[_nullish] ?? (_classPrivateFieldLoo[_nullish] = 42); + (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _and))[_and] && (_classPrivateFieldLoo2[_and] = 0); + (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _or))[_or] || (_classPrivateFieldLoo3[_or] = 0); + (_classPrivateFieldLoo4 = _classPrivateFieldLooseBase(this.self(), _nullish))[_nullish] ?? (_classPrivateFieldLoo4[_nullish] = 42); + } + +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/input.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/input.js new file mode 100644 index 000000000000..ea0daffff766 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/input.js @@ -0,0 +1,17 @@ +class Foo { + #nullish = 0; + #and = 0; + #or = 0; + + self() { + return this; + } + + test() { + this.#nullish ??= 42; + this.#and &&= 0; + this.#or ||= 0; + + this.self().#nullish ??= 42; + } +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/options.json b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/options.json new file mode 100644 index 000000000000..26f2ddc95852 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "proposal-logical-assignment-operators", + "proposal-class-properties" + ] +} diff --git a/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/output.js b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/output.js new file mode 100644 index 000000000000..0ae51ebc8087 --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/fixtures/private/logical-assignment/output.js @@ -0,0 +1,42 @@ +function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = privateMap.get(receiver); if (!descriptor) { throw new TypeError("attempted to set private field on non-instance"); } if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } return value; } + +function _classPrivateFieldGet(receiver, privateMap) { var descriptor = privateMap.get(receiver); if (!descriptor) { throw new TypeError("attempted to get private field on non-instance"); } if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } + +var _nullish = new WeakMap(); + +var _and = new WeakMap(); + +var _or = new WeakMap(); + +class Foo { + constructor() { + _nullish.set(this, { + writable: true, + value: 0 + }); + + _and.set(this, { + writable: true, + value: 0 + }); + + _or.set(this, { + writable: true, + value: 0 + }); + } + + self() { + return this; + } + + test() { + var _this$self; + + _classPrivateFieldGet(this, _nullish) ?? _classPrivateFieldSet(this, _nullish, 42); + _classPrivateFieldGet(this, _and) && _classPrivateFieldSet(this, _and, 0); + _classPrivateFieldGet(this, _or) || _classPrivateFieldSet(this, _or, 0); + _classPrivateFieldGet(_this$self = this.self(), _nullish) ?? _classPrivateFieldSet(_this$self, _nullish, 42); + } + +} diff --git a/packages/babel-plugin-proposal-logical-assignment-operators/src/index.js b/packages/babel-plugin-proposal-logical-assignment-operators/src/index.js index 813dcd761f7c..65b0f3caeb2e 100644 --- a/packages/babel-plugin-proposal-logical-assignment-operators/src/index.js +++ b/packages/babel-plugin-proposal-logical-assignment-operators/src/index.js @@ -13,7 +13,8 @@ export default declare(api => { AssignmentExpression(path) { const { node, scope } = path; const { operator, left, right } = node; - if (operator !== "||=" && operator !== "&&=" && operator !== "??=") { + const operatorTrunc = operator.slice(0, -1); + if (!t.LOGICAL_OPERATORS.includes(operatorTrunc)) { return; } @@ -41,7 +42,7 @@ export default declare(api => { path.replaceWith( t.logicalExpression( - operator.slice(0, -1), + operatorTrunc, lhs, t.assignmentExpression("=", left, right), ), From 32e7bb40279e3bc91d94cb640d24f11f632cd698 Mon Sep 17 00:00:00 2001 From: Bogdan Savluk Date: Thu, 30 Jul 2020 20:11:58 +0200 Subject: [PATCH 52/90] fix build config to work the same when running on windows (#11688) --- babel.config.js | 18 +++++++++++++----- scripts/rollup-plugin-babel-source.js | 27 ++++++++++++++++++--------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/babel.config.js b/babel.config.js index 9236f7c53f90..e3319f0f2c23 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,5 +1,11 @@ "use strict"; +const path = require("path"); + +function normalize(src) { + return src.replace(/\//, path.sep); +} + module.exports = function (api) { const env = api.env(); @@ -91,7 +97,9 @@ module.exports = function (api) { "packages/*/test/fixtures", ignoreLib ? "packages/*/lib" : null, "packages/babel-standalone/babel.js", - ].filter(Boolean), + ] + .filter(Boolean) + .map(normalize), presets: [["@babel/env", envOpts]], plugins: [ // TODO: Use @babel/preset-flow when @@ -113,14 +121,14 @@ module.exports = function (api) { test: [ "packages/babel-parser", "packages/babel-helper-validator-identifier", - ], + ].map(normalize), plugins: [ "babel-plugin-transform-charcodes", ["@babel/transform-for-of", { assumeArray: true }], ], }, { - test: ["./packages/babel-cli", "./packages/babel-core"], + test: ["./packages/babel-cli", "./packages/babel-core"].map(normalize), plugins: [ // Explicitly use the lazy version of CommonJS modules. convertESM @@ -129,11 +137,11 @@ module.exports = function (api) { ].filter(Boolean), }, { - test: "./packages/babel-polyfill", + test: normalize("./packages/babel-polyfill"), presets: [["@babel/env", envOptsNoTargets]], }, { - test: unambiguousSources, + test: unambiguousSources.map(normalize), sourceType: "unambiguous", }, includeRegeneratorRuntime && { diff --git a/scripts/rollup-plugin-babel-source.js b/scripts/rollup-plugin-babel-source.js index 98e470705d2b..8527b10dff94 100644 --- a/scripts/rollup-plugin-babel-source.js +++ b/scripts/rollup-plugin-babel-source.js @@ -2,11 +2,16 @@ const path = require("path"); const fs = require("fs"); const dirname = path.join(__dirname, ".."); +const BABEL_SRC_REGEXP = + path.sep === "/" + ? /packages\/(babel-[^/]+)\/src\// + : /packages\\(babel-[^\\]+)\\src\\/; + module.exports = function () { return { name: "babel-source", load(id) { - const matches = id.match(/packages\/(babel-[^/]+)\/src\//); + const matches = id.match(BABEL_SRC_REGEXP); if (matches) { // check if browser field exists for this file and replace const packageFolder = path.join(dirname, "packages", matches[1]); @@ -16,18 +21,20 @@ module.exports = function () { packageJson["browser"] && typeof packageJson["browser"] === "object" ) { - for (let nodeFile in packageJson["browser"]) { + for (const nodeFile in packageJson["browser"]) { const browserFile = packageJson["browser"][nodeFile].replace( /^(\.\/)?lib\//, "src/" ); - nodeFile = nodeFile.replace(/^(\.\/)?lib\//, "src/"); - if (id.endsWith(nodeFile)) { + const nodeFileSrc = path.normalize( + nodeFile.replace(/^(\.\/)?lib\//, "src/") + ); + if (id.endsWith(nodeFileSrc)) { if (browserFile === false) { return ""; } return fs.readFileSync( - path.join(packageFolder, browserFile), + path.join(packageFolder, path.normalize(browserFile)), "UTF-8" ); } @@ -74,10 +81,12 @@ module.exports = function () { ? packageJson["browser"] : packageJson["main"]; - return path.join( - packageFolder, - // replace lib with src in the package.json entry - filename.replace(/^(\.\/)?lib\//, "src/") + return path.normalize( + path.join( + packageFolder, + // replace lib with src in the package.json entry + filename.replace(/^(\.\/)?lib\//, "src/") + ) ); }, }; From db56261414d4ec0265a604d2eacaf47c8ac459dd Mon Sep 17 00:00:00 2001 From: Oliver Dunk Date: Thu, 30 Jul 2020 19:17:37 +0100 Subject: [PATCH 53/90] Skip TSAsExpression when transforming spread in CallExpression (#11404) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Skip TSAsExpression when transforming spread in CallExpression * Create @babel/helper-get-call-context package * Support OptionalCallExpressions * Use helper in optional chaining plugin, and move tests * Update package.json files * Use dot notation to access property * Remove private method tests until future MR * Update packages/babel-plugin-transform-spread/package.json * Rename @babel/helper-get-call-context to @babel/helper-skip-transparent-expr-wrappers * Handle typed OptionalMemberExpressions * Make @babel/helper-skip-transparent-expr-wrappers a dependency * Support TSNonNullExpressions * Use named import instead of default * Add test for call context when parenthesized call expression has type * Improve handling of member expressions inside transparent expression wrappers * Add comment explaining what a transparent expression wrapper is * Add newlines to test fixtures * Pass correct parameter type to skipTransparentExprWrappers * Rename to babel-helper-skip-transparent-expression-wrappers * Remove getCallContext helper * Fixed exports key * Preserve types in babel-plugin-transform-spread tests * Use external-helpers to avoid inlining helper functions in tests Co-authored-by: Nicolò Ribaudo --- .../.npmignore | 3 + .../README.md | 17 ++++++ .../package.json | 25 ++++++++ .../src/index.js | 27 +++++++++ .../package.json | 3 +- .../src/index.js | 60 ++++++++++++------- .../output.js | 4 +- .../output.js | 4 +- .../transparent-expr-wrappers/options.json | 3 + .../ts-as-call-context/input.ts | 1 + .../ts-as-call-context/options.json | 10 ++++ .../ts-as-call-context/output.js | 3 + .../ts-as-function-call-loose/input.ts | 1 + .../ts-as-function-call-loose/options.json | 13 ++++ .../ts-as-function-call-loose/output.js | 3 + .../ts-as-member-expression/input.ts | 1 + .../ts-as-member-expression/options.json | 10 ++++ .../ts-as-member-expression/output.js | 3 + .../input.ts | 1 + .../options.json | 10 ++++ .../output.js | 3 + .../package.json | 3 +- .../src/index.js | 12 ++-- .../call-context/flow-type-cast/input.ts | 1 + .../call-context/flow-type-cast/options.json | 3 + .../call-context/flow-type-cast/output.js | 3 + .../test/fixtures/call-context/options.json | 3 + .../parenthesized-expressions/input.js | 1 + .../parenthesized-expressions/options.json | 5 ++ .../parenthesized-expressions/output.js | 3 + .../call-context/ts-type-cast/input.ts | 1 + .../call-context/ts-type-cast/options.json | 3 + .../call-context/ts-type-cast/output.js | 3 + .../test/fixtures/regression/11400/input.ts | 1 + .../fixtures/regression/11400/options.json | 7 +++ .../test/fixtures/regression/11400/output.js | 3 + 36 files changed, 224 insertions(+), 33 deletions(-) create mode 100644 packages/babel-helper-skip-transparent-expression-wrappers/.npmignore create mode 100644 packages/babel-helper-skip-transparent-expression-wrappers/README.md create mode 100644 packages/babel-helper-skip-transparent-expression-wrappers/package.json create mode 100644 packages/babel-helper-skip-transparent-expression-wrappers/src/index.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/output.js create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/input.ts create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/options.json create mode 100644 packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/output.js create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/input.ts create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/options.json create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/output.js create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/options.json create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/input.js create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/options.json create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/output.js create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/input.ts create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/options.json create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/output.js create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/regression/11400/input.ts create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/regression/11400/options.json create mode 100644 packages/babel-plugin-transform-spread/test/fixtures/regression/11400/output.js diff --git a/packages/babel-helper-skip-transparent-expression-wrappers/.npmignore b/packages/babel-helper-skip-transparent-expression-wrappers/.npmignore new file mode 100644 index 000000000000..f9806945836e --- /dev/null +++ b/packages/babel-helper-skip-transparent-expression-wrappers/.npmignore @@ -0,0 +1,3 @@ +src +test +*.log diff --git a/packages/babel-helper-skip-transparent-expression-wrappers/README.md b/packages/babel-helper-skip-transparent-expression-wrappers/README.md new file mode 100644 index 000000000000..ac89e026937c --- /dev/null +++ b/packages/babel-helper-skip-transparent-expression-wrappers/README.md @@ -0,0 +1,17 @@ +# @babel/helper-skip-transparent-expression-wrappers + +> Helper which skips types and parentheses + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/helper-skip-transparent-expression-wrappers +``` + +or using yarn: + +```sh +yarn add @babel/helper-skip-transparent-expression-wrappers --dev +``` diff --git a/packages/babel-helper-skip-transparent-expression-wrappers/package.json b/packages/babel-helper-skip-transparent-expression-wrappers/package.json new file mode 100644 index 000000000000..428d428020fb --- /dev/null +++ b/packages/babel-helper-skip-transparent-expression-wrappers/package.json @@ -0,0 +1,25 @@ +{ + "name": "@babel/helper-skip-transparent-expression-wrappers", + "version": "7.9.6", + "description": "Helper which skips types and parentheses", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-helper-skip-transparent-expression-wrappers" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "exports": { + ".": "./lib/index.js", + "./package.json": "./package.json" + }, + "dependencies": { + "@babel/types": "^7.9.6" + }, + "devDependencies": { + "@babel/traverse": "^7.9.6" + } +} \ No newline at end of file diff --git a/packages/babel-helper-skip-transparent-expression-wrappers/src/index.js b/packages/babel-helper-skip-transparent-expression-wrappers/src/index.js new file mode 100644 index 000000000000..c218ac6c8fde --- /dev/null +++ b/packages/babel-helper-skip-transparent-expression-wrappers/src/index.js @@ -0,0 +1,27 @@ +// @flow + +import * as t from "@babel/types"; +import type { NodePath } from "@babel/traverse"; + +// A transparent expression wrapper is an AST node that most plugins will wish +// to skip, as its presence does not affect the behaviour of the code. This +// includes expressions used for types, and extra parenthesis. For example, in +// (a as any)(), this helper can be used to skip the TSAsExpression when +// determining the callee. +export function isTransparentExprWrapper(node: Node) { + return ( + t.isTSAsExpression(node) || + t.isTSTypeAssertion(node) || + t.isTSNonNullExpression(node) || + t.isTypeCastExpression(node) || + t.isParenthesizedExpression(node) + ); +} + +export function skipTransparentExprWrappers(path: NodePath): NodePath { + while (isTransparentExprWrapper(path.node)) { + path = path.get("expression"); + } + + return path; +} diff --git a/packages/babel-plugin-proposal-optional-chaining/package.json b/packages/babel-plugin-proposal-optional-chaining/package.json index 48a60898096c..a35674c09544 100644 --- a/packages/babel-plugin-proposal-optional-chaining/package.json +++ b/packages/babel-plugin-proposal-optional-chaining/package.json @@ -17,7 +17,8 @@ ], "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.9.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" diff --git a/packages/babel-plugin-proposal-optional-chaining/src/index.js b/packages/babel-plugin-proposal-optional-chaining/src/index.js index 3c80d4238c7a..f3d32be4338a 100644 --- a/packages/babel-plugin-proposal-optional-chaining/src/index.js +++ b/packages/babel-plugin-proposal-optional-chaining/src/index.js @@ -1,4 +1,8 @@ import { declare } from "@babel/helper-plugin-utils"; +import { + isTransparentExprWrapper, + skipTransparentExprWrappers, +} from "@babel/helper-skip-transparent-expression-wrappers"; import syntaxOptionalChaining from "@babel/plugin-syntax-optional-chaining"; import { types as t } from "@babel/core"; @@ -8,6 +12,7 @@ export default declare((api, options) => { const { loose = false } = options; function isSimpleMemberExpression(expression) { + expression = skipTransparentExprWrappers(expression); return ( t.isIdentifier(expression) || t.isSuper(expression) || @@ -24,16 +29,16 @@ export default declare((api, options) => { visitor: { "OptionalCallExpression|OptionalMemberExpression"(path) { const { scope } = path; - // maybeParenthesized points to the outermost parenthesizedExpression + // maybeWrapped points to the outermost transparent expression wrapper // or the path itself - let maybeParenthesized = path; + let maybeWrapped = path; const parentPath = path.findParent(p => { - if (!p.isParenthesizedExpression()) return true; - maybeParenthesized = p; + if (!isTransparentExprWrapper(p)) return true; + maybeWrapped = p; }); let isDeleteOperation = false; const parentIsCall = - parentPath.isCallExpression({ callee: maybeParenthesized.node }) && + parentPath.isCallExpression({ callee: maybeWrapped.node }) && // note that the first condition must implies that `path.optional` is `true`, // otherwise the parentPath should be an OptionalCallExpressioin path.isOptionalMemberExpression(); @@ -43,9 +48,7 @@ export default declare((api, options) => { let optionalPath = path; while ( optionalPath.isOptionalMemberExpression() || - optionalPath.isOptionalCallExpression() || - optionalPath.isParenthesizedExpression() || - optionalPath.isTSNonNullExpression() + optionalPath.isOptionalCallExpression() ) { const { node } = optionalPath; if (node.optional) { @@ -54,13 +57,14 @@ export default declare((api, options) => { if (optionalPath.isOptionalMemberExpression()) { optionalPath.node.type = "MemberExpression"; - optionalPath = optionalPath.get("object"); + optionalPath = skipTransparentExprWrappers( + optionalPath.get("object"), + ); } else if (optionalPath.isOptionalCallExpression()) { optionalPath.node.type = "CallExpression"; - optionalPath = optionalPath.get("callee"); - } else { - // unwrap TSNonNullExpression/ParenthesizedExpression if needed - optionalPath = optionalPath.get("expression"); + optionalPath = skipTransparentExprWrappers( + optionalPath.get("callee"), + ); } } @@ -74,7 +78,13 @@ export default declare((api, options) => { const isCall = t.isCallExpression(node); const replaceKey = isCall ? "callee" : "object"; - const chain = node[replaceKey]; + + const chainWithTypes = node[replaceKey]; + let chain = chainWithTypes; + + while (isTransparentExprWrapper(chain)) { + chain = chain.expression; + } let ref; let check; @@ -86,20 +96,22 @@ export default declare((api, options) => { // If we are using a loose transform (avoiding a Function#call) and we are at the call, // we can avoid a needless memoize. We only do this if the callee is a simple member // expression, to avoid multiple calls to nested call expressions. - check = ref = chain; + check = ref = chainWithTypes; } else { ref = scope.maybeGenerateMemoised(chain); if (ref) { check = t.assignmentExpression( "=", t.cloneNode(ref), - // Here `chain` MUST NOT be cloned because it could be updated - // when generating the memoised context of a call espression - chain, + // Here `chainWithTypes` MUST NOT be cloned because it could be + // updated when generating the memoised context of a call + // expression + chainWithTypes, ); + node[replaceKey] = ref; } else { - check = ref = chain; + check = ref = chainWithTypes; } } @@ -109,7 +121,7 @@ export default declare((api, options) => { if (loose && isSimpleMemberExpression(chain)) { // To avoid a Function#call, we can instead re-grab the property from the context object. // `a.?b.?()` translates roughly to `_a.b != null && _a.b()` - node.callee = chain; + node.callee = chainWithTypes; } else { // Otherwise, we need to memoize the context object, and change the call into a Function#call. // `a.?b.?()` translates roughly to `(_b = _a.b) != null && _b.call(_a)` @@ -137,7 +149,9 @@ export default declare((api, options) => { // i.e. `?.b` in `(a?.b.c)()` if (i === 0 && parentIsCall) { // `(a?.b)()` to `(a == null ? undefined : a.b.bind(a))()` - const { object } = replacement; + const object = skipTransparentExprWrappers( + replacementPath.get("object"), + ).node; let baseRef; if (!loose || !isSimpleMemberExpression(object)) { // memoize the context object in non-loose mode @@ -180,7 +194,9 @@ export default declare((api, options) => { ), ); - replacementPath = replacementPath.get("alternate"); + replacementPath = skipTransparentExprWrappers( + replacementPath.get("alternate"), + ); } }, }, diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/output.js index 5bcddf99c677..06ce1ed5c674 100644 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/output.js +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-optional-chaining/output.js @@ -1,10 +1,10 @@ -var _a, _a2, _a3, _b, _a4, _ref, _a5, _c, _a6, _a7; +var _a, _a2, _a3, _b, _a4, _a4$b, _a5, _c, _a6, _a7; (_a = a) === null || _a === void 0 ? void 0 : _a.b!.c; (_a2 = a) === null || _a2 === void 0 ? void 0 : _a2.b!.c.d; (_a3 = a) === null || _a3 === void 0 ? void 0 : _a3.b.c!.d; (_b = a!.b) === null || _b === void 0 ? void 0 : _b.c; -(_a4 = a) === null || _a4 === void 0 ? void 0 : (_ref = _a4.b!) === null || _ref === void 0 ? void 0 : _ref.c; +(_a4 = a) === null || _a4 === void 0 ? void 0 : (_a4$b = _a4.b!) === null || _a4$b === void 0 ? void 0 : _a4$b.c; (_a5 = a) === null || _a5 === void 0 ? void 0 : (_c = _a5.b!.c) === null || _c === void 0 ? void 0 : _c.c; ((_a6 = a) === null || _a6 === void 0 ? void 0 : _a6.b)!.c; ((_a7 = a) === null || _a7 === void 0 ? void 0 : _a7.b)!.c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/output.js index 8af9f8dc0f23..56db11f31615 100644 --- a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/output.js +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/regression/10959-transform-ts-and-optional-chaining/output.js @@ -1,10 +1,10 @@ -var _a, _a2, _a3, _b, _a4, _ref, _a5, _c, _a6, _a7; +var _a, _a2, _a3, _b, _a4, _a4$b, _a5, _c, _a6, _a7; (_a = a) === null || _a === void 0 ? void 0 : _a.b.c; (_a2 = a) === null || _a2 === void 0 ? void 0 : _a2.b.c.d; (_a3 = a) === null || _a3 === void 0 ? void 0 : _a3.b.c.d; (_b = a.b) === null || _b === void 0 ? void 0 : _b.c; -(_a4 = a) === null || _a4 === void 0 ? void 0 : (_ref = _a4.b) === null || _ref === void 0 ? void 0 : _ref.c; +(_a4 = a) === null || _a4 === void 0 ? void 0 : (_a4$b = _a4.b) === null || _a4$b === void 0 ? void 0 : _a4$b.c; (_a5 = a) === null || _a5 === void 0 ? void 0 : (_c = _a5.b.c) === null || _c === void 0 ? void 0 : _c.c; ((_a6 = a) === null || _a6 === void 0 ? void 0 : _a6.b).c; ((_a7 = a) === null || _a7 === void 0 ? void 0 : _a7.b).c; diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/options.json new file mode 100644 index 000000000000..43d8f4d114cc --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["proposal-optional-chaining"] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/input.ts new file mode 100644 index 000000000000..45e75935cbab --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/input.ts @@ -0,0 +1 @@ +(a.b as any)?.() diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/options.json new file mode 100644 index 000000000000..3d509031920b --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/options.json @@ -0,0 +1,10 @@ +{ + "plugins": [ + [ + "syntax-typescript" + ], + [ + "proposal-optional-chaining" + ] + ] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/output.js new file mode 100644 index 000000000000..bbb88cd031aa --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-call-context/output.js @@ -0,0 +1,3 @@ +var _a$b, _a; + +(_a$b = ((_a = a).b as any)) === null || _a$b === void 0 ? void 0 : _a$b.call(_a); diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/input.ts new file mode 100644 index 000000000000..bbb299ce47a9 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/input.ts @@ -0,0 +1 @@ +(((foo as A).bar) as B)?.(foo.bar, false) diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/options.json new file mode 100644 index 000000000000..873ed97e39f7 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/options.json @@ -0,0 +1,13 @@ +{ + "plugins": [ + [ + "syntax-typescript" + ], + [ + "proposal-optional-chaining", + { + "loose": true + } + ] + ] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/output.js new file mode 100644 index 000000000000..93a8b5c45d88 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-function-call-loose/output.js @@ -0,0 +1,3 @@ +var _bar, _ref; + +(_bar = ((_ref = (foo as A)).bar as B)) == null ? void 0 : _bar.call(_ref, foo.bar, false); diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/input.ts new file mode 100644 index 000000000000..fe8740240481 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/input.ts @@ -0,0 +1 @@ +(a?.b as ExampleType)?.c as ExampleType2 diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/options.json new file mode 100644 index 000000000000..3d509031920b --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/options.json @@ -0,0 +1,10 @@ +{ + "plugins": [ + [ + "syntax-typescript" + ], + [ + "proposal-optional-chaining" + ] + ] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/output.js new file mode 100644 index 000000000000..8839b068263f --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-as-member-expression/output.js @@ -0,0 +1,3 @@ +var _a, _a$b; + +(((_a = a) === null || _a === void 0 ? void 0 : (_a$b = (_a.b as ExampleType)) === null || _a$b === void 0 ? void 0 : _a$b.c) as ExampleType2); diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/input.ts b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/input.ts new file mode 100644 index 000000000000..db9e53a2762a --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/input.ts @@ -0,0 +1 @@ +((o?.Foo.m) as ExampleType)() diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/options.json b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/options.json new file mode 100644 index 000000000000..00511863bbd0 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/options.json @@ -0,0 +1,10 @@ +{ + "plugins": [ + [ + "syntax-typescript" + ], + [ + "proposal-optional-chaining" + ] + ] +} diff --git a/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/output.js b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/output.js new file mode 100644 index 000000000000..ca86081c2b97 --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/fixtures/transparent-expr-wrappers/ts-parenthesized-expression-member-call/output.js @@ -0,0 +1,3 @@ +var _o, _o$Foo; + +(((_o = o) === null || _o === void 0 ? void 0 : (_o$Foo = _o.Foo).m.bind(_o$Foo)) as ExampleType)(); diff --git a/packages/babel-plugin-transform-spread/package.json b/packages/babel-plugin-transform-spread/package.json index ce7dbb08a6fc..1f7be0623450 100644 --- a/packages/babel-plugin-transform-spread/package.json +++ b/packages/babel-plugin-transform-spread/package.json @@ -16,7 +16,8 @@ "babel-plugin" ], "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "7.9.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" diff --git a/packages/babel-plugin-transform-spread/src/index.js b/packages/babel-plugin-transform-spread/src/index.js index f320d50884d3..dcd933a1fa7e 100644 --- a/packages/babel-plugin-transform-spread/src/index.js +++ b/packages/babel-plugin-transform-spread/src/index.js @@ -1,4 +1,5 @@ import { declare } from "@babel/helper-plugin-utils"; +import { skipTransparentExprWrappers } from "@babel/helper-skip-transparent-expression-wrappers"; import { types as t } from "@babel/core"; export default declare((api, options) => { @@ -94,7 +95,8 @@ export default declare((api, options) => { const args = node.arguments; if (!hasSpread(args)) return; - const calleePath = path.get("callee"); + const calleePath = skipTransparentExprWrappers(path.get("callee")); + if (calleePath.isSuper()) return; let contextLiteral = scope.buildUndefinedNode(); @@ -120,7 +122,7 @@ export default declare((api, options) => { node.arguments.push(first); } - const callee = node.callee; + const callee = calleePath.node; if (calleePath.isMemberExpression()) { const temp = scope.maybeGenerateMemoised(callee.object); @@ -130,11 +132,11 @@ export default declare((api, options) => { } else { contextLiteral = t.cloneNode(callee.object); } - t.appendToMemberExpression(callee, t.identifier("apply")); - } else { - node.callee = t.memberExpression(node.callee, t.identifier("apply")); } + // We use the original callee here, to preserve any types/parentheses + node.callee = t.memberExpression(node.callee, t.identifier("apply")); + if (t.isSuper(contextLiteral)) { contextLiteral = t.thisExpression(); } diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/input.ts b/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/input.ts new file mode 100644 index 000000000000..8874581acdfa --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/input.ts @@ -0,0 +1 @@ +(a.b: any)(...args) diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/options.json b/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/options.json new file mode 100644 index 000000000000..34154ac6a6a5 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["external-helpers", "transform-spread", "syntax-flow"] +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/output.js b/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/output.js new file mode 100644 index 000000000000..c912da78ec7d --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/flow-type-cast/output.js @@ -0,0 +1,3 @@ +var _a; + +((_a = a).b: any).apply(_a, babelHelpers.toConsumableArray(args)); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/options.json b/packages/babel-plugin-transform-spread/test/fixtures/call-context/options.json new file mode 100644 index 000000000000..e9f2daf0be9f --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["external-helpers", "transform-spread", "transform-parameters"] +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/input.js b/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/input.js new file mode 100644 index 000000000000..9467f61f0957 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/input.js @@ -0,0 +1 @@ +(a.b)(...args) diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/options.json b/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/options.json new file mode 100644 index 000000000000..2931a52b5b3f --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/options.json @@ -0,0 +1,5 @@ +{ + "parserOpts": { + "createParenthesizedExpressions": true + } +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/output.js b/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/output.js new file mode 100644 index 000000000000..f0a0a9b7819f --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/parenthesized-expressions/output.js @@ -0,0 +1,3 @@ +var _a; + +((_a = a).b).apply(_a, babelHelpers.toConsumableArray(args)); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/input.ts b/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/input.ts new file mode 100644 index 000000000000..354578c62526 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/input.ts @@ -0,0 +1 @@ +( a.b)(...args) diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/options.json b/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/options.json new file mode 100644 index 000000000000..32fc1d8b1569 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["external-helpers", "transform-spread", "syntax-typescript"] +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/output.js b/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/output.js new file mode 100644 index 000000000000..8644e7401390 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/call-context/ts-type-cast/output.js @@ -0,0 +1,3 @@ +var _a; + +( (_a = a).b).apply(_a, babelHelpers.toConsumableArray(args)); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/input.ts b/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/input.ts new file mode 100644 index 000000000000..2bf46926aef3 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/input.ts @@ -0,0 +1 @@ +(dog.bark as any)(...args) diff --git a/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/options.json b/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/options.json new file mode 100644 index 000000000000..52dd0fd384e3 --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + [ + "typescript" + ] + ] +} diff --git a/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/output.js b/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/output.js new file mode 100644 index 000000000000..d3814197145a --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/fixtures/regression/11400/output.js @@ -0,0 +1,3 @@ +var _dog; + +(_dog = dog).bark.apply(_dog, babelHelpers.toConsumableArray(args)); From f7ec170ba320bcabf3b6d6841cabd0672edd6782 Mon Sep 17 00:00:00 2001 From: Kai Cataldo Date: Thu, 30 Jul 2020 15:45:43 -0400 Subject: [PATCH 54/90] update: hardcode @babel/eslint-parser min supported version check (#11896) * update: change babel-eslint-parser version mismatch error to log * Bump @babel/core version * Change to 7.2.0 * Add period to error message --- eslint/babel-eslint-parser/package.json | 2 +- eslint/babel-eslint-parser/src/index.js | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/eslint/babel-eslint-parser/package.json b/eslint/babel-eslint-parser/package.json index 2cd150eab58e..a4f1ed1a0c96 100644 --- a/eslint/babel-eslint-parser/package.json +++ b/eslint/babel-eslint-parser/package.json @@ -23,7 +23,7 @@ "./package.json": "./package.json" }, "peerDependencies": { - "@babel/core": ">=7.10.0", + "@babel/core": ">=7.11.0", "eslint": ">=7.5.0" }, "dependencies": { diff --git a/eslint/babel-eslint-parser/src/index.js b/eslint/babel-eslint-parser/src/index.js index 2da046b0f05f..e4be37d822ff 100644 --- a/eslint/babel-eslint-parser/src/index.js +++ b/eslint/babel-eslint-parser/src/index.js @@ -12,19 +12,22 @@ import convert from "./convert"; import analyzeScope from "./analyze-scope"; import visitorKeys from "./visitor-keys"; -let isRunningSupportedVersion; +let isRunningMinSupportedCoreVersion = null; function baseParse(code, options) { - if (typeof isRunningSupportedVersion !== "boolean") { - isRunningSupportedVersion = semver.satisfies( + // Ensure we're using a version of `@babel/core` that includes `parse()` and `tokTypes`. + const minSupportedCoreVersion = ">=7.2.0"; + + if (typeof isRunningMinSupportedCoreVersion !== "boolean") { + isRunningMinSupportedCoreVersion = semver.satisfies( babelCoreVersion, - packageJson.peerDependencies["@babel/core"], + minSupportedCoreVersion, ); } - if (!isRunningSupportedVersion) { + if (!isRunningMinSupportedCoreVersion) { throw new Error( - `@babel/eslint-parser@${packageJson.version} does not support @babel/core@${babelCoreVersion}. Please upgrade to @babel/core@${packageJson.peerDependencies["@babel/core"]}`, + `@babel/eslint-parser@${packageJson.version} does not support @babel/core@${babelCoreVersion}. Please upgrade to @babel/core@${minSupportedCoreVersion}.`, ); } From 45fdb87747051f59c39e27e064558afdd76c4f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 30 Jul 2020 16:45:44 -0400 Subject: [PATCH 55/90] v7.11.0 --- .../babel-eslint-config-internal/package.json | 3 ++- eslint/babel-eslint-parser/package.json | 7 +++++-- .../package.json | 2 +- .../package.json | 2 +- eslint/babel-eslint-plugin/package.json | 5 ++++- .../babel-eslint-shared-fixtures/package.json | 6 +++--- eslint/babel-eslint-tests/package.json | 2 +- lerna.json | 2 +- packages/babel-compat-data/package.json | 6 +++--- packages/babel-core/package.json | 12 +++++------ packages/babel-generator/package.json | 6 +++--- .../package.json | 4 ++-- .../package.json | 6 +++--- .../package.json | 8 ++++---- .../package.json | 4 ++-- packages/babel-parser/package.json | 2 +- .../package.json | 4 ++-- .../package.json | 4 ++-- .../package.json | 8 ++++---- .../babel-plugin-syntax-decimal/package.json | 2 +- .../package.json | 12 +++++------ .../package.json | 6 +++--- .../package.json | 4 ++-- packages/babel-preset-env/package.json | 16 +++++++-------- packages/babel-runtime-corejs2/package.json | 2 +- packages/babel-runtime-corejs3/package.json | 2 +- packages/babel-runtime/package.json | 2 +- packages/babel-standalone/package.json | 20 +++++++++---------- packages/babel-traverse/package.json | 10 +++++----- packages/babel-types/package.json | 6 +++--- 30 files changed, 91 insertions(+), 84 deletions(-) diff --git a/eslint/babel-eslint-config-internal/package.json b/eslint/babel-eslint-config-internal/package.json index cdcf537af4b4..fb4ebc4fbfb1 100644 --- a/eslint/babel-eslint-config-internal/package.json +++ b/eslint/babel-eslint-config-internal/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-config-internal", - "version": "7.10.4", + "version": "7.11.0", "description": "The Babel Team's ESLint configuration. Since it's internal, it might not respect semver.", "author": "The Babel Team (https://babeljs.io/team)", "homepage": "https://babeljs.io/", @@ -10,6 +10,7 @@ "url": "https://github.com/babel/babel.git", "directory": "eslint/babel-eslint-config-internal" }, + "private": true, "main": "./index.js", "type": "commonjs", "exports": { diff --git a/eslint/babel-eslint-parser/package.json b/eslint/babel-eslint-parser/package.json index a4f1ed1a0c96..f1999728f3dc 100644 --- a/eslint/babel-eslint-parser/package.json +++ b/eslint/babel-eslint-parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-parser", - "version": "7.10.4", + "version": "7.11.0", "description": "ESLint parser that allows for linting of experimental syntax transformed by Babel", "author": "The Babel Team (https://babeljs.io/team)", "license": "MIT", @@ -9,6 +9,9 @@ "url": "https://github.com/babel/babel.git", "directory": "eslint/babel-eslint-parser" }, + "publishConfig": { + "access": "public" + }, "bugs": { "url": "https://github.com/babel/babel/issues" }, @@ -32,7 +35,7 @@ "semver": "^6.3.0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.11.0", "dedent": "^0.7.0", "eslint": "^7.5.0", "lodash.clonedeep": "^4.5.0" diff --git a/eslint/babel-eslint-plugin-development-internal/package.json b/eslint/babel-eslint-plugin-development-internal/package.json index af0b7fccdad6..1a4c9cea6c9e 100644 --- a/eslint/babel-eslint-plugin-development-internal/package.json +++ b/eslint/babel-eslint-plugin-development-internal/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-plugin-development-internal", - "version": "7.10.4", + "version": "7.11.0", "description": "The Babel Team's ESLint custom rules plugin. Since it's internal, it might not respect semver.", "main": "lib/index.js", "repository": { diff --git a/eslint/babel-eslint-plugin-development/package.json b/eslint/babel-eslint-plugin-development/package.json index a677eb3499a0..7e64558a88e8 100644 --- a/eslint/babel-eslint-plugin-development/package.json +++ b/eslint/babel-eslint-plugin-development/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-plugin-development", - "version": "7.10.4", + "version": "7.11.0", "description": "ESLint rules that enforce best practices in the development of Babel plugins.", "keywords": [ "eslint", diff --git a/eslint/babel-eslint-plugin/package.json b/eslint/babel-eslint-plugin/package.json index d48b3e387858..ef00e6b84449 100644 --- a/eslint/babel-eslint-plugin/package.json +++ b/eslint/babel-eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-plugin", - "version": "7.10.4", + "version": "7.11.0", "description": "Companion rules for @babel/eslint-parser", "main": "./lib/index.js", "type": "commonjs", @@ -8,6 +8,9 @@ ".": "./lib/index.js", "./package.json": "./package.json" }, + "publishConfig": { + "access": "public" + }, "repository": { "type": "git", "url": "https://github.com/babel/babel.git", diff --git a/eslint/babel-eslint-shared-fixtures/package.json b/eslint/babel-eslint-shared-fixtures/package.json index c912cccbe582..164b7a9ae601 100644 --- a/eslint/babel-eslint-shared-fixtures/package.json +++ b/eslint/babel-eslint-shared-fixtures/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-shared-fixtures", - "version": "7.10.4", + "version": "7.11.0", "description": "Shared fixtures for testing @babel/eslint-* packages", "license": "MIT", "private": true, @@ -9,7 +9,7 @@ "@babel/plugin-proposal-decorators": "^7.10.4", "@babel/plugin-proposal-do-expressions": "^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", "@babel/plugin-proposal-pipeline-operator": "^7.10.4", "@babel/plugin-proposal-private-methods": "^7.10.4", "@babel/plugin-syntax-bigint": "^7.7.4", @@ -18,7 +18,7 @@ "@babel/plugin-syntax-export-namespace-from": "^7.0.0", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/preset-env": "^7.10.4", + "@babel/preset-env": "^7.11.0", "@babel/preset-flow": "^7.10.4", "@babel/preset-react": "^7.10.4" } diff --git a/eslint/babel-eslint-tests/package.json b/eslint/babel-eslint-tests/package.json index 4b0be8416f46..73c48105aee9 100644 --- a/eslint/babel-eslint-tests/package.json +++ b/eslint/babel-eslint-tests/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-tests", - "version": "7.10.4", + "version": "7.11.0", "description": "Tests for babel/eslint-* packages", "license": "MIT", "private": true, diff --git a/lerna.json b/lerna.json index c09415f6f7c2..d5793088412d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "7.10.5", + "version": "7.11.0", "changelog": { "repo": "babel/babel", "cacheDir": ".changelog", diff --git a/packages/babel-compat-data/package.json b/packages/babel-compat-data/package.json index 9a94264e3778..ee0b33198500 100644 --- a/packages/babel-compat-data/package.json +++ b/packages/babel-compat-data/package.json @@ -1,6 +1,6 @@ { "name": "@babel/compat-data", - "version": "7.10.5", + "version": "7.11.0", "author": "The Babel Team (https://babeljs.io/team)", "license": "MIT", "description": "", @@ -35,8 +35,8 @@ }, "devDependencies": { "@babel/helper-compilation-targets": "^7.10.4", - "mdn-browser-compat-data": "1.0.31", "electron-to-chromium": "1.3.513", - "lodash": "^4.17.19" + "lodash": "^4.17.19", + "mdn-browser-compat-data": "1.0.31" } } diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index 10cb8cf66073..59c14a7f4286 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -1,6 +1,6 @@ { "name": "@babel/core", - "version": "7.10.5", + "version": "7.11.0", "description": "Babel compiler core.", "main": "lib/index.js", "author": "Sebastian McKenzie ", @@ -44,13 +44,13 @@ }, "dependencies": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.5", - "@babel/helper-module-transforms": "^7.10.5", + "@babel/generator": "^7.11.0", + "@babel/helper-module-transforms": "^7.11.0", "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.10.5", + "@babel/parser": "^7.11.0", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.5", - "@babel/types": "^7.10.5", + "@babel/traverse": "^7.11.0", + "@babel/types": "^7.11.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json index 0c07467a6940..5dc9be97c6d2 100644 --- a/packages/babel-generator/package.json +++ b/packages/babel-generator/package.json @@ -1,6 +1,6 @@ { "name": "@babel/generator", - "version": "7.10.5", + "version": "7.11.0", "description": "Turns an AST into code.", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -18,12 +18,12 @@ "lib" ], "dependencies": { - "@babel/types": "^7.10.5", + "@babel/types": "^7.11.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, "devDependencies": { "@babel/helper-fixtures": "^7.10.5", - "@babel/parser": "^7.10.5" + "@babel/parser": "^7.11.0" } } diff --git a/packages/babel-helper-member-expression-to-functions/package.json b/packages/babel-helper-member-expression-to-functions/package.json index f2d56a473f63..622985d9c05a 100644 --- a/packages/babel-helper-member-expression-to-functions/package.json +++ b/packages/babel-helper-member-expression-to-functions/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-member-expression-to-functions", - "version": "7.10.5", + "version": "7.11.0", "description": "Helper function to replace certain member expressions with function calls", "repository": { "type": "git", @@ -14,6 +14,6 @@ "main": "lib/index.js", "author": "Justin Ridgewell ", "dependencies": { - "@babel/types": "^7.10.5" + "@babel/types": "^7.11.0" } } diff --git a/packages/babel-helper-module-transforms/package.json b/packages/babel-helper-module-transforms/package.json index 000bc8c06181..7fe68481bae1 100644 --- a/packages/babel-helper-module-transforms/package.json +++ b/packages/babel-helper-module-transforms/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-module-transforms", - "version": "7.10.5", + "version": "7.11.0", "description": "Babel helper functions for implementing ES6 module transformations", "author": "Logan Smyth ", "homepage": "https://babeljs.io/", @@ -18,9 +18,9 @@ "@babel/helper-module-imports": "^7.10.4", "@babel/helper-replace-supers": "^7.10.4", "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", "@babel/template": "^7.10.4", - "@babel/types": "^7.10.5", + "@babel/types": "^7.11.0", "lodash": "^4.17.19" } } diff --git a/packages/babel-helper-skip-transparent-expression-wrappers/package.json b/packages/babel-helper-skip-transparent-expression-wrappers/package.json index 428d428020fb..86616a8f9930 100644 --- a/packages/babel-helper-skip-transparent-expression-wrappers/package.json +++ b/packages/babel-helper-skip-transparent-expression-wrappers/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-skip-transparent-expression-wrappers", - "version": "7.9.6", + "version": "7.11.0", "description": "Helper which skips types and parentheses", "repository": { "type": "git", @@ -17,9 +17,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@babel/types": "^7.9.6" + "@babel/types": "^7.11.0" }, "devDependencies": { - "@babel/traverse": "^7.9.6" + "@babel/traverse": "^7.11.0" } -} \ No newline at end of file +} diff --git a/packages/babel-helper-split-export-declaration/package.json b/packages/babel-helper-split-export-declaration/package.json index 154508343934..3cd12554e9aa 100644 --- a/packages/babel-helper-split-export-declaration/package.json +++ b/packages/babel-helper-split-export-declaration/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-split-export-declaration", - "version": "7.10.4", + "version": "7.11.0", "description": "", "repository": { "type": "git", @@ -13,6 +13,6 @@ }, "main": "lib/index.js", "dependencies": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.11.0" } } diff --git a/packages/babel-parser/package.json b/packages/babel-parser/package.json index 26be1598e549..c16ee5e4d362 100644 --- a/packages/babel-parser/package.json +++ b/packages/babel-parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/parser", - "version": "7.10.5", + "version": "7.11.0", "description": "A JavaScript parser", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", diff --git a/packages/babel-plugin-proposal-logical-assignment-operators/package.json b/packages/babel-plugin-proposal-logical-assignment-operators/package.json index 4b9588866272..03dfc68546eb 100644 --- a/packages/babel-plugin-proposal-logical-assignment-operators/package.json +++ b/packages/babel-plugin-proposal-logical-assignment-operators/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-proposal-logical-assignment-operators", - "version": "7.10.4", + "version": "7.11.0", "description": "Transforms logical assignment operators into short-circuited assignments", "repository": { "type": "git", @@ -23,7 +23,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.11.0", "@babel/helper-plugin-test-runner": "^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" diff --git a/packages/babel-plugin-proposal-object-rest-spread/package.json b/packages/babel-plugin-proposal-object-rest-spread/package.json index 2e693d286a47..3c83403e6fbe 100644 --- a/packages/babel-plugin-proposal-object-rest-spread/package.json +++ b/packages/babel-plugin-proposal-object-rest-spread/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-proposal-object-rest-spread", - "version": "7.10.4", + "version": "7.11.0", "description": "Compile object rest and spread to ES5", "repository": { "type": "git", @@ -24,7 +24,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.11.0", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-proposal-optional-chaining/package.json b/packages/babel-plugin-proposal-optional-chaining/package.json index a35674c09544..2453cebd357d 100644 --- a/packages/babel-plugin-proposal-optional-chaining/package.json +++ b/packages/babel-plugin-proposal-optional-chaining/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-proposal-optional-chaining", - "version": "7.10.4", + "version": "7.11.0", "description": "Transform optional chaining operators into a series of nil checks", "repository": { "type": "git", @@ -17,14 +17,14 @@ ], "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.9.6" + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.11.0", "@babel/helper-plugin-test-runner": "^7.10.4", "@babel/plugin-transform-block-scoping": "^7.10.4" } diff --git a/packages/babel-plugin-syntax-decimal/package.json b/packages/babel-plugin-syntax-decimal/package.json index 47902609778f..df96ac6f8cc4 100644 --- a/packages/babel-plugin-syntax-decimal/package.json +++ b/packages/babel-plugin-syntax-decimal/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-syntax-decimal", - "version": "7.10.1", + "version": "7.11.0", "description": "Allow parsing of decimal", "repository": { "type": "git", diff --git a/packages/babel-plugin-transform-runtime/package.json b/packages/babel-plugin-transform-runtime/package.json index 774cbdabac6e..0418925c3b79 100644 --- a/packages/babel-plugin-transform-runtime/package.json +++ b/packages/babel-plugin-transform-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-runtime", - "version": "7.10.5", + "version": "7.11.0", "description": "Externalise references to helpers and builtins, automatically polyfilling your code without polluting globals", "repository": { "type": "git", @@ -29,14 +29,14 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.5", + "@babel/core": "^7.11.0", "@babel/helper-plugin-test-runner": "^7.10.4", "@babel/helpers": "^7.10.4", "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/preset-env": "^7.10.4", - "@babel/runtime": "^7.10.5", - "@babel/runtime-corejs3": "^7.10.5", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@babel/runtime-corejs3": "^7.11.0", "@babel/template": "^7.10.4", - "@babel/types": "^7.10.5" + "@babel/types": "^7.11.0" } } diff --git a/packages/babel-plugin-transform-spread/package.json b/packages/babel-plugin-transform-spread/package.json index 1f7be0623450..42c13ca69fa2 100644 --- a/packages/babel-plugin-transform-spread/package.json +++ b/packages/babel-plugin-transform-spread/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-spread", - "version": "7.10.4", + "version": "7.11.0", "description": "Compile ES2015 spread to ES5", "repository": { "type": "git", @@ -17,13 +17,13 @@ ], "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "7.9.6" + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.4", + "@babel/core": "^7.11.0", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-plugin-transform-typescript/package.json b/packages/babel-plugin-transform-typescript/package.json index 8714f5c43310..99089867296f 100644 --- a/packages/babel-plugin-transform-typescript/package.json +++ b/packages/babel-plugin-transform-typescript/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-typescript", - "version": "7.10.5", + "version": "7.11.0", "description": "Transform TypeScript into ES.next", "repository": { "type": "git", @@ -25,7 +25,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.5", + "@babel/core": "^7.11.0", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-preset-env/package.json b/packages/babel-preset-env/package.json index 2b94f636c8f1..f2b0459a42f7 100644 --- a/packages/babel-preset-env/package.json +++ b/packages/babel-preset-env/package.json @@ -1,6 +1,6 @@ { "name": "@babel/preset-env", - "version": "7.10.4", + "version": "7.11.0", "description": "A Babel preset for each environment.", "author": "Henry Zhu ", "homepage": "https://babeljs.io/", @@ -15,7 +15,7 @@ }, "main": "lib/index.js", "dependencies": { - "@babel/compat-data": "^7.10.4", + "@babel/compat-data": "^7.11.0", "@babel/helper-compilation-targets": "^7.10.4", "@babel/helper-module-imports": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4", @@ -24,12 +24,12 @@ "@babel/plugin-proposal-dynamic-import": "^7.10.4", "@babel/plugin-proposal-export-namespace-from": "^7.10.4", "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", "@babel/plugin-proposal-private-methods": "^7.10.4", "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0", @@ -70,14 +70,14 @@ "@babel/plugin-transform-regenerator": "^7.10.4", "@babel/plugin-transform-reserved-words": "^7.10.4", "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", "@babel/plugin-transform-sticky-regex": "^7.10.4", "@babel/plugin-transform-template-literals": "^7.10.4", "@babel/plugin-transform-typeof-symbol": "^7.10.4", "@babel/plugin-transform-unicode-escapes": "^7.10.4", "@babel/plugin-transform-unicode-regex": "^7.10.4", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.4", + "@babel/types": "^7.11.0", "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", @@ -89,7 +89,7 @@ }, "devDependencies": { "@babel/cli": "^7.10.4", - "@babel/core": "^7.10.4", + "@babel/core": "^7.11.0", "@babel/helper-fixtures": "^7.10.4", "@babel/helper-plugin-test-runner": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.2.0" diff --git a/packages/babel-runtime-corejs2/package.json b/packages/babel-runtime-corejs2/package.json index 0eef4393793d..ab9887a3ab1c 100644 --- a/packages/babel-runtime-corejs2/package.json +++ b/packages/babel-runtime-corejs2/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime-corejs2", - "version": "7.10.5", + "version": "7.11.0", "description": "babel's modular runtime helpers with core-js@2 polyfilling", "license": "MIT", "publishConfig": { diff --git a/packages/babel-runtime-corejs3/package.json b/packages/babel-runtime-corejs3/package.json index 2f41fdbd0593..cbb79f54eb66 100644 --- a/packages/babel-runtime-corejs3/package.json +++ b/packages/babel-runtime-corejs3/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime-corejs3", - "version": "7.10.5", + "version": "7.11.0", "description": "babel's modular runtime helpers with core-js@3 polyfilling", "license": "MIT", "publishConfig": { diff --git a/packages/babel-runtime/package.json b/packages/babel-runtime/package.json index ff4ca65b825d..a278e0d400a5 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime", - "version": "7.10.5", + "version": "7.11.0", "description": "babel's modular runtime helpers", "license": "MIT", "publishConfig": { diff --git a/packages/babel-standalone/package.json b/packages/babel-standalone/package.json index 7ed1d77c8c03..277d58bab4d9 100644 --- a/packages/babel-standalone/package.json +++ b/packages/babel-standalone/package.json @@ -1,6 +1,6 @@ { "name": "@babel/standalone", - "version": "7.10.5", + "version": "7.11.0", "description": "Standalone build of Babel for use in non-Node.js environments.", "main": "babel.js", "files": [ @@ -8,7 +8,7 @@ "babel.min.js" ], "devDependencies": { - "@babel/core": "^7.10.5", + "@babel/core": "^7.11.0", "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-external-helpers": "^7.10.4", "@babel/plugin-proposal-async-generator-functions": "^7.10.5", @@ -21,12 +21,12 @@ "@babel/plugin-proposal-function-bind": "^7.10.5", "@babel/plugin-proposal-function-sent": "^7.10.4", "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", "@babel/plugin-proposal-pipeline-operator": "^7.10.5", "@babel/plugin-proposal-private-methods": "^7.10.4", "@babel/plugin-proposal-private-property-in-object": "^7.10.4", @@ -34,7 +34,7 @@ "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0", "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-decimal": "^7.10.1", + "@babel/plugin-syntax-decimal": "^7.11.0", "@babel/plugin-syntax-decorators": "^7.10.4", "@babel/plugin-syntax-do-expressions": "^7.10.4", "@babel/plugin-syntax-export-default-from": "^7.10.4", @@ -91,17 +91,17 @@ "@babel/plugin-transform-react-jsx-source": "^7.10.5", "@babel/plugin-transform-regenerator": "^7.10.4", "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-runtime": "^7.10.5", + "@babel/plugin-transform-runtime": "^7.11.0", "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", "@babel/plugin-transform-sticky-regex": "^7.10.4", "@babel/plugin-transform-strict-mode": "^7.10.4", "@babel/plugin-transform-template-literals": "^7.10.5", "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.10.5", + "@babel/plugin-transform-typescript": "^7.11.0", "@babel/plugin-transform-unicode-escapes": "^7.10.4", "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-env": "^7.10.4", + "@babel/preset-env": "^7.11.0", "@babel/preset-flow": "^7.10.4", "@babel/preset-react": "^7.10.4", "@babel/preset-typescript": "^7.10.4" diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json index 7095e2530b25..050a63471ec6 100644 --- a/packages/babel-traverse/package.json +++ b/packages/babel-traverse/package.json @@ -1,6 +1,6 @@ { "name": "@babel/traverse", - "version": "7.10.5", + "version": "7.11.0", "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -16,11 +16,11 @@ "main": "lib/index.js", "dependencies": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.10.5", + "@babel/generator": "^7.11.0", "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "@babel/parser": "^7.10.5", - "@babel/types": "^7.10.5", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" diff --git a/packages/babel-types/package.json b/packages/babel-types/package.json index 7876a4c69637..184a3ca215c7 100644 --- a/packages/babel-types/package.json +++ b/packages/babel-types/package.json @@ -1,6 +1,6 @@ { "name": "@babel/types", - "version": "7.10.5", + "version": "7.11.0", "description": "Babel Types is a Lodash-esque utility library for AST nodes", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -21,7 +21,7 @@ "to-fast-properties": "^2.0.0" }, "devDependencies": { - "@babel/generator": "^7.10.5", - "@babel/parser": "^7.10.5" + "@babel/generator": "^7.11.0", + "@babel/parser": "^7.11.0" } } From 231328aafcb49bccada97bd6407fa66dd4235af3 Mon Sep 17 00:00:00 2001 From: Babel Bot Date: Thu, 30 Jul 2020 21:31:37 +0000 Subject: [PATCH 56/90] Add v7.11.0 to CHANGELOG.md [skip ci] --- CHANGELOG.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4957b2ba5bf0..dab279a33d87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,74 @@ See [`eslint-plugin-babel`'s releases](https://github.com/babel/eslint-plugin-ba +## v7.11.0 (2020-07-30) + +#### :eyeglasses: Spec Compliance +* `babel-parser` + * [#11852](https://github.com/babel/babel/pull/11852) fix: disallow \8, \9 in strict mode string ([@JLHwung](https://github.com/JLHwung)) + * [#11854](https://github.com/babel/babel/pull/11854) fix: allow 09.1_1 and 09e1_1 in sloppy mode ([@JLHwung](https://github.com/JLHwung)) +* `babel-plugin-proposal-optional-chaining` + * [#11850](https://github.com/babel/babel/pull/11850) fix: eval?.() is indirect ([@JLHwung](https://github.com/JLHwung)) + +#### :rocket: New Feature +* `babel-cli`, `babel-core` + * [#11588](https://github.com/babel/babel/pull/11588) add showConfig support ([@JLHwung](https://github.com/JLHwung)) +* `babel-compat-data`, `babel-preset-env` + * [#11876](https://github.com/babel/babel/pull/11876) enable logical assignment in babel preset env ([@morrme](https://github.com/morrme)) + * [#11865](https://github.com/babel/babel/pull/11865) Add `numeric-separator` to `preset-env` ([@JLHwung](https://github.com/JLHwung)) + * [#11849](https://github.com/babel/babel/pull/11849) Add `export-namespace-from` to `preset-env` ([@JLHwung](https://github.com/JLHwung)) +* `babel-parser` + * [#11863](https://github.com/babel/babel/pull/11863) feat: enable numericSeparator parsing support ([@JLHwung](https://github.com/JLHwung)) + * [#11755](https://github.com/babel/babel/pull/11755) Allow unknown/any in TS catch clause param ([@existentialism](https://github.com/existentialism)) + * [#11753](https://github.com/babel/babel/pull/11753) TypeScript 4.0: Allow spread in the middle of tuples ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo)) + * [#11815](https://github.com/babel/babel/pull/11815) eslint-parser: ES2020 features ([@JLHwung](https://github.com/JLHwung)) +* `babel-generator`, `babel-parser`, `babel-types` + * [#11754](https://github.com/babel/babel/pull/11754) TypeScript 4.0: Support labeled tuple elements ([@nicolo-ribaudo](https://github.com/nicolo-ribaudo)) +* `babel-core`, `babel-generator`, `babel-parser`, `babel-plugin-syntax-decimal`, `babel-standalone`, `babel-types` + * [#11640](https://github.com/babel/babel/pull/11640) Add decimal parsing support ([@JLHwung](https://github.com/JLHwung)) +* `babel-core` + * [#10241](https://github.com/babel/babel/pull/10241) Add `cloneInputAst` option to `babel.transformFromAst` ([@coderaiser](https://github.com/coderaiser)) + +#### :bug: Bug Fix +* Other + * [#11896](https://github.com/babel/babel/pull/11896) update: hardcode @babel/eslint-parser min supported version check ([@kaicataldo](https://github.com/kaicataldo)) +* `babel-helper-skip-transparent-expression-wrappers`, `babel-plugin-proposal-optional-chaining`, `babel-plugin-transform-spread` + * [#11404](https://github.com/babel/babel/pull/11404) Skip TSAsExpression when transforming spread in CallExpression ([@oliverdunk](https://github.com/oliverdunk)) +* `babel-helper-member-expression-to-functions`, `babel-plugin-proposal-class-properties`, `babel-plugin-proposal-logical-assignment-operators` + * [#11702](https://github.com/babel/babel/pull/11702) add support for logical assignments with private properties ([@ryzokuken](https://github.com/ryzokuken)) +* `babel-plugin-transform-typescript` + * [#11747](https://github.com/babel/babel/pull/11747) Typescript: always strip declare from class fields ([@jamescdavis](https://github.com/jamescdavis)) +* `babel-plugin-transform-runtime` + * [#11893](https://github.com/babel/babel/pull/11893) Fix incorrect module path when absoluteRuntime is specified ([@sz-coder](https://github.com/sz-coder)) +* `babel-parser` + * [#11862](https://github.com/babel/babel/pull/11862) Correctly check reserved word for PropertyDefinition: IdentifierReference ([@JLHwung](https://github.com/JLHwung)) + * [#11847](https://github.com/babel/babel/pull/11847) fix: correctly set innerEndPos in CoverParenthesizedExpressionAndArrowParameterList ([@JLHwung](https://github.com/JLHwung)) +* `babel-generator`, `babel-parser`, `babel-plugin-transform-typescript` + * [#11767](https://github.com/babel/babel/pull/11767) Follow-up on initial TS4 catch param support ([@JLHwung](https://github.com/JLHwung)) +* `babel-generator` + * [#11836](https://github.com/babel/babel/pull/11836) Always retain lines for async arrow ([@cwohlman](https://github.com/cwohlman)) + +#### :nail_care: Polish +* `babel-traverse` + * [#11791](https://github.com/babel/babel/pull/11791) babel-traverse: prefer clearer, reduced-bias option naming ([@jayaddison](https://github.com/jayaddison)) + +#### :house: Internal +* Other + * [#11688](https://github.com/babel/babel/pull/11688) fix build config to work the same when running on windows ([@zxbodya](https://github.com/zxbodya)) + * [#11894](https://github.com/babel/babel/pull/11894) Prepare to publish `@babel/eslint-*` packages ([@JLHwung](https://github.com/JLHwung)) + * [#11879](https://github.com/babel/babel/pull/11879) chore: use modules: "auto" ([@JLHwung](https://github.com/JLHwung)) + * [#11875](https://github.com/babel/babel/pull/11875) chore(github): fix issue template typo ([@SirWindfield](https://github.com/SirWindfield)) + * [#11706](https://github.com/babel/babel/pull/11706) chore: update `spec-new` in CONTRIBUTING.md [skip ci] ([@JLHwung](https://github.com/JLHwung)) +* `babel-standalone` + * [#11777](https://github.com/babel/babel/pull/11777) chore: build standalone once in prepublish step ([@JLHwung](https://github.com/JLHwung)) +* `babel-compat-data`, `babel-helper-compilation-targets`, `babel-preset-env` + * [#11838](https://github.com/babel/babel/pull/11838) refactor: replace caniuse-db by mdn-browser-compat-data ([@JLHwung](https://github.com/JLHwung)) +* `babel-compat-data`, `babel-core`, `babel-helper-module-transforms`, `babel-helper-split-export-declaration`, `babel-parser`, `babel-plugin-proposal-object-rest-spread`, `babel-plugin-transform-classes`, `babel-preset-env`, `babel-traverse`, `babel-types` + * [#11846](https://github.com/babel/babel/pull/11846) chore: fix typo in codebase ([@JLHwung](https://github.com/JLHwung)) +* `babel-types` + * [#11843](https://github.com/babel/babel/pull/11843) refactor: reorganize babel types definitions structure ([@JLHwung](https://github.com/JLHwung)) +* `babel-compat-data` + * [#11837](https://github.com/babel/babel/pull/11837) chore: use repository HEAD when pulling third party repos ([@JLHwung](https://github.com/JLHwung)) ## v7.10.5 (2020-07-14) #### :bug: Bug Fix From 08054181c33f5db9508f34ad9d7957ba78e81765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 31 Jul 2020 13:13:30 -0400 Subject: [PATCH 57/90] docs: remove experimental warning on README (#11900) --- eslint/babel-eslint-parser/README.md | 11 ++++------- eslint/babel-eslint-plugin/README.md | 9 ++++----- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/eslint/babel-eslint-parser/README.md b/eslint/babel-eslint-parser/README.md index 75814be5c1f4..8ee13ebda10a 100644 --- a/eslint/babel-eslint-parser/README.md +++ b/eslint/babel-eslint-parser/README.md @@ -1,8 +1,5 @@ # @babel/eslint-parser [![npm](https://img.shields.io/npm/v/@babel/eslint-parser.svg)](https://www.npmjs.com/package/@babel/eslint-parser) [![travis](https://img.shields.io/travis/babel/@babel/eslint-parser/main.svg)](https://travis-ci.org/babel/@babel/eslint-parser) [![npm-downloads](https://img.shields.io/npm/dm/@babel/eslint-parser.svg)](https://www.npmjs.com/package/@babel/eslint-parser) - -## This project is still experimental and will be released with Babel v8. You can track our progress [here](https://github.com/babel/babel/issues/10752)! Please use [babel-eslint](https://github.com/babel/babel-eslint) in the meantime. - **@babel/eslint-parser** allows you to lint **ALL** valid Babel code with the fantastic [ESLint](https://github.com/eslint/eslint). @@ -56,7 +53,7 @@ Additional configuration options can be set in your ESLint configuration under t - `sourceType` can be set to `"module"`(default) or `"script"` if your code isn't using ECMAScript modules. - `allowImportExportEverywhere` (default `false`) can be set to `true` to allow import and export declarations to appear anywhere a statement is allowed if your build environment supports that. Otherwise import and export declarations can only appear at a program's top level. - `ecmaFeatures.globalReturn` (default `false`) allow return statements in the global scope when used with `sourceType: "script"`. -- `babelOptions` is an object containing Babel configuration [options](https://babeljs.io/docs/en/options) that are passed to Babel's parser at runtime. For cases where users might not want to use a Babel configuration file or are running Babel through another tool (such as Webpack with `babel-loader`). +- `babelOptions` is an object containing Babel configuration [options](https://babeljs.io/docs/en/options) that are passed to Babel's parser at runtime. For cases where users might not want to use a Babel configuration file or are running Babel through another tool (such as Webpack with `babel-loader`). **.eslintrc.js** @@ -83,14 +80,14 @@ This configuration would use the default parser for all files except for those f ```js module.exports = { rules: { - indent: "error" + indent: "error", }, overrides: [ { files: ["files/transformed/by/babel/*.js"], parser: "@babel/eslint-parser", - } - ] + }, + ], }; ``` diff --git a/eslint/babel-eslint-plugin/README.md b/eslint/babel-eslint-plugin/README.md index cb9eb4e4df43..85f6d2b92829 100644 --- a/eslint/babel-eslint-plugin/README.md +++ b/eslint/babel-eslint-plugin/README.md @@ -1,12 +1,10 @@ # @babel/eslint-plugin -## This project is still experimental and will be released with Babel v8. You can track our progress [here](https://github.com/babel/babel/issues/10752)! Please use [eslint-plugin-babel](https://github.com/babel/eslint-plugin-babel) in the meantime. - Companion rules for `@babel/eslint-parser`. `@babel/eslint-parser` does a great job at adapting `eslint` for use with Babel, but it can't change the built-in rules to support experimental features. `@babel/eslint-plugin` re-implements problematic rules so they do not give false positives or negatives. -> Requires Node 10.9 or greater +> Requires Node 10.13 or greater ### Install @@ -18,7 +16,7 @@ Load the plugin in your `.eslintrc.json` file: ```json { - "plugins": ["@babel/eslint-plugin"] + "plugins": ["@babel"] } ``` @@ -32,10 +30,11 @@ original ones as well!). "babel/no-invalid-this": "error", "babel/no-unused-expressions": "error", "babel/object-curly-spacing": "error", - "babel/semi": "error", + "babel/semi": "error" } } ``` + ### Rules Each rule corresponds to a core `eslint` rule and has the same options. From c41dcd045bc7073de49d44777f394a1ad90398c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 31 Jul 2020 15:26:22 -0400 Subject: [PATCH 58/90] =?UTF-8?q?fix:=20ensure=20`[=E2=80=A6map.keys]`=20c?= =?UTF-8?q?an=20be=20correctly=20transformed=20in=20loose=20mode=20(#11901?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/babel-plugin-transform-block-scoping/src/index.js | 2 +- packages/babel-standalone/test/babel.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/babel-plugin-transform-block-scoping/src/index.js b/packages/babel-plugin-transform-block-scoping/src/index.js index c6a7fe26f48e..3a9576a525fe 100644 --- a/packages/babel-plugin-transform-block-scoping/src/index.js +++ b/packages/babel-plugin-transform-block-scoping/src/index.js @@ -518,7 +518,7 @@ class BlockScoping { // remap loop heads with colliding variables if (this.loop) { // nb: clone outsideRefs keys since the map is modified within the loop - for (const name of [...outsideRefs.keys()]) { + for (const name of Array.from(outsideRefs.keys())) { const id = outsideRefs.get(name); if ( diff --git a/packages/babel-standalone/test/babel.js b/packages/babel-standalone/test/babel.js index 44b08166abcd..c6a450328491 100644 --- a/packages/babel-standalone/test/babel.js +++ b/packages/babel-standalone/test/babel.js @@ -210,6 +210,13 @@ }), ).not.toThrow(); }); + it("#11897 - [...map.keys()] in Babel source should be transformed correctly", () => { + expect(() => + Babel.transform("for (let el of []) { s => el }", { + plugins: ["transform-block-scoping"], + }), + ).not.toThrow(); + }); }); }, ); From ad60153a98563c871ab7e9742a8d8f37c270fe16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 31 Jul 2020 20:35:19 -0400 Subject: [PATCH 59/90] Update `@babel/*` deps (#11899) * chore: remove extra install step for eslint packages * chore: update babel deps --- Makefile | 2 - babel.config.js | 2 - package.json | 18 ++- yarn.lock | 287 +++++++++++++++++++++--------------------------- 4 files changed, 135 insertions(+), 174 deletions(-) diff --git a/Makefile b/Makefile index 0e792557f673..75901f73511f 100644 --- a/Makefile +++ b/Makefile @@ -252,8 +252,6 @@ endif bootstrap-only: lerna-bootstrap yarn-install: clean-all - # Install dependencies in individual packages so that we can link them at the top level. - for package in eslint/*/; do yarn --ignore-engines --cwd $$package; done # Gitpod prebuilds have a slow network connection, so we need more time yarn --ignore-engines --network-timeout 100000 diff --git a/babel.config.js b/babel.config.js index e3319f0f2c23..db550768d642 100644 --- a/babel.config.js +++ b/babel.config.js @@ -105,8 +105,6 @@ module.exports = function (api) { // TODO: Use @babel/preset-flow when // https://github.com/babel/babel/issues/7233 is fixed "@babel/plugin-transform-flow-strip-types", - ["@babel/proposal-class-properties", { loose: true }], - "@babel/proposal-export-namespace-from", [ "@babel/proposal-object-rest-spread", { useBuiltIns: true, loose: true }, diff --git a/package.json b/package.json index f073aa51a7a5..2ebc0f1b0562 100644 --- a/package.json +++ b/package.json @@ -12,23 +12,21 @@ }, "devDependencies": { "@babel/cli": "^7.10.4", - "@babel/core": "^7.10.4", + "@babel/core": "^7.11.0", "@babel/eslint-config-internal": "link:./eslint/babel-eslint-config-internal", - "@babel/eslint-parser": "link:./eslint/babel-eslint-parser", - "@babel/eslint-plugin-development": "link:./eslint/babel-eslint-plugin-development", + "@babel/eslint-parser": "^7.11.0", + "@babel/eslint-plugin-development": "^7.11.0", "@babel/eslint-plugin-development-internal": "link:./eslint/babel-eslint-plugin-development-internal", - "@babel/plugin-proposal-class-properties": "^7.10.4", "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", "@babel/plugin-transform-flow-strip-types": "^7.10.4", "@babel/plugin-transform-for-of": "^7.10.4", "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-runtime": "^7.10.4", - "@babel/preset-env": "^7.10.4", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", "@babel/preset-flow": "^7.10.4", - "@babel/register": "^7.10.4", - "@babel/runtime": "^7.10.4", + "@babel/register": "^7.10.5", + "@babel/runtime": "^7.11.0", "@rollup/plugin-json": "4.0.1", "babel-jest": "^24.9.0", "babel-plugin-transform-charcodes": "^0.2.0", diff --git a/yarn.lock b/yarn.lock index 40d9ac971047..5bc6d4c6c0d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,33 +25,33 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" - integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== +"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" + integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== dependencies: browserslist "^4.12.0" invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" - integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== +"@babel/core@^7.1.0", "@babel/core@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.0.tgz#73b9c33f1658506887f767c26dae07798b30df76" + integrity sha512-mkLq8nwaXmDtFmRkQ8ED/eA2CnVw4zr7dCztKalZXBvdK5EeNUAesrrwUqjQEzFgomJssayzB0aqlOsP1vGLqg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.4" + "@babel/generator" "^7.11.0" + "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.10.4" + "@babel/parser" "^7.11.0" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/traverse" "^7.11.0" + "@babel/types" "^7.11.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" - lodash "^4.17.13" + lodash "^4.17.19" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" @@ -59,27 +59,31 @@ "@babel/eslint-config-internal@link:./eslint/babel-eslint-config-internal": version "7.10.4" -"@babel/eslint-parser@link:./eslint/babel-eslint-parser": - version "7.10.4" +"@babel/eslint-parser@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.0.tgz#b123924edd44508782c030066c926f1b807151cd" + integrity sha512-dJDM2Pc01D9TwKL3Mmz2xgVF9X953RBHq9H4gywbN1q8MrfvXmNHfsCt06vvByBVQqm+9WxMs+doEH/R09TwWQ== dependencies: eslint-scope "5.1.0" eslint-visitor-keys "^1.3.0" semver "^6.3.0" "@babel/eslint-plugin-development-internal@link:./eslint/babel-eslint-plugin-development-internal": - version "7.10.4" + version "0.0.0" + uid "" -"@babel/eslint-plugin-development@link:./eslint/babel-eslint-plugin-development": - version "7.10.4" +"@babel/eslint-plugin-development@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/eslint-plugin-development/-/eslint-plugin-development-7.11.0.tgz#06b66282b1999f7262f907cb2aa7da67c16f3ecb" + integrity sha512-A108QrEVD8O/6dzx35JZNLfkU587v+utCLVHdv4CT0huTSiDEXTFP6kksIFlVk2oRJRcQjzPDhcPZB1vTWbugA== -"@babel/generator@^7.10.4", "@babel/generator@^7.4.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" - integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== +"@babel/generator@^7.11.0", "@babel/generator@^7.4.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" + integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.11.0" jsesc "^2.5.1" - lodash "^4.17.13" source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.10.4": @@ -183,18 +187,18 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" - integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" + integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== dependencies: "@babel/helper-module-imports" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4" "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" + "@babel/types" "^7.11.0" + lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" @@ -244,12 +248,19 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-split-export-declaration@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" - integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== +"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" + integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.11.0" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" @@ -284,10 +295,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.4.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" - integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.4.3": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.0.tgz#a9d7e11aead25d3b422d17b2c6502c8dddef6a5d" + integrity sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw== "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.4" @@ -330,6 +341,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" +"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" + integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" @@ -346,10 +365,10 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" - integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== +"@babel/plugin-proposal-object-rest-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" + integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" @@ -363,12 +382,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" - integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== +"@babel/plugin-proposal-optional-chaining@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" + integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" "@babel/plugin-proposal-private-methods@^7.10.4": @@ -429,6 +449,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" @@ -678,10 +705,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-runtime@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.4.tgz#594fb53453ea1b6f0779cceb48ce0718a447feb7" - integrity sha512-8ULlGv8p+Vuxu+kz2Y1dk6MYS2b/Dki+NO6/0ZlfSj5tMalfDL7jI/o/2a+rrWLqSXvnadEqc2WguB4gdQIxZw== +"@babel/plugin-transform-runtime@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz#e27f78eb36f19448636e05c33c90fd9ad9b8bccf" + integrity sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw== dependencies: "@babel/helper-module-imports" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" @@ -695,12 +722,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-spread@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" - integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== +"@babel/plugin-transform-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" + integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-transform-sticky-regex@^7.10.4": version "7.10.4" @@ -740,30 +768,34 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" - integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== +"@babel/preset-env@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.0.tgz#860ee38f2ce17ad60480c2021ba9689393efb796" + integrity sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg== dependencies: - "@babel/compat-data" "^7.10.4" + "@babel/compat-data" "^7.11.0" "@babel/helper-compilation-targets" "^7.10.4" "@babel/helper-module-imports" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-async-generator-functions" "^7.10.4" "@babel/plugin-proposal-class-properties" "^7.10.4" "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-export-namespace-from" "^7.10.4" "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.11.0" "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" "@babel/plugin-proposal-private-methods" "^7.10.4" "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-syntax-class-properties" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" @@ -796,14 +828,14 @@ "@babel/plugin-transform-regenerator" "^7.10.4" "@babel/plugin-transform-reserved-words" "^7.10.4" "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-spread" "^7.11.0" "@babel/plugin-transform-sticky-regex" "^7.10.4" "@babel/plugin-transform-template-literals" "^7.10.4" "@babel/plugin-transform-typeof-symbol" "^7.10.4" "@babel/plugin-transform-unicode-escapes" "^7.10.4" "@babel/plugin-transform-unicode-regex" "^7.10.4" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.4" + "@babel/types" "^7.11.0" browserslist "^4.12.0" core-js-compat "^3.6.2" invariant "^2.2.2" @@ -829,13 +861,13 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/register@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.4.tgz#53004ba8b04c4af3cbd84508e03ad150669746e4" - integrity sha512-whHmgGiWNVyTVnYTSawtDWhaeYsc+noeU8Rmi+MPnbGhDYmr5QpEDMrQcIA07D2RUv0BlThPcN89XcHCqq/O4g== +"@babel/register@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.5.tgz#354f3574895f1307f79efe37a51525e52fd38d89" + integrity sha512-eYHdLv43nyvmPn9bfNfrcC4+iYNwdQ8Pxk1MFJuU/U5LpSYl/PH4dFMazCYZDFVi8ueG3shvO+AQfLrxpYulQw== dependencies: find-cache-dir "^2.0.0" - lodash "^4.17.13" + lodash "^4.17.19" make-dir "^2.1.0" pirates "^4.0.0" source-map-support "^0.5.16" @@ -848,10 +880,10 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.4", "@babel/runtime@^7.8.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" - integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== +"@babel/runtime@^7.11.0", "@babel/runtime@^7.8.4": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.0.tgz#f10245877042a815e07f7e693faff0ae9d3a2aac" + integrity sha512-qArkXsjJq7H+T86WrIFV0Fnu/tNOkZ4cgXmjkzAu3b/58D5mFIO8JH/y77t7C9q0OdDRdh9s7Ue5GasYssxtXw== dependencies: regenerator-runtime "^0.13.4" @@ -864,28 +896,28 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.4.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" - integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0", "@babel/traverse@^7.4.3": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" + integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.4" + "@babel/generator" "^7.11.0" "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.11.0" + "@babel/types" "^7.11.0" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" + lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" - integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" + integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== dependencies: "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.13" + lodash "^4.17.19" to-fast-properties "^2.0.0" "@cnakazawa/watch@^1.0.3": @@ -2125,12 +2157,7 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.0.0, acorn@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== - -acorn@^7.1.1, acorn@^7.3.1: +acorn@^7.0.0, acorn@^7.1.0, acorn@^7.1.1, acorn@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== @@ -3662,16 +3689,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4190,7 +4208,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5, es-abstract@^1.4.3, es-abstract@^1.5.1: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== @@ -4207,22 +4225,6 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" -es-abstract@^1.4.3, es-abstract@^1.5.1: - version "1.16.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.3.tgz#52490d978f96ff9f89ec15b5cf244304a5bca161" - integrity sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-inspect "^1.7.0" - object-keys "^1.1.1" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" - es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -5469,7 +5471,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -5831,12 +5833,7 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - -is-callable@^1.2.0: +is-callable@^1.1.4, is-callable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== @@ -6035,13 +6032,6 @@ is-reference@^1.1.2: dependencies: "@types/estree" "0.0.39" -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" - is-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" @@ -9236,14 +9226,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.17.0: +resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -9977,22 +9960,6 @@ string.prototype.trimend@^1.0.1: define-properties "^1.1.3" es-abstract "^1.17.5" -string.prototype.trimleft@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - string.prototype.trimstart@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" From a4ebe29b3f983dadabe13fdbd3e32c54a030eae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 31 Jul 2020 20:36:04 -0400 Subject: [PATCH 60/90] Parser refactoring (#11871) * refactor: parseMaybeUnary => parseUnary * refactor: extract shouldExitDescending method * refactor: add parseUpdate * refactor: avoid comparing with hardcoded token value * refactor: add ParseNewOrNewTarget * refactor: add parseCoverCallAndAsyncArrowHead * add parseBind * refactor: polish parseTaggedTemplateExpression interface * refactor: add parseMember method * refactor: add parseSuper method * refactor: add parseAsyncArrowUnaryFunction method * fix: disallow line break before async binding arrow * refactor: simplify tt.name logic * refactor: add parseDo method * refactor: misc * refactor: rename parseObjectMember by parsePropertyDefinition * refactor: unify set/get/async keyword parsing in ObjectMethod * refactor: misc * refactor: add parseArrayLike method * refactor: move fsharp epilogure and prologue inside parseObjectLike * fixup * refactor: rename parseFunctionExpression to parseFunctionOrFunctionSent * refactor: remove redundant logic * refactor: rename parseClassPropertyName by parseClassElementName * refactor: avoid unecessary lookahead when parsing tt._export * fix: export-default-from should support escaped async as export binding * address review comments * parseUnary -> parseMaybeUnary --- .../babel-parser/src/parser/error-message.js | 1 + .../babel-parser/src/parser/expression.js | 817 ++++++++++-------- packages/babel-parser/src/parser/lval.js | 20 +- packages/babel-parser/src/parser/statement.js | 62 +- packages/babel-parser/src/plugins/estree.js | 4 +- packages/babel-parser/src/plugins/flow.js | 6 +- .../src/plugins/typescript/index.js | 7 +- packages/babel-parser/src/types.js | 5 + .../options.json | 2 +- .../newline-before-arrow/input.js | 2 + .../newline-before-arrow/output.json | 39 + .../input.js | 0 .../output.json | 0 .../input.js | 0 .../output.json | 0 .../default-and-ns/options.json | 4 - .../default-default-asi/options.json | 4 - .../default-default/options.json | 4 - .../default-escaped/input.js | 1 + .../default-escaped/output.json | 37 + .../options.json | 4 - .../options.json | 4 - .../default-type-without-flow/options.json | 4 - .../export-extensions/default/options.json | 4 - .../options.json | 4 - .../{default-and-named => }/options.json | 0 .../flow/type-annotations/20/output.json | 1 - .../flow/type-annotations/21/output.json | 1 - .../flow/type-annotations/22/output.json | 1 - 29 files changed, 614 insertions(+), 424 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-arrow/input.js create mode 100644 packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-arrow/output.json rename packages/babel-parser/test/fixtures/es2017/async-functions/{newline-arrow => newline-before-binding}/input.js (100%) rename packages/babel-parser/test/fixtures/es2017/async-functions/{newline-arrow => newline-before-binding}/output.json (100%) rename packages/babel-parser/test/fixtures/es2017/async-functions/{newline => newline-before-function}/input.js (100%) rename packages/babel-parser/test/fixtures/es2017/async-functions/{newline => newline-before-function}/output.json (100%) delete mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-and-ns/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-default-asi/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-default/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-escaped/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-escaped/output.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-escaped/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-type-without-flow/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default/options.json delete mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/invalid-default-from-identifier/options.json rename packages/babel-parser/test/fixtures/experimental/export-extensions/{default-and-named => }/options.json (100%) diff --git a/packages/babel-parser/src/parser/error-message.js b/packages/babel-parser/src/parser/error-message.js index 77953092dc8e..f9e95d039e65 100644 --- a/packages/babel-parser/src/parser/error-message.js +++ b/packages/babel-parser/src/parser/error-message.js @@ -80,6 +80,7 @@ export const ErrorMessages = Object.freeze({ LabelRedeclaration: "Label '%0' is already declared", LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'", MalformedRegExpFlags: "Invalid regular expression flag", MissingClassName: "A class name is required", MissingEqInAssignment: diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 39df90005037..26527c8300bb 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -90,7 +90,6 @@ export default class ExpressionParser extends LValParser { prop.type === "SpreadElement" || prop.type === "ObjectMethod" || prop.computed || - // $FlowIgnore prop.shorthand ) { return; @@ -121,6 +120,12 @@ export default class ExpressionParser extends LValParser { } } + shouldExitDescending(expr: N.Expression, potentialArrowAt: number): boolean { + return ( + expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt + ); + } + // Convenience method to parse an Expression only getExpression(): N.Expression { let paramFlags = PARAM; @@ -160,6 +165,7 @@ export default class ExpressionParser extends LValParser { // and object pattern might appear (so it's possible to raise // delayed syntax error at correct position). + // https://tc39.es/ecma262/#prod-Expression parseExpression( noIn?: boolean, refExpressionErrors?: ExpressionErrors, @@ -182,6 +188,7 @@ export default class ExpressionParser extends LValParser { // Parse an assignment expression. This includes applications of // operators like `+=`. + // https://tc39.es/ecma262/#prod-AssignmentExpression parseMaybeAssign( noIn?: ?boolean, refExpressionErrors?: ?ExpressionErrors, @@ -253,6 +260,7 @@ export default class ExpressionParser extends LValParser { } // Parse a ternary conditional (`?:`) operator. + // https://tc39.es/ecma262/#prod-ConditionalExpression parseMaybeConditional( noIn: ?boolean, @@ -264,13 +272,9 @@ export default class ExpressionParser extends LValParser { const potentialArrowAt = this.state.potentialArrowAt; const expr = this.parseExprOps(noIn, refExpressionErrors); - if ( - expr.type === "ArrowFunctionExpression" && - expr.start === potentialArrowAt - ) { + if (this.shouldExitDescending(expr, potentialArrowAt)) { return expr; } - if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; return this.parseConditional( expr, @@ -302,6 +306,7 @@ export default class ExpressionParser extends LValParser { } // Start the precedence parser. + // https://tc39.es/ecma262/#prod-ShortCircuitExpression parseExprOps( noIn: ?boolean, @@ -312,13 +317,7 @@ export default class ExpressionParser extends LValParser { const potentialArrowAt = this.state.potentialArrowAt; const expr = this.parseMaybeUnary(refExpressionErrors); - if ( - expr.type === "ArrowFunctionExpression" && - expr.start === potentialArrowAt - ) { - return expr; - } - if (this.checkExpressionErrors(refExpressionErrors, false)) { + if (this.shouldExitDescending(expr, potentialArrowAt)) { return expr; } @@ -341,15 +340,20 @@ export default class ExpressionParser extends LValParser { let prec = this.state.type.binop; if (prec != null && (!noIn || !this.match(tt._in))) { if (prec > minPrec) { - const operator = this.state.value; - if (operator === "|>" && this.state.inFSharpPipelineDirectBody) { - return left; + const op = this.state.type; + if (op === tt.pipeline) { + this.expectPlugin("pipelineOperator"); + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + this.state.inPipeline = true; + this.checkPipelineAtInfixOperator(left, leftStartPos); } const node = this.startNodeAt(leftStartPos, leftStartLoc); node.left = left; - node.operator = operator; + node.operator = this.state.value; if ( - operator === "**" && + op === tt.exponent && left.type === "UnaryExpression" && (this.options.createParenthesizedExpressions || !(left.extra && left.extra.parenthesized)) @@ -360,15 +364,10 @@ export default class ExpressionParser extends LValParser { ); } - const op = this.state.type; const logical = op === tt.logicalOR || op === tt.logicalAND; const coalesce = op === tt.nullishCoalescing; - if (op === tt.pipeline) { - this.expectPlugin("pipelineOperator"); - this.state.inPipeline = true; - this.checkPipelineAtInfixOperator(left, leftStartPos); - } else if (coalesce) { + if (coalesce) { // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions. // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error. prec = ((tt.logicalAND: any): { binop: number }).binop; @@ -476,28 +475,28 @@ export default class ExpressionParser extends LValParser { } // Parse unary operators, both prefix and postfix. - + // https://tc39.es/ecma262/#prod-UnaryExpression parseMaybeUnary(refExpressionErrors: ?ExpressionErrors): N.Expression { if (this.isContextual("await") && this.isAwaitAllowed()) { return this.parseAwait(); - } else if (this.state.type.prefix) { - const node = this.startNode(); - const update = this.match(tt.incDec); + } + const update = this.match(tt.incDec); + const node = this.startNode(); + if (this.state.type.prefix) { node.operator = this.state.value; node.prefix = true; - if (node.operator === "throw") { + if (this.match(tt._throw)) { this.expectPlugin("throwExpressions"); } + const isDelete = this.match(tt._delete); this.next(); node.argument = this.parseMaybeUnary(); this.checkExpressionErrors(refExpressionErrors, true); - if (update) { - this.checkLVal(node.argument, undefined, undefined, "prefix operation"); - } else if (this.state.strict && node.operator === "delete") { + if (this.state.strict && isDelete) { const arg = node.argument; if (arg.type === "Identifier") { @@ -511,10 +510,23 @@ export default class ExpressionParser extends LValParser { } } - return this.finishNode( - node, - update ? "UpdateExpression" : "UnaryExpression", - ); + if (!update) { + return this.finishNode(node, "UnaryExpression"); + } + } + + return this.parseUpdate(node, update, refExpressionErrors); + } + + // https://tc39.es/ecma262/#prod-UpdateExpression + parseUpdate( + node: N.Expression, + update: boolean, + refExpressionErrors: ?ExpressionErrors, + ): N.Expression { + if (update) { + this.checkLVal(node.argument, undefined, undefined, "prefix operation"); + return this.finishNode(node, "UpdateExpression"); } const startPos = this.state.start; @@ -534,17 +546,14 @@ export default class ExpressionParser extends LValParser { } // Parse call, dot, and `[]`-subscript expressions. - + // https://tc39.es/ecma262/#prod-LeftHandSideExpression parseExprSubscripts(refExpressionErrors: ?ExpressionErrors): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; const potentialArrowAt = this.state.potentialArrowAt; const expr = this.parseExprAtom(refExpressionErrors); - if ( - expr.type === "ArrowFunctionExpression" && - expr.start === potentialArrowAt - ) { + if (this.shouldExitDescending(expr, potentialArrowAt)) { return expr; } @@ -588,155 +597,198 @@ export default class ExpressionParser extends LValParser { state: N.ParseSubscriptState, ): N.Expression { if (!noCalls && this.eat(tt.doubleColon)) { - const node = this.startNodeAt(startPos, startLoc); - node.object = base; - node.callee = this.parseNoCallExpr(); - state.stop = true; - return this.parseSubscripts( - this.finishNode(node, "BindExpression"), + return this.parseBind(base, startPos, startLoc, noCalls, state); + } else if (this.match(tt.backQuote)) { + return this.parseTaggedTemplateExpression( + base, startPos, startLoc, - noCalls, + state, ); } + let optional = false; if (this.match(tt.questionDot)) { state.optionalChainMember = optional = true; if (noCalls && this.lookaheadCharCode() === charCodes.leftParenthesis) { + // stop at `?.` when parsing `new a?.()` state.stop = true; return base; } this.next(); } + + if (!noCalls && this.match(tt.parenL)) { + return this.parseCoverCallAndAsyncArrowHead( + base, + startPos, + startLoc, + state, + optional, + ); + } else if (optional || this.match(tt.bracketL) || this.eat(tt.dot)) { + return this.parseMember(base, startPos, startLoc, state, optional); + } else { + state.stop = true; + return base; + } + } + + // base[?Yield, ?Await] [ Expression[+In, ?Yield, ?Await] ] + // base[?Yield, ?Await] . IdentifierName + // base[?Yield, ?Await] . PrivateIdentifier + // where `base` is one of CallExpression, MemberExpression and OptionalChain + parseMember( + base: N.Expression, + startPos: number, + startLoc: Position, + state: N.ParseSubscriptState, + optional: boolean, + ): N.OptionalMemberExpression | N.MemberExpression { + const node = this.startNodeAt(startPos, startLoc); const computed = this.eat(tt.bracketL); - if ( - (optional && !this.match(tt.parenL) && !this.match(tt.backQuote)) || - computed || - this.eat(tt.dot) - ) { - const node = this.startNodeAt(startPos, startLoc); - node.object = base; - node.property = computed - ? this.parseExpression() - : this.parseMaybePrivateName(true); - node.computed = computed; - - if (node.property.type === "PrivateName") { - if (node.object.type === "Super") { - this.raise(startPos, Errors.SuperPrivateField); - } - this.classScope.usePrivateName( - node.property.id.name, - node.property.start, - ); + node.object = base; + node.computed = computed; + const property = computed + ? this.parseExpression() + : this.parseMaybePrivateName(true); + + if (property.type === "PrivateName") { + if (node.object.type === "Super") { + this.raise(startPos, Errors.SuperPrivateField); } + this.classScope.usePrivateName(property.id.name, property.start); + } + node.property = property; - if (computed) { - this.expect(tt.bracketR); - } + if (computed) { + this.expect(tt.bracketR); + } - if (state.optionalChainMember) { - node.optional = optional; - return this.finishNode(node, "OptionalMemberExpression"); - } else { - return this.finishNode(node, "MemberExpression"); - } - } else if (!noCalls && this.match(tt.parenL)) { - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - const oldYieldPos = this.state.yieldPos; - const oldAwaitPos = this.state.awaitPos; - this.state.maybeInArrowParameters = true; - this.state.yieldPos = -1; - this.state.awaitPos = -1; + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } - this.next(); + // https://github.com/tc39/proposal-bind-operator#syntax + parseBind( + base: N.Expression, + startPos: number, + startLoc: Position, + noCalls: ?boolean, + state: N.ParseSubscriptState, + ): N.Expression { + const node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts( + this.finishNode(node, "BindExpression"), + startPos, + startLoc, + noCalls, + ); + } - let node = this.startNodeAt(startPos, startLoc); - node.callee = base; + // https://tc39.es/ecma262/#prod-CoverCallExpressionAndAsyncArrowHead + // CoverCallExpressionAndAsyncArrowHead + // CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await] + // OptionalChain[?Yield, ?Await] Arguments[?Yield, ?Await] + parseCoverCallAndAsyncArrowHead( + base: N.Expression, + startPos: number, + startLoc: Position, + state: N.ParseSubscriptState, + optional: boolean, + ): N.Expression { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldYieldPos = this.state.yieldPos; + const oldAwaitPos = this.state.awaitPos; + this.state.maybeInArrowParameters = true; + this.state.yieldPos = -1; + this.state.awaitPos = -1; - if (state.optionalChainMember) { - node.optional = optional; - } - if (optional) { - node.arguments = this.parseCallExpressionArguments(tt.parenR, false); - } else { - node.arguments = this.parseCallExpressionArguments( - tt.parenR, - state.maybeAsyncArrow, - base.type === "Import", - base.type !== "Super", - node, - ); - } - this.finishCallExpression(node, state.optionalChainMember); + this.next(); // eat `(` - if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { - state.stop = true; + let node = this.startNodeAt(startPos, startLoc); + node.callee = base; - node = this.parseAsyncArrowFromCallExpression( - this.startNodeAt(startPos, startLoc), - node, - ); - this.checkYieldAwaitInDefaultParams(); - this.state.yieldPos = oldYieldPos; - this.state.awaitPos = oldAwaitPos; - } else { - this.toReferencedListDeep(node.arguments); - - // We keep the old value if it isn't null, for cases like - // (x = async(yield)) => {} - // - // Hi developer of the future :) If you are implementing generator - // arrow functions, please read the note below about "await" and - // verify if the same logic is needed for yield. - if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos; - - // Await is trickier than yield. When parsing a possible arrow function - // (e.g. something starting with `async(`) we don't know if its possible - // parameters will actually be inside an async arrow function or if it is - // a normal call expression. - // If it ended up being a call expression, if we are in a context where - // await expression are disallowed (and thus "await" is an identifier) - // we must be careful not to leak this.state.awaitPos to an even outer - // context, where "await" could not be an identifier. - // For example, this code is valid because "await" isn't directly inside - // an async function: - // - // async function a() { - // function b(param = async (await)) { - // } - // } - // - if ( - (!this.isAwaitAllowed() && !oldMaybeInArrowParameters) || - oldAwaitPos !== -1 - ) { - this.state.awaitPos = oldAwaitPos; - } - } + if (state.optionalChainMember) { + node.optional = optional; + } + if (optional) { + node.arguments = this.parseCallExpressionArguments(tt.parenR, false); + } else { + node.arguments = this.parseCallExpressionArguments( + tt.parenR, + state.maybeAsyncArrow, + base.type === "Import", + base.type !== "Super", + node, + ); + } + this.finishCallExpression(node, state.optionalChainMember); - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; - return node; - } else if (this.match(tt.backQuote)) { - return this.parseTaggedTemplateExpression( - startPos, - startLoc, - base, - state, + node = this.parseAsyncArrowFromCallExpression( + this.startNodeAt(startPos, startLoc), + node, ); + this.checkYieldAwaitInDefaultParams(); + this.state.yieldPos = oldYieldPos; + this.state.awaitPos = oldAwaitPos; } else { - state.stop = true; - return base; + this.toReferencedListDeep(node.arguments); + + // We keep the old value if it isn't null, for cases like + // (x = async(yield)) => {} + // + // Hi developer of the future :) If you are implementing generator + // arrow functions, please read the note below about "await" and + // verify if the same logic is needed for yield. + if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos; + + // Await is trickier than yield. When parsing a possible arrow function + // (e.g. something starting with `async(`) we don't know if its possible + // parameters will actually be inside an async arrow function or if it is + // a normal call expression. + // If it ended up being a call expression, if we are in a context where + // await expression are disallowed (and thus "await" is an identifier) + // we must be careful not to leak this.state.awaitPos to an even outer + // context, where "await" could not be an identifier. + // For example, this code is valid because "await" isn't directly inside + // an async function: + // + // async function a() { + // function b(param = async (await)) { + // } + // } + // + if ( + (!this.isAwaitAllowed() && !oldMaybeInArrowParameters) || + oldAwaitPos !== -1 + ) { + this.state.awaitPos = oldAwaitPos; + } } + + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + + return node; } + // MemberExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged] + // CallExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged] parseTaggedTemplateExpression( + base: N.Expression, startPos: number, startLoc: Position, - base: N.Expression, state: N.ParseSubscriptState, - typeArguments?: ?N.TsTypeParameterInstantiation, ): N.TaggedTemplateExpression { const node: N.TaggedTemplateExpression = this.startNodeAt( startPos, @@ -744,7 +796,6 @@ export default class ExpressionParser extends LValParser { ); node.tag = base; node.quasi = this.parseTemplate(true); - if (typeArguments) node.typeParameters = typeArguments; if (state.optionalChainMember) { this.raise(startPos, Errors.OptionalChainingNoTemplate); } @@ -875,7 +926,7 @@ export default class ExpressionParser extends LValParser { } // Parse a no-call expression (like argument of `new` or `::` operators). - + // https://tc39.es/ecma262/#prod-MemberExpression parseNoCallExpr(): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; @@ -887,6 +938,13 @@ export default class ExpressionParser extends LValParser { // `new`, or an expression wrapped in punctuation like `()`, `[]`, // or `{}`. + // https://tc39.es/ecma262/#prod-PrimaryExpression + // https://tc39.es/ecma262/#prod-AsyncArrowFunction + // PrimaryExpression + // Super + // Import + // AsyncArrowFunction + parseExprAtom(refExpressionErrors?: ?ExpressionErrors): N.Expression { // If a division operator appears in an expression position, the // tokenizer got confused, and we force it to read a regexp instead. @@ -897,30 +955,7 @@ export default class ExpressionParser extends LValParser { switch (this.state.type) { case tt._super: - node = this.startNode(); - this.next(); - if ( - this.match(tt.parenL) && - !this.scope.allowDirectSuper && - !this.options.allowSuperOutsideMethod - ) { - this.raise(node.start, Errors.SuperNotAllowed); - } else if ( - !this.scope.allowSuper && - !this.options.allowSuperOutsideMethod - ) { - this.raise(node.start, Errors.UnexpectedSuper); - } - - if ( - !this.match(tt.parenL) && - !this.match(tt.bracketL) && - !this.match(tt.dot) - ) { - this.raise(node.start, Errors.UnsupportedSuper); - } - - return this.finishNode(node, "Super"); + return this.parseSuper(); case tt._import: node = this.startNode(); @@ -940,76 +975,49 @@ export default class ExpressionParser extends LValParser { return this.finishNode(node, "ThisExpression"); case tt.name: { - node = this.startNode(); const containsEsc = this.state.containsEsc; const id = this.parseIdentifier(); - if ( - !containsEsc && - id.name === "async" && - this.match(tt._function) && - !this.canInsertSemicolon() - ) { - const last = this.state.context.length - 1; - if (this.state.context[last] !== ct.functionStatement) { - // Since "async" is an identifier and normally identifiers - // can't be followed by expression, the tokenizer assumes - // that "function" starts a statement. - // Fixing it in the tokenizer would mean tracking not only the - // previous token ("async"), but also the one before to know - // its beforeExpr value. - // It's easier and more efficient to adjust the context here. - throw new Error("Internal error"); + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + if (this.match(tt._function)) { + const last = this.state.context.length - 1; + if (this.state.context[last] !== ct.functionStatement) { + // Since "async" is an identifier and normally identifiers + // can't be followed by expression, the tokenizer assumes + // that "function" starts a statement. + // Fixing it in the tokenizer would mean tracking not only the + // previous token ("async"), but also the one before to know + // its beforeExpr value. + // It's easier and more efficient to adjust the context here. + throw new Error("Internal error"); + } + this.state.context[last] = ct.functionExpression; + + this.next(); + return this.parseFunction( + this.startNodeAtNode(id), + undefined, + true, + ); + } else if (this.match(tt.name)) { + return this.parseAsyncArrowUnaryFunction(id); } - this.state.context[last] = ct.functionExpression; - - this.next(); - return this.parseFunction(node, undefined, true); - } else if ( - canBeArrow && - !containsEsc && - id.name === "async" && - this.match(tt.name) && - !this.canInsertSemicolon() - ) { - const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; - const oldMaybeInAsyncArrowHead = this.state.maybeInAsyncArrowHead; - const oldYieldPos = this.state.yieldPos; - const oldAwaitPos = this.state.awaitPos; - this.state.maybeInArrowParameters = true; - this.state.maybeInAsyncArrowHead = true; - this.state.yieldPos = -1; - this.state.awaitPos = -1; - const params = [this.parseIdentifier()]; - this.expect(tt.arrow); - this.checkYieldAwaitInDefaultParams(); - this.state.maybeInArrowParameters = oldMaybeInArrowParameters; - this.state.maybeInAsyncArrowHead = oldMaybeInAsyncArrowHead; - this.state.yieldPos = oldYieldPos; - this.state.awaitPos = oldAwaitPos; - // let foo = async bar => {}; - this.parseArrowExpression(node, params, true); - return node; } if (canBeArrow && this.match(tt.arrow) && !this.canInsertSemicolon()) { this.next(); - this.parseArrowExpression(node, [id], false); - return node; + return this.parseArrowExpression( + this.startNodeAtNode(id), + [id], + false, + ); } return id; } case tt._do: { - this.expectPlugin("doExpressions"); - const node = this.startNode(); - this.next(); - const oldLabels = this.state.labels; - this.state.labels = []; - node.body = this.parseBlock(); - this.state.labels = oldLabels; - return this.finishNode(node, "DoExpression"); + return this.parseDo(); } case tt.regexp: { @@ -1046,68 +1054,40 @@ export default class ExpressionParser extends LValParser { case tt.bracketBarL: case tt.bracketHashL: { - this.expectPlugin("recordAndTuple"); - const oldInFSharpPipelineDirectBody = this.state - .inFSharpPipelineDirectBody; - const close = - this.state.type === tt.bracketBarL ? tt.bracketBarR : tt.bracketR; - this.state.inFSharpPipelineDirectBody = false; - node = this.startNode(); - this.next(); - node.elements = this.parseExprList( - close, - false, + return this.parseArrayLike( + this.state.type === tt.bracketBarL ? tt.bracketBarR : tt.bracketR, + /* canBePattern */ false, + /* isTuple */ true, refExpressionErrors, - node, ); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return this.finishNode(node, "TupleExpression"); } case tt.bracketL: { - const oldInFSharpPipelineDirectBody = this.state - .inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = false; - node = this.startNode(); - this.next(); - node.elements = this.parseExprList( + return this.parseArrayLike( tt.bracketR, - true, + /* canBePattern */ true, + /* isTuple */ false, refExpressionErrors, - node, ); - if (!this.state.maybeInArrowParameters) { - // This could be an array pattern: - // ([a: string, b: string]) => {} - // In this case, we don't have to call toReferencedList. We will - // call it, if needed, when we are sure that it is a parenthesized - // expression by calling toReferencedListDeep. - this.toReferencedList(node.elements); - } - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return this.finishNode(node, "ArrayExpression"); } case tt.braceBarL: case tt.braceHashL: { - this.expectPlugin("recordAndTuple"); - const oldInFSharpPipelineDirectBody = this.state - .inFSharpPipelineDirectBody; - const close = - this.state.type === tt.braceBarL ? tt.braceBarR : tt.braceR; - this.state.inFSharpPipelineDirectBody = false; - const ret = this.parseObj(close, false, true, refExpressionErrors); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return ret; + return this.parseObjectLike( + this.state.type === tt.braceBarL ? tt.braceBarR : tt.braceR, + /* isPattern */ false, + /* isRecord */ true, + refExpressionErrors, + ); } case tt.braceL: { - const oldInFSharpPipelineDirectBody = this.state - .inFSharpPipelineDirectBody; - this.state.inFSharpPipelineDirectBody = false; - const ret = this.parseObj(tt.braceR, false, false, refExpressionErrors); - this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; - return ret; + return this.parseObjectLike( + tt.braceR, + /* isPattern */ false, + /* isRecord */ false, + refExpressionErrors, + ); } case tt._function: - return this.parseFunctionExpression(); + return this.parseFunctionOrFunctionSent(); case tt.at: this.parseDecorators(); @@ -1118,11 +1098,13 @@ export default class ExpressionParser extends LValParser { return this.parseClass(node, false); case tt._new: - return this.parseNew(); + return this.parseNewOrNewTarget(); case tt.backQuote: return this.parseTemplate(false); + // BindExpression[Yield] + // :: MemberExpression[?Yield] case tt.doubleColon: { node = this.startNode(); this.next(); @@ -1155,6 +1137,9 @@ export default class ExpressionParser extends LValParser { return this.finishNode(node, "PipelinePrimaryTopicReference"); } + // https://tc39.es/proposal-private-fields-in-in + // RelationalExpression [In, Yield, Await] + // [+In] PrivateIdentifier in ShiftExpression[?Yield, ?Await] const nextCh = this.input.codePointAt(this.state.end); if (isIdentifierStart(nextCh) || nextCh === charCodes.backslash) { const start = this.state.start; @@ -1193,6 +1178,72 @@ export default class ExpressionParser extends LValParser { } } + // async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In] + parseAsyncArrowUnaryFunction(id: N.Expression): N.ArrowFunctionExpression { + const node = this.startNodeAtNode(id); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldMaybeInAsyncArrowHead = this.state.maybeInAsyncArrowHead; + const oldYieldPos = this.state.yieldPos; + const oldAwaitPos = this.state.awaitPos; + this.state.maybeInArrowParameters = true; + this.state.maybeInAsyncArrowHead = true; + this.state.yieldPos = -1; + this.state.awaitPos = -1; + const params = [this.parseIdentifier()]; + if (this.hasPrecedingLineBreak()) { + this.raise(this.state.pos, Errors.LineTerminatorBeforeArrow); + } + this.expect(tt.arrow); + this.checkYieldAwaitInDefaultParams(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.maybeInAsyncArrowHead = oldMaybeInAsyncArrowHead; + this.state.yieldPos = oldYieldPos; + this.state.awaitPos = oldAwaitPos; + // let foo = async bar => {}; + this.parseArrowExpression(node, params, true); + return node; + } + + // https://github.com/tc39/proposal-do-expressions + parseDo(): N.DoExpression { + this.expectPlugin("doExpressions"); + const node = this.startNode(); + this.next(); // eat `do` + const oldLabels = this.state.labels; + this.state.labels = []; + node.body = this.parseBlock(); + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + + // Parse the `super` keyword + parseSuper(): N.Super { + const node = this.startNode(); + this.next(); // eat `super` + if ( + this.match(tt.parenL) && + !this.scope.allowDirectSuper && + !this.options.allowSuperOutsideMethod + ) { + this.raise(node.start, Errors.SuperNotAllowed); + } else if ( + !this.scope.allowSuper && + !this.options.allowSuperOutsideMethod + ) { + this.raise(node.start, Errors.UnexpectedSuper); + } + + if ( + !this.match(tt.parenL) && + !this.match(tt.bracketL) && + !this.match(tt.dot) + ) { + this.raise(node.start, Errors.UnsupportedSuper); + } + + return this.finishNode(node, "Super"); + } + parseBooleanLiteral(): N.BooleanLiteral { const node = this.startNode(); node.value = this.match(tt._true); @@ -1220,19 +1271,22 @@ export default class ExpressionParser extends LValParser { } } - parseFunctionExpression(): N.FunctionExpression | N.MetaProperty { + parseFunctionOrFunctionSent(): N.FunctionExpression | N.MetaProperty { const node = this.startNode(); - // We do not do parseIdentifier here because when parseFunctionExpression + // We do not do parseIdentifier here because when parseFunctionOrFunctionSent // is called we already know that the current token is a "name" with the value "function" // This will improve perf a tiny little bit as we do not do validation but more importantly // here is that parseIdentifier will remove an item from the expression stack // if "function" or "class" is parsed as identifier (in objects e.g.), which should not happen here. - let meta = this.startNode(); - this.next(); - meta = this.createIdentifier(meta, "function"); + this.next(); // eat `function` - if (this.prodParam.hasYield && this.eat(tt.dot)) { + if (this.prodParam.hasYield && this.match(tt.dot)) { + const meta = this.createIdentifier( + this.startNodeAtNode(node), + "function", + ); + this.next(); // eat `.` return this.parseMetaProperty(node, meta, "sent"); } return this.parseFunction(node); @@ -1246,6 +1300,7 @@ export default class ExpressionParser extends LValParser { node.meta = meta; if (meta.name === "function" && propertyName === "sent") { + // https://github.com/tc39/proposal-function.sent#syntax-1 if (this.isContextual(propertyName)) { this.expectPlugin("functionSent"); } else if (!this.hasPlugin("functionSent")) { @@ -1270,9 +1325,10 @@ export default class ExpressionParser extends LValParser { return this.finishNode(node, "MetaProperty"); } + // https://tc39.es/ecma262/#prod-ImportMeta parseImportMetaProperty(node: N.MetaProperty): N.MetaProperty { const id = this.createIdentifier(this.startNodeAtNode(node), "import"); - this.expect(tt.dot); + this.next(); // eat `.` if (this.isContextual("meta")) { if (!this.inModule) { @@ -1305,12 +1361,13 @@ export default class ExpressionParser extends LValParser { return this.finishNode(node, type); } + // https://tc39.es/ecma262/#prod-CoverParenthesizedExpressionAndArrowParameterList parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; let val; - this.expect(tt.parenL); + this.next(); // eat `(` const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; const oldYieldPos = this.state.yieldPos; @@ -1449,20 +1506,13 @@ export default class ExpressionParser extends LValParser { return node; } - // New's precedence is slightly tricky. It must allow its argument to - // be a `[]` or dot subscript expression, but not a call — at least, - // not without wrapping it in parentheses. Thus, it uses the noCalls - // argument to parseSubscripts to prevent it from consuming the - // argument list. - - parseNew(): N.NewExpression | N.MetaProperty { + parseNewOrNewTarget(): N.NewExpression | N.MetaProperty { const node = this.startNode(); - - let meta = this.startNode(); this.next(); - meta = this.createIdentifier(meta, "new"); - - if (this.eat(tt.dot)) { + if (this.match(tt.dot)) { + // https://tc39.es/ecma262/#prod-NewTarget + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); const metaProp = this.parseMetaProperty(node, meta, "target"); if (!this.scope.inNonArrowFunction && !this.scope.inClass) { @@ -1480,6 +1530,16 @@ export default class ExpressionParser extends LValParser { return metaProp; } + return this.parseNew(node); + } + + // New's precedence is slightly tricky. It must allow its argument to + // be a `[]` or dot subscript expression, but not a call — at least, + // not without wrapping it in parentheses. Thus, it uses the noCalls + // argument to parseSubscripts to prevent it from consuming the + // argument list. + // https://tc39.es/ecma262/#prod-NewExpression + parseNew(node: N.Expression): N.NewExpression { node.callee = this.parseNoCallExpr(); if (node.callee.type === "Import") { @@ -1528,6 +1588,7 @@ export default class ExpressionParser extends LValParser { return this.finishNode(elem, "TemplateElement"); } + // https://tc39.es/ecma262/#prod-TemplateLiteral parseTemplate(isTagged: boolean): N.TemplateLiteral { const node = this.startNode(); this.next(); @@ -1546,12 +1607,17 @@ export default class ExpressionParser extends LValParser { // Parse an object literal, binding pattern, or record. - parseObj( + parseObjectLike( close: TokenType, isPattern: boolean, isRecord?: ?boolean, refExpressionErrors?: ?ExpressionErrors, ): T { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; const propHash: any = Object.create(null); let first = true; const node = this.startNode(); @@ -1571,7 +1637,7 @@ export default class ExpressionParser extends LValParser { } } - const prop = this.parseObjectMember(isPattern, refExpressionErrors); + const prop = this.parsePropertyDefinition(isPattern, refExpressionErrors); if (!isPattern) { // $FlowIgnore RestElement will never be returned if !isPattern this.checkProto(prop, isRecord, propHash, refExpressionErrors); @@ -1593,6 +1659,7 @@ export default class ExpressionParser extends LValParser { node.properties.push(prop); } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; let type = "ObjectExpression"; if (isPattern) { type = "ObjectPattern"; @@ -1602,19 +1669,21 @@ export default class ExpressionParser extends LValParser { return this.finishNode(node, type); } - isAsyncProp(prop: N.ObjectProperty): boolean { + // Check grammar production: + // IdentifierName *_opt PropertyName + // It is used in `parsePropertyDefinition` to detect AsyncMethod and Accessors + maybeAsyncOrAccessorProp(prop: N.ObjectProperty): boolean { return ( !prop.computed && prop.key.type === "Identifier" && - prop.key.name === "async" && (this.isLiteralPropertyName() || this.match(tt.bracketL) || - this.match(tt.star)) && - !this.hasPrecedingLineBreak() + this.match(tt.star)) ); } - parseObjectMember( + // https://tc39.es/ecma262/#prod-PropertyDefinition + parsePropertyDefinition( isPattern: boolean, refExpressionErrors?: ?ExpressionErrors, ): N.ObjectMember | N.SpreadElement | N.RestElement { @@ -1634,6 +1703,7 @@ export default class ExpressionParser extends LValParser { const prop = this.startNode(); let isGenerator = false; let isAsync = false; + let isAccessor = false; let startPos; let startLoc; @@ -1669,12 +1739,27 @@ export default class ExpressionParser extends LValParser { const containsEsc = this.state.containsEsc; this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); - if (!isPattern && !containsEsc && !isGenerator && this.isAsyncProp(prop)) { - isAsync = true; - isGenerator = this.eat(tt.star); - this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); - } else { - isAsync = false; + if ( + !isPattern && + !isGenerator && + !containsEsc && + this.maybeAsyncOrAccessorProp(prop) + ) { + // https://tc39.es/ecma262/#prod-AsyncMethod + // https://tc39.es/ecma262/#prod-AsyncGeneratorMethod + if (prop.key.name === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + isGenerator = this.eat(tt.star); + this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); + } + // get PropertyName[?Yield, ?Await] () { FunctionBody[~Yield, ~Await] } + // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] } + if (prop.key.name === "get" || prop.key.name === "set") { + isAccessor = true; + isGenerator = this.eat(tt.star); // tt.star is allowed in `maybeAsyncOrAccessorProp`, we will throw in `parseObjectMethod` later + prop.kind = prop.key.name; + this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); + } } this.parseObjPropValue( @@ -1684,24 +1769,13 @@ export default class ExpressionParser extends LValParser { isGenerator, isAsync, isPattern, + isAccessor, refExpressionErrors, - containsEsc, ); return prop; } - isGetterOrSetterMethod(prop: N.ObjectMethod, isPattern: boolean): boolean { - return ( - !isPattern && - !prop.computed && - prop.key.type === "Identifier" && - (prop.key.name === "get" || prop.key.name === "set") && - (this.isLiteralPropertyName() || // get foo() {} - this.match(tt.bracketL)) // get ["string"]() {} - ); - } - getGetterSetterExpectedParamCount( method: N.ObjectMethod | N.ClassMethod, ): number { @@ -1729,44 +1803,46 @@ export default class ExpressionParser extends LValParser { } } + // https://tc39.es/ecma262/#prod-MethodDefinition parseObjectMethod( prop: N.ObjectMethod, isGenerator: boolean, isAsync: boolean, isPattern: boolean, - containsEsc: boolean, + isAccessor: boolean, ): ?N.ObjectMethod { - if (isAsync || isGenerator || this.match(tt.parenL)) { - if (isPattern) this.unexpected(); - prop.kind = "method"; - prop.method = true; - return this.parseMethod( + if (isAccessor) { + // isAccessor implies isAsync: false, isPattern: false + if (isGenerator) this.unexpected(); + this.parseMethod( prop, - isGenerator, - isAsync, + /* isGenerator */ false, + /* isAsync */ false, /* isConstructor */ false, false, "ObjectMethod", ); + this.checkGetterSetterParams(prop); + return prop; } - if (!containsEsc && this.isGetterOrSetterMethod(prop, isPattern)) { - if (isGenerator || isAsync) this.unexpected(); - prop.kind = prop.key.name; - this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); - this.parseMethod( + if (isAsync || isGenerator || this.match(tt.parenL)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod( prop, - /* isGenerator */ false, - /* isAsync */ false, + isGenerator, + isAsync, /* isConstructor */ false, false, "ObjectMethod", ); - this.checkGetterSetterParams(prop); - return prop; } } + // if `isPattern` is true, parse https://tc39.es/ecma262/#prod-BindingProperty + // else https://tc39.es/ecma262/#prod-PropertyDefinition parseObjectProperty( prop: N.ObjectProperty, startPos: ?number, @@ -1822,8 +1898,8 @@ export default class ExpressionParser extends LValParser { isGenerator: boolean, isAsync: boolean, isPattern: boolean, + isAccessor: boolean, refExpressionErrors?: ?ExpressionErrors, - containsEsc: boolean, ): void { const node = this.parseObjectMethod( @@ -1831,7 +1907,7 @@ export default class ExpressionParser extends LValParser { isGenerator, isAsync, isPattern, - containsEsc, + isAccessor, ) || this.parseObjectProperty( prop, @@ -1923,6 +1999,43 @@ export default class ExpressionParser extends LValParser { return node; } + // parse an array literal or tuple literal + // https://tc39.es/ecma262/#prod-ArrayLiteral + // https://tc39.es/proposal-record-tuple/#prod-TupleLiteral + parseArrayLike( + close: TokenType, + canBePattern: boolean, + isTuple: boolean, + refExpressionErrors: ?ExpressionErrors, + ): N.ArrayExpression | N.TupleExpression { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList( + close, + /* allowEmpty */ !isTuple, + refExpressionErrors, + node, + ); + if (canBePattern && !this.state.maybeInArrowParameters) { + // This could be an array pattern: + // ([a: string, b: string]) => {} + // In this case, we don't have to call toReferencedList. We will + // call it, if needed, when we are sure that it is a parenthesized + // expression by calling toReferencedListDeep. + this.toReferencedList(node.elements); + } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode( + node, + isTuple ? "TupleExpression" : "ArrayExpression", + ); + } + // Parse arrow function expression. // If the parameters are provided, they will be converted to an // assignable list. diff --git a/packages/babel-parser/src/parser/lval.js b/packages/babel-parser/src/parser/lval.js index a952219dd482..e9b5e67589f2 100644 --- a/packages/babel-parser/src/parser/lval.js +++ b/packages/babel-parser/src/parser/lval.js @@ -235,15 +235,18 @@ export default class LValParser extends NodeUtils { return this.finishNode(node, "SpreadElement"); } + // https://tc39.es/ecma262/#prod-BindingRestProperty + // https://tc39.es/ecma262/#prod-BindingRestElement parseRestBinding(): RestElement { const node = this.startNode(); - this.next(); + this.next(); // eat `...` node.argument = this.parseBindingAtom(); return this.finishNode(node, "RestElement"); } // Parses lvalue (assignable) atom. parseBindingAtom(): Pattern { + // https://tc39.es/ecma262/#prod-BindingPattern switch (this.state.type) { case tt.bracketL: { const node = this.startNode(); @@ -257,12 +260,14 @@ export default class LValParser extends NodeUtils { } case tt.braceL: - return this.parseObj(tt.braceR, true); + return this.parseObjectLike(tt.braceR, true); } + // https://tc39.es/ecma262/#prod-BindingIdentifier return this.parseIdentifier(); } + // https://tc39.es/ecma262/#prod-BindingElementList parseBindingList( close: TokenType, closeCharCode: $Values, @@ -292,6 +297,7 @@ export default class LValParser extends NodeUtils { if (this.match(tt.at) && this.hasPlugin("decorators")) { this.raise(this.state.start, Errors.UnsupportedParameterDecorator); } + // invariant: hasPlugin("decorators-legacy") while (this.match(tt.at)) { decorators.push(this.parseDecorator()); } @@ -314,20 +320,22 @@ export default class LValParser extends NodeUtils { return elt; } + // Used by flow/typescript plugin to add type annotations to binding elements parseAssignableListItemTypes(param: Pattern): Pattern { return param; } // Parses assignment pattern around given atom if possible. - + // https://tc39.es/ecma262/#prod-BindingElement parseMaybeDefault( startPos?: ?number, startLoc?: ?Position, left?: ?Pattern, ): Pattern { - startLoc = startLoc || this.state.startLoc; - startPos = startPos || this.state.start; - left = left || this.parseBindingAtom(); + startLoc = startLoc ?? this.state.startLoc; + startPos = startPos ?? this.state.start; + // $FlowIgnore + left = left ?? this.parseBindingAtom(); if (!this.eat(tt.eq)) return left; const node = this.startNodeAt(startPos, startLoc); diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 224515cd76e2..8f584240d85f 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -141,7 +141,9 @@ export default class StatementParser extends ExpressionParser { // regular expression literal. This is to handle cases like // `if (foo) /blah/.exec(foo)`, where looking at the previous token // does not help. - + // https://tc39.es/ecma262/#prod-Statement + // ImportDeclaration and ExportDeclaration are also handled here so we can throw recoverable errors + // when they are not at the top level parseStatement(context: ?string, topLevel?: boolean): N.Statement { if (this.match(tt.at)) { this.parseDecorators(true); @@ -216,21 +218,22 @@ export default class StatementParser extends ExpressionParser { return this.parseBlock(); case tt.semi: return this.parseEmptyStatement(node); - case tt._export: case tt._import: { const nextTokenCharCode = this.lookaheadCharCode(); if ( - nextTokenCharCode === charCodes.leftParenthesis || - nextTokenCharCode === charCodes.dot + nextTokenCharCode === charCodes.leftParenthesis || // import() + nextTokenCharCode === charCodes.dot // import.meta ) { break; } - + } + // fall through + case tt._export: { if (!this.options.allowImportExportEverywhere && !topLevel) { this.raise(this.state.start, Errors.UnexpectedImportExport); } - this.next(); + this.next(); // eat `import`/`export` let result; if (starttype === tt._import) { @@ -847,6 +850,8 @@ export default class StatementParser extends ExpressionParser { } // Undefined directives means that directives are not allowed. + // https://tc39.es/ecma262/#prod-Block + // https://tc39.es/ecma262/#prod-ModuleBody parseBlockOrModuleBlockBody( body: N.Statement[], directives: ?(N.Directive[]), @@ -1161,10 +1166,9 @@ export default class StatementParser extends ExpressionParser { this.parseClassId(node, isStatement, optionalId); this.parseClassSuper(node); + // this.state.strict is restored in parseClassBody node.body = this.parseClassBody(!!node.superClass, oldStrict); - this.state.strict = oldStrict; - return this.finishNode( node, isStatement ? "ClassDeclaration" : "ClassExpression", @@ -1188,6 +1192,7 @@ export default class StatementParser extends ExpressionParser { ); } + // https://tc39.es/ecma262/#prod-ClassBody parseClassBody( constructorAllowsSuper: boolean, oldStrict?: boolean, @@ -1238,11 +1243,9 @@ export default class StatementParser extends ExpressionParser { } }); - if (!oldStrict) { - this.state.strict = false; - } + this.state.strict = oldStrict; - this.next(); + this.next(); // eat `}` if (decorators.length) { throw this.raise(this.state.start, Errors.TrailingDecorator); @@ -1253,13 +1256,26 @@ export default class StatementParser extends ExpressionParser { return this.finishNode(classBody, "ClassBody"); } + // Check grammar production: + // IdentifierName *_opt ClassElementName + // It is used in `parsePropertyDefinition` to detect AsyncMethod and Accessors + maybeClassModifier(prop: N.ObjectProperty): boolean { + return ( + !prop.computed && + prop.key.type === "Identifier" && + (this.isLiteralPropertyName() || + this.match(tt.bracketL) || + this.match(tt.star) || + this.match(tt.hash)) + ); + } + // returns true if the current identifier is a method/field name, // false if it is a modifier parseClassMemberFromModifier( classBody: N.ClassBody, member: N.ClassMember, ): boolean { - const containsEsc = this.state.containsEsc; const key = this.parseIdentifier(true); // eats the modifier if (this.isClassMethod()) { @@ -1288,10 +1304,7 @@ export default class StatementParser extends ExpressionParser { prop.static = false; classBody.body.push(this.parseClassProperty(prop)); return true; - } else if (containsEsc) { - throw this.unexpected(); } - return false; } @@ -1337,7 +1350,7 @@ export default class StatementParser extends ExpressionParser { if (this.eat(tt.star)) { // a generator method.kind = "method"; - this.parseClassPropertyName(method); + this.parseClassElementName(method); if (method.key.type === "PrivateName") { // Private generator method @@ -1362,7 +1375,7 @@ export default class StatementParser extends ExpressionParser { } const containsEsc = this.state.containsEsc; - const key = this.parseClassPropertyName(member); + const key = this.parseClassElementName(member); const isPrivate = key.type === "PrivateName"; // Check the key is not a computed expression or string literal. const isSimple = key.type === "Identifier"; @@ -1421,7 +1434,7 @@ export default class StatementParser extends ExpressionParser { method.kind = "method"; // The so-called parsed name would have been "async": get the real name. - this.parseClassPropertyName(method); + this.parseClassElementName(method); this.parsePostMemberNameModifiers(publicMember); if (method.key.type === "PrivateName") { @@ -1456,7 +1469,7 @@ export default class StatementParser extends ExpressionParser { // a getter or setter method.kind = key.name; // The so-called parsed name would have been "get/set": get the real name. - this.parseClassPropertyName(publicMethod); + this.parseClassElementName(publicMethod); if (method.key.type === "PrivateName") { // private getter/setter @@ -1488,7 +1501,8 @@ export default class StatementParser extends ExpressionParser { } } - parseClassPropertyName(member: N.ClassMember): N.Expression | N.Identifier { + // https://tc39.es/proposal-class-fields/#prod-ClassElementName + parseClassElementName(member: N.ClassMember): N.Expression | N.Identifier { const key = this.parsePropertyName(member, /* isPrivateNameAllowed */ true); if ( @@ -1660,11 +1674,13 @@ export default class StatementParser extends ExpressionParser { } } + // https://tc39.es/ecma262/#prod-ClassHeritage parseClassSuper(node: N.Class): void { node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null; } // Parses module export declaration. + // https://tc39.es/ecma262/#prod-ExportDeclaration parseExport(node: N.Node): N.AnyExport { const hasDefault = this.maybeParseExportDefaultSpecifier(node); @@ -1839,7 +1855,7 @@ export default class StatementParser extends ExpressionParser { isExportDefaultSpecifier(): boolean { if (this.match(tt.name)) { const value = this.state.value; - if (value === "async" || value === "let") { + if ((value === "async" && !this.state.containsEsc) || value === "let") { return false; } if ( @@ -2068,6 +2084,7 @@ export default class StatementParser extends ExpressionParser { } // Parses import declaration. + // https://tc39.es/ecma262/#prod-ImportDeclaration parseImport(node: N.Node): N.AnyImport { // import '...' @@ -2232,6 +2249,7 @@ export default class StatementParser extends ExpressionParser { } } + // https://tc39.es/ecma262/#prod-ImportSpecifier parseImportSpecifier(node: N.ImportDeclaration): void { const specifier = this.startNode(); specifier.imported = this.parseIdentifier(true); diff --git a/packages/babel-parser/src/plugins/estree.js b/packages/babel-parser/src/plugins/estree.js index 86c5872d43b0..06d79f3835dc 100644 --- a/packages/babel-parser/src/plugins/estree.js +++ b/packages/babel-parser/src/plugins/estree.js @@ -313,14 +313,14 @@ export default (superClass: Class): Class => isGenerator: boolean, isAsync: boolean, isPattern: boolean, - containsEsc: boolean, + isAccessor: boolean, ): ?N.ObjectMethod { const node: N.EstreeProperty = (super.parseObjectMethod( prop, isGenerator, isAsync, isPattern, - containsEsc, + isAccessor, ): any); if (node) { diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index 9e052f4e80fb..a5e597cc7949 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -2362,8 +2362,8 @@ export default (superClass: Class): Class => isGenerator: boolean, isAsync: boolean, isPattern: boolean, + isAccessor: boolean, refExpressionErrors: ?ExpressionErrors, - containsEsc: boolean, ): void { if ((prop: $FlowFixMe).variance) { this.unexpected((prop: $FlowFixMe).variance.start); @@ -2373,7 +2373,7 @@ export default (superClass: Class): Class => let typeParameters; // method shorthand - if (this.isRelational("<")) { + if (this.isRelational("<") && !isAccessor) { typeParameters = this.flowParseTypeParameterDeclaration(); if (!this.match(tt.parenL)) this.unexpected(); } @@ -2385,8 +2385,8 @@ export default (superClass: Class): Class => isGenerator, isAsync, isPattern, + isAccessor, refExpressionErrors, - containsEsc, ); // add typeParameters if we found them diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index bb3a5a10ccb7..a9b3bf2e8b92 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -1823,13 +1823,14 @@ export default (superClass: Class): Class => node.typeParameters = typeArguments; return this.finishCallExpression(node, state.optionalChainMember); } else if (this.match(tt.backQuote)) { - return this.parseTaggedTemplateExpression( + const result = this.parseTaggedTemplateExpression( + base, startPos, startLoc, - base, state, - typeArguments, ); + result.typeParameters = typeArguments; + return result; } } diff --git a/packages/babel-parser/src/types.js b/packages/babel-parser/src/types.js index 3566baaafbe2..6d77c5c0d00d 100644 --- a/packages/babel-parser/src/types.js +++ b/packages/babel-parser/src/types.js @@ -389,6 +389,11 @@ export type ArrayExpression = NodeBase & { elements: $ReadOnlyArray, }; +export type DoExpression = NodeBase & { + type: "DoExpression", + body: ?BlockStatement, +}; + export type TupleExpression = NodeBase & { type: "TupleExpression", elements: $ReadOnlyArray, diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-export-async-function/options.json b/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-export-async-function/options.json index f2ecbd9741e7..9d60866b80c3 100644 --- a/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-export-async-function/options.json +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-export-async-function/options.json @@ -1,3 +1,3 @@ { "throws": "Unexpected token, expected \"{\" (1:7)" -} +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-arrow/input.js b/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-arrow/input.js new file mode 100644 index 000000000000..0b304c87dfbb --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-arrow/input.js @@ -0,0 +1,2 @@ +async x +=> x diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-arrow/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-arrow/output.json new file mode 100644 index 000000000000..19ade021f45f --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-arrow/output.json @@ -0,0 +1,39 @@ +{ + "type": "File", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":2,"column":4}}, + "errors": [ + "SyntaxError: No line break is allowed before '=>' (2:2)" + ], + "program": { + "type": "Program", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":2,"column":4}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":2,"column":4}}, + "expression": { + "type": "ArrowFunctionExpression", + "start":0,"end":12,"loc":{"start":{"line":1,"column":0},"end":{"line":2,"column":4}}, + "id": null, + "generator": false, + "async": true, + "params": [ + { + "type": "Identifier", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7},"identifierName":"x"}, + "name": "x" + } + ], + "body": { + "type": "Identifier", + "start":11,"end":12,"loc":{"start":{"line":2,"column":3},"end":{"line":2,"column":4},"identifierName":"x"}, + "name": "x" + } + } + } + ], + "directives": [] + } +} diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/newline-arrow/input.js b/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-binding/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/es2017/async-functions/newline-arrow/input.js rename to packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-binding/input.js diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/newline-arrow/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-binding/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/es2017/async-functions/newline-arrow/output.json rename to packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-binding/output.json diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/newline/input.js b/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-function/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/es2017/async-functions/newline/input.js rename to packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-function/input.js diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/newline/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-function/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/es2017/async-functions/newline/output.json rename to packages/babel-parser/test/fixtures/es2017/async-functions/newline-before-function/output.json diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-and-ns/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-and-ns/options.json deleted file mode 100644 index fb17f33a28b5..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-and-ns/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["exportDefaultFrom"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-default-asi/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-default-asi/options.json deleted file mode 100644 index 164d90422fb2..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-default-asi/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "sourceType": "module", - "plugins": ["exportDefaultFrom"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-default/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-default/options.json deleted file mode 100644 index 164d90422fb2..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-default/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "sourceType": "module", - "plugins": ["exportDefaultFrom"] -} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-escaped/input.js b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-escaped/input.js new file mode 100644 index 000000000000..1b9fbd91fe7c --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-escaped/input.js @@ -0,0 +1 @@ +export asyn\u{63} from "async"; diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-escaped/output.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-escaped/output.json new file mode 100644 index 000000000000..33806b3628a8 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-escaped/output.json @@ -0,0 +1,37 @@ +{ + "type": "File", + "start":0,"end":31,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}}, + "program": { + "type": "Program", + "start":0,"end":31,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "ExportNamedDeclaration", + "start":0,"end":31,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}}, + "specifiers": [ + { + "type": "ExportDefaultSpecifier", + "start":7,"end":17,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":17}}, + "exported": { + "type": "Identifier", + "start":7,"end":17,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":17},"identifierName":"async"}, + "name": "async" + } + } + ], + "source": { + "type": "StringLiteral", + "start":23,"end":30,"loc":{"start":{"line":1,"column":23},"end":{"line":1,"column":30}}, + "extra": { + "rawValue": "async", + "raw": "\"async\"" + }, + "value": "async" + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-escaped/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-escaped/options.json deleted file mode 100644 index fb17f33a28b5..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-escaped/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["exportDefaultFrom"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/options.json deleted file mode 100644 index fb17f33a28b5..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-from-identifier-parenthesized/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["exportDefaultFrom"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-type-without-flow/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-type-without-flow/options.json deleted file mode 100644 index fb17f33a28b5..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-type-without-flow/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["exportDefaultFrom"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default/options.json deleted file mode 100644 index fb17f33a28b5..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/export-extensions/default/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["exportDefaultFrom"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/invalid-default-from-identifier/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/invalid-default-from-identifier/options.json deleted file mode 100644 index fb17f33a28b5..000000000000 --- a/packages/babel-parser/test/fixtures/experimental/export-extensions/invalid-default-from-identifier/options.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugins": ["exportDefaultFrom"], - "sourceType": "module" -} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-and-named/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/experimental/export-extensions/default-and-named/options.json rename to packages/babel-parser/test/fixtures/experimental/export-extensions/options.json diff --git a/packages/babel-parser/test/fixtures/flow/type-annotations/20/output.json b/packages/babel-parser/test/fixtures/flow/type-annotations/20/output.json index 82b7ad2a9684..32481b6a8998 100644 --- a/packages/babel-parser/test/fixtures/flow/type-annotations/20/output.json +++ b/packages/babel-parser/test/fixtures/flow/type-annotations/20/output.json @@ -34,7 +34,6 @@ }, "computed": false, "kind": "set", - "variance": null, "id": null, "generator": false, "async": false, diff --git a/packages/babel-parser/test/fixtures/flow/type-annotations/21/output.json b/packages/babel-parser/test/fixtures/flow/type-annotations/21/output.json index 1ac23f768bd3..06c830a31842 100644 --- a/packages/babel-parser/test/fixtures/flow/type-annotations/21/output.json +++ b/packages/babel-parser/test/fixtures/flow/type-annotations/21/output.json @@ -34,7 +34,6 @@ }, "computed": false, "kind": "set", - "variance": null, "id": null, "generator": false, "async": false, diff --git a/packages/babel-parser/test/fixtures/flow/type-annotations/22/output.json b/packages/babel-parser/test/fixtures/flow/type-annotations/22/output.json index d9e9cf02431f..6c446c312072 100644 --- a/packages/babel-parser/test/fixtures/flow/type-annotations/22/output.json +++ b/packages/babel-parser/test/fixtures/flow/type-annotations/22/output.json @@ -34,7 +34,6 @@ }, "computed": false, "kind": "get", - "variance": null, "id": null, "generator": false, "async": false, From c29138fd72de15dc89a10571d4ec09f35d5737b4 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Tue, 4 Aug 2020 13:07:25 -0700 Subject: [PATCH 61/90] Do not cache non-existent files forever (#11906) --- packages/babel-core/src/config/files/utils.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/babel-core/src/config/files/utils.js b/packages/babel-core/src/config/files/utils.js index 6a8818c2b3b1..57b60ec4914c 100644 --- a/packages/babel-core/src/config/files/utils.js +++ b/packages/babel-core/src/config/files/utils.js @@ -16,7 +16,6 @@ export function makeStaticFileCache( const cached = cache.invalidate(() => fileMtime(filepath)); if (cached === null) { - cache.forever(); return null; } From a1eabb84ead333fcaeea22787113f5ad4da06bad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 4 Aug 2020 17:00:21 -0400 Subject: [PATCH 62/90] rescan gt/lt token after TsAsExpression is parsed (#11912) * refactor: move inType checks to flow plugin * polish: replace hardcoded char codes * fix: rescan greater/less token after asExpression is parsed --- packages/babel-parser/src/plugins/flow.js | 3 + .../src/plugins/typescript/index.js | 18 ++- packages/babel-parser/src/tokenizer/index.js | 2 +- .../test/fixtures/typescript/cast/as/input.ts | 2 + .../fixtures/typescript/cast/as/output.json | 121 +++++++++++++++--- 5 files changed, 126 insertions(+), 20 deletions(-) diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index a5e597cc7949..b532ce04f47e 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -2135,6 +2135,9 @@ export default (superClass: Class): Class => (code === charCodes.greaterThan || code === charCodes.lessThan) ) { return this.finishOp(tt.relational, 1); + } else if (this.state.inType && code === charCodes.questionMark) { + // allow double nullable types in Flow: ??string + return this.finishOp(tt.question, 1); } else if (isIteratorStart(code, next)) { this.state.isIterator = true; return super.readWord(); diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index a9b3bf2e8b92..a101638448e0 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -1884,6 +1884,8 @@ export default (superClass: Class): Class => node.typeAnnotation = this.tsNextThenParseType(); } this.finishNode(node, "TSAsExpression"); + // rescan `<`, `>` because they were scanned when this.state.inType was true + this.reScan_lt_gt(); return this.parseExprOp( node, leftStartPos, @@ -2628,13 +2630,27 @@ export default (superClass: Class): Class => // ensure that inside types, we bypass the jsx parser plugin getTokenFromCode(code: number): void { - if (this.state.inType && (code === 62 || code === 60)) { + if ( + this.state.inType && + (code === charCodes.greaterThan || code === charCodes.lessThan) + ) { return this.finishOp(tt.relational, 1); } else { return super.getTokenFromCode(code); } } + // used after we have finished parsing types + reScan_lt_gt() { + if (this.match(tt.relational)) { + const code = this.input.charCodeAt(this.state.start); + if (code === charCodes.lessThan || code === charCodes.greaterThan) { + this.state.pos -= 1; + this.readToken_lt_gt(code); + } + } + } + toAssignableList(exprList: N.Expression[]): $ReadOnlyArray { for (let i = 0; i < exprList.length; i++) { const expr = exprList[i]; diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index 74db04c5914f..fca85af541e8 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -693,7 +693,7 @@ export default class Tokenizer extends ParserErrors { // '?' const next = this.input.charCodeAt(this.state.pos + 1); const next2 = this.input.charCodeAt(this.state.pos + 2); - if (next === charCodes.questionMark && !this.state.inType) { + if (next === charCodes.questionMark) { if (next2 === charCodes.equalsTo) { // '??=' this.finishOp(tt.assign, 3); diff --git a/packages/babel-parser/test/fixtures/typescript/cast/as/input.ts b/packages/babel-parser/test/fixtures/typescript/cast/as/input.ts index 4ecdb2197e25..3d6627d18956 100644 --- a/packages/babel-parser/test/fixtures/typescript/cast/as/input.ts +++ b/packages/babel-parser/test/fixtures/typescript/cast/as/input.ts @@ -1,4 +1,6 @@ x as T; x < y as boolean; // (x < y) as boolean; +x as boolean <= y; // (x as boolean) <= y; x === 1 as number; // x === (1 as number); x as any as T; +x as boolean ?? y; // (x as boolean) ?? y; diff --git a/packages/babel-parser/test/fixtures/typescript/cast/as/output.json b/packages/babel-parser/test/fixtures/typescript/cast/as/output.json index 3cba96e6515c..8cac92ca5770 100644 --- a/packages/babel-parser/test/fixtures/typescript/cast/as/output.json +++ b/packages/babel-parser/test/fixtures/typescript/cast/as/output.json @@ -1,9 +1,9 @@ { "type": "File", - "start":0,"end":106,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":14}}, + "start":0,"end":192,"loc":{"start":{"line":1,"column":0},"end":{"line":6,"column":42}}, "program": { "type": "Program", - "start":0,"end":106,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":14}}, + "start":0,"end":192,"loc":{"start":{"line":1,"column":0},"end":{"line":6,"column":42}}, "sourceType": "module", "interpreter": null, "body": [ @@ -70,17 +70,58 @@ "type": "BinaryExpression", "start":49,"end":66,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":17}}, "left": { + "type": "TSAsExpression", + "start":49,"end":61,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":12}}, + "expression": { + "type": "Identifier", + "start":49,"end":50,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":1},"identifierName":"x"}, + "name": "x" + }, + "typeAnnotation": { + "type": "TSBooleanKeyword", + "start":54,"end":61,"loc":{"start":{"line":3,"column":5},"end":{"line":3,"column":12}} + } + }, + "operator": "<=", + "right": { "type": "Identifier", - "start":49,"end":50,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":1},"identifierName":"x"}, + "start":65,"end":66,"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":17},"identifierName":"y"}, + "name": "y" + } + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " (x < y) as boolean;", + "start":26,"end":48,"loc":{"start":{"line":2,"column":18},"end":{"line":2,"column":40}} + } + ], + "trailingComments": [ + { + "type": "CommentLine", + "value": " (x as boolean) <= y;", + "start":68,"end":91,"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":42}} + } + ] + }, + { + "type": "ExpressionStatement", + "start":92,"end":110,"loc":{"start":{"line":4,"column":0},"end":{"line":4,"column":18}}, + "expression": { + "type": "BinaryExpression", + "start":92,"end":109,"loc":{"start":{"line":4,"column":0},"end":{"line":4,"column":17}}, + "left": { + "type": "Identifier", + "start":92,"end":93,"loc":{"start":{"line":4,"column":0},"end":{"line":4,"column":1},"identifierName":"x"}, "name": "x" }, "operator": "===", "right": { "type": "TSAsExpression", - "start":55,"end":66,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":17}}, + "start":98,"end":109,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":17}}, "expression": { "type": "NumericLiteral", - "start":55,"end":56,"loc":{"start":{"line":3,"column":6},"end":{"line":3,"column":7}}, + "start":98,"end":99,"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":7}}, "extra": { "rawValue": 1, "raw": "1" @@ -89,50 +130,50 @@ }, "typeAnnotation": { "type": "TSNumberKeyword", - "start":60,"end":66,"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":17}} + "start":103,"end":109,"loc":{"start":{"line":4,"column":11},"end":{"line":4,"column":17}} } } }, "leadingComments": [ { "type": "CommentLine", - "value": " (x < y) as boolean;", - "start":26,"end":48,"loc":{"start":{"line":2,"column":18},"end":{"line":2,"column":40}} + "value": " (x as boolean) <= y;", + "start":68,"end":91,"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":42}} } ], "trailingComments": [ { "type": "CommentLine", "value": " x === (1 as number);", - "start":68,"end":91,"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":42}} + "start":111,"end":134,"loc":{"start":{"line":4,"column":19},"end":{"line":4,"column":42}} } ] }, { "type": "ExpressionStatement", - "start":92,"end":106,"loc":{"start":{"line":4,"column":0},"end":{"line":4,"column":14}}, + "start":135,"end":149,"loc":{"start":{"line":5,"column":0},"end":{"line":5,"column":14}}, "expression": { "type": "TSAsExpression", - "start":92,"end":105,"loc":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}}, + "start":135,"end":148,"loc":{"start":{"line":5,"column":0},"end":{"line":5,"column":13}}, "expression": { "type": "TSAsExpression", - "start":92,"end":100,"loc":{"start":{"line":4,"column":0},"end":{"line":4,"column":8}}, + "start":135,"end":143,"loc":{"start":{"line":5,"column":0},"end":{"line":5,"column":8}}, "expression": { "type": "Identifier", - "start":92,"end":93,"loc":{"start":{"line":4,"column":0},"end":{"line":4,"column":1},"identifierName":"x"}, + "start":135,"end":136,"loc":{"start":{"line":5,"column":0},"end":{"line":5,"column":1},"identifierName":"x"}, "name": "x" }, "typeAnnotation": { "type": "TSAnyKeyword", - "start":97,"end":100,"loc":{"start":{"line":4,"column":5},"end":{"line":4,"column":8}} + "start":140,"end":143,"loc":{"start":{"line":5,"column":5},"end":{"line":5,"column":8}} } }, "typeAnnotation": { "type": "TSTypeReference", - "start":104,"end":105,"loc":{"start":{"line":4,"column":12},"end":{"line":4,"column":13}}, + "start":147,"end":148,"loc":{"start":{"line":5,"column":12},"end":{"line":5,"column":13}}, "typeName": { "type": "Identifier", - "start":104,"end":105,"loc":{"start":{"line":4,"column":12},"end":{"line":4,"column":13},"identifierName":"T"}, + "start":147,"end":148,"loc":{"start":{"line":5,"column":12},"end":{"line":5,"column":13},"identifierName":"T"}, "name": "T" } } @@ -141,7 +182,41 @@ { "type": "CommentLine", "value": " x === (1 as number);", - "start":68,"end":91,"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":42}} + "start":111,"end":134,"loc":{"start":{"line":4,"column":19},"end":{"line":4,"column":42}} + } + ] + }, + { + "type": "ExpressionStatement", + "start":150,"end":168,"loc":{"start":{"line":6,"column":0},"end":{"line":6,"column":18}}, + "expression": { + "type": "LogicalExpression", + "start":150,"end":167,"loc":{"start":{"line":6,"column":0},"end":{"line":6,"column":17}}, + "left": { + "type": "TSAsExpression", + "start":150,"end":162,"loc":{"start":{"line":6,"column":0},"end":{"line":6,"column":12}}, + "expression": { + "type": "Identifier", + "start":150,"end":151,"loc":{"start":{"line":6,"column":0},"end":{"line":6,"column":1},"identifierName":"x"}, + "name": "x" + }, + "typeAnnotation": { + "type": "TSBooleanKeyword", + "start":155,"end":162,"loc":{"start":{"line":6,"column":5},"end":{"line":6,"column":12}} + } + }, + "operator": "??", + "right": { + "type": "Identifier", + "start":166,"end":167,"loc":{"start":{"line":6,"column":16},"end":{"line":6,"column":17},"identifierName":"y"}, + "name": "y" + } + }, + "trailingComments": [ + { + "type": "CommentLine", + "value": " (x as boolean) ?? y;", + "start":169,"end":192,"loc":{"start":{"line":6,"column":19},"end":{"line":6,"column":42}} } ] } @@ -156,8 +231,18 @@ }, { "type": "CommentLine", - "value": " x === (1 as number);", + "value": " (x as boolean) <= y;", "start":68,"end":91,"loc":{"start":{"line":3,"column":19},"end":{"line":3,"column":42}} + }, + { + "type": "CommentLine", + "value": " x === (1 as number);", + "start":111,"end":134,"loc":{"start":{"line":4,"column":19},"end":{"line":4,"column":42}} + }, + { + "type": "CommentLine", + "value": " (x as boolean) ?? y;", + "start":169,"end":192,"loc":{"start":{"line":6,"column":19},"end":{"line":6,"column":42}} } ] } \ No newline at end of file From 953ae82159b67b4487f837a17a1b8d5e305a8e5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 4 Aug 2020 17:58:35 -0400 Subject: [PATCH 63/90] v7.11.1 --- lerna.json | 2 +- packages/babel-core/package.json | 4 ++-- packages/babel-parser/package.json | 2 +- packages/babel-plugin-transform-block-scoping/package.json | 4 ++-- packages/babel-runtime-corejs2/package.json | 2 +- packages/babel-runtime-corejs3/package.json | 2 +- packages/babel-runtime/package.json | 2 +- packages/babel-standalone/package.json | 6 +++--- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lerna.json b/lerna.json index d5793088412d..b83257c8ed22 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "7.11.0", + "version": "7.11.1", "changelog": { "repo": "babel/babel", "cacheDir": ".changelog", diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index 59c14a7f4286..9337bbb0d09f 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -1,6 +1,6 @@ { "name": "@babel/core", - "version": "7.11.0", + "version": "7.11.1", "description": "Babel compiler core.", "main": "lib/index.js", "author": "Sebastian McKenzie ", @@ -47,7 +47,7 @@ "@babel/generator": "^7.11.0", "@babel/helper-module-transforms": "^7.11.0", "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.0", + "@babel/parser": "^7.11.1", "@babel/template": "^7.10.4", "@babel/traverse": "^7.11.0", "@babel/types": "^7.11.0", diff --git a/packages/babel-parser/package.json b/packages/babel-parser/package.json index c16ee5e4d362..8ee78e9dc2e6 100644 --- a/packages/babel-parser/package.json +++ b/packages/babel-parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/parser", - "version": "7.11.0", + "version": "7.11.1", "description": "A JavaScript parser", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", diff --git a/packages/babel-plugin-transform-block-scoping/package.json b/packages/babel-plugin-transform-block-scoping/package.json index caf6c28e2c41..4d56a0db2b6c 100644 --- a/packages/babel-plugin-transform-block-scoping/package.json +++ b/packages/babel-plugin-transform-block-scoping/package.json @@ -1,6 +1,6 @@ { "name": "@babel/plugin-transform-block-scoping", - "version": "7.10.5", + "version": "7.11.1", "description": "Compile ES2015 block scoping (const and let) to ES5", "repository": { "type": "git", @@ -22,7 +22,7 @@ "@babel/core": "^7.0.0-0" }, "devDependencies": { - "@babel/core": "^7.10.5", + "@babel/core": "^7.11.1", "@babel/helper-plugin-test-runner": "^7.10.4" } } diff --git a/packages/babel-runtime-corejs2/package.json b/packages/babel-runtime-corejs2/package.json index ab9887a3ab1c..dfcdf2244bb1 100644 --- a/packages/babel-runtime-corejs2/package.json +++ b/packages/babel-runtime-corejs2/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime-corejs2", - "version": "7.11.0", + "version": "7.11.1", "description": "babel's modular runtime helpers with core-js@2 polyfilling", "license": "MIT", "publishConfig": { diff --git a/packages/babel-runtime-corejs3/package.json b/packages/babel-runtime-corejs3/package.json index cbb79f54eb66..710c29520b6f 100644 --- a/packages/babel-runtime-corejs3/package.json +++ b/packages/babel-runtime-corejs3/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime-corejs3", - "version": "7.11.0", + "version": "7.11.1", "description": "babel's modular runtime helpers with core-js@3 polyfilling", "license": "MIT", "publishConfig": { diff --git a/packages/babel-runtime/package.json b/packages/babel-runtime/package.json index a278e0d400a5..263ce7b92619 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime", - "version": "7.11.0", + "version": "7.11.1", "description": "babel's modular runtime helpers", "license": "MIT", "publishConfig": { diff --git a/packages/babel-standalone/package.json b/packages/babel-standalone/package.json index 277d58bab4d9..872a0fb532cd 100644 --- a/packages/babel-standalone/package.json +++ b/packages/babel-standalone/package.json @@ -1,6 +1,6 @@ { "name": "@babel/standalone", - "version": "7.11.0", + "version": "7.11.1", "description": "Standalone build of Babel for use in non-Node.js environments.", "main": "babel.js", "files": [ @@ -8,7 +8,7 @@ "babel.min.js" ], "devDependencies": { - "@babel/core": "^7.11.0", + "@babel/core": "^7.11.1", "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-external-helpers": "^7.10.4", "@babel/plugin-proposal-async-generator-functions": "^7.10.5", @@ -53,7 +53,7 @@ "@babel/plugin-transform-arrow-functions": "^7.10.4", "@babel/plugin-transform-async-to-generator": "^7.10.4", "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.5", + "@babel/plugin-transform-block-scoping": "^7.11.1", "@babel/plugin-transform-classes": "^7.10.4", "@babel/plugin-transform-computed-properties": "^7.10.4", "@babel/plugin-transform-destructuring": "^7.10.4", From de75d4f081cbec058fc6bfc3b175567c5358df89 Mon Sep 17 00:00:00 2001 From: Babel Bot Date: Tue, 4 Aug 2020 22:13:36 +0000 Subject: [PATCH 64/90] Add v7.11.1 to CHANGELOG.md [skip ci] --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dab279a33d87..54d82b94d36e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,24 @@ See [`eslint-plugin-babel`'s releases](https://github.com/babel/eslint-plugin-ba +## v7.11.1 (2020-08-04) + +#### :bug: Bug Fix +* `babel-parser` + * [#11912](https://github.com/babel/babel/pull/11912) rescan gt/lt token after TsAsExpression is parsed ([@JLHwung](https://github.com/JLHwung)) +* `babel-core` + * [#11906](https://github.com/babel/babel/pull/11906) Do not cache non-existent config files forever ([@devongovett](https://github.com/devongovett)) +* `babel-plugin-transform-block-scoping`, `babel-standalone` + * [#11901](https://github.com/babel/babel/pull/11901) fix: ensure `[…map.keys]` can be correctly transformed in loose mode ([@JLHwung](https://github.com/JLHwung)) + +#### :memo: Documentation +* [#11900](https://github.com/babel/babel/pull/11900) docs: remove experimental warning on README ([@JLHwung](https://github.com/JLHwung)) + +#### :house: Internal +* `babel-parser` + * [#11871](https://github.com/babel/babel/pull/11871) Parser refactoring ([@JLHwung](https://github.com/JLHwung)) +* Other + * [#11899](https://github.com/babel/babel/pull/11899) Update `@babel/*` deps ([@JLHwung](https://github.com/JLHwung)) ## v7.11.0 (2020-07-30) #### :eyeglasses: Spec Compliance From 92434269af1f7c5174162ac28843c05ed9ba1622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 5 Aug 2020 09:19:59 -0400 Subject: [PATCH 65/90] fix: do not eat get/set after async is parsed (#11916) --- .../babel-parser/src/parser/expression.js | 2 +- .../async-shorthand-method/input.js | 4 ++ .../async-shorthand-method/output.json | 71 +++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 packages/babel-parser/test/fixtures/es2017/async-functions/async-shorthand-method/input.js create mode 100644 packages/babel-parser/test/fixtures/es2017/async-functions/async-shorthand-method/output.json diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 26527c8300bb..820620eb8395 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1754,7 +1754,7 @@ export default class ExpressionParser extends LValParser { } // get PropertyName[?Yield, ?Await] () { FunctionBody[~Yield, ~Await] } // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] } - if (prop.key.name === "get" || prop.key.name === "set") { + else if (prop.key.name === "get" || prop.key.name === "set") { isAccessor = true; isGenerator = this.eat(tt.star); // tt.star is allowed in `maybeAsyncOrAccessorProp`, we will throw in `parseObjectMethod` later prop.kind = prop.key.name; diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/async-shorthand-method/input.js b/packages/babel-parser/test/fixtures/es2017/async-functions/async-shorthand-method/input.js new file mode 100644 index 000000000000..a165b65ecfa5 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/async-shorthand-method/input.js @@ -0,0 +1,4 @@ +({ + async get() {}, + async set() {} +}) diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/async-shorthand-method/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/async-shorthand-method/output.json new file mode 100644 index 000000000000..11c4f4bd7407 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/async-shorthand-method/output.json @@ -0,0 +1,71 @@ +{ + "type": "File", + "start":0,"end":40,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "program": { + "type": "Program", + "start":0,"end":40,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":40,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "expression": { + "type": "ObjectExpression", + "start":1,"end":39,"loc":{"start":{"line":1,"column":1},"end":{"line":4,"column":1}}, + "properties": [ + { + "type": "ObjectMethod", + "start":5,"end":19,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":16}}, + "method": true, + "key": { + "type": "Identifier", + "start":11,"end":14,"loc":{"start":{"line":2,"column":8},"end":{"line":2,"column":11},"identifierName":"get"}, + "name": "get" + }, + "computed": false, + "kind": "method", + "id": null, + "generator": false, + "async": true, + "params": [], + "body": { + "type": "BlockStatement", + "start":17,"end":19,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":16}}, + "body": [], + "directives": [] + } + }, + { + "type": "ObjectMethod", + "start":23,"end":37,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":16}}, + "method": true, + "key": { + "type": "Identifier", + "start":29,"end":32,"loc":{"start":{"line":3,"column":8},"end":{"line":3,"column":11},"identifierName":"set"}, + "name": "set" + }, + "computed": false, + "kind": "method", + "id": null, + "generator": false, + "async": true, + "params": [], + "body": { + "type": "BlockStatement", + "start":35,"end":37,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":16}}, + "body": [], + "directives": [] + } + } + ], + "extra": { + "parenthesized": true, + "parenStart": 0 + } + } + } + ], + "directives": [] + } +} \ No newline at end of file From bc7a811fce3ceeea393229299c1cdb63858608e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 5 Aug 2020 10:15:43 -0400 Subject: [PATCH 66/90] v7.11.2 --- lerna.json | 2 +- packages/babel-parser/package.json | 2 +- packages/babel-runtime-corejs2/package.json | 2 +- packages/babel-runtime-corejs3/package.json | 2 +- packages/babel-runtime/package.json | 2 +- packages/babel-standalone/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lerna.json b/lerna.json index b83257c8ed22..6911a97893d1 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "7.11.1", + "version": "7.11.2", "changelog": { "repo": "babel/babel", "cacheDir": ".changelog", diff --git a/packages/babel-parser/package.json b/packages/babel-parser/package.json index 8ee78e9dc2e6..4a757c66d708 100644 --- a/packages/babel-parser/package.json +++ b/packages/babel-parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/parser", - "version": "7.11.1", + "version": "7.11.2", "description": "A JavaScript parser", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", diff --git a/packages/babel-runtime-corejs2/package.json b/packages/babel-runtime-corejs2/package.json index dfcdf2244bb1..af71e9cb65c7 100644 --- a/packages/babel-runtime-corejs2/package.json +++ b/packages/babel-runtime-corejs2/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime-corejs2", - "version": "7.11.1", + "version": "7.11.2", "description": "babel's modular runtime helpers with core-js@2 polyfilling", "license": "MIT", "publishConfig": { diff --git a/packages/babel-runtime-corejs3/package.json b/packages/babel-runtime-corejs3/package.json index 710c29520b6f..2ba8ec1a0564 100644 --- a/packages/babel-runtime-corejs3/package.json +++ b/packages/babel-runtime-corejs3/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime-corejs3", - "version": "7.11.1", + "version": "7.11.2", "description": "babel's modular runtime helpers with core-js@3 polyfilling", "license": "MIT", "publishConfig": { diff --git a/packages/babel-runtime/package.json b/packages/babel-runtime/package.json index 263ce7b92619..9e5a10cece71 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@babel/runtime", - "version": "7.11.1", + "version": "7.11.2", "description": "babel's modular runtime helpers", "license": "MIT", "publishConfig": { diff --git a/packages/babel-standalone/package.json b/packages/babel-standalone/package.json index 872a0fb532cd..ad8c73115e75 100644 --- a/packages/babel-standalone/package.json +++ b/packages/babel-standalone/package.json @@ -1,6 +1,6 @@ { "name": "@babel/standalone", - "version": "7.11.1", + "version": "7.11.2", "description": "Standalone build of Babel for use in non-Node.js environments.", "main": "babel.js", "files": [ From acf2b144a46645229b9bbfd9762972cd6fbdfb3b Mon Sep 17 00:00:00 2001 From: Babel Bot Date: Wed, 5 Aug 2020 14:31:08 +0000 Subject: [PATCH 67/90] Add v7.11.2 to CHANGELOG.md [skip ci] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54d82b94d36e..a7f411bf7d1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,11 @@ See [`eslint-plugin-babel`'s releases](https://github.com/babel/eslint-plugin-ba +## v7.11.2 (2020-08-05) + +#### :bug: Bug Fix +* `babel-parser` + * [#11916](https://github.com/babel/babel/pull/11916) fix: do not eat get/set after async is parsed ([@JLHwung](https://github.com/JLHwung)) ## v7.11.1 (2020-08-04) #### :bug: Bug Fix From 50b3262063147523ca2f84dcac6ac525433c08be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 5 Aug 2020 15:39:45 -0400 Subject: [PATCH 68/90] refactor: avoid unnecessary property access (#11918) * refactor: avoid unnecessary property access * refactor: `else` is redundant because keyName is const --- packages/babel-parser/src/parser/expression.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 820620eb8395..18353b957ef1 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1737,7 +1737,7 @@ export default class ExpressionParser extends LValParser { } const containsEsc = this.state.containsEsc; - this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); + const key = this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); if ( !isPattern && @@ -1745,19 +1745,20 @@ export default class ExpressionParser extends LValParser { !containsEsc && this.maybeAsyncOrAccessorProp(prop) ) { + const keyName = key.name; // https://tc39.es/ecma262/#prod-AsyncMethod // https://tc39.es/ecma262/#prod-AsyncGeneratorMethod - if (prop.key.name === "async" && !this.hasPrecedingLineBreak()) { + if (keyName === "async" && !this.hasPrecedingLineBreak()) { isAsync = true; isGenerator = this.eat(tt.star); this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); } // get PropertyName[?Yield, ?Await] () { FunctionBody[~Yield, ~Await] } // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] } - else if (prop.key.name === "get" || prop.key.name === "set") { + if (keyName === "get" || keyName === "set") { isAccessor = true; isGenerator = this.eat(tt.star); // tt.star is allowed in `maybeAsyncOrAccessorProp`, we will throw in `parseObjectMethod` later - prop.kind = prop.key.name; + prop.kind = keyName; this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); } } From c0f6f0394d55627b105bd098c892e9291e2e31b2 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Wed, 5 Aug 2020 15:28:35 -0500 Subject: [PATCH 69/90] Support ConditionalExpressions in dry-error-messages rule (#11917) * Support ConditionalExpressions in dry-error-messages rule * tests --- .../src/rules/dry-error-messages.js | 27 +++++++++-- .../test/rules/dry-error-messages.js | 46 +++++++++++++++++++ packages/babel-parser/src/parser/lval.js | 4 -- packages/babel-parser/src/parser/statement.js | 2 - packages/babel-parser/src/tokenizer/index.js | 2 - 5 files changed, 70 insertions(+), 11 deletions(-) diff --git a/eslint/babel-eslint-plugin-development-internal/src/rules/dry-error-messages.js b/eslint/babel-eslint-plugin-development-internal/src/rules/dry-error-messages.js index 2994d933912a..d6e2226e2e76 100644 --- a/eslint/babel-eslint-plugin-development-internal/src/rules/dry-error-messages.js +++ b/eslint/babel-eslint-plugin-development-internal/src/rules/dry-error-messages.js @@ -41,6 +41,25 @@ function findIdNode(node) { return null; } +function findIdNodes(node) { + if (node.type === "ConditionalExpression") { + const consequent = findIdNode(node.consequent); + const alternate = findIdNode(node.alternate); + + if (consequent && alternate) { + return [consequent, alternate]; + } + } + + const idNode = findIdNode(node); + + if (idNode) { + return [idNode]; + } + + return null; +} + function findReference(node, scope) { let currentScope = scope; @@ -128,11 +147,13 @@ export default { node, ) { const [, errorMsgNode] = node.arguments; - const nodeToCheck = findIdNode(errorMsgNode); + const nodesToCheck = findIdNodes(errorMsgNode); if ( - nodeToCheck && - referencesImportedBinding(nodeToCheck, getScope(), importedBindings) + Array.isArray(nodesToCheck) && + nodesToCheck.every(node => + referencesImportedBinding(node, getScope(), importedBindings), + ) ) { return; } diff --git a/eslint/babel-eslint-plugin-development-internal/test/rules/dry-error-messages.js b/eslint/babel-eslint-plugin-development-internal/test/rules/dry-error-messages.js index 5f8d41479119..7f5ecd284b82 100644 --- a/eslint/babel-eslint-plugin-development-internal/test/rules/dry-error-messages.js +++ b/eslint/babel-eslint-plugin-development-internal/test/rules/dry-error-messages.js @@ -261,6 +261,14 @@ ruleTester.run("dry-error-messages", rule, { code: "this.raise(loc);", options: [{ errorModule: ERRORS_MODULE }], }, + + // Support ternary as second argument + { + filename: FILENAME, + code: + "import Errors, { NotErrors } from 'errorsModule'; this.raise(loc, a ? Errors.someErrorMessage : Errors.someOtherErrorMessage);", + options: [{ errorModule: ERRORS_MODULE }], + }, ], invalid: [ { @@ -691,5 +699,43 @@ ruleTester.run("dry-error-messages", rule, { }, ], }, + + // Should error if either part of a ternary isn't from error module + { + filename: FILENAME, + code: + "import Errors, { NotErrors } from 'errorsModule'; this.raise(loc, a ? Errors.someErrorMessage : 'hello');", + options: [{ errorModule: ERRORS_MODULE }], + errors: [ + { + messageId: "mustBeImported", + data: { errorModule: ERRORS_MODULE }, + }, + ], + }, + { + filename: FILENAME, + code: + "import Errors, { NotErrors } from 'errorsModule'; this.raise(loc, a ? 'hello' : Errors.someErrorMessage);", + options: [{ errorModule: ERRORS_MODULE }], + errors: [ + { + messageId: "mustBeImported", + data: { errorModule: ERRORS_MODULE }, + }, + ], + }, + { + filename: FILENAME, + code: + "import Errors, { NotErrors } from 'errorsModule'; this.raise(loc, a ? 'hello' : 'world');", + options: [{ errorModule: ERRORS_MODULE }], + errors: [ + { + messageId: "mustBeImported", + data: { errorModule: ERRORS_MODULE }, + }, + ], + }, ], }); diff --git a/packages/babel-parser/src/parser/lval.js b/packages/babel-parser/src/parser/lval.js index e9b5e67589f2..d286259fa24f 100644 --- a/packages/babel-parser/src/parser/lval.js +++ b/packages/babel-parser/src/parser/lval.js @@ -366,7 +366,6 @@ export default class LValParser extends NodeUtils { ? isStrictBindReservedWord(expr.name, this.inModule) : isStrictBindOnlyReservedWord(expr.name)) ) { - /* eslint-disable @babel/development-internal/dry-error-messages */ this.raise( expr.start, bindingType === BIND_NONE @@ -374,7 +373,6 @@ export default class LValParser extends NodeUtils { : Errors.StrictEvalArgumentsBinding, expr.name, ); - /* eslint-enable @babel/development-internal/dry-error-messages */ } if (checkClashes) { @@ -471,7 +469,6 @@ export default class LValParser extends NodeUtils { break; default: { - /* eslint-disable @babel/development-internal/dry-error-messages */ this.raise( expr.start, bindingType === BIND_NONE @@ -479,7 +476,6 @@ export default class LValParser extends NodeUtils { : Errors.InvalidLhsBinding, contextDescription, ); - /* eslint-enable @babel/development-internal/dry-error-messages */ } } } diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 8f584240d85f..732214851535 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -2042,7 +2042,6 @@ export default class StatementParser extends ExpressionParser { name: string, ): void { if (this.state.exportedIdentifiers.indexOf(name) > -1) { - /* eslint-disable @babel/development-internal/dry-error-messages */ this.raise( node.start, name === "default" @@ -2050,7 +2049,6 @@ export default class StatementParser extends ExpressionParser { : Errors.DuplicateExport, name, ); - /* eslint-enable @babel/development-internal/dry-error-messages */ } this.state.exportedIdentifiers.push(name); } diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index fca85af541e8..d8104c4f9b45 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -420,14 +420,12 @@ export default class Tokenizer extends ParserErrors { // misleading this.expectPlugin("recordAndTuple"); if (this.getPluginOption("recordAndTuple", "syntaxType") !== "hash") { - /* eslint-disable @babel/development-internal/dry-error-messages */ throw this.raise( this.state.pos, next === charCodes.leftCurlyBrace ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, ); - /* eslint-enable @babel/development-internal/dry-error-messages */ } if (next === charCodes.leftCurlyBrace) { From cd577eedfd95bc0d8ee36b9f57e3cc16d72988e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 5 Aug 2020 17:52:13 -0400 Subject: [PATCH 70/90] refactor: add recoverable error on accessorIsGenerator (#11921) * refactor: add recoverable error on accessorIsGenerator * Update packages/babel-parser/src/parser/error-message.js Co-authored-by: Brian Ng * Apply suggestions from code review Co-authored-by: Brian Ng --- .../babel-parser/src/parser/error-message.js | 1 + .../babel-parser/src/parser/expression.js | 8 +- .../invalid-accessor-generator/input.js | 4 + .../invalid-accessor-generator/output.json | 81 +++++++++++++++++++ 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/es2015/object/invalid-accessor-generator/input.js create mode 100644 packages/babel-parser/test/fixtures/es2015/object/invalid-accessor-generator/output.json diff --git a/packages/babel-parser/src/parser/error-message.js b/packages/babel-parser/src/parser/error-message.js index f9e95d039e65..05518147755a 100644 --- a/packages/babel-parser/src/parser/error-message.js +++ b/packages/babel-parser/src/parser/error-message.js @@ -3,6 +3,7 @@ // The Errors key follows https://cs.chromium.org/chromium/src/v8/src/common/message-template.h unless it does not exist export const ErrorMessages = Object.freeze({ + AccessorIsGenerator: "A %0ter cannot be a generator", ArgumentsDisallowedInInitializer: "'arguments' is not allowed in class field initializer", AsyncFunctionInSingleStatementContext: diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 18353b957ef1..a0c621f6a60e 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1757,8 +1757,11 @@ export default class ExpressionParser extends LValParser { // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] } if (keyName === "get" || keyName === "set") { isAccessor = true; - isGenerator = this.eat(tt.star); // tt.star is allowed in `maybeAsyncOrAccessorProp`, we will throw in `parseObjectMethod` later prop.kind = keyName; + if (this.match(tt.star)) { + this.raise(this.state.pos, Errors.AccessorIsGenerator, keyName); + this.next(); + } this.parsePropertyName(prop, /* isPrivateNameAllowed */ false); } } @@ -1813,8 +1816,7 @@ export default class ExpressionParser extends LValParser { isAccessor: boolean, ): ?N.ObjectMethod { if (isAccessor) { - // isAccessor implies isAsync: false, isPattern: false - if (isGenerator) this.unexpected(); + // isAccessor implies isAsync: false, isPattern: false, isGenerator: false this.parseMethod( prop, /* isGenerator */ false, diff --git a/packages/babel-parser/test/fixtures/es2015/object/invalid-accessor-generator/input.js b/packages/babel-parser/test/fixtures/es2015/object/invalid-accessor-generator/input.js new file mode 100644 index 000000000000..e535a197e006 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/object/invalid-accessor-generator/input.js @@ -0,0 +1,4 @@ +({ + get *iterator() { }, + set *iterator(iter) { } +}) diff --git a/packages/babel-parser/test/fixtures/es2015/object/invalid-accessor-generator/output.json b/packages/babel-parser/test/fixtures/es2015/object/invalid-accessor-generator/output.json new file mode 100644 index 000000000000..0049c946dc8c --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/object/invalid-accessor-generator/output.json @@ -0,0 +1,81 @@ +{ + "type": "File", + "start":0,"end":58,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "errors": [ + "SyntaxError: A getter cannot be a generator (2:9)", + "SyntaxError: A setter cannot be a generator (3:9)" + ], + "program": { + "type": "Program", + "start":0,"end":58,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":58,"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":2}}, + "expression": { + "type": "ObjectExpression", + "start":1,"end":57,"loc":{"start":{"line":1,"column":1},"end":{"line":4,"column":1}}, + "properties": [ + { + "type": "ObjectMethod", + "start":7,"end":26,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":23}}, + "method": false, + "key": { + "type": "Identifier", + "start":12,"end":20,"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":17},"identifierName":"iterator"}, + "name": "iterator" + }, + "computed": false, + "kind": "get", + "id": null, + "generator": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start":23,"end":26,"loc":{"start":{"line":2,"column":20},"end":{"line":2,"column":23}}, + "body": [], + "directives": [] + } + }, + { + "type": "ObjectMethod", + "start":32,"end":55,"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":27}}, + "method": false, + "key": { + "type": "Identifier", + "start":37,"end":45,"loc":{"start":{"line":3,"column":9},"end":{"line":3,"column":17},"identifierName":"iterator"}, + "name": "iterator" + }, + "computed": false, + "kind": "set", + "id": null, + "generator": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start":46,"end":50,"loc":{"start":{"line":3,"column":18},"end":{"line":3,"column":22},"identifierName":"iter"}, + "name": "iter" + } + ], + "body": { + "type": "BlockStatement", + "start":52,"end":55,"loc":{"start":{"line":3,"column":24},"end":{"line":3,"column":27}}, + "body": [], + "directives": [] + } + } + ], + "extra": { + "parenthesized": true, + "parenStart": 0 + } + } + } + ], + "directives": [] + } +} From 76f033f8c70f4cdb8f8382de97de5656bea91c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 5 Aug 2020 20:21:35 -0400 Subject: [PATCH 71/90] simplify isLookaheadRelational method (#11922) * refactor: move isLookaheadRelational to flow plugins * refactor: simplify isLookaheadRelational to isLookaheadToken_lt --- packages/babel-parser/src/parser/util.js | 13 ------------- packages/babel-parser/src/plugins/flow.js | 14 +++++++++++++- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/babel-parser/src/parser/util.js b/packages/babel-parser/src/parser/util.js index d6aa742df695..8b47a85be631 100644 --- a/packages/babel-parser/src/parser/util.js +++ b/packages/babel-parser/src/parser/util.js @@ -6,7 +6,6 @@ import State from "../tokenizer/state"; import type { Node } from "../types"; import { lineBreak } from "../util/whitespace"; import { isIdentifierChar } from "../util/identifier"; -import * as charCodes from "charcodes"; import { Errors } from "./error"; type TryParse = { @@ -35,18 +34,6 @@ export default class UtilParser extends Tokenizer { return this.match(tt.relational) && this.state.value === op; } - isLookaheadRelational(op: "<" | ">"): boolean { - const next = this.nextTokenStart(); - if (this.input.charAt(next) === op) { - if (next + 1 === this.input.length) { - return true; - } - const afterNext = this.input.charCodeAt(next + 1); - return afterNext !== op.charCodeAt(0) && afterNext !== charCodes.equalsTo; - } - return false; - } - // TODO expectRelational(op: "<" | ">"): void { diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index b532ce04f47e..1887cfa68a60 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -2873,7 +2873,7 @@ export default (superClass: Class): Class => noCalls: ?boolean, subscriptState: N.ParseSubscriptState, ): N.Expression { - if (this.match(tt.questionDot) && this.isLookaheadRelational("<")) { + if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) { subscriptState.optionalChainMember = true; if (noCalls) { subscriptState.stop = true; @@ -3475,4 +3475,16 @@ export default (superClass: Class): Class => super.updateContext(prevType); } } + + // check if the next token is a tt.relation("<") + isLookaheadToken_lt(): boolean { + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === charCodes.lessThan) { + const afterNext = this.input.charCodeAt(next + 1); + return ( + afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo + ); + } + return false; + } }; From a827ca41f3c07a1ffddeaa00998c772a61a60b68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 5 Aug 2020 21:15:42 -0400 Subject: [PATCH 72/90] refactor: simplify smart pipeline parsing (#11919) --- .../babel-parser/src/parser/expression.js | 58 +++++-------------- 1 file changed, 14 insertions(+), 44 deletions(-) diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index a0c621f6a60e..0fa3849f2f28 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -2482,17 +2482,10 @@ export default class ExpressionParser extends LValParser { startPos: number, startLoc: Position, ): N.PipelineBody { - const pipelineStyle = this.checkSmartPipelineBodyStyle(childExpression); - - this.checkSmartPipelineBodyEarlyErrors( - childExpression, - pipelineStyle, - startPos, - ); + this.checkSmartPipelineBodyEarlyErrors(childExpression, startPos); return this.parseSmartPipelineBodyInStyle( childExpression, - pipelineStyle, startPos, startLoc, ); @@ -2500,59 +2493,36 @@ export default class ExpressionParser extends LValParser { checkSmartPipelineBodyEarlyErrors( childExpression: N.Expression, - pipelineStyle: N.PipelineStyle, startPos: number, ): void { if (this.match(tt.arrow)) { // If the following token is invalidly `=>`, then throw a human-friendly error // instead of something like 'Unexpected token, expected ";"'. throw this.raise(this.state.start, Errors.PipelineBodyNoArrow); - } else if ( - pipelineStyle === "PipelineTopicExpression" && - childExpression.type === "SequenceExpression" - ) { + } else if (childExpression.type === "SequenceExpression") { this.raise(startPos, Errors.PipelineBodySequenceExpression); } } parseSmartPipelineBodyInStyle( childExpression: N.Expression, - pipelineStyle: N.PipelineStyle, startPos: number, startLoc: Position, ): N.PipelineBody { const bodyNode = this.startNodeAt(startPos, startLoc); - switch (pipelineStyle) { - case "PipelineBareFunction": - bodyNode.callee = childExpression; - break; - case "PipelineBareConstructor": - bodyNode.callee = childExpression.callee; - break; - case "PipelineBareAwaitedFunction": - bodyNode.callee = childExpression.argument; - break; - case "PipelineTopicExpression": - if (!this.topicReferenceWasUsedInCurrentTopicContext()) { - this.raise(startPos, Errors.PipelineTopicUnused); - } - bodyNode.expression = childExpression; - break; - default: - throw new Error( - `Internal @babel/parser error: Unknown pipeline style (${pipelineStyle})`, - ); - } - return this.finishNode(bodyNode, pipelineStyle); - } - - checkSmartPipelineBodyStyle(expression: N.Expression): N.PipelineStyle { - switch (expression.type) { - default: - return this.isSimpleReference(expression) - ? "PipelineBareFunction" - : "PipelineTopicExpression"; + const isSimpleReference = this.isSimpleReference(childExpression); + if (isSimpleReference) { + bodyNode.callee = childExpression; + } else { + if (!this.topicReferenceWasUsedInCurrentTopicContext()) { + this.raise(startPos, Errors.PipelineTopicUnused); + } + bodyNode.expression = childExpression; } + return this.finishNode( + bodyNode, + isSimpleReference ? "PipelineBareFunction" : "PipelineTopicExpression", + ); } isSimpleReference(expression: N.Expression): boolean { From 32744b2346801d67191ff14420aa90e73effc5d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= <47972704+AleksRap@users.noreply.github.com> Date: Sat, 8 Aug 2020 20:34:11 +0300 Subject: [PATCH 73/90] fixed the names of the rules (#11933) --- eslint/babel-eslint-plugin/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/eslint/babel-eslint-plugin/README.md b/eslint/babel-eslint-plugin/README.md index 85f6d2b92829..a73e1b17ed00 100644 --- a/eslint/babel-eslint-plugin/README.md +++ b/eslint/babel-eslint-plugin/README.md @@ -26,11 +26,11 @@ original ones as well!). ```json { "rules": { - "babel/new-cap": "error", - "babel/no-invalid-this": "error", - "babel/no-unused-expressions": "error", - "babel/object-curly-spacing": "error", - "babel/semi": "error" + "@babel/new-cap": "error", + "@babel/no-invalid-this": "error", + "@babel/no-unused-expressions": "error", + "@babel/object-curly-spacing": "error", + "@babel/semi": "error" } } ``` @@ -41,8 +41,8 @@ Each rule corresponds to a core `eslint` rule and has the same options. 🛠: means it's autofixable with `--fix`. -- `babel/new-cap`: handles decorators (`@Decorator`) -- `babel/no-invalid-this`: handles class fields and private class methods (`class A { a = this.b; }`) -- `babel/no-unused-expressions`: handles `do` expressions -- `babel/object-curly-spacing`: handles `export * as x from "mod";` (🛠) -- `babel/semi`: Handles class properties (🛠) +- `@babel/new-cap`: handles decorators (`@Decorator`) +- `@babel/no-invalid-this`: handles class fields and private class methods (`class A { a = this.b; }`) +- `@babel/no-unused-expressions`: handles `do` expressions +- `@babel/object-curly-spacing`: handles `export * as x from "mod";` (🛠) +- `@babel/semi`: Handles class properties (🛠) From 48e793e9642ec7d2b2f334d788c4ab4b7a6c28e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Sat, 8 Aug 2020 15:44:22 -0400 Subject: [PATCH 74/90] fix: add ImportExpression visitorKeys (#11932) --- eslint/babel-eslint-parser/src/convert/convertAST.js | 2 ++ eslint/babel-eslint-parser/src/visitor-keys.js | 1 + eslint/babel-eslint-parser/test/index.js | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/eslint/babel-eslint-parser/src/convert/convertAST.js b/eslint/babel-eslint-parser/src/convert/convertAST.js index d44cce84b203..0d714ba5d00b 100644 --- a/eslint/babel-eslint-parser/src/convert/convertAST.js +++ b/eslint/babel-eslint-parser/src/convert/convertAST.js @@ -87,6 +87,7 @@ function convertNodes(ast, code) { try { // Monkey patch visitor keys in order to be able to traverse the estree nodes t.VISITOR_KEYS.ChainExpression = VISITOR_KEYS.ChainExpression; + t.VISITOR_KEYS.ImportExpression = VISITOR_KEYS.ImportExpression; t.VISITOR_KEYS.Property = VISITOR_KEYS.Property; t.VISITOR_KEYS.MethodDefinition = VISITOR_KEYS.MethodDefinition; @@ -99,6 +100,7 @@ function convertNodes(ast, code) { } finally { // These can be safely deleted because they are not defined in the original visitor keys. delete t.VISITOR_KEYS.ChainExpression; + delete t.VISITOR_KEYS.ImportExpression; delete t.VISITOR_KEYS.MethodDefinition; delete t.VISITOR_KEYS.Property; diff --git a/eslint/babel-eslint-parser/src/visitor-keys.js b/eslint/babel-eslint-parser/src/visitor-keys.js index 9908664dced8..3d28bde44cac 100644 --- a/eslint/babel-eslint-parser/src/visitor-keys.js +++ b/eslint/babel-eslint-parser/src/visitor-keys.js @@ -8,6 +8,7 @@ export default Object.assign( { ChainExpression: ESLINT_VISITOR_KEYS.ChainExpression, ExportAllDeclaration: ESLINT_VISITOR_KEYS.ExportAllDeclaration, + ImportExpression: ESLINT_VISITOR_KEYS.ImportExpression, Literal: ESLINT_VISITOR_KEYS.Literal, MethodDefinition: ["decorators"].concat( ESLINT_VISITOR_KEYS.MethodDefinition, diff --git a/eslint/babel-eslint-parser/test/index.js b/eslint/babel-eslint-parser/test/index.js index a7f2d3e91ef6..7c98083d4f61 100644 --- a/eslint/babel-eslint-parser/test/index.js +++ b/eslint/babel-eslint-parser/test/index.js @@ -569,7 +569,7 @@ describe("Babel and Espree", () => { it("Dynamic Import", () => { parseAndAssertSame(` - const a = import('a'); + const a = import(moduleName); `); }); }); From 57b658c4d83db6874dd3d72a5a653c5b2cec6e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Sat, 8 Aug 2020 15:59:38 -0400 Subject: [PATCH 75/90] v7.11.3 --- eslint/babel-eslint-parser/package.json | 2 +- eslint/babel-eslint-plugin-development-internal/package.json | 2 +- eslint/babel-eslint-plugin/package.json | 2 +- lerna.json | 2 +- packages/babel-parser/package.json | 2 +- packages/babel-standalone/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eslint/babel-eslint-parser/package.json b/eslint/babel-eslint-parser/package.json index f1999728f3dc..3cd7b103c51d 100644 --- a/eslint/babel-eslint-parser/package.json +++ b/eslint/babel-eslint-parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-parser", - "version": "7.11.0", + "version": "7.11.3", "description": "ESLint parser that allows for linting of experimental syntax transformed by Babel", "author": "The Babel Team (https://babeljs.io/team)", "license": "MIT", diff --git a/eslint/babel-eslint-plugin-development-internal/package.json b/eslint/babel-eslint-plugin-development-internal/package.json index 1a4c9cea6c9e..0e9445e603ce 100644 --- a/eslint/babel-eslint-plugin-development-internal/package.json +++ b/eslint/babel-eslint-plugin-development-internal/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-plugin-development-internal", - "version": "7.11.0", + "version": "7.11.3", "description": "The Babel Team's ESLint custom rules plugin. Since it's internal, it might not respect semver.", "main": "lib/index.js", "repository": { diff --git a/eslint/babel-eslint-plugin/package.json b/eslint/babel-eslint-plugin/package.json index ef00e6b84449..4538c876623f 100644 --- a/eslint/babel-eslint-plugin/package.json +++ b/eslint/babel-eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@babel/eslint-plugin", - "version": "7.11.0", + "version": "7.11.3", "description": "Companion rules for @babel/eslint-parser", "main": "./lib/index.js", "type": "commonjs", diff --git a/lerna.json b/lerna.json index 6911a97893d1..1ff42fcdb628 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "7.11.2", + "version": "7.11.3", "changelog": { "repo": "babel/babel", "cacheDir": ".changelog", diff --git a/packages/babel-parser/package.json b/packages/babel-parser/package.json index 4a757c66d708..a391d7ff3d1c 100644 --- a/packages/babel-parser/package.json +++ b/packages/babel-parser/package.json @@ -1,6 +1,6 @@ { "name": "@babel/parser", - "version": "7.11.2", + "version": "7.11.3", "description": "A JavaScript parser", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", diff --git a/packages/babel-standalone/package.json b/packages/babel-standalone/package.json index ad8c73115e75..368ed8282c33 100644 --- a/packages/babel-standalone/package.json +++ b/packages/babel-standalone/package.json @@ -1,6 +1,6 @@ { "name": "@babel/standalone", - "version": "7.11.2", + "version": "7.11.3", "description": "Standalone build of Babel for use in non-Node.js environments.", "main": "babel.js", "files": [ From 199ee605719b3e42320ba0a1e2a3e342284fd8cd Mon Sep 17 00:00:00 2001 From: Babel Bot Date: Sat, 8 Aug 2020 20:09:53 +0000 Subject: [PATCH 76/90] Add v7.11.3 to CHANGELOG.md [skip ci] --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7f411bf7d1f..0dabd46bf1bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,21 @@ See [`eslint-plugin-babel`'s releases](https://github.com/babel/eslint-plugin-ba +## v7.11.3 (2020-08-08) + +#### :bug: Bug Fix +* [#11932](https://github.com/babel/babel/pull/11932) fix: add ImportExpression visitorKeys ([@JLHwung](https://github.com/JLHwung)) + +#### :nail_care: Polish +* `babel-parser` + * [#11921](https://github.com/babel/babel/pull/11921) refactor: add recoverable error on accessorIsGenerator ([@JLHwung](https://github.com/JLHwung)) + +#### :house: Internal +* `babel-parser` + * [#11919](https://github.com/babel/babel/pull/11919) refactor: simplify smart pipeline parsing ([@JLHwung](https://github.com/JLHwung)) + * [#11922](https://github.com/babel/babel/pull/11922) simplify isLookaheadRelational method ([@JLHwung](https://github.com/JLHwung)) + * [#11917](https://github.com/babel/babel/pull/11917) Support ConditionalExpressions in dry-error-messages rule ([@existentialism](https://github.com/existentialism)) + * [#11918](https://github.com/babel/babel/pull/11918) refactor: avoid unnecessary property access ([@JLHwung](https://github.com/JLHwung)) ## v7.11.2 (2020-08-05) #### :bug: Bug Fix From fccf31aca64f25f2c839e531167d7113d127b637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Mon, 10 Aug 2020 07:29:52 -0400 Subject: [PATCH 77/90] chore: do not push version commit on lerna version (#11936) --- lerna.json | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/lerna.json b/lerna.json index 1ff42fcdb628..8c084b659fd6 100644 --- a/lerna.json +++ b/lerna.json @@ -26,15 +26,12 @@ "# We ignore every JSON file, except for native-modules, built-ins and plugins defined in babel-preset-env/data.", "@(!(native-modules|built-ins|plugins|package)).json" ] + }, + "version": { + "push": false } }, - "packages": [ - "codemods/*", - "eslint/*", - "packages/*" - ], + "packages": ["codemods/*", "eslint/*", "packages/*"], "npmClient": "yarn", - "npmClientArgs": [ - "--pure-lockfile" - ] + "npmClientArgs": ["--pure-lockfile"] } From 4bb1e164da8455253a57ec0fd5c437abe92c9b42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Mon, 10 Aug 2020 07:32:38 -0400 Subject: [PATCH 78/90] Refactor [In] production parameter tracking (#11930) * refactor: track [In] parameter in prodParam * Apply suggestions from code review --- .../babel-parser/src/parser/expression.js | 169 +++++++++++------- packages/babel-parser/src/parser/lval.js | 10 +- packages/babel-parser/src/parser/statement.js | 16 +- packages/babel-parser/src/plugins/flow.js | 11 +- .../babel-parser/src/plugins/jsx/index.js | 2 +- .../src/plugins/typescript/index.js | 17 +- .../src/util/production-parameter.js | 16 +- 7 files changed, 135 insertions(+), 106 deletions(-) diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 0fa3849f2f28..74d09fd8a05f 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -44,6 +44,7 @@ import { import { ExpressionErrors } from "./util"; import { PARAM_AWAIT, + PARAM_IN, PARAM_RETURN, PARAM, functionFlags, @@ -153,11 +154,9 @@ export default class ExpressionParser extends LValParser { // the AST node that the inner parser gave them in another node. // Parse a full expression. - // - `noIn` + // - `disallowIn` // is used to forbid the `in` operator (in for loops initialization expressions) - // When `noIn` is true, the production parameter [In] is not present. - // Whenever [?In] appears in the right-hand sides of a production, we pass - // `noIn` to the subroutine calls. + // When `disallowIn` is true, the production parameter [In] is not present. // - `refExpressionErrors ` // provides reference for storing '=' operator inside shorthand @@ -165,19 +164,28 @@ export default class ExpressionParser extends LValParser { // and object pattern might appear (so it's possible to raise // delayed syntax error at correct position). - // https://tc39.es/ecma262/#prod-Expression parseExpression( - noIn?: boolean, + disallowIn?: boolean, refExpressionErrors?: ExpressionErrors, ): N.Expression { + if (disallowIn) { + return this.disallowInAnd(() => + this.parseExpressionBase(refExpressionErrors), + ); + } + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + + // https://tc39.es/ecma262/#prod-Expression + parseExpressionBase(refExpressionErrors?: ExpressionErrors): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; - const expr = this.parseMaybeAssign(noIn, refExpressionErrors); + const expr = this.parseMaybeAssign(refExpressionErrors); if (this.match(tt.comma)) { const node = this.startNodeAt(startPos, startLoc); node.expressions = [expr]; while (this.eat(tt.comma)) { - node.expressions.push(this.parseMaybeAssign(noIn, refExpressionErrors)); + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); } this.toReferencedList(node.expressions); return this.finishNode(node, "SequenceExpression"); @@ -185,12 +193,41 @@ export default class ExpressionParser extends LValParser { return expr; } + // Set [~In] parameter for assignment expression + parseMaybeAssignDisallowIn( + refExpressionErrors?: ?ExpressionErrors, + afterLeftParse?: Function, + refNeedsArrowPos?: ?Pos, + ) { + return this.disallowInAnd(() => + this.parseMaybeAssign( + refExpressionErrors, + afterLeftParse, + refNeedsArrowPos, + ), + ); + } + + // Set [+In] parameter for assignment expression + parseMaybeAssignAllowIn( + refExpressionErrors?: ?ExpressionErrors, + afterLeftParse?: Function, + refNeedsArrowPos?: ?Pos, + ) { + return this.allowInAnd(() => + this.parseMaybeAssign( + refExpressionErrors, + afterLeftParse, + refNeedsArrowPos, + ), + ); + } + // Parse an assignment expression. This includes applications of // operators like `+=`. // https://tc39.es/ecma262/#prod-AssignmentExpression parseMaybeAssign( - noIn?: ?boolean, refExpressionErrors?: ?ExpressionErrors, afterLeftParse?: Function, refNeedsArrowPos?: ?Pos, @@ -199,7 +236,7 @@ export default class ExpressionParser extends LValParser { const startLoc = this.state.startLoc; if (this.isContextual("yield")) { if (this.prodParam.hasYield) { - let left = this.parseYield(noIn); + let left = this.parseYield(); if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } @@ -224,7 +261,6 @@ export default class ExpressionParser extends LValParser { } let left = this.parseMaybeConditional( - noIn, refExpressionErrors, refNeedsArrowPos, ); @@ -250,7 +286,7 @@ export default class ExpressionParser extends LValParser { this.checkLVal(left, undefined, undefined, "assignment expression"); this.next(); - node.right = this.parseMaybeAssign(noIn); + node.right = this.parseMaybeAssign(); return this.finishNode(node, "AssignmentExpression"); } else if (ownExpressionErrors) { this.checkExpressionErrors(refExpressionErrors, true); @@ -263,31 +299,23 @@ export default class ExpressionParser extends LValParser { // https://tc39.es/ecma262/#prod-ConditionalExpression parseMaybeConditional( - noIn: ?boolean, refExpressionErrors: ExpressionErrors, refNeedsArrowPos?: ?Pos, ): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; const potentialArrowAt = this.state.potentialArrowAt; - const expr = this.parseExprOps(noIn, refExpressionErrors); + const expr = this.parseExprOps(refExpressionErrors); if (this.shouldExitDescending(expr, potentialArrowAt)) { return expr; } - return this.parseConditional( - expr, - noIn, - startPos, - startLoc, - refNeedsArrowPos, - ); + return this.parseConditional(expr, startPos, startLoc, refNeedsArrowPos); } parseConditional( expr: N.Expression, - noIn: ?boolean, startPos: number, startLoc: Position, // FIXME: Disabling this for now since can't seem to get it to play nicely @@ -297,9 +325,9 @@ export default class ExpressionParser extends LValParser { if (this.eat(tt.question)) { const node = this.startNodeAt(startPos, startLoc); node.test = expr; - node.consequent = this.parseMaybeAssign(); + node.consequent = this.parseMaybeAssignAllowIn(); this.expect(tt.colon); - node.alternate = this.parseMaybeAssign(noIn); + node.alternate = this.parseMaybeAssign(); return this.finishNode(node, "ConditionalExpression"); } return expr; @@ -308,10 +336,7 @@ export default class ExpressionParser extends LValParser { // Start the precedence parser. // https://tc39.es/ecma262/#prod-ShortCircuitExpression - parseExprOps( - noIn: ?boolean, - refExpressionErrors: ExpressionErrors, - ): N.Expression { + parseExprOps(refExpressionErrors: ExpressionErrors): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; const potentialArrowAt = this.state.potentialArrowAt; @@ -321,7 +346,7 @@ export default class ExpressionParser extends LValParser { return expr; } - return this.parseExprOp(expr, startPos, startLoc, -1, noIn); + return this.parseExprOp(expr, startPos, startLoc, -1); } // Parse binary operators with the operator precedence parsing @@ -335,10 +360,9 @@ export default class ExpressionParser extends LValParser { leftStartPos: number, leftStartLoc: Position, minPrec: number, - noIn: ?boolean, ): N.Expression { let prec = this.state.type.binop; - if (prec != null && (!noIn || !this.match(tt._in))) { + if (prec != null && (this.prodParam.hasIn || !this.match(tt._in))) { if (prec > minPrec) { const op = this.state.type; if (op === tt.pipeline) { @@ -391,7 +415,7 @@ export default class ExpressionParser extends LValParser { } } - node.right = this.parseExprOpRightExpr(op, prec, noIn); + node.right = this.parseExprOpRightExpr(op, prec); this.finishNode( node, logical || coalesce ? "LogicalExpression" : "BinaryExpression", @@ -409,13 +433,7 @@ export default class ExpressionParser extends LValParser { throw this.raise(this.state.start, Errors.MixingCoalesceWithLogical); } - return this.parseExprOp( - node, - leftStartPos, - leftStartLoc, - minPrec, - noIn, - ); + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec); } } return left; @@ -424,11 +442,7 @@ export default class ExpressionParser extends LValParser { // Helper function for `parseExprOp`. Parse the right-hand side of binary- // operator expressions, then apply any operator-specific functions. - parseExprOpRightExpr( - op: TokenType, - prec: number, - noIn: ?boolean, - ): N.Expression { + parseExprOpRightExpr(op: TokenType, prec: number): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; switch (op) { @@ -437,31 +451,27 @@ export default class ExpressionParser extends LValParser { case "smart": return this.withTopicPermittingContext(() => { return this.parseSmartPipelineBody( - this.parseExprOpBaseRightExpr(op, prec, noIn), + this.parseExprOpBaseRightExpr(op, prec), startPos, startLoc, ); }); case "fsharp": return this.withSoloAwaitPermittingContext(() => { - return this.parseFSharpPipelineBody(prec, noIn); + return this.parseFSharpPipelineBody(prec); }); } // falls through default: - return this.parseExprOpBaseRightExpr(op, prec, noIn); + return this.parseExprOpBaseRightExpr(op, prec); } } // Helper function for `parseExprOpRightExpr`. Parse the right-hand side of // binary-operator expressions without applying any operator-specific functions. - parseExprOpBaseRightExpr( - op: TokenType, - prec: number, - noIn: ?boolean, - ): N.Expression { + parseExprOpBaseRightExpr(op: TokenType, prec: number): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; @@ -470,7 +480,6 @@ export default class ExpressionParser extends LValParser { startPos, startLoc, op.rightAssociative ? prec - 1 : prec, - noIn, ); } @@ -1415,8 +1424,7 @@ export default class ExpressionParser extends LValParser { break; } else { exprList.push( - this.parseMaybeAssign( - false, + this.parseMaybeAssignAllowIn( refExpressionErrors, this.parseParenItem, refNeedsArrowPos, @@ -1858,7 +1866,7 @@ export default class ExpressionParser extends LValParser { if (this.eat(tt.colon)) { prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) - : this.parseMaybeAssign(false, refExpressionErrors); + : this.parseMaybeAssignAllowIn(refExpressionErrors); return this.finishNode(prop, "ObjectProperty"); } @@ -1932,7 +1940,7 @@ export default class ExpressionParser extends LValParser { ): N.Expression | N.Identifier { if (this.eat(tt.bracketL)) { (prop: $FlowSubtype).computed = true; - prop.key = this.parseMaybeAssign(); + prop.key = this.parseMaybeAssignAllowIn(); this.expect(tt.bracketR); } else { const oldInPropertyName = this.state.inPropertyName; @@ -2049,7 +2057,12 @@ export default class ExpressionParser extends LValParser { trailingCommaPos: ?number, ): N.ArrowFunctionExpression { this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW); - this.prodParam.enter(functionFlags(isAsync, false)); + let flags = functionFlags(isAsync, false); + // ConciseBody and AsyncConciseBody inherit [In] + if (!this.match(tt.bracketL) && this.prodParam.hasIn) { + flags |= PARAM_IN; + } + this.prodParam.enter(flags); this.initFunction(node, isAsync); const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; const oldYieldPos = this.state.yieldPos; @@ -2102,7 +2115,7 @@ export default class ExpressionParser extends LValParser { this.state.inParameters = false; if (isExpression) { - node.body = this.parseMaybeAssign(); + node.body = this.parseMaybeAssignAllowIn(); this.checkParams(node, false, allowExpression, false); } else { const oldStrict = this.state.strict; @@ -2261,8 +2274,7 @@ export default class ExpressionParser extends LValParser { this.next(); elt = this.finishNode(node, "ArgumentPlaceholder"); } else { - elt = this.parseMaybeAssign( - false, + elt = this.parseMaybeAssignAllowIn( refExpressionErrors, this.parseParenItem, refNeedsArrowPos, @@ -2440,7 +2452,7 @@ export default class ExpressionParser extends LValParser { // Parses yield expression inside generator. - parseYield(noIn?: ?boolean): N.YieldExpression { + parseYield(): N.YieldExpression { const node = this.startNode(); if (this.state.inParameters) { @@ -2459,7 +2471,7 @@ export default class ExpressionParser extends LValParser { node.argument = null; } else { node.delegate = this.eat(tt.star); - node.argument = this.parseMaybeAssign(noIn); + node.argument = this.parseMaybeAssign(); } return this.finishNode(node, "YieldExpression"); } @@ -2594,6 +2606,34 @@ export default class ExpressionParser extends LValParser { } } + allowInAnd(callback: () => T): T { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = PARAM_IN & ~flags; + if (prodParamToSet) { + this.prodParam.enter(flags | PARAM_IN); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + + disallowInAnd(callback: () => T): T { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = PARAM_IN & flags; + if (prodParamToClear) { + this.prodParam.enter(flags & ~PARAM_IN); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + // Register the use of a primary topic reference (`#`) within the current // topic context. registerTopicReference(): void { @@ -2611,7 +2651,7 @@ export default class ExpressionParser extends LValParser { ); } - parseFSharpPipelineBody(prec: number, noIn: ?boolean): N.Expression { + parseFSharpPipelineBody(prec: number): N.Expression { const startPos = this.state.start; const startLoc = this.state.startLoc; @@ -2624,7 +2664,6 @@ export default class ExpressionParser extends LValParser { startPos, startLoc, prec, - noIn, ); this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; diff --git a/packages/babel-parser/src/parser/lval.js b/packages/babel-parser/src/parser/lval.js index d286259fa24f..42c094b76203 100644 --- a/packages/babel-parser/src/parser/lval.js +++ b/packages/babel-parser/src/parser/lval.js @@ -34,13 +34,12 @@ export default class LValParser extends NodeUtils { // Forward-declaration: defined in expression.js /*:: +parseIdentifier: (liberal?: boolean) => Identifier; - +parseMaybeAssign: ( - noIn?: ?boolean, + +parseMaybeAssignAllowIn: ( refExpressionErrors?: ?ExpressionErrors, afterLeftParse?: Function, refNeedsArrowPos?: ?Pos, ) => Expression; - +parseObj: ( + +parseObjectLike: ( close: TokenType, isPattern: boolean, isRecord?: ?boolean, @@ -226,8 +225,7 @@ export default class LValParser extends NodeUtils { ): SpreadElement { const node = this.startNode(); this.next(); - node.argument = this.parseMaybeAssign( - false, + node.argument = this.parseMaybeAssignAllowIn( refExpressionErrors, undefined, refNeedsArrowPos, @@ -340,7 +338,7 @@ export default class LValParser extends NodeUtils { const node = this.startNodeAt(startPos, startLoc); node.left = left; - node.right = this.parseMaybeAssign(); + node.right = this.parseMaybeAssignAllowIn(); return this.finishNode(node, "AssignmentPattern"); } diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 732214851535..28cd5d97fe39 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -973,7 +973,9 @@ export default class StatementParser extends ExpressionParser { } node.left = init; - node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); + node.right = isForIn + ? this.parseExpression() + : this.parseMaybeAssignAllowIn(); this.expect(tt.parenR); node.body = @@ -1005,7 +1007,9 @@ export default class StatementParser extends ExpressionParser { const decl = this.startNode(); this.parseVarId(decl, kind); if (this.eat(tt.eq)) { - decl.init = this.parseMaybeAssign(isFor); + decl.init = isFor + ? this.parseMaybeAssignDisallowIn() + : this.parseMaybeAssignAllowIn(); } else { if ( kind === "const" && @@ -1618,10 +1622,9 @@ export default class StatementParser extends ExpressionParser { node: N.ClassPrivateProperty, ): N.ClassPrivateProperty { this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); - // [In] production parameter is tracked in parseMaybeAssign this.prodParam.enter(PARAM); - node.value = this.eat(tt.eq) ? this.parseMaybeAssign() : null; + node.value = this.eat(tt.eq) ? this.parseMaybeAssignAllowIn() : null; this.semicolon(); this.prodParam.exit(); @@ -1636,13 +1639,12 @@ export default class StatementParser extends ExpressionParser { } this.scope.enter(SCOPE_CLASS | SCOPE_SUPER); - // [In] production parameter is tracked in parseMaybeAssign this.prodParam.enter(PARAM); if (this.match(tt.eq)) { this.expectPlugin("classProperties"); this.next(); - node.value = this.parseMaybeAssign(); + node.value = this.parseMaybeAssignAllowIn(); } else { node.value = null; } @@ -1841,7 +1843,7 @@ export default class StatementParser extends ExpressionParser { } else if (this.match(tt._const) || this.match(tt._var) || this.isLet()) { throw this.raise(this.state.start, Errors.UnsupportedDefaultExport); } else { - const res = this.parseMaybeAssign(); + const res = this.parseMaybeAssignAllowIn(); this.semicolon(); return res; } diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index 1887cfa68a60..20d09c4d22dc 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -1816,7 +1816,6 @@ export default (superClass: Class): Class => parseConditional( expr: N.Expression, - noIn: ?boolean, startPos: number, startLoc: Position, refNeedsArrowPos?: ?Pos, @@ -1827,7 +1826,7 @@ export default (superClass: Class): Class => // and if we come from inside parens if (refNeedsArrowPos) { const result = this.tryParse(() => - super.parseConditional(expr, noIn, startPos, startLoc), + super.parseConditional(expr, startPos, startLoc), ); if (!result.node) { @@ -1886,7 +1885,7 @@ export default (superClass: Class): Class => node.test = expr; node.consequent = consequent; node.alternate = this.forwardNoArrowParamsConversionAt(node, () => - this.parseMaybeAssign(noIn, undefined, undefined, undefined), + this.parseMaybeAssign(undefined, undefined, undefined), ); return this.finishNode(node, "ConditionalExpression"); @@ -1898,7 +1897,7 @@ export default (superClass: Class): Class => } { this.state.noArrowParamsConversionAt.push(this.state.start); - const consequent = this.parseMaybeAssign(); + const consequent = this.parseMaybeAssignAllowIn(); const failed = !this.match(tt.colon); this.state.noArrowParamsConversionAt.pop(); @@ -2632,7 +2631,6 @@ export default (superClass: Class): Class => // there // 3. This is neither. Just call the super method parseMaybeAssign( - noIn?: ?boolean, refExpressionErrors?: ?ExpressionErrors, afterLeftParse?: Function, refNeedsArrowPos?: ?Pos, @@ -2650,7 +2648,6 @@ export default (superClass: Class): Class => jsx = this.tryParse( () => super.parseMaybeAssign( - noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos, @@ -2684,7 +2681,6 @@ export default (superClass: Class): Class => typeParameters, () => super.parseMaybeAssign( - noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos, @@ -2730,7 +2726,6 @@ export default (superClass: Class): Class => } return super.parseMaybeAssign( - noIn, refExpressionErrors, afterLeftParse, refNeedsArrowPos, diff --git a/packages/babel-parser/src/plugins/jsx/index.js b/packages/babel-parser/src/plugins/jsx/index.js index c8a44b1f78e3..923223b97601 100644 --- a/packages/babel-parser/src/plugins/jsx/index.js +++ b/packages/babel-parser/src/plugins/jsx/index.js @@ -356,7 +356,7 @@ export default (superClass: Class): Class => const node = this.startNode(); if (this.eat(tt.braceL)) { this.expect(tt.ellipsis); - node.argument = this.parseMaybeAssign(); + node.argument = this.parseMaybeAssignAllowIn(); this.expect(tt.braceR); return this.finishNode(node, "JSXSpreadAttribute"); } diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index a101638448e0..1b8c80eac6c5 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -1285,7 +1285,7 @@ export default (superClass: Class): Class => ? this.parseExprAtom() : this.parseIdentifier(/* liberal */ true); if (this.eat(tt.eq)) { - node.initializer = this.parseMaybeAssign(); + node.initializer = this.parseMaybeAssignAllowIn(); } return this.finishNode(node, "TSEnumMember"); } @@ -1865,7 +1865,6 @@ export default (superClass: Class): Class => leftStartPos: number, leftStartLoc: Position, minPrec: number, - noIn: ?boolean, ) { if ( nonNull(tt._in.binop) > minPrec && @@ -1886,16 +1885,10 @@ export default (superClass: Class): Class => this.finishNode(node, "TSAsExpression"); // rescan `<`, `>` because they were scanned when this.state.inType was true this.reScan_lt_gt(); - return this.parseExprOp( - node, - leftStartPos, - leftStartLoc, - minPrec, - noIn, - ); + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec); } - return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn); + return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec); } checkReservedWord( @@ -2135,7 +2128,6 @@ export default (superClass: Class): Class => // An apparent conditional expression could actually be an optional parameter in an arrow function. parseConditional( expr: N.Expression, - noIn: ?boolean, startPos: number, startLoc: Position, refNeedsArrowPos?: ?Pos, @@ -2145,7 +2137,6 @@ export default (superClass: Class): Class => if (!refNeedsArrowPos || !this.match(tt.question)) { return super.parseConditional( expr, - noIn, startPos, startLoc, refNeedsArrowPos, @@ -2153,7 +2144,7 @@ export default (superClass: Class): Class => } const result = this.tryParse(() => - super.parseConditional(expr, noIn, startPos, startLoc), + super.parseConditional(expr, startPos, startLoc), ); if (!result.node) { diff --git a/packages/babel-parser/src/util/production-parameter.js b/packages/babel-parser/src/util/production-parameter.js index 43644f6131ce..feaf6a960d40 100644 --- a/packages/babel-parser/src/util/production-parameter.js +++ b/packages/babel-parser/src/util/production-parameter.js @@ -1,13 +1,13 @@ // @flow -export const PARAM = 0b000, // Initial Parameter flags - PARAM_YIELD = 0b001, // track [Yield] production parameter - PARAM_AWAIT = 0b010, // track [Await] production parameter - PARAM_RETURN = 0b100; // track [Return] production parameter +export const PARAM = 0b0000, // Initial Parameter flags + PARAM_YIELD = 0b0001, // track [Yield] production parameter + PARAM_AWAIT = 0b0010, // track [Await] production parameter + PARAM_RETURN = 0b0100, // track [Return] production parameter + PARAM_IN = 0b1000; // track [In] production parameter // ProductionParameterHandler is a stack fashioned production parameter tracker // https://tc39.es/ecma262/#sec-grammar-notation -// The tracked parameters are defined above. Note that the [In] parameter is -// tracked in `noIn` argument of `parseExpression`. +// The tracked parameters are defined above. // // Whenever [+Await]/[+Yield] appears in the right-hand sides of a production, // we must enter a new tracking stack. For example when parsing @@ -53,6 +53,10 @@ export default class ProductionParameterHandler { get hasReturn(): boolean { return (this.currentFlags() & PARAM_RETURN) > 0; } + + get hasIn(): boolean { + return (this.currentFlags() & PARAM_IN) > 0; + } } export function functionFlags( From 00b974298baa5663e8b51231da99fcd9f7b80879 Mon Sep 17 00:00:00 2001 From: Yuku Kotani Date: Tue, 11 Aug 2020 01:36:09 +0900 Subject: [PATCH 79/90] Move some @babel/traverse from deps to devDeps (#11937) --- packages/babel-helper-bindify-decorators/package.json | 4 +++- packages/babel-helper-call-delegate/package.json | 4 +++- .../babel-helper-explode-assignable-expression/package.json | 4 +++- packages/babel-helper-explode-class/package.json | 4 +++- packages/babel-helper-remap-async-to-generator/package.json | 4 +++- packages/babel-helper-replace-supers/package.json | 4 +++- 6 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/babel-helper-bindify-decorators/package.json b/packages/babel-helper-bindify-decorators/package.json index c96a6ec7e2d5..37fdffb5ea01 100644 --- a/packages/babel-helper-bindify-decorators/package.json +++ b/packages/babel-helper-bindify-decorators/package.json @@ -13,7 +13,9 @@ }, "main": "lib/index.js", "dependencies": { - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" + }, + "devDependencies": { + "@babel/traverse": "^7.10.4" } } diff --git a/packages/babel-helper-call-delegate/package.json b/packages/babel-helper-call-delegate/package.json index 0eaeadb51dee..733d2f699e08 100644 --- a/packages/babel-helper-call-delegate/package.json +++ b/packages/babel-helper-call-delegate/package.json @@ -14,7 +14,9 @@ "main": "lib/index.js", "dependencies": { "@babel/helper-hoist-variables": "^7.10.4", - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" + }, + "devDependencies": { + "@babel/traverse": "^7.10.4" } } diff --git a/packages/babel-helper-explode-assignable-expression/package.json b/packages/babel-helper-explode-assignable-expression/package.json index babcda573a00..25fba8530980 100644 --- a/packages/babel-helper-explode-assignable-expression/package.json +++ b/packages/babel-helper-explode-assignable-expression/package.json @@ -13,7 +13,9 @@ }, "main": "lib/index.js", "dependencies": { - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" + }, + "devDependencies": { + "@babel/traverse": "^7.10.4" } } diff --git a/packages/babel-helper-explode-class/package.json b/packages/babel-helper-explode-class/package.json index 3ecfff375f23..cf1817f211fd 100644 --- a/packages/babel-helper-explode-class/package.json +++ b/packages/babel-helper-explode-class/package.json @@ -14,7 +14,9 @@ "main": "lib/index.js", "dependencies": { "@babel/helper-bindify-decorators": "^7.10.4", - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" + }, + "devDependencies": { + "@babel/traverse": "^7.10.4" } } diff --git a/packages/babel-helper-remap-async-to-generator/package.json b/packages/babel-helper-remap-async-to-generator/package.json index 55d20fd23622..1b9af6bfb52e 100644 --- a/packages/babel-helper-remap-async-to-generator/package.json +++ b/packages/babel-helper-remap-async-to-generator/package.json @@ -16,7 +16,9 @@ "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" + }, + "devDependencies": { + "@babel/traverse": "^7.10.4" } } diff --git a/packages/babel-helper-replace-supers/package.json b/packages/babel-helper-replace-supers/package.json index e85fccb03ecf..1be1a651a4e6 100644 --- a/packages/babel-helper-replace-supers/package.json +++ b/packages/babel-helper-replace-supers/package.json @@ -15,7 +15,9 @@ "dependencies": { "@babel/helper-member-expression-to-functions": "^7.10.4", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", "@babel/types": "^7.10.4" + }, + "devDependencies": { + "@babel/traverse": "^7.10.4" } } From a3893129ec01e0b2c9eb4b75cd0199bd527605ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Mon, 10 Aug 2020 16:57:29 -0400 Subject: [PATCH 80/90] chore: enable flowcheck on CI (#11945) * chore: enable flowcheck on CI * fix: flow errors --- Makefile | 3 +-- packages/babel-parser/src/parser/statement.js | 4 ++-- packages/babel-parser/src/plugins/estree.js | 1 - packages/babel-parser/src/plugins/placeholders.js | 3 ++- packages/babel-parser/src/plugins/typescript/index.js | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 75901f73511f..9b33cbcb2a83 100644 --- a/Makefile +++ b/Makefile @@ -85,8 +85,7 @@ watch: build-no-bundle BABEL_ENV=development $(YARN) gulp watch code-quality-ci: build-no-bundle-ci - $(MAKE) flowcheck-ci & $(MAKE) lint-ci - + $(MAKE) flowcheck-ci lint-ci flowcheck-ci: $(MAKE) flow diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 28cd5d97fe39..ea5b295a9dab 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -639,7 +639,7 @@ export default class StatementParser extends ExpressionParser { return this.finishNode(node, "ThrowStatement"); } - parseCatchClauseParam(): N.Identifier { + parseCatchClauseParam(): N.Pattern { const param = this.parseBindingAtom(); const simple = param.type === "Identifier"; @@ -1199,7 +1199,7 @@ export default class StatementParser extends ExpressionParser { // https://tc39.es/ecma262/#prod-ClassBody parseClassBody( constructorAllowsSuper: boolean, - oldStrict?: boolean, + oldStrict: boolean, ): N.ClassBody { this.classScope.enter(); diff --git a/packages/babel-parser/src/plugins/estree.js b/packages/babel-parser/src/plugins/estree.js index 06d79f3835dc..579f45e0b279 100644 --- a/packages/babel-parser/src/plugins/estree.js +++ b/packages/babel-parser/src/plugins/estree.js @@ -45,7 +45,6 @@ export default (superClass: Class): Class => estreeParseDecimalLiteral(value: any): N.Node { // https://github.com/estree/estree/blob/master/experimental/decimal.md - // $FlowIgnore // todo: use BigDecimal when node supports it. const decimal = null; const node = this.estreeParseLiteral(decimal); diff --git a/packages/babel-parser/src/plugins/placeholders.js b/packages/babel-parser/src/plugins/placeholders.js index 69d961e3e6c9..63b99a9b0308 100644 --- a/packages/babel-parser/src/plugins/placeholders.js +++ b/packages/babel-parser/src/plugins/placeholders.js @@ -203,6 +203,7 @@ export default (superClass: Class): Class => this.next(); this.takeDecorators(node); + const oldStrict = this.state.strict; const placeholder = this.parsePlaceholder("Identifier"); if (placeholder) { @@ -226,7 +227,7 @@ export default (superClass: Class): Class => this.parseClassSuper(node); node.body = this.parsePlaceholder("ClassBody") || - this.parseClassBody(!!node.superClass); + this.parseClassBody(!!node.superClass, oldStrict); return this.finishNode(node, type); } diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index 1b8c80eac6c5..f47149cd6079 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -2727,7 +2727,7 @@ export default (superClass: Class): Class => return hasContextParam ? baseCount + 1 : baseCount; } - parseCatchClauseParam(): N.Identifier { + parseCatchClauseParam(): N.Pattern { const param = super.parseCatchClauseParam(); const type = this.tsTryParseTypeAnnotation(); From 008fe25ae22e78288fbc637d41069bb4a1040987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Mon, 10 Aug 2020 17:06:34 -0400 Subject: [PATCH 81/90] fix: reset EndLocation for catch param (#11943) --- .../babel-parser/src/plugins/typescript/index.js | 1 + .../typescript/catch-clause/unknown/output.json | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index f47149cd6079..bd983377f14e 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -2733,6 +2733,7 @@ export default (superClass: Class): Class => if (type) { param.typeAnnotation = type; + this.resetEndLocation(param); } return param; diff --git a/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json b/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json index fa244b40b2b2..bb0d3780ec99 100644 --- a/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json +++ b/packages/babel-parser/test/fixtures/typescript/catch-clause/unknown/output.json @@ -47,7 +47,7 @@ "start":28,"end":50,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":29}}, "param": { "type": "Identifier", - "start":35,"end":37,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":16},"identifierName":"ex"}, + "start":35,"end":46,"loc":{"start":{"line":2,"column":14},"end":{"line":2,"column":25},"identifierName":"ex"}, "name": "ex", "typeAnnotation": { "type": "TSTypeAnnotation", @@ -81,7 +81,7 @@ "start":58,"end":76,"loc":{"start":{"line":3,"column":7},"end":{"line":3,"column":25}}, "param": { "type": "Identifier", - "start":65,"end":67,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":16},"identifierName":"ex"}, + "start":65,"end":72,"loc":{"start":{"line":3,"column":14},"end":{"line":3,"column":21},"identifierName":"ex"}, "name": "ex", "typeAnnotation": { "type": "TSTypeAnnotation", @@ -122,7 +122,7 @@ "start":133,"end":149,"loc":{"start":{"line":6,"column":7},"end":{"line":6,"column":23}}, "param": { "type": "Identifier", - "start":140,"end":142,"loc":{"start":{"line":6,"column":14},"end":{"line":6,"column":16},"identifierName":"ex"}, + "start":140,"end":145,"loc":{"start":{"line":6,"column":14},"end":{"line":6,"column":19},"identifierName":"ex"}, "name": "ex", "typeAnnotation": { "type": "TSTypeAnnotation", @@ -168,7 +168,7 @@ "start":157,"end":177,"loc":{"start":{"line":7,"column":7},"end":{"line":7,"column":27}}, "param": { "type": "Identifier", - "start":164,"end":166,"loc":{"start":{"line":7,"column":14},"end":{"line":7,"column":16},"identifierName":"ex"}, + "start":164,"end":173,"loc":{"start":{"line":7,"column":14},"end":{"line":7,"column":23},"identifierName":"ex"}, "name": "ex", "typeAnnotation": { "type": "TSTypeAnnotation", @@ -207,7 +207,7 @@ "start":185,"end":206,"loc":{"start":{"line":8,"column":7},"end":{"line":8,"column":28}}, "param": { "type": "Identifier", - "start":192,"end":194,"loc":{"start":{"line":8,"column":14},"end":{"line":8,"column":16},"identifierName":"ex"}, + "start":192,"end":202,"loc":{"start":{"line":8,"column":14},"end":{"line":8,"column":24},"identifierName":"ex"}, "name": "ex", "typeAnnotation": { "type": "TSTypeAnnotation", @@ -241,7 +241,7 @@ "start":214,"end":244,"loc":{"start":{"line":9,"column":7},"end":{"line":9,"column":37}}, "param": { "type": "Identifier", - "start":221,"end":223,"loc":{"start":{"line":9,"column":14},"end":{"line":9,"column":16},"identifierName":"ex"}, + "start":221,"end":240,"loc":{"start":{"line":9,"column":14},"end":{"line":9,"column":33},"identifierName":"ex"}, "name": "ex", "typeAnnotation": { "type": "TSTypeAnnotation", From 3bff1ce35a317051e4977264e4fbc111d1f8a83d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Mon, 10 Aug 2020 18:33:14 -0400 Subject: [PATCH 82/90] fix: disallow line break between async and property (#11947) --- packages/babel-generator/src/generators/methods.js | 2 ++ .../babel-generator/test/fixtures/regression/11870/input.js | 4 ++++ .../test/fixtures/regression/11870/options.json | 4 ++++ .../babel-generator/test/fixtures/regression/11870/output.js | 3 +++ 4 files changed, 13 insertions(+) create mode 100644 packages/babel-generator/test/fixtures/regression/11870/input.js create mode 100644 packages/babel-generator/test/fixtures/regression/11870/options.json create mode 100644 packages/babel-generator/test/fixtures/regression/11870/output.js diff --git a/packages/babel-generator/src/generators/methods.js b/packages/babel-generator/src/generators/methods.js index e9d0c67bded7..ea656b8b0c1f 100644 --- a/packages/babel-generator/src/generators/methods.js +++ b/packages/babel-generator/src/generators/methods.js @@ -37,6 +37,8 @@ export function _methodHead(node: Object) { } if (node.async) { + // ensure `async` is in the same line with property name + this._catchUp("start", key.loc); this.word("async"); this.space(); } diff --git a/packages/babel-generator/test/fixtures/regression/11870/input.js b/packages/babel-generator/test/fixtures/regression/11870/input.js new file mode 100644 index 000000000000..810351d6e237 --- /dev/null +++ b/packages/babel-generator/test/fixtures/regression/11870/input.js @@ -0,0 +1,4 @@ +class Test { + @TestDecorator + async decorateMe() {} +} diff --git a/packages/babel-generator/test/fixtures/regression/11870/options.json b/packages/babel-generator/test/fixtures/regression/11870/options.json new file mode 100644 index 000000000000..f60ee7d59843 --- /dev/null +++ b/packages/babel-generator/test/fixtures/regression/11870/options.json @@ -0,0 +1,4 @@ +{ + "retainLines": true, + "plugins": [["decorators", { "decoratorsBeforeExport": true }]] +} diff --git a/packages/babel-generator/test/fixtures/regression/11870/output.js b/packages/babel-generator/test/fixtures/regression/11870/output.js new file mode 100644 index 000000000000..7dee47804925 --- /dev/null +++ b/packages/babel-generator/test/fixtures/regression/11870/output.js @@ -0,0 +1,3 @@ +class Test { + @TestDecorator + async decorateMe() {}} \ No newline at end of file From a5bc48661bed4a392fbe14cf88469f9a8c2c5bd9 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Mon, 10 Aug 2020 18:57:48 -0400 Subject: [PATCH 83/90] Isolated exec tests (#11531) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Run exec tests in fresh contexts * Reevaluate modules in every context * Cache module code when running tests * Eliminate weakmap accesses as much as possible * Remove old multiline usage * Using bundled polyfill to significantly increase performance The individual requires for each file were the part that was sooooo slow. * Drop LRU cache size * Fixes * Fix test Co-authored-by: Huáng Jùnliàng --- .../multiple-definition-evaluation/exec.js | 10 +- .../fixtures/plugins/regression-2772/exec.js | 18 +-- .../package.json | 1 + .../src/index.js | 138 +++++++++++++----- .../no-object-assign-exec/exec.js | 12 +- .../no-object-assign-exec/exec.js | 13 +- .../no-object-assign-exec/exec.js | 18 +-- .../test/fixtures/general/issue-10339/exec.js | 18 +-- .../test/fixtures/regression/8499/exec.js | 33 ++--- .../array-symbol-unsupported/exec.js | 14 +- .../destructuring/non-iterable/exec.js | 15 +- .../react-source/basic-sample/exec.js | 16 +- .../spread/array-symbol-unsupported/exec.js | 10 +- .../test/fixtures/spread/non-iterable/exec.js | 2 +- 14 files changed, 175 insertions(+), 143 deletions(-) diff --git a/packages/babel-core/test/fixtures/plugins/multiple-definition-evaluation/exec.js b/packages/babel-core/test/fixtures/plugins/multiple-definition-evaluation/exec.js index 522d97637c23..2d8f08b6c655 100644 --- a/packages/babel-core/test/fixtures/plugins/multiple-definition-evaluation/exec.js +++ b/packages/babel-core/test/fixtures/plugins/multiple-definition-evaluation/exec.js @@ -1,8 +1,8 @@ -var code = multiline([ - "function foo() {", - " var a = a ? a : a;", - "}", -]); +var code = ` + function foo() { + var a = a ? a : a; + } +`; transform(code, { plugins: [ diff --git a/packages/babel-core/test/fixtures/plugins/regression-2772/exec.js b/packages/babel-core/test/fixtures/plugins/regression-2772/exec.js index b38b6197d9c5..b88b1876f2d0 100644 --- a/packages/babel-core/test/fixtures/plugins/regression-2772/exec.js +++ b/packages/babel-core/test/fixtures/plugins/regression-2772/exec.js @@ -1,12 +1,12 @@ -var code = multiline([ - "(function() {", - " var bar = 'lol';", - " function foo(b){", - " b === bar;", - " foo(b);", - " }", - "})();", -]); +var code = ` + (function() { + var bar = 'lol'; + function foo(b){ + b === bar + foo(b); + } + })(); +`; transform(code, { plugins: [ diff --git a/packages/babel-helper-transform-fixture-test-runner/package.json b/packages/babel-helper-transform-fixture-test-runner/package.json index 5387c003e0df..54440589cac0 100644 --- a/packages/babel-helper-transform-fixture-test-runner/package.json +++ b/packages/babel-helper-transform-fixture-test-runner/package.json @@ -23,6 +23,7 @@ "jest": "^24.8.0", "jest-diff": "^24.8.0", "lodash": "^4.17.19", + "quick-lru": "5.1.0", "resolve": "^1.3.2", "source-map": "^0.5.0" } diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index ac00464f16e6..2917364da347 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -14,34 +14,100 @@ import fs from "fs"; import path from "path"; import vm from "vm"; import checkDuplicatedNodes from "babel-check-duplicated-nodes"; +import QuickLRU from "quick-lru"; import diff from "jest-diff"; -const moduleCache = {}; -const testContext = vm.createContext({ - ...helpers, - process: process, - transform: babel.transform, - setTimeout: setTimeout, - setImmediate: setImmediate, - expect, -}); -testContext.global = testContext; +const cachedScripts = new QuickLRU({ maxSize: 10 }); +const contextModuleCache = new WeakMap(); +const sharedTestContext = createContext(); + +function createContext() { + const context = vm.createContext({ + ...helpers, + process: process, + transform: babel.transform, + setTimeout: setTimeout, + setImmediate: setImmediate, + expect, + }); + context.global = context; + + const moduleCache = Object.create(null); + contextModuleCache.set(context, moduleCache); + + // Initialize the test context with the polyfill, and then freeze the global to prevent implicit + // global creation in tests, which could cause things to bleed between tests. + runModuleInTestContext( + "@babel/polyfill/dist/polyfill.min", + __filename, + context, + moduleCache, + ); + + // Populate the "babelHelpers" global with Babel's helper utilities. + runCacheableScriptInTestContext( + path.join(__dirname, "babel-helpers-in-memory.js"), + buildExternalHelpers, + context, + moduleCache, + ); + + return context; +} -// Initialize the test context with the polyfill, and then freeze the global to prevent implicit -// global creation in tests, which could cause things to bleed between tests. -runModuleInTestContext("@babel/polyfill", __filename); +function runCacheableScriptInTestContext( + filename: string, + srcFn: () => string, + context: Context, + moduleCache: Object, +) { + let cached = cachedScripts.get(filename); + if (!cached) { + const code = `(function (exports, require, module, __filename, __dirname) {\n${srcFn()}\n});`; + cached = { + code, + cachedData: undefined, + }; + cachedScripts.set(filename, cached); + } -// Populate the "babelHelpers" global with Babel's helper utilities. -runCodeInTestContext(buildExternalHelpers(), { - filename: path.join(__dirname, "babel-helpers-in-memory.js"), -}); + const script = new vm.Script(cached.code, { + filename, + displayErrors: true, + lineOffset: -1, + cachedData: cached.cachedData, + produceCachedData: true, + }); + + if (script.cachedDataProduced) { + cached.cachedData = script.cachedData; + } + + const module = { + id: filename, + exports: {}, + }; + const req = id => runModuleInTestContext(id, filename, context, moduleCache); + const dirname = path.dirname(filename); + + script + .runInContext(context) + .call(module.exports, module.exports, req, module, filename, dirname); + + return module; +} /** * A basic implementation of CommonJS so we can execute `@babel/polyfill` inside our test context. * This allows us to run our unittests */ -function runModuleInTestContext(id: string, relativeFilename: string) { +function runModuleInTestContext( + id: string, + relativeFilename: string, + context: Context, + moduleCache: Object, +) { const filename = resolve.sync(id, { basedir: path.dirname(relativeFilename), }); @@ -50,23 +116,17 @@ function runModuleInTestContext(id: string, relativeFilename: string) { // the context's global scope. if (filename === id) return require(id); + // Modules can only evaluate once per context, so the moduleCache is a + // stronger cache guarantee than the LRU's Script cache. if (moduleCache[filename]) return moduleCache[filename].exports; - const module = (moduleCache[filename] = { - id: filename, - exports: {}, - }); - const dirname = path.dirname(filename); - const req = id => runModuleInTestContext(id, filename); - - const src = fs.readFileSync(filename, "utf8"); - const code = `(function (exports, require, module, __filename, __dirname) {\n${src}\n});`; - - vm.runInContext(code, testContext, { + const module = runCacheableScriptInTestContext( filename, - displayErrors: true, - lineOffset: -1, - }).call(module.exports, module.exports, req, module, filename, dirname); + () => fs.readFileSync(filename, "utf8"), + context, + moduleCache, + ); + moduleCache[filename] = module; return module.exports; } @@ -76,10 +136,15 @@ function runModuleInTestContext(id: string, relativeFilename: string) { * * Exposed for unit tests, not for use as an API. */ -export function runCodeInTestContext(code: string, opts: { filename: string }) { +export function runCodeInTestContext( + code: string, + opts: { filename: string }, + context = sharedTestContext, +) { const filename = opts.filename; const dirname = path.dirname(filename); - const req = id => runModuleInTestContext(id, filename); + const moduleCache = contextModuleCache.get(context); + const req = id => runModuleInTestContext(id, filename, context, moduleCache); const module = { id: filename, @@ -94,7 +159,7 @@ export function runCodeInTestContext(code: string, opts: { filename: string }) { // Note: This isn't doing .call(module.exports, ...) because some of our tests currently // rely on 'this === global'. const src = `(function(exports, require, module, __filename, __dirname, opts) {\n${code}\n});`; - return vm.runInContext(src, testContext, { + return vm.runInContext(src, context, { filename, displayErrors: true, lineOffset: -1, @@ -183,13 +248,14 @@ function run(task) { let resultExec; if (execCode) { + const context = createContext(); const execOpts = getOpts(exec); result = babel.transform(execCode, execOpts); checkDuplicatedNodes(babel, result.ast); execCode = result.code; try { - resultExec = runCodeInTestContext(execCode, execOpts); + resultExec = runCodeInTestContext(execCode, execOpts, context); } catch (err) { // Pass empty location to include the whole file in the output. err.message = diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose-builtins/no-object-assign-exec/exec.js b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose-builtins/no-object-assign-exec/exec.js index b8efc6d372e1..40fdaabb0ecc 100644 --- a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose-builtins/no-object-assign-exec/exec.js +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose-builtins/no-object-assign-exec/exec.js @@ -1,27 +1,25 @@ "use strict"; -const NOSET = `NOSET${__filename}`; -const NOWRITE = `NOWRITE${__filename}`; -Object.defineProperty(Object.prototype, NOSET, { +Object.defineProperty(Object.prototype, 'NOSET', { get(value) { // noop }, }); -Object.defineProperty(Object.prototype, NOWRITE, { +Object.defineProperty(Object.prototype, 'NOWRITE', { writable: false, value: 'abc', }); -const obj = { [NOSET]: 123 }; +const obj = { 'NOSET': 123 }; // this won't work as expected if transformed as Object.assign (or equivalent) // because those trigger object setters (spread don't) expect(() => { const objSpread = { ...obj }; }).toThrow(); -const obj2 = { [NOWRITE]: 456 }; -// this throws `TypeError: Cannot assign to read only property 'NOWRITE'` +const obj2 = { 'NOWRITE': 456 }; +// this throws `TypeError: Cannot assign to read only property 'NOWRITE'` // if transformed as Object.assign (or equivalent) because those use *assignment* for creating properties // (spread defines them) expect(() => { diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/no-object-assign-exec/exec.js b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/no-object-assign-exec/exec.js index b8efc6d372e1..4d937710e367 100644 --- a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/no-object-assign-exec/exec.js +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread-loose/no-object-assign-exec/exec.js @@ -1,27 +1,24 @@ "use strict"; -const NOSET = `NOSET${__filename}`; -const NOWRITE = `NOWRITE${__filename}`; - -Object.defineProperty(Object.prototype, NOSET, { +Object.defineProperty(Object.prototype, 'NOSET', { get(value) { // noop }, }); -Object.defineProperty(Object.prototype, NOWRITE, { +Object.defineProperty(Object.prototype, 'NOWRITE', { writable: false, value: 'abc', }); -const obj = { [NOSET]: 123 }; +const obj = { 'NOSET': 123 }; // this won't work as expected if transformed as Object.assign (or equivalent) // because those trigger object setters (spread don't) expect(() => { const objSpread = { ...obj }; }).toThrow(); -const obj2 = { [NOWRITE]: 456 }; -// this throws `TypeError: Cannot assign to read only property 'NOWRITE'` +const obj2 = { 'NOWRITE': 456 }; +// this throws `TypeError: Cannot assign to read only property 'NOWRITE'` // if transformed as Object.assign (or equivalent) because those use *assignment* for creating properties // (spread defines them) expect(() => { diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread/no-object-assign-exec/exec.js b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread/no-object-assign-exec/exec.js index e358e69cfeee..2fbdb3cb1d65 100644 --- a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread/no-object-assign-exec/exec.js +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/object-spread/no-object-assign-exec/exec.js @@ -1,31 +1,27 @@ "use strict"; -const NOSET = `NOSET${__filename}`; -const NOWRITE = `NOWRITE${__filename}`; - -Object.defineProperty(Object.prototype, NOSET, { - set(value) { +Object.defineProperty(Object.prototype, 'NOSET', { + get(value) { // noop }, }); -Object.defineProperty(Object.prototype, NOWRITE, { +Object.defineProperty(Object.prototype, 'NOWRITE', { writable: false, value: 'abc', }); -const obj = { [NOSET]: 123 }; +const obj = { NOSET: 123 }; // this wouldn't work as expected if transformed as Object.assign (or equivalent) // because those trigger object setters (spread don't) const objSpread = { ...obj }; +expect(objSpread).toHaveProperty('NOSET', 123); -const obj2 = { NOSET: 123, [NOWRITE]: 456 }; +const obj2 = { NOWRITE: 456 }; // this line would throw `TypeError: Cannot assign to read only property 'NOWRITE'` // if transformed as Object.assign (or equivalent) because those use *assignment* for creating properties // (spread defines them) const obj2Spread = { ...obj2 }; - -expect(objSpread).toEqual(obj); -expect(obj2Spread).toEqual(obj2); +expect(obj2Spread).toHaveProperty('NOWRITE', 456); const KEY = Symbol('key'); const obj3Spread = { ...{ get foo () { return 'bar' } }, [KEY]: 'symbol' }; diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-10339/exec.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-10339/exec.js index 9fea95129bb4..9073078104c7 100644 --- a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-10339/exec.js +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/issue-10339/exec.js @@ -1,12 +1,12 @@ -const code = multiline([ - "for (const {foo, ...bar} of { bar: [] }) {", - "() => foo;", - "const [qux] = bar;", - "try {} catch (e) {", - "let quux = qux;", - "}", - "}" -]); +const code = ` + for (const {foo, ...bar} of { bar: [] }) { + () => foo; + const [qux] = bar; + try {} catch (e) { + let quux = qux; + } + } +`; let programPath; let forOfPath; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/exec.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/exec.js index 1a5d146d5e17..143ef440d8cb 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/exec.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/8499/exec.js @@ -1,26 +1,15 @@ -const oldReflect = this.Reflect; -const oldHTMLElement = this.HTMLElement; +// Pretend that `Reflect.construct` isn't supported. +global.Reflect = undefined; -try { - // Pretend that `Reflect.construct` isn't supported. - this.Reflect = undefined; +global.HTMLElement = function() { + // Here, `this.HTMLElement` is this function, not the original HTMLElement + // constructor. `this.constructor` should be this function too, but isn't. + constructor = this.constructor; +}; - this.HTMLElement = function() { - // Here, `this.HTMLElement` is this function, not the original HTMLElement - // constructor. `this.constructor` should be this function too, but isn't. - constructor = this.constructor; - }; - - var constructor; - - class CustomElement extends HTMLElement {}; - new CustomElement(); - - expect(constructor).toBe(CustomElement); -} finally { - // Restore original env - this.Reflect = oldReflect; - this.HTMLElement = oldHTMLElement; -} +var constructor; +class CustomElement extends HTMLElement {} +new CustomElement(); +expect(constructor).toBe(CustomElement); diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/array-symbol-unsupported/exec.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/array-symbol-unsupported/exec.js index ea73919662e2..4ee3b0499b95 100644 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/array-symbol-unsupported/exec.js +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/array-symbol-unsupported/exec.js @@ -1,13 +1,9 @@ var a = (() => [1, 2, 3])(); // Simulate old environment -let _Symbol = Symbol; -Symbol = void 0; -try { - var [first, ...rest] = a; +global.Symbol = void 0; - expect(first).toBe(1); - expect(rest).toEqual([2, 3]); -} finally { - Symbol = _Symbol; -} +var [first, ...rest] = a; + +expect(first).toBe(1); +expect(rest).toEqual([2, 3]); diff --git a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/non-iterable/exec.js b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/non-iterable/exec.js index e0bac050d60a..d110d3077940 100644 --- a/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/non-iterable/exec.js +++ b/packages/babel-plugin-transform-destructuring/test/fixtures/destructuring/non-iterable/exec.js @@ -8,15 +8,8 @@ expect( () => [foo, bar] = {} ).toThrow(/destructure non-iterable/); -// Simulate old browser -let _Symbol = Symbol; -Symbol = void 0; -try { +global.Symbol = void 0; - expect( - () => [foo, bar] = {} - ).toThrow(/destructure non-iterable/); - -} finally { - Symbol = _Symbol; -} +expect( + () => [foo, bar] = {} +).toThrow(/destructure non-iterable/); diff --git a/packages/babel-plugin-transform-react-jsx-source/test/fixtures/react-source/basic-sample/exec.js b/packages/babel-plugin-transform-react-jsx-source/test/fixtures/react-source/basic-sample/exec.js index c3bb77823870..21bf1293f132 100644 --- a/packages/babel-plugin-transform-react-jsx-source/test/fixtures/react-source/basic-sample/exec.js +++ b/packages/babel-plugin-transform-react-jsx-source/test/fixtures/react-source/basic-sample/exec.js @@ -3,13 +3,13 @@ var actual = transform( Object.assign({}, opts, { filename: '/fake/path/mock.js' }) ).code; -var expected = multiline([ - 'var _jsxFileName = "/fake/path/mock.js";', - 'var x = ;', -]); +var expected = ` +var _jsxFileName = "/fake/path/mock.js"; +var x = ; +`.trim(); expect(actual).toBe(expected); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/array-symbol-unsupported/exec.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/array-symbol-unsupported/exec.js index 93ad0b7a1e33..0d320afa2e35 100644 --- a/packages/babel-plugin-transform-spread/test/fixtures/spread/array-symbol-unsupported/exec.js +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/array-symbol-unsupported/exec.js @@ -1,10 +1,6 @@ var a = (() => [2, 3])(); // Simulate old environment -let _Symbol = Symbol; -Symbol = void 0; -try { - expect([1, ...a]).toEqual([1, 2, 3]); -} finally { - Symbol = _Symbol; -} +global.Symbol = void 0; + +expect([1, ...a]).toEqual([1, 2, 3]); diff --git a/packages/babel-plugin-transform-spread/test/fixtures/spread/non-iterable/exec.js b/packages/babel-plugin-transform-spread/test/fixtures/spread/non-iterable/exec.js index 0ff7a4876673..f00f0ae0cfcf 100644 --- a/packages/babel-plugin-transform-spread/test/fixtures/spread/non-iterable/exec.js +++ b/packages/babel-plugin-transform-spread/test/fixtures/spread/non-iterable/exec.js @@ -5,6 +5,6 @@ expect(() => [...undefined]).toThrow(/spread non-iterable/); expect(() => [...o]).toThrow(/spread non-iterable/); // Simulate old browser -Symbol = void 0; +global.Symbol = void 0; expect(() => [...o]).toThrow(/spread non-iterable/); From 3995160fc7e2427f38ee8a787a59ddafcb0e8bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 11 Aug 2020 09:55:13 -0400 Subject: [PATCH 84/90] fix: push new token context when braceHashL is seen (#11941) * fix: push new token context when braceHashL is seen * Update packages/babel-parser/src/tokenizer/context.js --- .../babel-parser/src/tokenizer/context.js | 7 ++ .../as-jsx-attribute-value-bar/input.js | 1 + .../as-jsx-attribute-value-bar/options.json | 3 + .../as-jsx-attribute-value-bar/output.json | 83 +++++++++++++++++++ .../as-jsx-attribute-value-hash/input.js | 1 + .../as-jsx-attribute-value-hash/options.json | 3 + .../as-jsx-attribute-value-hash/output.json | 83 +++++++++++++++++++ .../disambiguate-regex-hash/input.js | 1 + .../disambiguate-regex-hash/options.json | 3 + .../disambiguate-regex-hash/output.json | 36 ++++++++ 10 files changed, 221 insertions(+) create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/output.json diff --git a/packages/babel-parser/src/tokenizer/context.js b/packages/babel-parser/src/tokenizer/context.js index 101ac725969a..8508e69bdd69 100644 --- a/packages/babel-parser/src/tokenizer/context.js +++ b/packages/babel-parser/src/tokenizer/context.js @@ -31,6 +31,7 @@ export const types: { } = { braceStatement: new TokContext("{", false), braceExpression: new TokContext("{", true), + recordExpression: new TokContext("#{", true), templateQuasi: new TokContext("${", false), parenStatement: new TokContext("(", false), parenExpression: new TokContext("(", true), @@ -140,3 +141,9 @@ tt.backQuote.updateContext = function () { tt.star.updateContext = function () { this.state.exprAllowed = false; }; + +// we don't need to update context for tt.braceBarL because we do not pop context for tt.braceBarR +tt.braceHashL.updateContext = function () { + this.state.context.push(types.recordExpression); + this.state.exprAllowed = true; /* tt.braceHashL.beforeExpr */ +}; diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/input.js b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/input.js new file mode 100644 index 000000000000..f325f9eb9a5d --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/input.js @@ -0,0 +1 @@ + diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/options.json b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/options.json new file mode 100644 index 000000000000..663c67344986 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["jsx", "flow", ["recordAndTuple", { "syntaxType": "bar" }]] +} diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/output.json b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/output.json new file mode 100644 index 000000000000..dac25261bdb0 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-bar/output.json @@ -0,0 +1,83 @@ +{ + "type": "File", + "start":0,"end":37,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}}, + "program": { + "type": "Program", + "start":0,"end":37,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":37,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}}, + "expression": { + "type": "JSXElement", + "start":0,"end":37,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}}, + "openingElement": { + "type": "JSXOpeningElement", + "start":0,"end":30,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}}, + "name": { + "type": "JSXIdentifier", + "start":1,"end":5,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":5}}, + "name": "Card" + }, + "attributes": [ + { + "type": "JSXAttribute", + "start":6,"end":29,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":29}}, + "name": { + "type": "JSXIdentifier", + "start":6,"end":10,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":10}}, + "name": "card" + }, + "value": { + "type": "JSXExpressionContainer", + "start":11,"end":29,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":29}}, + "expression": { + "type": "RecordExpression", + "start":12,"end":28,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":28}}, + "properties": [ + { + "type": "ObjectProperty", + "start":14,"end":26,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":26}}, + "method": false, + "key": { + "type": "Identifier", + "start":14,"end":19,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":19},"identifierName":"title"}, + "name": "title" + }, + "computed": false, + "shorthand": false, + "value": { + "type": "StringLiteral", + "start":21,"end":26,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":26}}, + "extra": { + "rawValue": "foo", + "raw": "\"foo\"" + }, + "value": "foo" + } + } + ] + } + } + } + ], + "selfClosing": false + }, + "closingElement": { + "type": "JSXClosingElement", + "start":30,"end":37,"loc":{"start":{"line":1,"column":30},"end":{"line":1,"column":37}}, + "name": { + "type": "JSXIdentifier", + "start":32,"end":36,"loc":{"start":{"line":1,"column":32},"end":{"line":1,"column":36}}, + "name": "Card" + } + }, + "children": [] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/input.js b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/input.js new file mode 100644 index 000000000000..387feb4a9ef9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/input.js @@ -0,0 +1 @@ + diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/options.json b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/options.json new file mode 100644 index 000000000000..625b0abffbc0 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["jsx", "flow", ["recordAndTuple", { "syntaxType": "hash" }]] +} diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/output.json b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/output.json new file mode 100644 index 000000000000..4d775dacb9c5 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/as-jsx-attribute-value-hash/output.json @@ -0,0 +1,83 @@ +{ + "type": "File", + "start":0,"end":36,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "program": { + "type": "Program", + "start":0,"end":36,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":36,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "expression": { + "type": "JSXElement", + "start":0,"end":36,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":36}}, + "openingElement": { + "type": "JSXOpeningElement", + "start":0,"end":29,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":29}}, + "name": { + "type": "JSXIdentifier", + "start":1,"end":5,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":5}}, + "name": "Card" + }, + "attributes": [ + { + "type": "JSXAttribute", + "start":6,"end":28,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":28}}, + "name": { + "type": "JSXIdentifier", + "start":6,"end":10,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":10}}, + "name": "card" + }, + "value": { + "type": "JSXExpressionContainer", + "start":11,"end":28,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":28}}, + "expression": { + "type": "RecordExpression", + "start":12,"end":27,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":27}}, + "properties": [ + { + "type": "ObjectProperty", + "start":14,"end":26,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":26}}, + "method": false, + "key": { + "type": "Identifier", + "start":14,"end":19,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":19},"identifierName":"title"}, + "name": "title" + }, + "computed": false, + "shorthand": false, + "value": { + "type": "StringLiteral", + "start":21,"end":26,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":26}}, + "extra": { + "rawValue": "foo", + "raw": "\"foo\"" + }, + "value": "foo" + } + } + ] + } + } + } + ], + "selfClosing": false + }, + "closingElement": { + "type": "JSXClosingElement", + "start":29,"end":36,"loc":{"start":{"line":1,"column":29},"end":{"line":1,"column":36}}, + "name": { + "type": "JSXIdentifier", + "start":31,"end":35,"loc":{"start":{"line":1,"column":31},"end":{"line":1,"column":35}}, + "name": "Card" + } + }, + "children": [] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/input.js b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/input.js new file mode 100644 index 000000000000..605ff6ffa946 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/input.js @@ -0,0 +1 @@ +(#{})/foo diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/options.json b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/options.json new file mode 100644 index 000000000000..625b0abffbc0 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["jsx", "flow", ["recordAndTuple", { "syntaxType": "hash" }]] +} diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/output.json b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/output.json new file mode 100644 index 000000000000..0b986267cd22 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/disambiguate-regex-hash/output.json @@ -0,0 +1,36 @@ +{ + "type": "File", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "program": { + "type": "Program", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "expression": { + "type": "BinaryExpression", + "start":0,"end":9,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}}, + "left": { + "type": "RecordExpression", + "start":1,"end":4,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":4}}, + "properties": [], + "extra": { + "parenthesized": true, + "parenStart": 0 + } + }, + "operator": "/", + "right": { + "type": "Identifier", + "start":6,"end":9,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":9},"identifierName":"foo"}, + "name": "foo" + } + } + } + ], + "directives": [] + } +} \ No newline at end of file From df9ee2c7cda177b0a8810344ad7a41ab456b1b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 11 Aug 2020 13:43:03 -0400 Subject: [PATCH 85/90] Simplify tokenizer update context (#11944) * replace lineBreak.test by hasPrecedingLingBreak * refactor: simplify updateContext --- .../babel-parser/src/parser/expression.js | 24 +++++++++---------- packages/babel-parser/src/parser/statement.js | 4 +--- .../babel-parser/src/tokenizer/context.js | 15 ++---------- packages/babel-parser/src/tokenizer/index.js | 10 +++----- packages/babel-parser/src/tokenizer/types.js | 3 ++- 5 files changed, 19 insertions(+), 37 deletions(-) diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 74d09fd8a05f..9df262f9cf13 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -2306,20 +2306,23 @@ export default class ExpressionParser extends LValParser { parseIdentifierName(pos: number, liberal?: boolean): string { let name: string; - if (this.match(tt.name)) { + const { start, type } = this.state; + + if (type === tt.name) { name = this.state.value; - } else if (this.state.type.keyword) { - name = this.state.type.keyword; + } else if (type.keyword) { + name = type.keyword; // `class` and `function` keywords push function-type token context into this.context. // But there is no chance to pop the context if the keyword is consumed // as an identifier such as a property name. - const context = this.state.context; + const curContext = this.curContext(); if ( - (name === "class" || name === "function") && - context[context.length - 1].token === "function" + (type === tt._class || type === tt._function) && + (curContext === ct.functionStatement || + curContext === ct.functionExpression) ) { - context.pop(); + this.state.context.pop(); } } else { throw this.unexpected(); @@ -2330,12 +2333,7 @@ export default class ExpressionParser extends LValParser { // This will prevent this.next() from throwing about unexpected escapes. this.state.type = tt.name; } else { - this.checkReservedWord( - name, - this.state.start, - !!this.state.type.keyword, - false, - ); + this.checkReservedWord(name, start, !!type.keyword, false); } this.next(); diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index ea5b295a9dab..a3e17975d1eb 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -629,9 +629,7 @@ export default class StatementParser extends ExpressionParser { parseThrowStatement(node: N.ThrowStatement): N.ThrowStatement { this.next(); - if ( - lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)) - ) { + if (this.hasPrecedingLineBreak()) { this.raise(this.state.lastTokEnd, Errors.NewlineAfterThrow); } node.argument = this.parseExpression(); diff --git a/packages/babel-parser/src/tokenizer/context.js b/packages/babel-parser/src/tokenizer/context.js index 8508e69bdd69..f93c19971efb 100644 --- a/packages/babel-parser/src/tokenizer/context.js +++ b/packages/babel-parser/src/tokenizer/context.js @@ -5,7 +5,6 @@ // See https://github.com/mozilla/sweet.js/wiki/design import { types as tt } from "./types"; -import { lineBreak } from "../util/whitespace"; export class TokContext { constructor( @@ -105,17 +104,11 @@ tt.incDec.updateContext = function () { }; tt._function.updateContext = tt._class.updateContext = function (prevType) { - if (prevType === tt.dot || prevType === tt.questionDot) { - // when function/class follows dot/questionDot, it is part of - // (optional)MemberExpression, then we don't need to push new token context - } else if ( + if ( prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else && - !( - prevType === tt._return && - lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)) - ) && + !(prevType === tt._return && this.hasPrecedingLineBreak()) && !( (prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat @@ -138,10 +131,6 @@ tt.backQuote.updateContext = function () { this.state.exprAllowed = false; }; -tt.star.updateContext = function () { - this.state.exprAllowed = false; -}; - // we don't need to update context for tt.braceBarL because we do not pop context for tt.braceBarR tt.braceHashL.updateContext = function () { this.state.context.push(types.recordExpression); diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index d8104c4f9b45..cbc0efab0fe8 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -114,6 +114,7 @@ export default class Tokenizer extends ParserErrors { // Forward-declarations // parser/util.js /*:: + +hasPrecedingLineBreak: () => boolean; +unexpected: (pos?: ?number, messageOrType?: string | TokenType) => empty; +expectPlugin: (name: string, pos?: ?number) => true; */ @@ -603,10 +604,7 @@ export default class Tokenizer extends ParserErrors { next === charCodes.dash && !this.inModule && this.input.charCodeAt(this.state.pos + 2) === charCodes.greaterThan && - (this.state.lastTokEnd === 0 || - lineBreak.test( - this.input.slice(this.state.lastTokEnd, this.state.pos), - )) + (this.state.lastTokEnd === 0 || this.hasPrecedingLineBreak()) ) { // A `-->` line comment this.skipLineComment(3); @@ -1525,9 +1523,7 @@ export default class Tokenizer extends ParserErrors { prevType === tt._return || (prevType === tt.name && this.state.exprAllowed) ) { - return lineBreak.test( - this.input.slice(this.state.lastTokEnd, this.state.start), - ); + return this.hasPrecedingLineBreak(); } if ( diff --git a/packages/babel-parser/src/tokenizer/types.js b/packages/babel-parser/src/tokenizer/types.js index 535e16bd1204..ca67cb0732cf 100644 --- a/packages/babel-parser/src/tokenizer/types.js +++ b/packages/babel-parser/src/tokenizer/types.js @@ -155,7 +155,8 @@ export const types: { [name: string]: TokenType } = { plusMin: new TokenType("+/-", { beforeExpr, binop: 9, prefix, startsExpr }), // startsExpr: required by v8intrinsic plugin modulo: new TokenType("%", { beforeExpr, binop: 10, startsExpr }), - star: createBinop("*", 10), + // unset `beforeExpr` as it can be `function *` + star: new TokenType("*", { binop: 10 }), slash: createBinop("/", 10), exponent: new TokenType("**", { beforeExpr, From 2e2d15fb4c8381e63c1b8ec34015c379fca4cb01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Wed, 12 Aug 2020 10:18:36 -0400 Subject: [PATCH 86/90] chore: build babel-polyfill-dist on make watch (#11951) --- Makefile | 4 ++-- .../babel-helper-transform-fixture-test-runner/src/index.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 9b33cbcb2a83..7567b5185659 100644 --- a/Makefile +++ b/Makefile @@ -75,8 +75,8 @@ build-no-bundle: clean clean-lib BABEL_ENV=development $(YARN) gulp build-no-bundle # Ensure that build artifacts for types are created during local # development too. - $(MAKE) generate-type-helpers - $(MAKE) build-typings + # Babel-transform-fixture-test-runner requires minified polyfill for performance + $(MAKE) generate-type-helpers build-typings build-polyfill-dist build-no-bundle-ci: bootstrap-only $(MAKE) build-no-bundle diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index 2917364da347..75187153e130 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -39,7 +39,7 @@ function createContext() { // Initialize the test context with the polyfill, and then freeze the global to prevent implicit // global creation in tests, which could cause things to bleed between tests. runModuleInTestContext( - "@babel/polyfill/dist/polyfill.min", + "@babel/polyfill/dist/polyfill.min.js", __filename, context, moduleCache, From 9c565a97d5e103b4189621c5c85eabcc0fa01b6f Mon Sep 17 00:00:00 2001 From: "James C. Davis" Date: Thu, 13 Aug 2020 06:43:07 -0400 Subject: [PATCH 87/90] chore: remove obsolete comment (#11953) --- packages/babel-helpers/src/helpers.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/babel-helpers/src/helpers.js b/packages/babel-helpers/src/helpers.js index e1329ce14a96..7bb8038a3ce3 100644 --- a/packages/babel-helpers/src/helpers.js +++ b/packages/babel-helpers/src/helpers.js @@ -1265,8 +1265,6 @@ helpers.applyDecoratedDescriptor = helper("7.0.0-beta.0")` } if (desc.initializer === void 0){ - // This is a hack to avoid this being processed by 'transform-runtime'. - // See issue #9. Object.defineProperty(target, property, desc); desc = null; } From 66c6b3b949b40ae0c111adb72a2e6999b208afb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 14 Aug 2020 11:53:17 -0400 Subject: [PATCH 88/90] Add more parser test cases (#11923) * remove unused codes * refactor: remove unused parseAccessModifier * refactor: remove redundant async function checks * refactor: remove redundant class check in checkExport * add more parser test cases * Update packages/babel-parser/src/parser/statement.js Co-authored-by: Brian Ng * chore: add sourceType: unambiguous test Co-authored-by: Brian Ng --- packages/babel-parser/src/parser/statement.js | 40 ++------------- .../top-level-await/module/input.js | 2 + .../top-level-await/module/options.json | 3 ++ .../top-level-await/module/output.json | 33 +++++++++++++ .../experimental/top-level-await/options.json | 3 ++ .../top-level-await/script/input.js | 2 + .../top-level-await/script/options.json | 3 ++ .../top-level-await/script/output.json | 33 +++++++++++++ .../top-level-await/unambiguous/input.js | 2 + .../top-level-await/unambiguous/options.json | 3 ++ .../top-level-await/unambiguous/output.json | 33 +++++++++++++ .../invalid-object-method/input.js | 1 + .../invalid-object-method/options.json | 3 ++ .../export-ns-from/ns-dangling-comma/input.js | 1 + .../ns-dangling-comma/options.json | 3 ++ .../invalid-non-member-expression/input.js | 1 + .../options.json | 6 +++ .../experimental/bind-operator/options.json | 3 ++ .../invalid-decorator-spread-element/input.js | 1 + .../options.json | 4 ++ .../default-dangling-comma/input.js | 1 + .../default-dangling-comma/options.json | 3 ++ .../input.js | 1 + .../options.json | 3 ++ .../output.json | 49 +++++++++++++++++++ .../invalid-record-proto/input.js | 1 + .../invalid-record-proto/options.json | 3 ++ .../invalid-record-proto/output.json | 42 ++++++++++++++++ 28 files changed, 246 insertions(+), 37 deletions(-) create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/module/input.js create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/module/options.json create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/module/output.json create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/options.json create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/script/input.js create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/script/options.json create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/script/output.json create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/input.js create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/options.json create mode 100644 packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/output.json create mode 100644 packages/babel-parser/test/fixtures/es2015/destructuring/invalid-object-method/input.js create mode 100644 packages/babel-parser/test/fixtures/es2015/destructuring/invalid-object-method/options.json create mode 100644 packages/babel-parser/test/fixtures/es2020/export-ns-from/ns-dangling-comma/input.js create mode 100644 packages/babel-parser/test/fixtures/es2020/export-ns-from/ns-dangling-comma/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/bind-operator/invalid-non-member-expression/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/bind-operator/invalid-non-member-expression/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/bind-operator/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/decorators/invalid-decorator-spread-element/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/decorators/invalid-decorator-spread-element/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-dangling-comma/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/export-extensions/default-dangling-comma/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/output.json create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/input.js create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/options.json create mode 100644 packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/output.json diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index a3e17975d1eb..a9c903e525d1 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -1258,20 +1258,6 @@ export default class StatementParser extends ExpressionParser { return this.finishNode(classBody, "ClassBody"); } - // Check grammar production: - // IdentifierName *_opt ClassElementName - // It is used in `parsePropertyDefinition` to detect AsyncMethod and Accessors - maybeClassModifier(prop: N.ObjectProperty): boolean { - return ( - !prop.computed && - prop.key.type === "Identifier" && - (this.isLiteralPropertyName() || - this.match(tt.bracketL) || - this.match(tt.star) || - this.match(tt.hash)) - ); - } - // returns true if the current identifier is a method/field name, // false if it is a modifier parseClassMemberFromModifier( @@ -1611,11 +1597,6 @@ export default class StatementParser extends ExpressionParser { methodOrProp: N.ClassMethod | N.ClassProperty, ): void {} - // Overridden in typescript.js - parseAccessModifier(): ?N.Accessibility { - return undefined; - } - parseClassPrivateProperty( node: N.ClassPrivateProperty, ): N.ClassPrivateProperty { @@ -1784,19 +1765,9 @@ export default class StatementParser extends ExpressionParser { maybeParseExportDeclaration(node: N.Node): boolean { if (this.shouldParseExportDeclaration()) { - if (this.isContextual("async")) { - const next = this.nextTokenStart(); - - // export async; - if (!this.isUnparsedContextual(next, "function")) { - this.unexpected(next, tt._function); - } - } - node.specifiers = []; node.source = null; node.declaration = this.parseExportDeclaration(node); - return true; } return false; @@ -1999,15 +1970,10 @@ export default class StatementParser extends ExpressionParser { const currentContextDecorators = this.state.decoratorStack[ this.state.decoratorStack.length - 1 ]; + // If node.declaration is a class, it will take all decorators in the current context. + // Thus we should throw if we see non-empty decorators here. if (currentContextDecorators.length) { - const isClass = - node.declaration && - (node.declaration.type === "ClassDeclaration" || - node.declaration.type === "ClassExpression"); - if (!node.declaration || !isClass) { - throw this.raise(node.start, Errors.UnsupportedDecoratorExport); - } - this.takeDecorators(node.declaration); + throw this.raise(node.start, Errors.UnsupportedDecoratorExport); } } diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/module/input.js b/packages/babel-parser/test/expressions/experimental/top-level-await/module/input.js new file mode 100644 index 000000000000..3bd188069035 --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/module/input.js @@ -0,0 +1,2 @@ +// prettier-ignore +await +42 diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/module/options.json b/packages/babel-parser/test/expressions/experimental/top-level-await/module/options.json new file mode 100644 index 000000000000..2104ca43283f --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/module/options.json @@ -0,0 +1,3 @@ +{ + "sourceType": "module" +} diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/module/output.json b/packages/babel-parser/test/expressions/experimental/top-level-await/module/output.json new file mode 100644 index 000000000000..f961d5d8b833 --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/module/output.json @@ -0,0 +1,33 @@ +{ + "type": "AwaitExpression", + "start":19,"end":28,"loc":{"start":{"line":2,"column":0},"end":{"line":2,"column":9}}, + "argument": { + "type": "UnaryExpression", + "start":25,"end":28,"loc":{"start":{"line":2,"column":6},"end":{"line":2,"column":9}}, + "operator": "+", + "prefix": true, + "argument": { + "type": "NumericLiteral", + "start":26,"end":28,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":9}}, + "extra": { + "rawValue": 42, + "raw": "42" + }, + "value": 42 + } + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " prettier-ignore", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}} + } + ], + "comments": [ + { + "type": "CommentLine", + "value": " prettier-ignore", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}} + } + ] +} \ No newline at end of file diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/options.json b/packages/babel-parser/test/expressions/experimental/top-level-await/options.json new file mode 100644 index 000000000000..016d522a6107 --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["topLevelAwait"] +} diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/script/input.js b/packages/babel-parser/test/expressions/experimental/top-level-await/script/input.js new file mode 100644 index 000000000000..3bd188069035 --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/script/input.js @@ -0,0 +1,2 @@ +// prettier-ignore +await +42 diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/script/options.json b/packages/babel-parser/test/expressions/experimental/top-level-await/script/options.json new file mode 100644 index 000000000000..b412ffe6712f --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/script/options.json @@ -0,0 +1,3 @@ +{ + "sourceType": "script" +} diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/script/output.json b/packages/babel-parser/test/expressions/experimental/top-level-await/script/output.json new file mode 100644 index 000000000000..6763d89fd179 --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/script/output.json @@ -0,0 +1,33 @@ +{ + "type": "BinaryExpression", + "start":19,"end":28,"loc":{"start":{"line":2,"column":0},"end":{"line":2,"column":9}}, + "left": { + "type": "Identifier", + "start":19,"end":24,"loc":{"start":{"line":2,"column":0},"end":{"line":2,"column":5},"identifierName":"await"}, + "name": "await" + }, + "operator": "+", + "right": { + "type": "NumericLiteral", + "start":26,"end":28,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":9}}, + "extra": { + "rawValue": 42, + "raw": "42" + }, + "value": 42 + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " prettier-ignore", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}} + } + ], + "comments": [ + { + "type": "CommentLine", + "value": " prettier-ignore", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}} + } + ] +} \ No newline at end of file diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/input.js b/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/input.js new file mode 100644 index 000000000000..3bd188069035 --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/input.js @@ -0,0 +1,2 @@ +// prettier-ignore +await +42 diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/options.json b/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/options.json new file mode 100644 index 000000000000..e69c4497f509 --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/options.json @@ -0,0 +1,3 @@ +{ + "sourceType": "unambiguous" +} diff --git a/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/output.json b/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/output.json new file mode 100644 index 000000000000..6763d89fd179 --- /dev/null +++ b/packages/babel-parser/test/expressions/experimental/top-level-await/unambiguous/output.json @@ -0,0 +1,33 @@ +{ + "type": "BinaryExpression", + "start":19,"end":28,"loc":{"start":{"line":2,"column":0},"end":{"line":2,"column":9}}, + "left": { + "type": "Identifier", + "start":19,"end":24,"loc":{"start":{"line":2,"column":0},"end":{"line":2,"column":5},"identifierName":"await"}, + "name": "await" + }, + "operator": "+", + "right": { + "type": "NumericLiteral", + "start":26,"end":28,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":9}}, + "extra": { + "rawValue": 42, + "raw": "42" + }, + "value": 42 + }, + "leadingComments": [ + { + "type": "CommentLine", + "value": " prettier-ignore", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}} + } + ], + "comments": [ + { + "type": "CommentLine", + "value": " prettier-ignore", + "start":0,"end":18,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":18}} + } + ] +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/destructuring/invalid-object-method/input.js b/packages/babel-parser/test/fixtures/es2015/destructuring/invalid-object-method/input.js new file mode 100644 index 000000000000..6264a77434ec --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/destructuring/invalid-object-method/input.js @@ -0,0 +1 @@ +const { foo() {} } = foo(); diff --git a/packages/babel-parser/test/fixtures/es2015/destructuring/invalid-object-method/options.json b/packages/babel-parser/test/fixtures/es2015/destructuring/invalid-object-method/options.json new file mode 100644 index 000000000000..3e33f7730f4b --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/destructuring/invalid-object-method/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token (1:11)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2020/export-ns-from/ns-dangling-comma/input.js b/packages/babel-parser/test/fixtures/es2020/export-ns-from/ns-dangling-comma/input.js new file mode 100644 index 000000000000..be1347b46cf0 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2020/export-ns-from/ns-dangling-comma/input.js @@ -0,0 +1 @@ +export * as foo, diff --git a/packages/babel-parser/test/fixtures/es2020/export-ns-from/ns-dangling-comma/options.json b/packages/babel-parser/test/fixtures/es2020/export-ns-from/ns-dangling-comma/options.json new file mode 100644 index 000000000000..5fc553645691 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2020/export-ns-from/ns-dangling-comma/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token, expected \"{\" (1:16)" +} diff --git a/packages/babel-parser/test/fixtures/experimental/bind-operator/invalid-non-member-expression/input.js b/packages/babel-parser/test/fixtures/experimental/bind-operator/invalid-non-member-expression/input.js new file mode 100644 index 000000000000..7b1f4ab04b11 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/bind-operator/invalid-non-member-expression/input.js @@ -0,0 +1 @@ +::a?.b; diff --git a/packages/babel-parser/test/fixtures/experimental/bind-operator/invalid-non-member-expression/options.json b/packages/babel-parser/test/fixtures/experimental/bind-operator/invalid-non-member-expression/options.json new file mode 100644 index 000000000000..e76281a4daaf --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/bind-operator/invalid-non-member-expression/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "functionBind" + ], + "throws": "Binding should be performed on object property. (1:2)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/bind-operator/options.json b/packages/babel-parser/test/fixtures/experimental/bind-operator/options.json new file mode 100644 index 000000000000..739c07598958 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/bind-operator/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["functionBind"] +} diff --git a/packages/babel-parser/test/fixtures/experimental/decorators/invalid-decorator-spread-element/input.js b/packages/babel-parser/test/fixtures/experimental/decorators/invalid-decorator-spread-element/input.js new file mode 100644 index 000000000000..5b97a2b6510f --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decorators/invalid-decorator-spread-element/input.js @@ -0,0 +1 @@ +({ @foo ...foo }); diff --git a/packages/babel-parser/test/fixtures/experimental/decorators/invalid-decorator-spread-element/options.json b/packages/babel-parser/test/fixtures/experimental/decorators/invalid-decorator-spread-element/options.json new file mode 100644 index 000000000000..e2bd94fc3116 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decorators/invalid-decorator-spread-element/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["decorators-legacy"], + "throws": "Unexpected token (1:8)" +} diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-dangling-comma/input.js b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-dangling-comma/input.js new file mode 100644 index 000000000000..2eac343a3507 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-dangling-comma/input.js @@ -0,0 +1 @@ +export default, diff --git a/packages/babel-parser/test/fixtures/experimental/export-extensions/default-dangling-comma/options.json b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-dangling-comma/options.json new file mode 100644 index 000000000000..78ef8d224620 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/export-extensions/default-dangling-comma/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token, expected \"{\" (1:15)" +} diff --git a/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/input.js b/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/input.js new file mode 100644 index 000000000000..7b96ee2275f0 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/input.js @@ -0,0 +1 @@ +x |> # + 1 diff --git a/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/options.json b/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/options.json new file mode 100644 index 000000000000..f95ecc7d6c23 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["pipelineOperator", { "proposal": "fsharp" }]] +} diff --git a/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/output.json b/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/output.json new file mode 100644 index 000000000000..6c724302e0b3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-fsharp-invalid-primary-topic/output.json @@ -0,0 +1,49 @@ +{ + "type": "File", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "errors": [ + "SyntaxError: Primary Topic Reference found but pipelineOperator not passed 'smart' for 'proposal' option. (1:5)", + "SyntaxError: Topic reference was used in a lexical context without topic binding (1:5)" + ], + "program": { + "type": "Program", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "expression": { + "type": "BinaryExpression", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "left": { + "type": "Identifier", + "start":0,"end":1,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":1},"identifierName":"x"}, + "name": "x" + }, + "operator": "|>", + "right": { + "type": "BinaryExpression", + "start":5,"end":10,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":10}}, + "left": { + "type": "PipelinePrimaryTopicReference", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6}} + }, + "operator": "+", + "right": { + "type": "NumericLiteral", + "start":9,"end":10,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":10}}, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1 + } + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/input.js b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/input.js new file mode 100644 index 000000000000..68e990891a87 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/input.js @@ -0,0 +1 @@ +#{ __proto__: null } diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/options.json b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/options.json new file mode 100644 index 000000000000..703c537be360 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["recordAndTuple", { "syntaxType": "hash" }]] +} diff --git a/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/output.json b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/output.json new file mode 100644 index 000000000000..4f409dffa250 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/record-and-tuple/invalid-record-proto/output.json @@ -0,0 +1,42 @@ +{ + "type": "File", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "errors": [ + "SyntaxError: '__proto__' is not allowed in Record expressions (1:3)" + ], + "program": { + "type": "Program", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "expression": { + "type": "RecordExpression", + "start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}}, + "properties": [ + { + "type": "ObjectProperty", + "start":3,"end":18,"loc":{"start":{"line":1,"column":3},"end":{"line":1,"column":18}}, + "method": false, + "key": { + "type": "Identifier", + "start":3,"end":12,"loc":{"start":{"line":1,"column":3},"end":{"line":1,"column":12},"identifierName":"__proto__"}, + "name": "__proto__" + }, + "computed": false, + "shorthand": false, + "value": { + "type": "NullLiteral", + "start":14,"end":18,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":18}} + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file From 028a051c2bb32a8886358d58e7a35dc90ffbf13a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 14 Aug 2020 14:20:06 -0400 Subject: [PATCH 89/90] Move legacy node version tests to GitHub actions (#11952) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: run node 6 and 8 test on GitHub actions * fix: apply dynamicImportUrlToPath polyfill on publish * Apply hacks unconditionally * try fix highlight issues * address review comments * chore: add test-legacy build env * Update .travis.yml [skip ci] Co-authored-by: Nicolò Ribaudo Co-authored-by: Nicolò Ribaudo --- .github/workflows/ci.yml | 42 ++++++++++++++++++++++++++++++++++ .github/workflows/coverage.yml | 21 ----------------- .travis.yml | 3 +-- babel.config.js | 10 ++++---- 4 files changed, 49 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/coverage.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000000..877c5a9b0d9a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,42 @@ +name: Node CI + +on: [push, pull_request] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Use Node.js latest + uses: actions/setup-node@v2-beta + - name: Generate coverage report + run: | + make -j test-ci-coverage + - name: Upload coverage report + uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + + legacy-node-version-test: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [6.x, 8.x] + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Use Node.js latest + uses: actions/setup-node@v2-beta # Build Babel on latest node versions + - name: Build + run: | + BABEL_ENV=test-legacy make -j bootstrap + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2-beta + with: + node-version: ${{ matrix.node-version }} + - name: Test on node.js ${{ matrix.node-version }} + # Hack: --color has supports-color@5 returned true for GitHub CI + # Remove once `chalk` is bumped to 4.0. + run: | + BABEL_ENV=test node ./node_modules/.bin/jest --ci --color diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml deleted file mode 100644 index f50b56856cea..000000000000 --- a/.github/workflows/coverage.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Report Coverage - -on: [push, pull_request] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 - - name: Use Node.js latest - uses: actions/setup-node@v2-beta - with: - node-version: "*" - - name: Generate coverage report - run: | - make -j test-ci-coverage - - name: Upload coverage report - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.travis.yml b/.travis.yml index 0b5f27f648e6..6f060cbcee73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,10 +41,9 @@ matrix: directories: - $HOME/AppData/Local/Temp/chocolatey # Continue node_js matrix - - node_js: "6" - node_js: "12" - node_js: "10" - - node_js: "8" + # Node.js 6 and 8 are tested on GitHub actions - node_js: "node" env: JOB=babel-parser-flow-tests - node_js: "node" diff --git a/babel.config.js b/babel.config.js index db550768d642..f6fb35028752 100644 --- a/babel.config.js +++ b/babel.config.js @@ -17,7 +17,8 @@ module.exports = function (api) { }; const envOpts = Object.assign({}, envOptsNoTargets); - const compileDynamicImport = env === "test" || env === "development"; + const compileDynamicImport = + env === "test" || env === "development" || env === "test-legacy"; let convertESM = true; let ignoreLib = true; @@ -55,6 +56,7 @@ module.exports = function (api) { ); if (env === "rollup") envOpts.targets = { node: nodeVersion }; break; + case "test-legacy": // In test-legacy environment, we build babel on latest node but test on minimum supported legacy versions case "production": // Config during builds before publish. envOpts.targets = { @@ -169,9 +171,9 @@ module.exports = function (api) { // the original absolute path. // NOTE: This plugin must run before @babel/plugin-transform-modules-commonjs, // and assumes that the target is the current node version. -function dynamicImportUrlToPath({ template }) { - const currentNodeSupportsURL = !!require("url").pathToFileURL; - +function dynamicImportUrlToPath({ template, env }) { + const currentNodeSupportsURL = + !!require("url").pathToFileURL && env() !== "test-legacy"; // test-legacy is run on legacy node versions without pathToFileURL support if (currentNodeSupportsURL) { return { visitor: { From f4fc5a6892e45a701ec9b79bf1e889f5863c1806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 14 Aug 2020 23:29:21 +0200 Subject: [PATCH 90/90] Don't test legacy Node.js versions on GH actions --- .github/workflows/ci.yml | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 877c5a9b0d9a..ffbb657ee8ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,26 +17,3 @@ jobs: uses: codecov/codecov-action@v1 with: token: ${{ secrets.CODECOV_TOKEN }} - - legacy-node-version-test: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [6.x, 8.x] - steps: - - name: Checkout code - uses: actions/checkout@v2 - - name: Use Node.js latest - uses: actions/setup-node@v2-beta # Build Babel on latest node versions - - name: Build - run: | - BABEL_ENV=test-legacy make -j bootstrap - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2-beta - with: - node-version: ${{ matrix.node-version }} - - name: Test on node.js ${{ matrix.node-version }} - # Hack: --color has supports-color@5 returned true for GitHub CI - # Remove once `chalk` is bumped to 4.0. - run: | - BABEL_ENV=test node ./node_modules/.bin/jest --ci --color