From 62fd56ffd1576483128f8f53f17e11286800f370 Mon Sep 17 00:00:00 2001 From: Jack Works Date: Wed, 25 May 2022 15:10:20 +0800 Subject: [PATCH] Support frozen built-ins in `@babel/runtime` (#14537) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update helpers.ts * Update helpers.ts * Update helpers.ts * Update helpers.ts * Avoid error when `Object.assign` is not defined Co-authored-by: Nicolò Ribaudo --- packages/babel-helpers/src/helpers.ts | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/babel-helpers/src/helpers.ts b/packages/babel-helpers/src/helpers.ts index 5752207c09e4..647c3fb99630 100644 --- a/packages/babel-helpers/src/helpers.ts +++ b/packages/babel-helpers/src/helpers.ts @@ -289,9 +289,10 @@ helpers.defineProperty = helper("7.0.0-beta.0")` } `; +// need a bind because https://github.com/babel/babel/issues/14527 helpers.extends = helper("7.0.0-beta.0")` export default function _extends() { - _extends = Object.assign || function (target) { + _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { @@ -360,10 +361,11 @@ helpers.inheritsLoose = helper("7.0.0-beta.0")` } `; +// need a bind because https://github.com/babel/babel/issues/14527 helpers.getPrototypeOf = helper("7.0.0-beta.0")` export default function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf - ? Object.getPrototypeOf + ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; @@ -373,10 +375,12 @@ helpers.getPrototypeOf = helper("7.0.0-beta.0")` helpers.setPrototypeOf = helper("7.0.0-beta.0")` export default function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; + _setPrototypeOf = Object.setPrototypeOf + ? Object.setPrototypeOf.bind() + : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; return _setPrototypeOf(o, p); } `; @@ -409,13 +413,14 @@ helpers.isNativeReflectConstruct = helper("7.9.0")` } `; +// need a bind because https://github.com/babel/babel/issues/14527 helpers.construct = helper("7.0.0-beta.0")` import setPrototypeOf from "setPrototypeOf"; import isNativeReflectConstruct from "isNativeReflectConstruct"; export default function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { - _construct = Reflect.construct; + _construct = Reflect.construct.bind(); } else { // NOTE: If Parent !== Class, the correct __proto__ is set *after* // calling the constructor. @@ -656,6 +661,7 @@ helpers.superPropBase = helper("7.0.0-beta.0")` } `; +// need a bind because https://github.com/babel/babel/issues/14527 // https://tc39.es/ecma262/multipage/reflection.html#sec-reflect.get // // 28.1.5 Reflect.get ( target, propertyKey [ , receiver ] ) @@ -665,7 +671,7 @@ helpers.get = helper("7.0.0-beta.0")` export default function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get; + _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = superPropBase(target, property);