From 363c5923f0c1fdbd336b297076d5b7d9a9ca7128 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Tue, 15 May 2018 11:19:51 -0700 Subject: [PATCH 1/6] Remove unused options.json file. --- packages/babel-plugin-transform-runtime/src/options.json | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 packages/babel-plugin-transform-runtime/src/options.json diff --git a/packages/babel-plugin-transform-runtime/src/options.json b/packages/babel-plugin-transform-runtime/src/options.json deleted file mode 100644 index b987a67bba..0000000000 --- a/packages/babel-plugin-transform-runtime/src/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["transform-runtime", "transform-regenerator"] -} From ec8330870ef0aae1b834c8a250148edce14c091a Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Tue, 15 May 2018 12:43:12 -0700 Subject: [PATCH 2/6] Refactor the runtime build-dist script. --- packages/babel-runtime/package.json | 1 + packages/babel-runtime/scripts/build-dist.js | 204 ++++++++----------- 2 files changed, 88 insertions(+), 117 deletions(-) diff --git a/packages/babel-runtime/package.json b/packages/babel-runtime/package.json index 18098e06f9..aa44500199 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -13,6 +13,7 @@ "@babel/core": "7.0.0-beta.55", "@babel/helpers": "7.0.0-beta.55", "@babel/plugin-transform-runtime": "7.0.0-beta.55", + "@babel/template": "7.0.0-beta.55", "@babel/preset-env": "7.0.0-beta.55", "@babel/types": "7.0.0-beta.55" } diff --git a/packages/babel-runtime/scripts/build-dist.js b/packages/babel-runtime/scripts/build-dist.js index 62aed66aa9..ff2d79dbaa 100644 --- a/packages/babel-runtime/scripts/build-dist.js +++ b/packages/babel-runtime/scripts/build-dist.js @@ -1,77 +1,112 @@ "use strict"; +const path = require("path"); const outputFile = require("output-file-sync"); -const coreDefinitions = require("@babel/plugin-transform-runtime").definitions; const helpers = require("@babel/helpers"); const babel = require("@babel/core"); +const template = require("@babel/template"); const t = require("@babel/types"); -const paths = ["is-iterable", "get-iterator"]; +const transformRuntime = require("@babel/plugin-transform-runtime"); +const corejs2Definitions = require("@babel/plugin-transform-runtime").definitions; -Object.keys(coreDefinitions.builtins).forEach((key) => { - const path = coreDefinitions.builtins[key]; - paths.push(path); -}); +const runtimeRoot = path.resolve(__dirname, ".."); -Object.keys(coreDefinitions.methods).forEach((key) => { - const props = coreDefinitions.methods[key]; - Object.keys(props).forEach((key2) => { - const path = props[key2]; +writeCoreJS2(runtimeRoot); + +writeHelpers(runtimeRoot, { esm: false, corejs2: false }); +writeHelpers(runtimeRoot, { esm: false, corejs2: true }); +writeHelpers(runtimeRoot, { esm: true, corejs2: false }); +writeHelpers(runtimeRoot, { esm: true, corejs2: true }); + +function writeCoreJS2(pkgDirname) { + const paths = ["is-iterable", "get-iterator"]; + + Object.keys(corejs2Definitions.builtins).forEach(key => { + const path = corejs2Definitions.builtins[key]; paths.push(path); }); -}); -paths.forEach(function(path) { - writeFile( - "core-js/" + path + ".js", - defaultify(`require("core-js/library/fn/${path}")`) - ); -}); + Object.keys(corejs2Definitions.methods).forEach(key => { + const props = corejs2Definitions.methods[key]; + Object.keys(props).forEach(key2 => { + paths.push(props[key2]); + }); + }); -function relative(filename) { - return `${__dirname}/../${filename}`; + paths.forEach(function(corePath) { + outputFile( + path.join(pkgDirname, "core-js", `${corePath}.js`), + `module.exports = require("core-js/library/fn/${corePath}");` + ); + }); } -function defaultify(name) { - return `module.exports = ${name};`; -} +function writeHelpers(pkgDirname, { esm, corejs2 }) { + for (const helperName of helpers.list) { + const helperFilename = path.join( + pkgDirname, + "helpers", + corejs2 ? "" : "builtin", + esm ? "es6" : "", + `${helperName}.js` + ); -function writeRootFile(filename, content) { - filename = relative(filename); - outputFile(filename, content); -} - -function writeFile(filename, content) { - return writeRootFile(filename, content); -} - -function makeTransformOpts(modules, useBuiltIns) { - const opts = { - presets: [[require("@babel/preset-env"), { modules: false }]], - - plugins: [ - [ - require("@babel/plugin-transform-runtime"), - { useBuiltIns, useESModules: modules === false }, - ], - ], - }; - return opts; -} - -function adjustImportPath(node, relativePath) { - if (helpers.list.indexOf(node.value) >= 0) { - node.value = `./${node.value}`; - } else { - node.value = node.value.replace(/^@babel\/runtime/, relativePath); + outputFile( + helperFilename, + buildHelper(pkgDirname, helperFilename, helperName, { esm, corejs2 }) + ); } } -function buildRuntimeRewritePlugin(relativePath, helperName, dependencies) { +function buildHelper(pkgDirname, helperFilename, helperName, { esm, corejs2 }) { + const tree = t.program([], [], esm ? "module" : "script"); + const dependencies = {}; + let bindings = null; + + if (!esm) { + bindings = []; + for (const dep of helpers.getDependencies(helperName)) { + const id = (dependencies[dep] = t.identifier(t.toIdentifier(dep))); + tree.body.push(template.statement.ast` + var ${id} = require("${`./${dep}`}"); + `); + bindings.push(id.name); + } + } + + const helper = helpers.get( + helperName, + dep => dependencies[dep], + esm ? null : template.expression.ast`module.exports`, + bindings + ); + tree.body.push(...helper.nodes); + + return babel.transformFromAst(tree, null, { + presets: [[require("@babel/preset-env"), { modules: false }]], + plugins: [ + [transformRuntime, { useBuiltIns: !corejs2, useESModules: esm }], + buildRuntimeRewritePlugin( + path.relative(path.dirname(helperFilename), pkgDirname), + helperName + ), + ], + }).code; +} + +function buildRuntimeRewritePlugin(relativePath, helperName) { + function adjustImportPath(node, relativePath) { + node.value = + helpers.list.indexOf(node.value) !== -1 + ? `./${node.value}` + : node.value.replace(/^@babel\/runtime/, relativePath); + } + return { pre(file) { const original = file.get("helperGenerator"); - file.set("helperGenerator", (name) => { + file.set("helperGenerator", name => { // make sure that helpers won't insert circular references to themselves if (name === helperName) return false; @@ -98,68 +133,3 @@ function buildRuntimeRewritePlugin(relativePath, helperName, dependencies) { }, }; } - -function buildRequireCall(id, dep) { - return t.variableDeclaration("var", [ - t.variableDeclarator( - id, - t.callExpression(t.identifier("require"), [t.stringLiteral(dep)]) - ) - ]); -} - -function buildHelper(helperName, modules, useBuiltIns) { - const id = - modules === "commonjs" - ? t.memberExpression(t.identifier("module"), t.identifier("exports")) - : null; - const sourceType = modules === "commonjs" ? "script" : "module"; - - const tree = t.program([], [], sourceType); - const dependencies = {}; - let bindings = null; - - if (modules === "commonjs") { - bindings = []; - for (const dep of helpers.getDependencies(helperName)) { - const id = dependencies[dep] = t.identifier(t.toIdentifier(dep)); - tree.body.push(buildRequireCall(id, dep)); - bindings.push(id.name); - } - } - - const helper = helpers.get( - helperName, - dep => dependencies[dep], - id, - bindings - ); - tree.body.push.apply(tree.body, helper.nodes); - - const transformOpts = makeTransformOpts(modules, useBuiltIns); - - const relative = useBuiltIns ? "../.." : ".."; - - return babel.transformFromAst(tree, null, { - presets: transformOpts.presets, - plugins: transformOpts.plugins.concat([ - buildRuntimeRewritePlugin( - modules === false ? `../${relative}` : relative, - helperName - ), - ]), - }).code; -} - -for (const modules of ["commonjs", false]) { - for (const builtin of [false, true]) { - const dirname = `helpers/${builtin ? "builtin/" : ""}${!modules ? "es6/" : ""}`; - - for (const helperName of helpers.list) { - writeFile( - `${dirname}${helperName}.js`, - buildHelper(helperName, modules, builtin) - ); - } - } -} From a149466001822ffda07bbf27f4462bf5ca778b74 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Tue, 15 May 2018 12:55:33 -0700 Subject: [PATCH 3/6] Move build-dist script to the runtime transform. --- .eslintignore | 2 +- Makefile | 4 ++-- packages/babel-plugin-transform-runtime/.npmignore | 1 + packages/babel-plugin-transform-runtime/package.json | 7 ++++++- .../scripts/build-dist.js | 6 +++--- packages/babel-plugin-transform-runtime/src/index.js | 2 -- packages/babel-runtime/.npmignore | 1 - packages/babel-runtime/package.json | 8 -------- 8 files changed, 13 insertions(+), 18 deletions(-) rename packages/{babel-runtime => babel-plugin-transform-runtime}/scripts/build-dist.js (94%) diff --git a/.eslintignore b/.eslintignore index 4a10dadac2..c84198bb07 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,7 +4,7 @@ package.json lerna.json packages/babel-runtime -!packages/babel-runtime/scripts +!packages/babel-plugin-transform-runtime/scripts !packages/babel-runtime/core-js.js packages/*/node_modules packages/*/lib diff --git a/Makefile b/Makefile index 2ed85e6bbb..0fba2cf04a 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ build-preset-env-standalone: build-dist: build cd packages/babel-polyfill; \ scripts/build-dist.sh - cd packages/babel-runtime; \ + cd packages/babel-plugin-transform-runtime; \ node scripts/build-dist.js watch: clean clean-lib @@ -120,7 +120,7 @@ bootstrap: clean-all yarn --ignore-engines ./node_modules/.bin/lerna bootstrap -- --ignore-engines make build - cd packages/babel-runtime; \ + cd packages/babel-plugin-transform-runtime; \ node scripts/build-dist.js clean-lib: diff --git a/packages/babel-plugin-transform-runtime/.npmignore b/packages/babel-plugin-transform-runtime/.npmignore index f980694583..57e1671459 100644 --- a/packages/babel-plugin-transform-runtime/.npmignore +++ b/packages/babel-plugin-transform-runtime/.npmignore @@ -1,3 +1,4 @@ +scripts src test *.log diff --git a/packages/babel-plugin-transform-runtime/package.json b/packages/babel-plugin-transform-runtime/package.json index 25e94b2d32..d0ef406110 100644 --- a/packages/babel-plugin-transform-runtime/package.json +++ b/packages/babel-plugin-transform-runtime/package.json @@ -17,6 +17,11 @@ }, "devDependencies": { "@babel/core": "7.0.0-beta.55", - "@babel/helper-plugin-test-runner": "7.0.0-beta.55" + "@babel/helpers": "7.0.0-beta.55", + "@babel/helper-plugin-test-runner": "7.0.0-beta.55", + "@babel/plugin-transform-runtime": "7.0.0-beta.55", + "@babel/template": "7.0.0-beta.55", + "@babel/preset-env": "7.0.0-beta.55", + "@babel/types": "7.0.0-beta.53" } } diff --git a/packages/babel-runtime/scripts/build-dist.js b/packages/babel-plugin-transform-runtime/scripts/build-dist.js similarity index 94% rename from packages/babel-runtime/scripts/build-dist.js rename to packages/babel-plugin-transform-runtime/scripts/build-dist.js index ff2d79dbaa..03e6aab853 100644 --- a/packages/babel-runtime/scripts/build-dist.js +++ b/packages/babel-plugin-transform-runtime/scripts/build-dist.js @@ -7,10 +7,10 @@ const babel = require("@babel/core"); const template = require("@babel/template"); const t = require("@babel/types"); -const transformRuntime = require("@babel/plugin-transform-runtime"); -const corejs2Definitions = require("@babel/plugin-transform-runtime").definitions; +const transformRuntime = require("../"); +const corejs2Definitions = require("../lib/definitions").default; -const runtimeRoot = path.resolve(__dirname, ".."); +const runtimeRoot = path.resolve(__dirname, "..", "..", "babel-runtime"); writeCoreJS2(runtimeRoot); diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 876fea7641..546938be12 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -227,5 +227,3 @@ export default declare((api, options) => { }, }; }); - -export { definitions }; diff --git a/packages/babel-runtime/.npmignore b/packages/babel-runtime/.npmignore index 57e1671459..f980694583 100644 --- a/packages/babel-runtime/.npmignore +++ b/packages/babel-runtime/.npmignore @@ -1,4 +1,3 @@ -scripts src test *.log diff --git a/packages/babel-runtime/package.json b/packages/babel-runtime/package.json index aa44500199..79fc3de77f 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -8,13 +8,5 @@ "dependencies": { "core-js": "^2.5.7", "regenerator-runtime": "^0.12.0" - }, - "devDependencies": { - "@babel/core": "7.0.0-beta.55", - "@babel/helpers": "7.0.0-beta.55", - "@babel/plugin-transform-runtime": "7.0.0-beta.55", - "@babel/template": "7.0.0-beta.55", - "@babel/preset-env": "7.0.0-beta.55", - "@babel/types": "7.0.0-beta.55" } } From 9c598a8e283790b7c5849862f4ad462cd2c17ba5 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Tue, 15 May 2018 15:46:13 -0700 Subject: [PATCH 4/6] Build an explicit runtime. --- .../scripts/build-dist.js | 51 ++++++++++++++----- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/packages/babel-plugin-transform-runtime/scripts/build-dist.js b/packages/babel-plugin-transform-runtime/scripts/build-dist.js index 03e6aab853..c06e621783 100644 --- a/packages/babel-plugin-transform-runtime/scripts/build-dist.js +++ b/packages/babel-plugin-transform-runtime/scripts/build-dist.js @@ -10,16 +10,14 @@ const t = require("@babel/types"); const transformRuntime = require("../"); const corejs2Definitions = require("../lib/definitions").default; -const runtimeRoot = path.resolve(__dirname, "..", "..", "babel-runtime"); +writeHelpers("@babel/runtime", { corejs2: false }); -writeCoreJS2(runtimeRoot); +writeCoreJS2("@babel/runtime"); +writeHelpers("@babel/runtime", { corejs2: true }); -writeHelpers(runtimeRoot, { esm: false, corejs2: false }); -writeHelpers(runtimeRoot, { esm: false, corejs2: true }); -writeHelpers(runtimeRoot, { esm: true, corejs2: false }); -writeHelpers(runtimeRoot, { esm: true, corejs2: true }); +function writeCoreJS2(runtimeName) { + const pkgDirname = getRuntimeRoot(runtimeName); -function writeCoreJS2(pkgDirname) { const paths = ["is-iterable", "get-iterator"]; Object.keys(corejs2Definitions.builtins).forEach(key => { @@ -42,7 +40,14 @@ function writeCoreJS2(pkgDirname) { }); } -function writeHelpers(pkgDirname, { esm, corejs2 }) { +function writeHelpers(runtimeName, { corejs2 } = {}) { + writeHelperFiles(runtimeName, { corejs2, esm: false }); + writeHelperFiles(runtimeName, { corejs2, esm: true }); +} + +function writeHelperFiles(runtimeName, { esm, corejs2 }) { + const pkgDirname = getRuntimeRoot(runtimeName); + for (const helperName of helpers.list) { const helperFilename = path.join( pkgDirname, @@ -54,12 +59,33 @@ function writeHelpers(pkgDirname, { esm, corejs2 }) { outputFile( helperFilename, - buildHelper(pkgDirname, helperFilename, helperName, { esm, corejs2 }) + buildHelper( + runtimeName, + pkgDirname, + helperFilename, + helperName, + { esm, corejs2 } + ) ); } } -function buildHelper(pkgDirname, helperFilename, helperName, { esm, corejs2 }) { +function getRuntimeRoot(runtimeName) { + return path.resolve( + __dirname, + "..", + "..", + runtimeName.replace(/^@babel\//, "babel-") + ); +} + +function buildHelper( + runtimeName, + pkgDirname, + helperFilename, + helperName, + { esm, corejs2 } +) { const tree = t.program([], [], esm ? "module" : "script"); const dependencies = {}; let bindings = null; @@ -88,6 +114,7 @@ function buildHelper(pkgDirname, helperFilename, helperName, { esm, corejs2 }) { plugins: [ [transformRuntime, { useBuiltIns: !corejs2, useESModules: esm }], buildRuntimeRewritePlugin( + runtimeName, path.relative(path.dirname(helperFilename), pkgDirname), helperName ), @@ -95,12 +122,12 @@ function buildHelper(pkgDirname, helperFilename, helperName, { esm, corejs2 }) { }).code; } -function buildRuntimeRewritePlugin(relativePath, helperName) { +function buildRuntimeRewritePlugin(runtimeName, relativePath, helperName) { function adjustImportPath(node, relativePath) { node.value = helpers.list.indexOf(node.value) !== -1 ? `./${node.value}` - : node.value.replace(/^@babel\/runtime/, relativePath); + : node.value.replace(runtimeName, relativePath); } return { From 3210a7a873d6aced7aa3313a8be5121d8c4e5072 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Thu, 21 Jun 2018 20:55:19 -0700 Subject: [PATCH 5/6] Default to non-corejs helpers. --- .../interop-loose/imports-hoisting/output.js | 4 +- .../interop-loose/multi-load/output.js | 4 +- .../interop/imports-hoisting/output.js | 4 +- .../fixtures/interop/multi-load/output.js | 4 +- .../test/fixtures/regression/T7041/output.js | 4 +- .../src/index.js | 101 +++++++++++++----- .../runtime/aliased-constructors/output.js | 17 +-- .../test/fixtures/runtime/catch-all/output.js | 4 +- .../test/fixtures/runtime/class/output.js | 2 +- .../fixtures/runtime/custom-runtime/input.mjs | 9 -- .../runtime/custom-runtime/options.json | 3 - .../runtime/custom-runtime/output.mjs | 24 ----- .../fixtures/runtime/es6-for-of/output.js | 4 +- .../test/fixtures/runtime/full/output.mjs | 3 +- .../test/fixtures/runtime/modules/output.js | 12 +-- .../runtime/symbol-iterator-in/output.js | 4 +- .../runtime/symbol-iterator/output.js | 4 +- .../input.js | 0 .../corejsVersion-useES6Modules/options.json | 3 + .../output.js | 8 +- .../{useBuiltIns => corejsVersion}/input.js | 0 .../use-options/corejsVersion/options.json | 3 + .../output.js | 8 +- .../useBuiltIns-useESModules/options.json | 3 - .../use-options/useBuiltIns/options.json | 3 - .../use-options/useESModules/output.js | 8 +- 26 files changed, 113 insertions(+), 130 deletions(-) delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/input.mjs delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/options.json delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/output.mjs rename packages/babel-plugin-transform-runtime/test/fixtures/use-options/{useBuiltIns-useESModules => corejsVersion-useES6Modules}/input.js (100%) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/options.json rename packages/babel-plugin-transform-runtime/test/fixtures/use-options/{useBuiltIns => corejsVersion-useES6Modules}/output.js (54%) rename packages/babel-plugin-transform-runtime/test/fixtures/use-options/{useBuiltIns => corejsVersion}/input.js (100%) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json rename packages/babel-plugin-transform-runtime/test/fixtures/use-options/{useBuiltIns-useESModules => corejsVersion}/output.js (53%) delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/options.json delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/options.json diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/imports-hoisting/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/imports-hoisting/output.js index d17f42975d..169a772325 100644 --- a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/imports-hoisting/output.js +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/imports-hoisting/output.js @@ -1,8 +1,8 @@ "use strict"; -var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault"); -var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); +var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/builtin/taggedTemplateLiteral")); function _templateObject() { const data = (0, _taggedTemplateLiteral2.default)(["foo"]); diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/multi-load/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/multi-load/output.js index 9930c38eb4..44fd33fe96 100644 --- a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/multi-load/output.js +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/multi-load/output.js @@ -1,7 +1,7 @@ "use strict"; -var _interopRequireDefault3 = require("@babel/runtime/helpers/interopRequireDefault"); +var _interopRequireDefault3 = require("@babel/runtime/helpers/builtin/interopRequireDefault"); -var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/interopRequireDefault")); +var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/builtin/interopRequireDefault")); console.log(_interopRequireDefault2.default); diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/imports-hoisting/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/imports-hoisting/output.js index d17f42975d..169a772325 100644 --- a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/imports-hoisting/output.js +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/imports-hoisting/output.js @@ -1,8 +1,8 @@ "use strict"; -var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault"); -var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); +var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/builtin/taggedTemplateLiteral")); function _templateObject() { const data = (0, _taggedTemplateLiteral2.default)(["foo"]); diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/multi-load/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/multi-load/output.js index 9930c38eb4..44fd33fe96 100644 --- a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/multi-load/output.js +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/multi-load/output.js @@ -1,7 +1,7 @@ "use strict"; -var _interopRequireDefault3 = require("@babel/runtime/helpers/interopRequireDefault"); +var _interopRequireDefault3 = require("@babel/runtime/helpers/builtin/interopRequireDefault"); -var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/interopRequireDefault")); +var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/builtin/interopRequireDefault")); console.log(_interopRequireDefault2.default); diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/T7041/output.js b/packages/babel-plugin-transform-regenerator/test/fixtures/regression/T7041/output.js index d122e2c481..a67193cb03 100644 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/T7041/output.js +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/regression/T7041/output.js @@ -1,12 +1,10 @@ var _regeneratorRuntime = require("@babel/runtime/regenerator"); -var _Object$keys = require("@babel/runtime/core-js/object/keys"); - var _marked = /*#__PURE__*/ _regeneratorRuntime.mark(fn); -_Object$keys({}); +Object.keys({}); function fn() { return _regeneratorRuntime.wrap(function fn$(_context) { diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 546938be12..2d05cb918e 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -8,29 +8,82 @@ export default declare((api, options) => { api.assertVersion(7); const { - helpers, - moduleName = "@babel/runtime", - polyfill, - regenerator, - useBuiltIns, - useESModules, + corejsVersion = false, + helpers: useRuntimeHelpers = true, + regenerator: useRuntimeRegenerator = true, + useESModules = false, version: runtimeVersion = "7.0.0-beta.0", } = options; - const regeneratorEnabled = regenerator !== false; - const notPolyfillOrDoesUseBuiltIns = polyfill === false || useBuiltIns; - const isPolyfillAndUseBuiltIns = polyfill && useBuiltIns; - const baseHelpersDir = useBuiltIns ? "helpers/builtin" : "helpers"; - const helpersDir = useESModules ? `${baseHelpersDir}/es6` : baseHelpersDir; + + if (typeof useRuntimeRegenerator !== "boolean") { + throw new Error( + "The 'regenerator' option must be undefined, or a boolean.", + ); + } + if (typeof useRuntimeHelpers !== "boolean") { + throw new Error("The 'helpers' option must be undefined, or a boolean."); + } + if (typeof useESModules !== "boolean") { + throw new Error( + "The 'useESModules' option must be undefined, or a boolean.", + ); + } + if ( + corejsVersion !== false && + (typeof corejsVersion !== "number" || corejsVersion !== 2) && + (typeof corejsVersion !== "string" || corejsVersion !== "2") + ) { + throw new Error( + `The 'corejsVersion' option must be undefined, false, or 2, or '2', ` + + `but got ${JSON.stringify(corejsVersion)}.`, + ); + } function has(obj, key) { return Object.prototype.hasOwnProperty.call(obj, key); } + if (has(options, "useBuiltIns")) { + if (options.useBuiltIns) { + throw new Error( + "The 'useBuiltIns' option has been removed. The @babel/runtime " + + "module now uses builtins by default.", + ); + } else { + throw new Error( + "The 'useBuiltIns' option has been removed. Use the 'corejsVersion'" + + "option with value '2' to polyfill with CoreJS 2.x via @babel/runtime.", + ); + } + } + if (has(options, "polyfill")) { + if (options.polyfill === false) { + throw new Error( + "The 'polyfill' option has been removed. The @babel/runtime " + + "module now skips polyfilling by default.", + ); + } else { + throw new Error( + "The 'polyfill' option has been removed. Use the 'corejsVersion'" + + "option with value '2' to polyfill with CoreJS 2.x via @babel/runtime.", + ); + } + } + if (has(options, "moduleName")) { + throw new Error( + "The 'moduleName' option has been removed. @babel/transform-runtime " + + "no longer supports arbitrary runtimes.", + ); + } + + const helpersDir = useESModules ? "helpers/es6" : "helpers"; + const injectCoreJS2 = `${corejsVersion}` === "2"; + const moduleName = "@babel/runtime"; const HEADER_HELPERS = ["interopRequireWildcard", "interopRequireDefault"]; return { pre(file) { - if (helpers !== false) { + if (useRuntimeHelpers) { file.set("helperGenerator", name => { // If the helper didn't exist yet at the version given, we bail // out and let Babel either insert it directly, or throw an error @@ -51,21 +104,13 @@ export default declare((api, options) => { isInteropHelper && !isModule(file.path) ? 4 : undefined; return this.addDefaultImport( - `${moduleName}/${helpersDir}/${name}`, + `${moduleName}/${helpersDir}/${injectCoreJS2 ? "" : "builtin/"}${name}`, name, blockHoist, ); }); } - if (isPolyfillAndUseBuiltIns) { - throw new Error( - "The polyfill option conflicts with useBuiltIns; use one or the other", - ); - } - - this.moduleName = moduleName; - const cache = new Map(); this.addDefaultImport = (source, nameHint, blockHoist) => { @@ -94,17 +139,17 @@ export default declare((api, options) => { visitor: { ReferencedIdentifier(path) { const { node, parent, scope } = path; - if (node.name === "regeneratorRuntime" && regeneratorEnabled) { + if (node.name === "regeneratorRuntime" && useRuntimeRegenerator) { path.replaceWith( this.addDefaultImport( - `${this.moduleName}/regenerator`, + `${moduleName}/regenerator`, "regeneratorRuntime", ), ); return; } - if (notPolyfillOrDoesUseBuiltIns) return; + if (!injectCoreJS2) return; if (t.isMemberExpression(parent)) return; if (!has(definitions.builtins, node.name)) return; @@ -121,7 +166,7 @@ export default declare((api, options) => { // arr[Symbol.iterator]() -> _core.$for.getIterator(arr) CallExpression(path) { - if (notPolyfillOrDoesUseBuiltIns) return; + if (!injectCoreJS2) return; // we can't compile this if (path.node.arguments.length) return; @@ -146,7 +191,7 @@ export default declare((api, options) => { // Symbol.iterator in arr -> core.$for.isIterable(arr) BinaryExpression(path) { - if (notPolyfillOrDoesUseBuiltIns) return; + if (!injectCoreJS2) return; if (path.node.operator !== "in") return; if (!path.get("left").matchesPattern("Symbol.iterator")) return; @@ -165,7 +210,7 @@ export default declare((api, options) => { // Array.from -> _core.Array.from MemberExpression: { enter(path) { - if (notPolyfillOrDoesUseBuiltIns) return; + if (!injectCoreJS2) return; if (!path.isReferenced()) return; const { node } = path; @@ -203,7 +248,7 @@ export default declare((api, options) => { }, exit(path) { - if (notPolyfillOrDoesUseBuiltIns) return; + if (!injectCoreJS2) return; if (!path.isReferenced()) return; const { node } = path; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/aliased-constructors/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/aliased-constructors/output.js index a7cfe5735c..70099860ad 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/aliased-constructors/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/aliased-constructors/output.js @@ -1,14 +1,5 @@ -var _Map = require("@babel/runtime/core-js/map"); - -var _Symbol = require("@babel/runtime/core-js/symbol"); - -var _Promise = require("@babel/runtime/core-js/promise"); - obj.constructor === Object; -obj.constructor === _Promise; - -_Symbol(); - -_Symbol("test"); - -new _Map(); +obj.constructor === Promise; +Symbol(); +Symbol("test"); +new Map(); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/catch-all/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/catch-all/output.js index c3a34c2503..8e9b315294 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/catch-all/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/catch-all/output.js @@ -1,3 +1 @@ -var _Promise = require("@babel/runtime/core-js/promise"); - -_Promise.resolve; +Promise.resolve; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/class/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/class/output.js index 60d3e2fb72..b5e3ecf4ad 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/class/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/class/output.js @@ -1,4 +1,4 @@ -var _classCallCheck = require("@babel/runtime/helpers/classCallCheck"); +var _classCallCheck = require("@babel/runtime/helpers/builtin/classCallCheck"); let Foo = function Foo() { "use strict"; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/input.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/input.mjs deleted file mode 100644 index 0340999129..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/input.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import foo, * as bar from "someModule"; - -export const myWord = Symbol("abc"); -export function* giveWord () { - yield myWord; -} - -foo; -bar; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/options.json deleted file mode 100644 index d8a7d30b95..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": [["transform-runtime", { "moduleName": "foo" }], "transform-regenerator"] -} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/output.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/output.mjs deleted file mode 100644 index 656dd6d030..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/output.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import _regeneratorRuntime from "foo/regenerator"; -import _Symbol from "foo/core-js/symbol"; - -var _marked = -/*#__PURE__*/ -_regeneratorRuntime.mark(giveWord); - -import foo, * as bar from "someModule"; -export const myWord = _Symbol("abc"); -export function giveWord() { - return _regeneratorRuntime.wrap(function giveWord$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return myWord; - - case 2: - case "end": - return _context.stop(); - } - }, _marked, this); -} -foo; -bar; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/es6-for-of/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/es6-for-of/output.js index 0087e226c0..ec97a710ae 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/es6-for-of/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/es6-for-of/output.js @@ -1,11 +1,9 @@ -var _getIterator = require("@babel/runtime/core-js/get-iterator"); - var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { - for (var _iterator = _getIterator(arr), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + for (var _iterator = arr[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var i = _step.value; } } catch (err) { diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/full/output.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/full/output.mjs index 3442c14425..7fe64e68c7 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/full/output.mjs +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/full/output.mjs @@ -1,12 +1,11 @@ import _regeneratorRuntime from "@babel/runtime/regenerator"; -import _Symbol from "@babel/runtime/core-js/symbol"; var _marked = /*#__PURE__*/ _regeneratorRuntime.mark(giveWord); import foo, * as bar from "someModule"; -export const myWord = _Symbol("abc"); +export const myWord = Symbol("abc"); export function giveWord() { return _regeneratorRuntime.wrap(function giveWord$(_context) { while (1) switch (_context.prev = _context.next) { diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules/output.js index 3bfab64ad9..ba3228c9cf 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules/output.js @@ -1,10 +1,6 @@ "use strict"; -var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); - -var _Object$defineProperty = require("@babel/runtime/core-js/object/define-property"); - -var _Object$keys = require("@babel/runtime/core-js/object/keys"); +var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true @@ -14,15 +10,13 @@ var _bar = _interopRequireDefault(require("bar")); var _mod = require("mod"); -_Object$keys(_mod).forEach(function (key) { +Object.keys(_mod).forEach(function (key) { if (key === "default" || key === "__esModule") return; - - _Object$defineProperty(exports, key, { + Object.defineProperty(exports, key, { enumerable: true, get: function () { return _mod[key]; } }); }); - _bar.default; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/symbol-iterator-in/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/symbol-iterator-in/output.js index e4e3264bb5..49e71aa52d 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/symbol-iterator-in/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/symbol-iterator-in/output.js @@ -1,3 +1 @@ -var _isIterable = require("@babel/runtime/core-js/is-iterable"); - -_isIterable(Object(arr)); +Symbol.iterator in Object(arr); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/symbol-iterator/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/symbol-iterator/output.js index 22731130e8..ae1f0b9df5 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/symbol-iterator/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/symbol-iterator/output.js @@ -1,3 +1 @@ -var _Symbol$iterator = require("@babel/runtime/core-js/symbol/iterator"); - -_Symbol$iterator; +Symbol.iterator; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/input.js similarity index 100% rename from packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/input.js rename to packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/input.js diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/options.json new file mode 100644 index 0000000000..1057edde11 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejsVersion": 2, "useESModules": true }], "transform-classes"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/output.js similarity index 54% rename from packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/output.js rename to packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/output.js index 0dcb1a6dc1..9d1599d1f2 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/output.js @@ -1,10 +1,10 @@ -var _classCallCheck = require("@babel/runtime/helpers/builtin/classCallCheck"); +var _classCallCheck = require("@babel/runtime/helpers/es6/classCallCheck"); -var _possibleConstructorReturn = require("@babel/runtime/helpers/builtin/possibleConstructorReturn"); +var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/possibleConstructorReturn"); -var _getPrototypeOf = require("@babel/runtime/helpers/builtin/getPrototypeOf"); +var _getPrototypeOf = require("@babel/runtime/helpers/es6/getPrototypeOf"); -var _inherits = require("@babel/runtime/helpers/builtin/inherits"); +var _inherits = require("@babel/runtime/helpers/es6/inherits"); let Foo = /*#__PURE__*/ diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/input.js similarity index 100% rename from packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/input.js rename to packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/input.js diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json new file mode 100644 index 0000000000..b5668b025a --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejsVersion": 2 }], "transform-classes"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/output.js similarity index 53% rename from packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/output.js rename to packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/output.js index d5ad90a1c2..39882dcd46 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/output.js @@ -1,10 +1,10 @@ -var _classCallCheck = require("@babel/runtime/helpers/builtin/es6/classCallCheck"); +var _classCallCheck = require("@babel/runtime/helpers/classCallCheck"); -var _possibleConstructorReturn = require("@babel/runtime/helpers/builtin/es6/possibleConstructorReturn"); +var _possibleConstructorReturn = require("@babel/runtime/helpers/possibleConstructorReturn"); -var _getPrototypeOf = require("@babel/runtime/helpers/builtin/es6/getPrototypeOf"); +var _getPrototypeOf = require("@babel/runtime/helpers/getPrototypeOf"); -var _inherits = require("@babel/runtime/helpers/builtin/es6/inherits"); +var _inherits = require("@babel/runtime/helpers/inherits"); let Foo = /*#__PURE__*/ diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/options.json deleted file mode 100644 index ad048c74b1..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": [["transform-runtime", { "useBuiltIns": true, "useESModules": true }], "transform-classes"] -} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/options.json deleted file mode 100644 index a24c715714..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": [["transform-runtime", { "useBuiltIns": true }], "transform-classes"] -} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules/output.js index 9d1599d1f2..889a5a8d73 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules/output.js @@ -1,10 +1,10 @@ -var _classCallCheck = require("@babel/runtime/helpers/es6/classCallCheck"); +var _classCallCheck = require("@babel/runtime/helpers/es6/builtin/classCallCheck"); -var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/possibleConstructorReturn"); +var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/builtin/possibleConstructorReturn"); -var _getPrototypeOf = require("@babel/runtime/helpers/es6/getPrototypeOf"); +var _getPrototypeOf = require("@babel/runtime/helpers/es6/builtin/getPrototypeOf"); -var _inherits = require("@babel/runtime/helpers/es6/inherits"); +var _inherits = require("@babel/runtime/helpers/es6/builtin/inherits"); let Foo = /*#__PURE__*/ From a8224d40e2ff5d2ef92152e4853257596d8097bc Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Sun, 24 Jun 2018 10:50:26 -0700 Subject: [PATCH 6/6] Split @babel/runtime into two separate runtime modules. --- .eslintignore | 3 +- .gitignore | 31 +++++++++-------- Makefile | 3 +- .../interop-loose/imports-hoisting/output.js | 4 +-- .../interop-loose/multi-load/output.js | 4 +-- .../interop/imports-hoisting/output.js | 4 +-- .../fixtures/interop/multi-load/output.js | 4 +-- .../scripts/build-dist.js | 34 ++++++++----------- .../src/index.js | 16 +++++---- .../aliased-constructors/input.js | 7 ++++ .../aliased-constructors/options.json | 3 ++ .../aliased-constructors/output.js | 14 ++++++++ .../runtime-corejs2/catch-all/input.js | 1 + .../runtime-corejs2/catch-all/options.json | 3 ++ .../runtime-corejs2/catch-all/output.js | 3 ++ .../fixtures/runtime-corejs2/class/input.js | 1 + .../runtime-corejs2/class/options.json | 3 ++ .../fixtures/runtime-corejs2/class/output.js | 7 ++++ .../runtime-corejs2/es6-for-of/input.js | 3 ++ .../runtime-corejs2/es6-for-of/options.json | 3 ++ .../runtime-corejs2/es6-for-of/output.js | 24 +++++++++++++ .../fixtures/runtime-corejs2/full/input.mjs | 9 +++++ .../runtime-corejs2/full/options.json | 3 ++ .../fixtures/runtime-corejs2/full/output.mjs | 24 +++++++++++++ .../runtime-corejs2/modules-helpers/input.mjs | 5 +++ .../modules-helpers/options.json | 7 ++++ .../runtime-corejs2/modules-helpers/output.js | 23 +++++++++++++ .../runtime-corejs2/modules/input.mjs | 4 +++ .../runtime-corejs2/modules/options.json | 3 ++ .../runtime-corejs2/modules/output.js | 28 +++++++++++++++ .../runtime-corejs2/no-helpers/input.js | 1 + .../runtime-corejs2/no-helpers/options.json | 3 ++ .../runtime-corejs2/no-helpers/output.js | 7 ++++ .../regenerator-runtime/input.js | 2 ++ .../regenerator-runtime/options.json | 3 ++ .../regenerator-runtime/output.js | 13 +++++++ .../symbol-iterator-in/input.js | 1 + .../symbol-iterator-in/options.json | 6 ++++ .../symbol-iterator-in/output.js | 3 ++ .../runtime-corejs2/symbol-iterator/input.js | 1 + .../symbol-iterator/options.json | 3 ++ .../runtime-corejs2/symbol-iterator/output.js | 3 ++ .../test/fixtures/runtime/class/output.js | 2 +- .../test/fixtures/runtime/modules/output.js | 2 +- .../input.js | 0 .../corejs-useES6Modules/options.json | 3 ++ .../corejs-useES6Modules/output.js | 23 +++++++++++++ .../{corejsVersion => corejs}/input.js | 0 .../fixtures/use-options/corejs/options.json | 3 ++ .../fixtures/use-options/corejs/output.js | 23 +++++++++++++ .../corejsVersion-useES6Modules/options.json | 3 -- .../corejsVersion-useES6Modules/output.js | 23 ------------- .../use-options/corejsVersion/options.json | 3 -- .../use-options/corejsVersion/output.js | 23 ------------- .../use-options/useESModules/output.js | 8 ++--- packages/babel-runtime-corejs2/.npmignore | 3 ++ packages/babel-runtime-corejs2/README.md | 19 +++++++++++ .../core-js/map.js | 0 .../helpers/esm}/iterableToArray.js | 0 .../helpers/esm}/temporalRef.js | 0 .../helpers/esm}/toArray.js | 0 .../helpers/iterableToArray.js | 9 +++++ .../helpers}/temporalRef.js | 0 .../helpers}/toArray.js | 0 packages/babel-runtime-corejs2/package.json | 12 +++++++ .../regenerator/index.js | 1 + packages/babel-runtime/README.md | 2 +- packages/babel-runtime/core-js.js | 1 - .../helpers/builtin/iterableToArray.js | 5 --- .../{builtin/es6 => esm}/iterableToArray.js | 0 .../helpers/{es6 => esm}/temporalRef.js | 0 .../helpers/{es6 => esm}/toArray.js | 0 .../babel-runtime/helpers/iterableToArray.js | 6 +--- packages/babel-runtime/package.json | 3 +- 74 files changed, 382 insertions(+), 122 deletions(-) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/input.mjs create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/output.mjs create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/input.mjs create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/input.mjs create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/output.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/input.js create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/output.js rename packages/babel-plugin-transform-runtime/test/fixtures/use-options/{corejsVersion-useES6Modules => corejs-useES6Modules}/input.js (100%) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/output.js rename packages/babel-plugin-transform-runtime/test/fixtures/use-options/{corejsVersion => corejs}/input.js (100%) create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/options.json create mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/output.js delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/options.json delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/output.js delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json delete mode 100644 packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/output.js create mode 100644 packages/babel-runtime-corejs2/.npmignore create mode 100644 packages/babel-runtime-corejs2/README.md rename packages/{babel-runtime => babel-runtime-corejs2}/core-js/map.js (100%) rename packages/{babel-runtime/helpers/es6 => babel-runtime-corejs2/helpers/esm}/iterableToArray.js (100%) rename packages/{babel-runtime/helpers/builtin/es6 => babel-runtime-corejs2/helpers/esm}/temporalRef.js (100%) rename packages/{babel-runtime/helpers/builtin/es6 => babel-runtime-corejs2/helpers/esm}/toArray.js (100%) create mode 100644 packages/babel-runtime-corejs2/helpers/iterableToArray.js rename packages/{babel-runtime/helpers/builtin => babel-runtime-corejs2/helpers}/temporalRef.js (100%) rename packages/{babel-runtime/helpers/builtin => babel-runtime-corejs2/helpers}/toArray.js (100%) create mode 100644 packages/babel-runtime-corejs2/package.json create mode 100644 packages/babel-runtime-corejs2/regenerator/index.js delete mode 100644 packages/babel-runtime/core-js.js delete mode 100644 packages/babel-runtime/helpers/builtin/iterableToArray.js rename packages/babel-runtime/helpers/{builtin/es6 => esm}/iterableToArray.js (100%) rename packages/babel-runtime/helpers/{es6 => esm}/temporalRef.js (100%) rename packages/babel-runtime/helpers/{es6 => esm}/toArray.js (100%) diff --git a/.eslintignore b/.eslintignore index c84198bb07..18e74eafba 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,7 +5,8 @@ package.json lerna.json packages/babel-runtime !packages/babel-plugin-transform-runtime/scripts -!packages/babel-runtime/core-js.js +!packages/babel-runtime-corejs2/core-js.js +packages/babel-runtime-corejs2 packages/*/node_modules packages/*/lib packages/*/dist diff --git a/.gitignore b/.gitignore index a2f346175f..500e46cd8c 100644 --- a/.gitignore +++ b/.gitignore @@ -12,24 +12,27 @@ coverage dist /.package.json package-lock.json -/packages/babel-runtime/core-js/**/*.js -!/packages/babel-runtime/core-js/map.js + /packages/babel-runtime/helpers/*.js !/packages/babel-runtime/helpers/toArray.js !/packages/babel-runtime/helpers/iterableToArray.js !/packages/babel-runtime/helpers/temporalRef.js -/packages/babel-runtime/helpers/builtin/*.js -!/packages/babel-runtime/helpers/builtin/toArray.js -!/packages/babel-runtime/helpers/builtin/iterableToArray.js -!/packages/babel-runtime/helpers/builtin/temporalRef.js -/packages/babel-runtime/helpers/builtin/es6/*.js -!/packages/babel-runtime/helpers/builtin/es6/toArray.js -!/packages/babel-runtime/helpers/builtin/es6/iterableToArray.js -!/packages/babel-runtime/helpers/builtin/es6/temporalRef.js -/packages/babel-runtime/helpers/es6/*.js -!/packages/babel-runtime/helpers/es6/toArray.js -!/packages/babel-runtime/helpers/es6/iterableToArray.js -!/packages/babel-runtime/helpers/es6/temporalRef.js +/packages/babel-runtime/helpers/esm/*.js +!/packages/babel-runtime/helpers/esm/toArray.js +!/packages/babel-runtime/helpers/esm/iterableToArray.js +!/packages/babel-runtime/helpers/esm/temporalRef.js + +/packages/babel-runtime-corejs2/helpers/*.js +!/packages/babel-runtime-corejs2/helpers/toArray.js +!/packages/babel-runtime-corejs2/helpers/iterableToArray.js +!/packages/babel-runtime-corejs2/helpers/temporalRef.js +/packages/babel-runtime-corejs2/helpers/esm/*.js +!/packages/babel-runtime-corejs2/helpers/esm/toArray.js +!/packages/babel-runtime-corejs2/helpers/esm/iterableToArray.js +!/packages/babel-runtime-corejs2/helpers/esm/temporalRef.js +/packages/babel-runtime-corejs2/core-js/**/*.js +!/packages/babel-runtime-corejs2/core-js/map.js + /packages/babel-register/test/.babel /packages/babel-cli/test/tmp /packages/babel-node/test/tmp diff --git a/Makefile b/Makefile index 0fba2cf04a..b0ec3ca0e2 100644 --- a/Makefile +++ b/Makefile @@ -108,7 +108,8 @@ publish: git pull --rebase make clean-lib rm -rf packages/babel-runtime/helpers - rm -rf packages/babel-runtime/core-js + rm -rf packages/babel-runtime-corejs2/helpers + rm -rf packages/babel-runtime-corejs2/core-js BABEL_ENV=production make build-dist make test # not using lerna independent mode atm, so only update packages that have changed since we use ^ diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/imports-hoisting/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/imports-hoisting/output.js index 169a772325..d17f42975d 100644 --- a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/imports-hoisting/output.js +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/imports-hoisting/output.js @@ -1,8 +1,8 @@ "use strict"; -var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault"); +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); -var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/builtin/taggedTemplateLiteral")); +var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); function _templateObject() { const data = (0, _taggedTemplateLiteral2.default)(["foo"]); diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/multi-load/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/multi-load/output.js index 44fd33fe96..9930c38eb4 100644 --- a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/multi-load/output.js +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop-loose/multi-load/output.js @@ -1,7 +1,7 @@ "use strict"; -var _interopRequireDefault3 = require("@babel/runtime/helpers/builtin/interopRequireDefault"); +var _interopRequireDefault3 = require("@babel/runtime/helpers/interopRequireDefault"); -var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/builtin/interopRequireDefault")); +var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/interopRequireDefault")); console.log(_interopRequireDefault2.default); diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/imports-hoisting/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/imports-hoisting/output.js index 169a772325..d17f42975d 100644 --- a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/imports-hoisting/output.js +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/imports-hoisting/output.js @@ -1,8 +1,8 @@ "use strict"; -var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault"); +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); -var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/builtin/taggedTemplateLiteral")); +var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); function _templateObject() { const data = (0, _taggedTemplateLiteral2.default)(["foo"]); diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/multi-load/output.js b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/multi-load/output.js index 44fd33fe96..9930c38eb4 100644 --- a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/multi-load/output.js +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/interop/multi-load/output.js @@ -1,7 +1,7 @@ "use strict"; -var _interopRequireDefault3 = require("@babel/runtime/helpers/builtin/interopRequireDefault"); +var _interopRequireDefault3 = require("@babel/runtime/helpers/interopRequireDefault"); -var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/builtin/interopRequireDefault")); +var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/interopRequireDefault")); console.log(_interopRequireDefault2.default); diff --git a/packages/babel-plugin-transform-runtime/scripts/build-dist.js b/packages/babel-plugin-transform-runtime/scripts/build-dist.js index c06e621783..9381e3b962 100644 --- a/packages/babel-plugin-transform-runtime/scripts/build-dist.js +++ b/packages/babel-plugin-transform-runtime/scripts/build-dist.js @@ -10,10 +10,10 @@ const t = require("@babel/types"); const transformRuntime = require("../"); const corejs2Definitions = require("../lib/definitions").default; -writeHelpers("@babel/runtime", { corejs2: false }); +writeHelpers("@babel/runtime"); -writeCoreJS2("@babel/runtime"); -writeHelpers("@babel/runtime", { corejs2: true }); +writeCoreJS2("@babel/runtime-corejs2"); +writeHelpers("@babel/runtime-corejs2", { corejs: 2 }); function writeCoreJS2(runtimeName) { const pkgDirname = getRuntimeRoot(runtimeName); @@ -40,32 +40,28 @@ function writeCoreJS2(runtimeName) { }); } -function writeHelpers(runtimeName, { corejs2 } = {}) { - writeHelperFiles(runtimeName, { corejs2, esm: false }); - writeHelperFiles(runtimeName, { corejs2, esm: true }); +function writeHelpers(runtimeName, { corejs } = {}) { + writeHelperFiles(runtimeName, { corejs, esm: false }); + writeHelperFiles(runtimeName, { corejs, esm: true }); } -function writeHelperFiles(runtimeName, { esm, corejs2 }) { +function writeHelperFiles(runtimeName, { esm, corejs }) { const pkgDirname = getRuntimeRoot(runtimeName); for (const helperName of helpers.list) { const helperFilename = path.join( pkgDirname, "helpers", - corejs2 ? "" : "builtin", - esm ? "es6" : "", + esm ? "esm" : "", `${helperName}.js` ); outputFile( helperFilename, - buildHelper( - runtimeName, - pkgDirname, - helperFilename, - helperName, - { esm, corejs2 } - ) + buildHelper(runtimeName, pkgDirname, helperFilename, helperName, { + esm, + corejs, + }) ); } } @@ -84,7 +80,7 @@ function buildHelper( pkgDirname, helperFilename, helperName, - { esm, corejs2 } + { esm, corejs } ) { const tree = t.program([], [], esm ? "module" : "script"); const dependencies = {}; @@ -112,7 +108,7 @@ function buildHelper( return babel.transformFromAst(tree, null, { presets: [[require("@babel/preset-env"), { modules: false }]], plugins: [ - [transformRuntime, { useBuiltIns: !corejs2, useESModules: esm }], + [transformRuntime, { corejs, useESModules: esm }], buildRuntimeRewritePlugin( runtimeName, path.relative(path.dirname(helperFilename), pkgDirname), @@ -127,7 +123,7 @@ function buildRuntimeRewritePlugin(runtimeName, relativePath, helperName) { node.value = helpers.list.indexOf(node.value) !== -1 ? `./${node.value}` - : node.value.replace(runtimeName, relativePath); + : node.value.replace(runtimeName + "/", relativePath + "/"); } return { diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 2d05cb918e..0e0f616afd 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -8,7 +8,7 @@ export default declare((api, options) => { api.assertVersion(7); const { - corejsVersion = false, + corejs: corejsVersion = false, helpers: useRuntimeHelpers = true, regenerator: useRuntimeRegenerator = true, useESModules = false, @@ -34,7 +34,7 @@ export default declare((api, options) => { (typeof corejsVersion !== "string" || corejsVersion !== "2") ) { throw new Error( - `The 'corejsVersion' option must be undefined, false, or 2, or '2', ` + + `The 'corejs' option must be undefined, false, or 2, or '2', ` + `but got ${JSON.stringify(corejsVersion)}.`, ); } @@ -50,7 +50,7 @@ export default declare((api, options) => { ); } else { throw new Error( - "The 'useBuiltIns' option has been removed. Use the 'corejsVersion'" + + "The 'useBuiltIns' option has been removed. Use the 'corejs'" + "option with value '2' to polyfill with CoreJS 2.x via @babel/runtime.", ); } @@ -63,7 +63,7 @@ export default declare((api, options) => { ); } else { throw new Error( - "The 'polyfill' option has been removed. Use the 'corejsVersion'" + + "The 'polyfill' option has been removed. Use the 'corejs'" + "option with value '2' to polyfill with CoreJS 2.x via @babel/runtime.", ); } @@ -75,9 +75,11 @@ export default declare((api, options) => { ); } - const helpersDir = useESModules ? "helpers/es6" : "helpers"; + const helpersDir = useESModules ? "helpers/esm" : "helpers"; const injectCoreJS2 = `${corejsVersion}` === "2"; - const moduleName = "@babel/runtime"; + const moduleName = injectCoreJS2 + ? "@babel/runtime-corejs2" + : "@babel/runtime"; const HEADER_HELPERS = ["interopRequireWildcard", "interopRequireDefault"]; @@ -104,7 +106,7 @@ export default declare((api, options) => { isInteropHelper && !isModule(file.path) ? 4 : undefined; return this.addDefaultImport( - `${moduleName}/${helpersDir}/${injectCoreJS2 ? "" : "builtin/"}${name}`, + `${moduleName}/${helpersDir}/${name}`, name, blockHoist, ); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/input.js new file mode 100644 index 0000000000..b7c61b92b0 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/input.js @@ -0,0 +1,7 @@ +obj.constructor === Object; +obj.constructor === Promise; + +Symbol(); +Symbol("test"); + +new Map(); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/options.json new file mode 100644 index 0000000000..5c04c77630 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/output.js new file mode 100644 index 0000000000..4e753ff15d --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/aliased-constructors/output.js @@ -0,0 +1,14 @@ +var _Map = require("@babel/runtime-corejs2/core-js/map"); + +var _Symbol = require("@babel/runtime-corejs2/core-js/symbol"); + +var _Promise = require("@babel/runtime-corejs2/core-js/promise"); + +obj.constructor === Object; +obj.constructor === _Promise; + +_Symbol(); + +_Symbol("test"); + +new _Map(); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/input.js new file mode 100644 index 0000000000..8e9b315294 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/input.js @@ -0,0 +1 @@ +Promise.resolve; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/options.json new file mode 100644 index 0000000000..5c04c77630 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/output.js new file mode 100644 index 0000000000..de4a16bd91 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/catch-all/output.js @@ -0,0 +1,3 @@ +var _Promise = require("@babel/runtime-corejs2/core-js/promise"); + +_Promise.resolve; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/input.js new file mode 100644 index 0000000000..4e6a6de653 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/input.js @@ -0,0 +1 @@ +class Foo {} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/options.json new file mode 100644 index 0000000000..2972db7d1a --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2 }], "transform-classes"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/output.js new file mode 100644 index 0000000000..132a249e97 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/class/output.js @@ -0,0 +1,7 @@ +var _classCallCheck = require("@babel/runtime-corejs2/helpers/classCallCheck"); + +let Foo = function Foo() { + "use strict"; + + _classCallCheck(this, Foo); +}; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/input.js new file mode 100644 index 0000000000..48e5f59b2c --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/input.js @@ -0,0 +1,3 @@ +for (var i of arr) { + +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/options.json new file mode 100644 index 0000000000..5b5b7b35f1 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-for-of", ["transform-runtime", { "corejs": 2 }]] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/output.js new file mode 100644 index 0000000000..be11791731 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/es6-for-of/output.js @@ -0,0 +1,24 @@ +var _getIterator = require("@babel/runtime-corejs2/core-js/get-iterator"); + +var _iteratorNormalCompletion = true; +var _didIteratorError = false; +var _iteratorError = undefined; + +try { + for (var _iterator = _getIterator(arr), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var i = _step.value; + } +} catch (err) { + _didIteratorError = true; + _iteratorError = err; +} finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/input.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/input.mjs new file mode 100644 index 0000000000..0340999129 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/input.mjs @@ -0,0 +1,9 @@ +import foo, * as bar from "someModule"; + +export const myWord = Symbol("abc"); +export function* giveWord () { + yield myWord; +} + +foo; +bar; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/options.json new file mode 100644 index 0000000000..5c04c77630 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/output.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/output.mjs new file mode 100644 index 0000000000..bb91155014 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/output.mjs @@ -0,0 +1,24 @@ +import _regeneratorRuntime from "@babel/runtime-corejs2/regenerator"; +import _Symbol from "@babel/runtime-corejs2/core-js/symbol"; + +var _marked = +/*#__PURE__*/ +_regeneratorRuntime.mark(giveWord); + +import foo, * as bar from "someModule"; +export const myWord = _Symbol("abc"); +export function giveWord() { + return _regeneratorRuntime.wrap(function giveWord$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return myWord; + + case 2: + case "end": + return _context.stop(); + } + }, _marked, this); +} +foo; +bar; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/input.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/input.mjs new file mode 100644 index 0000000000..368b106310 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/input.mjs @@ -0,0 +1,5 @@ +import foo from "foo"; + +class Example { + method() {} +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/options.json new file mode 100644 index 0000000000..5d178b7e91 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/options.json @@ -0,0 +1,7 @@ +{ + "plugins": [ + ["transform-runtime", { "corejs": 2 }], + "transform-modules-commonjs", + "transform-classes" + ] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/output.js new file mode 100644 index 0000000000..8b91c079a6 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules-helpers/output.js @@ -0,0 +1,23 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); + +var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck")); + +var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass")); + +var _foo = _interopRequireDefault(require("foo")); + +let Example = +/*#__PURE__*/ +function () { + function Example() { + (0, _classCallCheck2.default)(this, Example); + } + + (0, _createClass2.default)(Example, [{ + key: "method", + value: function method() {} + }]); + return Example; +}(); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/input.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/input.mjs new file mode 100644 index 0000000000..ce4c7df806 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/input.mjs @@ -0,0 +1,4 @@ +import foo from "bar"; +foo; + +export * from "mod"; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/options.json new file mode 100644 index 0000000000..f3b812fb39 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2 }], "transform-modules-commonjs"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/output.js new file mode 100644 index 0000000000..d7ece9528b --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/modules/output.js @@ -0,0 +1,28 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); + +var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property"); + +var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _bar = _interopRequireDefault(require("bar")); + +var _mod = require("mod"); + +_Object$keys(_mod).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + + _Object$defineProperty(exports, key, { + enumerable: true, + get: function () { + return _mod[key]; + } + }); +}); + +_bar.default; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/input.js new file mode 100644 index 0000000000..4e6a6de653 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/input.js @@ -0,0 +1 @@ +class Foo {} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/options.json new file mode 100644 index 0000000000..d30944afcb --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "helpers": false, "corejs": 2 }], "transform-classes"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/output.js new file mode 100644 index 0000000000..b8dfb31983 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/no-helpers/output.js @@ -0,0 +1,7 @@ +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +let Foo = function Foo() { + "use strict"; + + _classCallCheck(this, Foo); +}; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/input.js new file mode 100644 index 0000000000..ae6cc4d8c8 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/input.js @@ -0,0 +1,2 @@ +void function* () { +}; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/options.json new file mode 100644 index 0000000000..5c04c77630 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/output.js new file mode 100644 index 0000000000..a068476f99 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/regenerator-runtime/output.js @@ -0,0 +1,13 @@ +var _regeneratorRuntime = require("@babel/runtime-corejs2/regenerator"); + +void +/*#__PURE__*/ +_regeneratorRuntime.mark(function _callee() { + return _regeneratorRuntime.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + case "end": + return _context.stop(); + } + }, _callee, this); +}); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/input.js new file mode 100644 index 0000000000..49e71aa52d --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/input.js @@ -0,0 +1 @@ +Symbol.iterator in Object(arr); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/options.json new file mode 100644 index 0000000000..e0ebc58869 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + ["transform-runtime", { "corejs": 2 }], + "transform-regenerator" + ] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/output.js new file mode 100644 index 0000000000..8d5e3c048d --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator-in/output.js @@ -0,0 +1,3 @@ +var _isIterable = require("@babel/runtime-corejs2/core-js/is-iterable"); + +_isIterable(Object(arr)); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/input.js new file mode 100644 index 0000000000..ae1f0b9df5 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/input.js @@ -0,0 +1 @@ +Symbol.iterator; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/options.json new file mode 100644 index 0000000000..5c04c77630 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/output.js new file mode 100644 index 0000000000..dc708b45cc --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/symbol-iterator/output.js @@ -0,0 +1,3 @@ +var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator"); + +_Symbol$iterator; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/class/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/class/output.js index b5e3ecf4ad..60d3e2fb72 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/class/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/class/output.js @@ -1,4 +1,4 @@ -var _classCallCheck = require("@babel/runtime/helpers/builtin/classCallCheck"); +var _classCallCheck = require("@babel/runtime/helpers/classCallCheck"); let Foo = function Foo() { "use strict"; diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules/output.js index ba3228c9cf..260de19e94 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules/output.js @@ -1,6 +1,6 @@ "use strict"; -var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault"); +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/input.js similarity index 100% rename from packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/input.js rename to packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/input.js diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/options.json new file mode 100644 index 0000000000..95636c5bb4 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2, "useESModules": true }], "transform-classes"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/output.js new file mode 100644 index 0000000000..fd691a2742 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs-useES6Modules/output.js @@ -0,0 +1,23 @@ +var _classCallCheck = require("@babel/runtime-corejs2/helpers/esm/classCallCheck"); + +var _possibleConstructorReturn = require("@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn"); + +var _getPrototypeOf = require("@babel/runtime-corejs2/helpers/esm/getPrototypeOf"); + +var _inherits = require("@babel/runtime-corejs2/helpers/esm/inherits"); + +let Foo = +/*#__PURE__*/ +function (_Bar) { + "use strict"; + + _inherits(Foo, _Bar); + + function Foo() { + _classCallCheck(this, Foo); + + return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); + } + + return Foo; +}(Bar); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/input.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/input.js similarity index 100% rename from packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/input.js rename to packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/input.js diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/options.json new file mode 100644 index 0000000000..2972db7d1a --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/options.json @@ -0,0 +1,3 @@ +{ + "plugins": [["transform-runtime", { "corejs": 2 }], "transform-classes"] +} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/output.js new file mode 100644 index 0000000000..91eb87aa16 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejs/output.js @@ -0,0 +1,23 @@ +var _classCallCheck = require("@babel/runtime-corejs2/helpers/classCallCheck"); + +var _possibleConstructorReturn = require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"); + +var _getPrototypeOf = require("@babel/runtime-corejs2/helpers/getPrototypeOf"); + +var _inherits = require("@babel/runtime-corejs2/helpers/inherits"); + +let Foo = +/*#__PURE__*/ +function (_Bar) { + "use strict"; + + _inherits(Foo, _Bar); + + function Foo() { + _classCallCheck(this, Foo); + + return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); + } + + return Foo; +}(Bar); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/options.json deleted file mode 100644 index 1057edde11..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": [["transform-runtime", { "corejsVersion": 2, "useESModules": true }], "transform-classes"] -} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/output.js deleted file mode 100644 index 9d1599d1f2..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion-useES6Modules/output.js +++ /dev/null @@ -1,23 +0,0 @@ -var _classCallCheck = require("@babel/runtime/helpers/es6/classCallCheck"); - -var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/possibleConstructorReturn"); - -var _getPrototypeOf = require("@babel/runtime/helpers/es6/getPrototypeOf"); - -var _inherits = require("@babel/runtime/helpers/es6/inherits"); - -let Foo = -/*#__PURE__*/ -function (_Bar) { - "use strict"; - - _inherits(Foo, _Bar); - - function Foo() { - _classCallCheck(this, Foo); - - return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); - } - - return Foo; -}(Bar); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json deleted file mode 100644 index b5668b025a..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": [["transform-runtime", { "corejsVersion": 2 }], "transform-classes"] -} diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/output.js deleted file mode 100644 index 39882dcd46..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/output.js +++ /dev/null @@ -1,23 +0,0 @@ -var _classCallCheck = require("@babel/runtime/helpers/classCallCheck"); - -var _possibleConstructorReturn = require("@babel/runtime/helpers/possibleConstructorReturn"); - -var _getPrototypeOf = require("@babel/runtime/helpers/getPrototypeOf"); - -var _inherits = require("@babel/runtime/helpers/inherits"); - -let Foo = -/*#__PURE__*/ -function (_Bar) { - "use strict"; - - _inherits(Foo, _Bar); - - function Foo() { - _classCallCheck(this, Foo); - - return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments)); - } - - return Foo; -}(Bar); diff --git a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules/output.js index 889a5a8d73..d2863837c4 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules/output.js +++ b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useESModules/output.js @@ -1,10 +1,10 @@ -var _classCallCheck = require("@babel/runtime/helpers/es6/builtin/classCallCheck"); +var _classCallCheck = require("@babel/runtime/helpers/esm/classCallCheck"); -var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/builtin/possibleConstructorReturn"); +var _possibleConstructorReturn = require("@babel/runtime/helpers/esm/possibleConstructorReturn"); -var _getPrototypeOf = require("@babel/runtime/helpers/es6/builtin/getPrototypeOf"); +var _getPrototypeOf = require("@babel/runtime/helpers/esm/getPrototypeOf"); -var _inherits = require("@babel/runtime/helpers/es6/builtin/inherits"); +var _inherits = require("@babel/runtime/helpers/esm/inherits"); let Foo = /*#__PURE__*/ diff --git a/packages/babel-runtime-corejs2/.npmignore b/packages/babel-runtime-corejs2/.npmignore new file mode 100644 index 0000000000..f980694583 --- /dev/null +++ b/packages/babel-runtime-corejs2/.npmignore @@ -0,0 +1,3 @@ +src +test +*.log diff --git a/packages/babel-runtime-corejs2/README.md b/packages/babel-runtime-corejs2/README.md new file mode 100644 index 0000000000..bcae9d9c14 --- /dev/null +++ b/packages/babel-runtime-corejs2/README.md @@ -0,0 +1,19 @@ +# @babel/runtime-corejs2 + +> babel's modular runtime helpers with core-js@2 polyfilling + +See our website [@babel/runtime-corejs2](https://babeljs.io/docs/en/next/babel-runtime-corejs2.html) for more information. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/runtime-corejs2 +``` + +or using yarn: + +```sh +yarn add @babel/runtime-corejs2 --dev +``` diff --git a/packages/babel-runtime/core-js/map.js b/packages/babel-runtime-corejs2/core-js/map.js similarity index 100% rename from packages/babel-runtime/core-js/map.js rename to packages/babel-runtime-corejs2/core-js/map.js diff --git a/packages/babel-runtime/helpers/es6/iterableToArray.js b/packages/babel-runtime-corejs2/helpers/esm/iterableToArray.js similarity index 100% rename from packages/babel-runtime/helpers/es6/iterableToArray.js rename to packages/babel-runtime-corejs2/helpers/esm/iterableToArray.js diff --git a/packages/babel-runtime/helpers/builtin/es6/temporalRef.js b/packages/babel-runtime-corejs2/helpers/esm/temporalRef.js similarity index 100% rename from packages/babel-runtime/helpers/builtin/es6/temporalRef.js rename to packages/babel-runtime-corejs2/helpers/esm/temporalRef.js diff --git a/packages/babel-runtime/helpers/builtin/es6/toArray.js b/packages/babel-runtime-corejs2/helpers/esm/toArray.js similarity index 100% rename from packages/babel-runtime/helpers/builtin/es6/toArray.js rename to packages/babel-runtime-corejs2/helpers/esm/toArray.js diff --git a/packages/babel-runtime-corejs2/helpers/iterableToArray.js b/packages/babel-runtime-corejs2/helpers/iterableToArray.js new file mode 100644 index 0000000000..c7834a3122 --- /dev/null +++ b/packages/babel-runtime-corejs2/helpers/iterableToArray.js @@ -0,0 +1,9 @@ +var _Array$from = require("../core-js/array/from"); + +var _isIterable = require("../core-js/is-iterable"); + +function _iterableToArray(iter) { + if (_isIterable(Object(iter)) || Object.prototype.toString.call(iter) === "[object Arguments]") return _Array$from(iter); +} + +module.exports = _iterableToArray; \ No newline at end of file diff --git a/packages/babel-runtime/helpers/builtin/temporalRef.js b/packages/babel-runtime-corejs2/helpers/temporalRef.js similarity index 100% rename from packages/babel-runtime/helpers/builtin/temporalRef.js rename to packages/babel-runtime-corejs2/helpers/temporalRef.js diff --git a/packages/babel-runtime/helpers/builtin/toArray.js b/packages/babel-runtime-corejs2/helpers/toArray.js similarity index 100% rename from packages/babel-runtime/helpers/builtin/toArray.js rename to packages/babel-runtime-corejs2/helpers/toArray.js diff --git a/packages/babel-runtime-corejs2/package.json b/packages/babel-runtime-corejs2/package.json new file mode 100644 index 0000000000..3f0edf5900 --- /dev/null +++ b/packages/babel-runtime-corejs2/package.json @@ -0,0 +1,12 @@ +{ + "name": "@babel/runtime-corejs2", + "version": "7.0.0-beta.51", + "description": "babel's modular runtime helpers with core-js@2 polyfilling", + "license": "MIT", + "repository": "https://github.com/babel/babel/tree/master/packages/babel-runtime-corejs2", + "author": "Sebastian McKenzie ", + "dependencies": { + "core-js": "^2.5.7", + "regenerator-runtime": "^0.12.0" + } +} diff --git a/packages/babel-runtime-corejs2/regenerator/index.js b/packages/babel-runtime-corejs2/regenerator/index.js new file mode 100644 index 0000000000..9fd4158a6d --- /dev/null +++ b/packages/babel-runtime-corejs2/regenerator/index.js @@ -0,0 +1 @@ +module.exports = require("regenerator-runtime"); diff --git a/packages/babel-runtime/README.md b/packages/babel-runtime/README.md index ec85bb0b52..75087e3560 100644 --- a/packages/babel-runtime/README.md +++ b/packages/babel-runtime/README.md @@ -1,6 +1,6 @@ # @babel/runtime -> babel selfContained runtime +> babel's modular runtime helpers See our website [@babel/runtime](https://babeljs.io/docs/en/next/babel-runtime.html) for more information. diff --git a/packages/babel-runtime/core-js.js b/packages/babel-runtime/core-js.js deleted file mode 100644 index 709f7e3252..0000000000 --- a/packages/babel-runtime/core-js.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("core-js/library"); diff --git a/packages/babel-runtime/helpers/builtin/iterableToArray.js b/packages/babel-runtime/helpers/builtin/iterableToArray.js deleted file mode 100644 index e917e57937..0000000000 --- a/packages/babel-runtime/helpers/builtin/iterableToArray.js +++ /dev/null @@ -1,5 +0,0 @@ -function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); -} - -module.exports = _iterableToArray; \ No newline at end of file diff --git a/packages/babel-runtime/helpers/builtin/es6/iterableToArray.js b/packages/babel-runtime/helpers/esm/iterableToArray.js similarity index 100% rename from packages/babel-runtime/helpers/builtin/es6/iterableToArray.js rename to packages/babel-runtime/helpers/esm/iterableToArray.js diff --git a/packages/babel-runtime/helpers/es6/temporalRef.js b/packages/babel-runtime/helpers/esm/temporalRef.js similarity index 100% rename from packages/babel-runtime/helpers/es6/temporalRef.js rename to packages/babel-runtime/helpers/esm/temporalRef.js diff --git a/packages/babel-runtime/helpers/es6/toArray.js b/packages/babel-runtime/helpers/esm/toArray.js similarity index 100% rename from packages/babel-runtime/helpers/es6/toArray.js rename to packages/babel-runtime/helpers/esm/toArray.js diff --git a/packages/babel-runtime/helpers/iterableToArray.js b/packages/babel-runtime/helpers/iterableToArray.js index c7834a3122..e917e57937 100644 --- a/packages/babel-runtime/helpers/iterableToArray.js +++ b/packages/babel-runtime/helpers/iterableToArray.js @@ -1,9 +1,5 @@ -var _Array$from = require("../core-js/array/from"); - -var _isIterable = require("../core-js/is-iterable"); - function _iterableToArray(iter) { - if (_isIterable(Object(iter)) || Object.prototype.toString.call(iter) === "[object Arguments]") return _Array$from(iter); + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } module.exports = _iterableToArray; \ No newline at end of file diff --git a/packages/babel-runtime/package.json b/packages/babel-runtime/package.json index 79fc3de77f..4edabdb87f 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -1,12 +1,11 @@ { "name": "@babel/runtime", "version": "7.0.0-beta.55", - "description": "babel selfContained runtime", + "description": "babel's modular runtime helpers", "license": "MIT", "repository": "https://github.com/babel/babel/tree/master/packages/babel-runtime", "author": "Sebastian McKenzie ", "dependencies": { - "core-js": "^2.5.7", "regenerator-runtime": "^0.12.0" } }