diff --git a/.eslintignore b/.eslintignore index 4a10dadac2..18e74eafba 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,8 +4,9 @@ package.json lerna.json packages/babel-runtime -!packages/babel-runtime/scripts -!packages/babel-runtime/core-js.js +!packages/babel-plugin-transform-runtime/scripts +!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 2ed85e6bbb..b0ec3ca0e2 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 @@ -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 ^ @@ -120,7 +121,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-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/.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-plugin-transform-runtime/scripts/build-dist.js b/packages/babel-plugin-transform-runtime/scripts/build-dist.js new file mode 100644 index 0000000000..9381e3b962 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/scripts/build-dist.js @@ -0,0 +1,158 @@ +"use strict"; + +const path = require("path"); +const outputFile = require("output-file-sync"); +const helpers = require("@babel/helpers"); +const babel = require("@babel/core"); +const template = require("@babel/template"); +const t = require("@babel/types"); + +const transformRuntime = require("../"); +const corejs2Definitions = require("../lib/definitions").default; + +writeHelpers("@babel/runtime"); + +writeCoreJS2("@babel/runtime-corejs2"); +writeHelpers("@babel/runtime-corejs2", { corejs: 2 }); + +function writeCoreJS2(runtimeName) { + const pkgDirname = getRuntimeRoot(runtimeName); + + const paths = ["is-iterable", "get-iterator"]; + + Object.keys(corejs2Definitions.builtins).forEach(key => { + const path = corejs2Definitions.builtins[key]; + paths.push(path); + }); + + Object.keys(corejs2Definitions.methods).forEach(key => { + const props = corejs2Definitions.methods[key]; + Object.keys(props).forEach(key2 => { + paths.push(props[key2]); + }); + }); + + paths.forEach(function(corePath) { + outputFile( + path.join(pkgDirname, "core-js", `${corePath}.js`), + `module.exports = require("core-js/library/fn/${corePath}");` + ); + }); +} + +function writeHelpers(runtimeName, { corejs } = {}) { + writeHelperFiles(runtimeName, { corejs, esm: false }); + writeHelperFiles(runtimeName, { corejs, esm: true }); +} + +function writeHelperFiles(runtimeName, { esm, corejs }) { + const pkgDirname = getRuntimeRoot(runtimeName); + + for (const helperName of helpers.list) { + const helperFilename = path.join( + pkgDirname, + "helpers", + esm ? "esm" : "", + `${helperName}.js` + ); + + outputFile( + helperFilename, + buildHelper(runtimeName, pkgDirname, helperFilename, helperName, { + esm, + corejs, + }) + ); + } +} + +function getRuntimeRoot(runtimeName) { + return path.resolve( + __dirname, + "..", + "..", + runtimeName.replace(/^@babel\//, "babel-") + ); +} + +function buildHelper( + runtimeName, + pkgDirname, + helperFilename, + helperName, + { esm, corejs } +) { + 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, { corejs, useESModules: esm }], + buildRuntimeRewritePlugin( + runtimeName, + path.relative(path.dirname(helperFilename), pkgDirname), + helperName + ), + ], + }).code; +} + +function buildRuntimeRewritePlugin(runtimeName, relativePath, helperName) { + function adjustImportPath(node, relativePath) { + node.value = + helpers.list.indexOf(node.value) !== -1 + ? `./${node.value}` + : node.value.replace(runtimeName + "/", relativePath + "/"); + } + + return { + pre(file) { + const original = file.get("helperGenerator"); + file.set("helperGenerator", name => { + // make sure that helpers won't insert circular references to themselves + if (name === helperName) return false; + + return original(name); + }); + }, + visitor: { + ImportDeclaration(path) { + adjustImportPath(path.get("source").node, relativePath); + }, + CallExpression(path) { + if ( + !path.get("callee").isIdentifier({ name: "require" }) || + path.get("arguments").length !== 1 || + !path.get("arguments")[0].isStringLiteral() + ) { + return; + } + + // replace any reference to @babel/runtime and other helpers + // with a relative path + adjustImportPath(path.get("arguments")[0].node, relativePath); + }, + }, + }; +} diff --git a/packages/babel-plugin-transform-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js index 876fea7641..0e0f616afd 100644 --- a/packages/babel-plugin-transform-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -8,29 +8,84 @@ export default declare((api, options) => { api.assertVersion(7); const { - helpers, - moduleName = "@babel/runtime", - polyfill, - regenerator, - useBuiltIns, - useESModules, + corejs: 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 'corejs' 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 'corejs'" + + "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 'corejs'" + + "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/esm" : "helpers"; + const injectCoreJS2 = `${corejsVersion}` === "2"; + const moduleName = injectCoreJS2 + ? "@babel/runtime-corejs2" + : "@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 @@ -58,14 +113,6 @@ export default declare((api, options) => { }); } - 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 +141,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 +168,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 +193,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 +212,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 +250,7 @@ export default declare((api, options) => { }, exit(path) { - if (notPolyfillOrDoesUseBuiltIns) return; + if (!injectCoreJS2) return; if (!path.isReferenced()) return; const { node } = path; @@ -227,5 +274,3 @@ export default declare((api, options) => { }, }; }); - -export { definitions }; 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"] -} 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/custom-runtime/input.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/input.mjs similarity index 100% rename from packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/input.mjs rename to packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/input.mjs 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/custom-runtime/output.mjs b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/output.mjs similarity index 77% rename from packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/output.mjs rename to packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/output.mjs index 656dd6d030..bb91155014 100644 --- a/packages/babel-plugin-transform-runtime/test/fixtures/runtime/custom-runtime/output.mjs +++ b/packages/babel-plugin-transform-runtime/test/fixtures/runtime-corejs2/full/output.mjs @@ -1,5 +1,5 @@ -import _regeneratorRuntime from "foo/regenerator"; -import _Symbol from "foo/core-js/symbol"; +import _regeneratorRuntime from "@babel/runtime-corejs2/regenerator"; +import _Symbol from "@babel/runtime-corejs2/core-js/symbol"; var _marked = /*#__PURE__*/ 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/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/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/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..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 @@ -2,10 +2,6 @@ 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"); - 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/corejs-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/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/useBuiltIns/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/useBuiltIns/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/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-useESModules/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/output.js deleted file mode 100644 index d5ad90a1c2..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns-useESModules/output.js +++ /dev/null @@ -1,23 +0,0 @@ -var _classCallCheck = require("@babel/runtime/helpers/builtin/es6/classCallCheck"); - -var _possibleConstructorReturn = require("@babel/runtime/helpers/builtin/es6/possibleConstructorReturn"); - -var _getPrototypeOf = require("@babel/runtime/helpers/builtin/es6/getPrototypeOf"); - -var _inherits = require("@babel/runtime/helpers/builtin/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/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/useBuiltIns/output.js b/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/output.js deleted file mode 100644 index 0dcb1a6dc1..0000000000 --- a/packages/babel-plugin-transform-runtime/test/fixtures/use-options/useBuiltIns/output.js +++ /dev/null @@ -1,23 +0,0 @@ -var _classCallCheck = require("@babel/runtime/helpers/builtin/classCallCheck"); - -var _possibleConstructorReturn = require("@babel/runtime/helpers/builtin/possibleConstructorReturn"); - -var _getPrototypeOf = require("@babel/runtime/helpers/builtin/getPrototypeOf"); - -var _inherits = require("@babel/runtime/helpers/builtin/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 9d1599d1f2..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/classCallCheck"); +var _classCallCheck = require("@babel/runtime/helpers/esm/classCallCheck"); -var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/possibleConstructorReturn"); +var _possibleConstructorReturn = require("@babel/runtime/helpers/esm/possibleConstructorReturn"); -var _getPrototypeOf = require("@babel/runtime/helpers/es6/getPrototypeOf"); +var _getPrototypeOf = require("@babel/runtime/helpers/esm/getPrototypeOf"); -var _inherits = require("@babel/runtime/helpers/es6/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/.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/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 18098e06f9..4edabdb87f 100644 --- a/packages/babel-runtime/package.json +++ b/packages/babel-runtime/package.json @@ -1,19 +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" - }, - "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/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 deleted file mode 100644 index 62aed66aa9..0000000000 --- a/packages/babel-runtime/scripts/build-dist.js +++ /dev/null @@ -1,165 +0,0 @@ -"use strict"; - -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 t = require("@babel/types"); - -const paths = ["is-iterable", "get-iterator"]; - -Object.keys(coreDefinitions.builtins).forEach((key) => { - const path = coreDefinitions.builtins[key]; - paths.push(path); -}); - -Object.keys(coreDefinitions.methods).forEach((key) => { - const props = coreDefinitions.methods[key]; - Object.keys(props).forEach((key2) => { - const path = props[key2]; - paths.push(path); - }); -}); - -paths.forEach(function(path) { - writeFile( - "core-js/" + path + ".js", - defaultify(`require("core-js/library/fn/${path}")`) - ); -}); - -function relative(filename) { - return `${__dirname}/../${filename}`; -} - -function defaultify(name) { - return `module.exports = ${name};`; -} - -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); - } -} - -function buildRuntimeRewritePlugin(relativePath, helperName, dependencies) { - return { - pre(file) { - const original = file.get("helperGenerator"); - file.set("helperGenerator", (name) => { - // make sure that helpers won't insert circular references to themselves - if (name === helperName) return false; - - return original(name); - }); - }, - visitor: { - ImportDeclaration(path) { - adjustImportPath(path.get("source").node, relativePath); - }, - CallExpression(path) { - if ( - !path.get("callee").isIdentifier({ name: "require" }) || - path.get("arguments").length !== 1 || - !path.get("arguments")[0].isStringLiteral() - ) { - return; - } - - // replace any reference to @babel/runtime and other helpers - // with a relative path - adjustImportPath(path.get("arguments")[0].node, relativePath); - }, - }, - }; -} - -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) - ); - } - } -}