From c4320a6019f705906cd8168f164a45e319191748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 23 Feb 2021 02:59:03 +0100 Subject: [PATCH] Correctly update `module.exports.default` of `typeof` helper (#12858) --- .gitignore | 2 ++ .../scripts/build-dist.js | 15 +++++------ .../test/regression.js | 11 ++++++++ .../helpers/iterableToArray/index.js | 3 +-- .../helpers/temporalRef/index.js | 3 +-- .../helpers/toArray/index.js | 3 +-- .../helpers/typeof/_index.mjs | 17 ++++++++++++ .../helpers/typeof/index.js | 26 +++++++++++++++++++ .../helpers/iterableToArray/index.js | 3 +-- .../helpers/temporalRef/index.js | 3 +-- .../babel-runtime/helpers/toArray/index.js | 3 +-- .../babel-runtime/helpers/typeof/_index.mjs | 15 +++++++++++ .../babel-runtime/helpers/typeof/index.js | 22 ++++++++++++++++ 13 files changed, 106 insertions(+), 20 deletions(-) create mode 100644 packages/babel-plugin-transform-runtime/test/regression.js create mode 100644 packages/babel-runtime-corejs2/helpers/typeof/_index.mjs create mode 100644 packages/babel-runtime-corejs2/helpers/typeof/index.js create mode 100644 packages/babel-runtime/helpers/typeof/_index.mjs create mode 100644 packages/babel-runtime/helpers/typeof/index.js diff --git a/.gitignore b/.gitignore index e7ba00e3f0..90b915d0dc 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ package-lock.json !/packages/babel-runtime/helpers/toArray/* !/packages/babel-runtime/helpers/iterableToArray/* !/packages/babel-runtime/helpers/temporalRef/* +!/packages/babel-runtime/helpers/typeof/* /packages/babel-runtime/helpers/esm/*.js !/packages/babel-runtime/helpers/esm/toArray.js !/packages/babel-runtime/helpers/esm/iterableToArray.js @@ -42,6 +43,7 @@ package-lock.json !/packages/babel-runtime-corejs2/helpers/toArray/* !/packages/babel-runtime-corejs2/helpers/iterableToArray/* !/packages/babel-runtime-corejs2/helpers/temporalRef/* +!/packages/babel-runtime-corejs2/helpers/typeof/* /packages/babel-runtime-corejs2/helpers/esm/*.js !/packages/babel-runtime-corejs2/helpers/esm/toArray.js !/packages/babel-runtime-corejs2/helpers/esm/iterableToArray.js diff --git a/packages/babel-plugin-transform-runtime/scripts/build-dist.js b/packages/babel-plugin-transform-runtime/scripts/build-dist.js index 59404f3382..e025603374 100644 --- a/packages/babel-plugin-transform-runtime/scripts/build-dist.js +++ b/packages/babel-plugin-transform-runtime/scripts/build-dist.js @@ -287,15 +287,14 @@ function buildRuntimeRewritePlugin(runtimeName, helperName) { function addDefaultCJSExport({ template }) { return { visitor: { - Program: { + AssignmentExpression: { exit(path) { - path.pushContainer( - "body", - template.statements.ast` - module.exports.default = module.exports; - module.exports.__esModule = true; - ` - ); + if (path.get("left").matchesPattern("module.exports")) { + path.insertAfter(template.expression.ast` + module.exports.default = module.exports, + module.exports.__esModule = true + `); + } }, }, }, diff --git a/packages/babel-plugin-transform-runtime/test/regression.js b/packages/babel-plugin-transform-runtime/test/regression.js new file mode 100644 index 0000000000..ad661f5c66 --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/regression.js @@ -0,0 +1,11 @@ +it("module.exports.default is correctly updated", () => { + const typeofHelper = require("@babel/runtime/helpers/typeof"); + + expect(typeof typeofHelper).toBe("function"); + expect(typeof typeofHelper.default).toBe("function"); + + typeofHelper(); + + expect(typeof typeofHelper).toBe("function"); + expect(typeof typeofHelper.default).toBe("function"); +}); diff --git a/packages/babel-runtime-corejs2/helpers/iterableToArray/index.js b/packages/babel-runtime-corejs2/helpers/iterableToArray/index.js index f39a788123..3bd194c643 100644 --- a/packages/babel-runtime-corejs2/helpers/iterableToArray/index.js +++ b/packages/babel-runtime-corejs2/helpers/iterableToArray/index.js @@ -9,5 +9,4 @@ function _iterableToArray(iter) { } module.exports = _iterableToArray; -module.exports["default"] = module.exports; -module.exports.__esModule = true; \ No newline at end of file +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/packages/babel-runtime-corejs2/helpers/temporalRef/index.js b/packages/babel-runtime-corejs2/helpers/temporalRef/index.js index 6b0786fa21..c9fbdac3a6 100644 --- a/packages/babel-runtime-corejs2/helpers/temporalRef/index.js +++ b/packages/babel-runtime-corejs2/helpers/temporalRef/index.js @@ -7,5 +7,4 @@ function _temporalRef(val, name) { } module.exports = _temporalRef; -module.exports["default"] = module.exports; -module.exports.__esModule = true; \ No newline at end of file +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/packages/babel-runtime-corejs2/helpers/toArray/index.js b/packages/babel-runtime-corejs2/helpers/toArray/index.js index 444f26617e..5e9876d317 100644 --- a/packages/babel-runtime-corejs2/helpers/toArray/index.js +++ b/packages/babel-runtime-corejs2/helpers/toArray/index.js @@ -11,5 +11,4 @@ function _toArray(arr) { } module.exports = _toArray; -module.exports["default"] = module.exports; -module.exports.__esModule = true; \ No newline at end of file +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/packages/babel-runtime-corejs2/helpers/typeof/_index.mjs b/packages/babel-runtime-corejs2/helpers/typeof/_index.mjs new file mode 100644 index 0000000000..72ecccfbaa --- /dev/null +++ b/packages/babel-runtime-corejs2/helpers/typeof/_index.mjs @@ -0,0 +1,17 @@ +import _Symbol from "@babel/runtime-corejs2/core-js/symbol"; +import _Symbol$iterator from "@babel/runtime-corejs2/core-js/symbol/iterator"; +export default function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") { + _typeof = function _typeof(obj) { + return typeof obj; + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} \ No newline at end of file diff --git a/packages/babel-runtime-corejs2/helpers/typeof/index.js b/packages/babel-runtime-corejs2/helpers/typeof/index.js new file mode 100644 index 0000000000..035dfceca5 --- /dev/null +++ b/packages/babel-runtime-corejs2/helpers/typeof/index.js @@ -0,0 +1,26 @@ +var _Symbol = require("@babel/runtime-corejs2/core-js/symbol"); + +var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator"); + +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") { + module.exports = _typeof = function _typeof(obj) { + return typeof obj; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } else { + module.exports = _typeof = function _typeof(obj) { + return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } + + return _typeof(obj); +} + +module.exports = _typeof; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/packages/babel-runtime/helpers/iterableToArray/index.js b/packages/babel-runtime/helpers/iterableToArray/index.js index 45f75e8154..e5a5d6ba09 100644 --- a/packages/babel-runtime/helpers/iterableToArray/index.js +++ b/packages/babel-runtime/helpers/iterableToArray/index.js @@ -3,5 +3,4 @@ function _iterableToArray(iter) { } module.exports = _iterableToArray; -module.exports["default"] = module.exports; -module.exports.__esModule = true; \ No newline at end of file +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/packages/babel-runtime/helpers/temporalRef/index.js b/packages/babel-runtime/helpers/temporalRef/index.js index 945aed260c..37acc162ad 100644 --- a/packages/babel-runtime/helpers/temporalRef/index.js +++ b/packages/babel-runtime/helpers/temporalRef/index.js @@ -7,5 +7,4 @@ function _temporalRef(val, name) { } module.exports = _temporalRef; -module.exports["default"] = module.exports; -module.exports.__esModule = true; \ No newline at end of file +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/packages/babel-runtime/helpers/toArray/index.js b/packages/babel-runtime/helpers/toArray/index.js index 0e15baa13f..22bfc8fc26 100644 --- a/packages/babel-runtime/helpers/toArray/index.js +++ b/packages/babel-runtime/helpers/toArray/index.js @@ -11,5 +11,4 @@ function _toArray(arr) { } module.exports = _toArray; -module.exports["default"] = module.exports; -module.exports.__esModule = true; \ No newline at end of file +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file diff --git a/packages/babel-runtime/helpers/typeof/_index.mjs b/packages/babel-runtime/helpers/typeof/_index.mjs new file mode 100644 index 0000000000..eb444f73d8 --- /dev/null +++ b/packages/babel-runtime/helpers/typeof/_index.mjs @@ -0,0 +1,15 @@ +export default function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof(obj) { + return typeof obj; + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} \ No newline at end of file diff --git a/packages/babel-runtime/helpers/typeof/index.js b/packages/babel-runtime/helpers/typeof/index.js new file mode 100644 index 0000000000..02a5d8a8c5 --- /dev/null +++ b/packages/babel-runtime/helpers/typeof/index.js @@ -0,0 +1,22 @@ +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + module.exports = _typeof = function _typeof(obj) { + return typeof obj; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } else { + module.exports = _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + module.exports["default"] = module.exports, module.exports.__esModule = true; + } + + return _typeof(obj); +} + +module.exports = _typeof; +module.exports["default"] = module.exports, module.exports.__esModule = true; \ No newline at end of file