core-js
Version:
Standard library
37 lines (32 loc) • 1.47 kB
JavaScript
var $ = require('../internals/export');
var getBuiltIn = require('../internals/get-built-in');
var isObject = require('../internals/is-object');
var classof = require('../internals/classof');
var fails = require('../internals/fails');
var ERROR = 'Error';
var DOM_EXCEPTION = 'DOMException';
// eslint-disable-next-line es/no-object-setprototypeof, no-proto -- safe
var PROTOTYPE_SETTING_AVAILABLE = Object.setPrototypeOf || ({}).__proto__;
var DOMException = getBuiltIn(DOM_EXCEPTION);
var $Error = Error;
var $isError = $Error.isError;
var FORCED = !$isError || !PROTOTYPE_SETTING_AVAILABLE || fails(function () {
// Bun, isNativeError-based implementations, some buggy structuredClone-based implementations, etc.
// https://github.com/oven-sh/bun/issues/15821
return (DOMException && !$isError(new DOMException(DOM_EXCEPTION))) ||
// structuredClone-based implementations
// eslint-disable-next-line es/no-error-cause -- detection
!$isError(new $Error(ERROR, { cause: function () { /* empty */ } })) ||
// instanceof-based and FF Error#stack-based implementations
$isError(getBuiltIn('Object', 'create')($Error.prototype));
});
// `Error.isError` method
// https://github.com/tc39/proposal-is-error
$({ target: 'Error', stat: true, sham: true, forced: FORCED }, {
isError: function isError(arg) {
if (!isObject(arg)) return false;
var tag = classof(arg);
return tag === ERROR || tag === DOM_EXCEPTION;
}
});
;