UNPKG

core-js

Version:
37 lines (32 loc) 1.47 kB
'use strict'; 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; } });