From f69f1a80d51275a4d051a8e21090d0417daa00b0 Mon Sep 17 00:00:00 2001 From: Endrit Bajo <224696+exb@users.noreply.github.com> Date: Fri, 31 Dec 2021 00:58:07 +0100 Subject: [PATCH] Import the correct `./typeof.js` helper in `@babel/runtime` (#14081) --- .gitignore | 6 ++++++ .../scripts/build-dist.js | 18 +++++++++++++----- .../helpers/esm/possibleConstructorReturn.js | 11 +++++++++++ .../helpers/possibleConstructorReturn.js | 15 +++++++++++++++ .../helpers/esm/possibleConstructorReturn.js | 11 +++++++++++ .../helpers/possibleConstructorReturn.js | 15 +++++++++++++++ .../helpers/esm/possibleConstructorReturn.js | 11 +++++++++++ .../helpers/possibleConstructorReturn.js | 15 +++++++++++++++ 8 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 packages/babel-runtime-corejs2/helpers/esm/possibleConstructorReturn.js create mode 100644 packages/babel-runtime-corejs2/helpers/possibleConstructorReturn.js create mode 100644 packages/babel-runtime-corejs3/helpers/esm/possibleConstructorReturn.js create mode 100644 packages/babel-runtime-corejs3/helpers/possibleConstructorReturn.js create mode 100644 packages/babel-runtime/helpers/esm/possibleConstructorReturn.js create mode 100644 packages/babel-runtime/helpers/possibleConstructorReturn.js diff --git a/.gitignore b/.gitignore index 1ace24da8134..fbb484db921e 100644 --- a/.gitignore +++ b/.gitignore @@ -28,27 +28,33 @@ package-lock.json /packages/babel-runtime/helpers/*.js !/packages/babel-runtime/helpers/toArray.js !/packages/babel-runtime/helpers/iterableToArray.js +!/packages/babel-runtime/helpers/possibleConstructorReturn.js !/packages/babel-runtime/helpers/temporalRef.js !/packages/babel-runtime/helpers/typeof.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/possibleConstructorReturn.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/possibleConstructorReturn.js !/packages/babel-runtime-corejs2/helpers/temporalRef.js !/packages/babel-runtime-corejs2/helpers/typeof.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/possibleConstructorReturn.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-runtime-corejs3/helpers/*.js +!/packages/babel-runtime-corejs3/helpers/possibleConstructorReturn.js /packages/babel-runtime-corejs3/helpers/esm/*.js +!/packages/babel-runtime-corejs3/helpers/esm/possibleConstructorReturn.js /packages/babel-runtime-corejs3/core-js/**/*.js /packages/babel-runtime-corejs3/core-js-stable/**/*.js diff --git a/packages/babel-plugin-transform-runtime/scripts/build-dist.js b/packages/babel-plugin-transform-runtime/scripts/build-dist.js index 4e13c713901c..9ab9ae527185 100644 --- a/packages/babel-plugin-transform-runtime/scripts/build-dist.js +++ b/packages/babel-plugin-transform-runtime/scripts/build-dist.js @@ -259,15 +259,23 @@ function buildHelper( function buildRuntimeRewritePlugin(runtimeName, helperName) { /** - * rewrite helpers imports to runtime imports + * Rewrite helper imports to load the adequate module format version * @example * adjustImportPath(ast`"setPrototypeOf"`) - * // returns ast`"@babel/runtime/helpers/esm/setPrototypeOf"` - * @param {*} node The string literal contains import path + * // returns ast`"./setPrototypeOf"` + * @example + * adjustImportPath(ast`"@babel/runtime/helpers/typeof"`) + * // returns ast`"./typeof"` + * @param {*} node The string literal that contains the import path */ function adjustImportPath(node) { - if (helpers.list.includes(node.value)) { - node.value = `./${node.value}.js`; + const helpersPath = path.join(runtimeName, "helpers"); + const helper = node.value.startsWith(helpersPath) + ? path.basename(node.value) + : node.value; + + if (helpers.list.includes(helper)) { + node.value = `./${helper}.js`; } } diff --git a/packages/babel-runtime-corejs2/helpers/esm/possibleConstructorReturn.js b/packages/babel-runtime-corejs2/helpers/esm/possibleConstructorReturn.js new file mode 100644 index 000000000000..56d554457e8d --- /dev/null +++ b/packages/babel-runtime-corejs2/helpers/esm/possibleConstructorReturn.js @@ -0,0 +1,11 @@ +import _typeof from "./typeof.js"; +import assertThisInitialized from "./assertThisInitialized.js"; +export default function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} \ No newline at end of file diff --git a/packages/babel-runtime-corejs2/helpers/possibleConstructorReturn.js b/packages/babel-runtime-corejs2/helpers/possibleConstructorReturn.js new file mode 100644 index 000000000000..e1997be41941 --- /dev/null +++ b/packages/babel-runtime-corejs2/helpers/possibleConstructorReturn.js @@ -0,0 +1,15 @@ +var _typeof = require("./typeof.js")["default"]; + +var assertThisInitialized = require("./assertThisInitialized.js"); + +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} + +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/packages/babel-runtime-corejs3/helpers/esm/possibleConstructorReturn.js b/packages/babel-runtime-corejs3/helpers/esm/possibleConstructorReturn.js new file mode 100644 index 000000000000..56d554457e8d --- /dev/null +++ b/packages/babel-runtime-corejs3/helpers/esm/possibleConstructorReturn.js @@ -0,0 +1,11 @@ +import _typeof from "./typeof.js"; +import assertThisInitialized from "./assertThisInitialized.js"; +export default function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} \ No newline at end of file diff --git a/packages/babel-runtime-corejs3/helpers/possibleConstructorReturn.js b/packages/babel-runtime-corejs3/helpers/possibleConstructorReturn.js new file mode 100644 index 000000000000..e1997be41941 --- /dev/null +++ b/packages/babel-runtime-corejs3/helpers/possibleConstructorReturn.js @@ -0,0 +1,15 @@ +var _typeof = require("./typeof.js")["default"]; + +var assertThisInitialized = require("./assertThisInitialized.js"); + +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} + +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file diff --git a/packages/babel-runtime/helpers/esm/possibleConstructorReturn.js b/packages/babel-runtime/helpers/esm/possibleConstructorReturn.js new file mode 100644 index 000000000000..56d554457e8d --- /dev/null +++ b/packages/babel-runtime/helpers/esm/possibleConstructorReturn.js @@ -0,0 +1,11 @@ +import _typeof from "./typeof.js"; +import assertThisInitialized from "./assertThisInitialized.js"; +export default function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} \ No newline at end of file diff --git a/packages/babel-runtime/helpers/possibleConstructorReturn.js b/packages/babel-runtime/helpers/possibleConstructorReturn.js new file mode 100644 index 000000000000..e1997be41941 --- /dev/null +++ b/packages/babel-runtime/helpers/possibleConstructorReturn.js @@ -0,0 +1,15 @@ +var _typeof = require("./typeof.js")["default"]; + +var assertThisInitialized = require("./assertThisInitialized.js"); + +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return assertThisInitialized(self); +} + +module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; \ No newline at end of file