123456789101112131415161718192021222324252627282930313233343536 |
- '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;
- }
- });
|