'use strict';
|
var $ = require('../internals/export');
|
var globalThis = require('../internals/global');
|
var isPrototypeOf = require('../internals/object-is-prototype-of');
|
var getPrototypeOf = require('../internals/object-get-prototype-of');
|
var setPrototypeOf = require('../internals/object-set-prototype-of');
|
var copyConstructorProperties = require('../internals/copy-constructor-properties');
|
var create = require('../internals/object-create');
|
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
var createPropertyDescriptor = require('../internals/create-property-descriptor');
|
var installErrorStack = require('../internals/error-stack-install');
|
var normalizeStringArgument = require('../internals/normalize-string-argument');
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
var fails = require('../internals/fails');
|
var IS_PURE = require('../internals/is-pure');
|
|
var NativeSuppressedError = globalThis.SuppressedError;
|
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
var $Error = Error;
|
|
// https://github.com/oven-sh/bun/issues/9282
|
var WRONG_ARITY = !!NativeSuppressedError && NativeSuppressedError.length !== 3;
|
|
// https://github.com/oven-sh/bun/issues/9283
|
var EXTRA_ARGS_SUPPORT = !!NativeSuppressedError && fails(function () {
|
return NativeSuppressedError(1, 2, 3, { cause: 4 }).cause === 4;
|
});
|
|
var PATCH = WRONG_ARITY || EXTRA_ARGS_SUPPORT;
|
|
var $SuppressedError = function SuppressedError(error, suppressed, message) {
|
var isInstance = isPrototypeOf(SuppressedErrorPrototype, this);
|
var that;
|
if (setPrototypeOf) {
|
that = PATCH && (!isInstance || getPrototypeOf(this) === SuppressedErrorPrototype)
|
? new NativeSuppressedError()
|
: setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : SuppressedErrorPrototype);
|
} else {
|
that = isInstance ? this : create(SuppressedErrorPrototype);
|
createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');
|
}
|
if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));
|
installErrorStack(that, $SuppressedError, that.stack, 1);
|
createNonEnumerableProperty(that, 'error', error);
|
createNonEnumerableProperty(that, 'suppressed', suppressed);
|
return that;
|
};
|
|
if (setPrototypeOf) setPrototypeOf($SuppressedError, $Error);
|
else copyConstructorProperties($SuppressedError, $Error, { name: true });
|
|
var SuppressedErrorPrototype = $SuppressedError.prototype = PATCH ? NativeSuppressedError.prototype : create($Error.prototype, {
|
constructor: createPropertyDescriptor(1, $SuppressedError),
|
message: createPropertyDescriptor(1, ''),
|
name: createPropertyDescriptor(1, 'SuppressedError')
|
});
|
|
if (PATCH && !IS_PURE) SuppressedErrorPrototype.constructor = $SuppressedError;
|
|
// `SuppressedError` constructor
|
// https://github.com/tc39/proposal-explicit-resource-management
|
$({ global: true, constructor: true, arity: 3, forced: PATCH }, {
|
SuppressedError: $SuppressedError
|
});
|