From cb8d8e0ed98aaa0d0ffb0ee7051133b4b0dce998 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Sat, 9 Jul 2022 01:12:46 +0700 Subject: [PATCH] add a workaround for Bun ~ 0.1.1 bug that define some globals with incorrect property descriptors https://github.com/Jarred-Sumner/bun/issues/399 --- CHANGELOG.md | 1 + packages/core-js/modules/web.dom-exception.stack.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3800d160324..6c6549be7e4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## Changelog ##### Unreleased +- Added a workaround for Bun ~ 0.1.1 [bug](https://github.com/Jarred-Sumner/bun/issues/399) that define some globals with incorrect property descriptors - Fixed order of errors throwing on iterator helpers ##### [3.23.3 - 2022.06.26](https://github.com/zloirock/core-js/releases/tag/v3.23.3) diff --git a/packages/core-js/modules/web.dom-exception.stack.js b/packages/core-js/modules/web.dom-exception.stack.js index 5bf5154462da..4a36ded1590f 100644 --- a/packages/core-js/modules/web.dom-exception.stack.js +++ b/packages/core-js/modules/web.dom-exception.stack.js @@ -1,5 +1,6 @@ 'use strict'; var $ = require('../internals/export'); +var global = require('../internals/global'); var getBuiltIn = require('../internals/get-built-in'); var createPropertyDescriptor = require('../internals/create-property-descriptor'); var defineProperty = require('../internals/object-define-property').f; @@ -9,6 +10,7 @@ var inheritIfRequired = require('../internals/inherit-if-required'); var normalizeStringArgument = require('../internals/normalize-string-argument'); var DOMExceptionConstants = require('../internals/dom-exception-constants'); var clearErrorStack = require('../internals/clear-error-stack'); +var DESCRIPTORS = require('../internals/descriptors'); var IS_PURE = require('../internals/is-pure'); var DOM_EXCEPTION = 'DOMException'; @@ -32,7 +34,15 @@ var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototy var ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION); var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2); -var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !DOM_EXCEPTION_HAS_STACK; + +// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe +var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION); + +// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it +// https://github.com/Jarred-Sumner/bun/issues/399 +var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable); + +var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK; // `DOMException` constructor patch for `.stack` where it's required // https://webidl.spec.whatwg.org/#es-DOMException-specialness