diff --git a/packages/babel-helpers/src/helpers.js b/packages/babel-helpers/src/helpers.js index 7aa8518aec2f..55c3d404e8f2 100644 --- a/packages/babel-helpers/src/helpers.js +++ b/packages/babel-helpers/src/helpers.js @@ -1539,7 +1539,8 @@ helpers.decorate = helper("7.0.2")` value: "Descriptor", configurable: true, }; - Object.defineProperty(obj, Symbol.toStringTag, desc); + + if (typeof Symbol === 'function' && Symbol.toStringTag) Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; @@ -1653,7 +1654,8 @@ helpers.decorate = helper("7.0.2")` }; var desc = { value: "Descriptor", configurable: true }; - Object.defineProperty(obj, Symbol.toStringTag, desc); + + if (typeof Symbol === 'function' && Symbol.toStringTag) Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; } diff --git a/packages/babel-runtime/helpers/esm/iterableToArray.js b/packages/babel-runtime/helpers/esm/iterableToArray.js index 671e400d9166..e20f3581c3cf 100644 --- a/packages/babel-runtime/helpers/esm/iterableToArray.js +++ b/packages/babel-runtime/helpers/esm/iterableToArray.js @@ -1,3 +1,11 @@ export default function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); -} \ No newline at end of file + if ( + Array.isArray(iter) + || typeof iter === 'string' + || (typeof Symbol === 'function' && Symbol.iterator in Object(iter)) + || (iter && 'length' in iter) + || (typeof Map !== 'undefined' && iter instanceof Map) + || (typeof Set !== 'undefined' && iter instanceof Set) + || Object.prototype.toString.call(iter) === "[object Arguments]" + ) return Array.from(iter); +} diff --git a/packages/babel-runtime/helpers/iterableToArray.js b/packages/babel-runtime/helpers/iterableToArray.js index e917e57937bf..2b03c898b641 100644 --- a/packages/babel-runtime/helpers/iterableToArray.js +++ b/packages/babel-runtime/helpers/iterableToArray.js @@ -1,5 +1,13 @@ function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); + if ( + Array.isArray(iter) + || typeof iter === 'string' + || (typeof Symbol === 'function' && Symbol.iterator in Object(iter)) + || (iter && 'length' in iter) + || (typeof Map !== 'undefined' && iter instanceof Map) + || (typeof Set !== 'undefined' && iter instanceof Set) + || Object.prototype.toString.call(iter) === "[object Arguments]" + ) return Array.from(iter); } module.exports = _iterableToArray; \ No newline at end of file