Socket
Book a DemoInstallSign in
Socket

error.iserror

Package Overview
Dependencies
Maintainers
0
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

error.iserror

An ESnext spec-compliant `Error.isError` shim/polyfill/replacement that works as far down as ES3

latest
Source
npmnpm
Version
1.0.2
Version published
Weekly downloads
47
27.03%
Maintainers
0
Weekly downloads
 
Created
Source

Error.isError Version Badge

github actions coverage License Downloads

npm badge

An ESnext spec-compliant Error.isError shim/polyfill/replacement that works as far down as ES3.

This package implements the es-shim API interface. It works in an ES3-supported environment and complies with the proposed spec.

Getting started

npm install --save error.iserror

Usage/Examples

const isError = require('error.iserror');
var assert = require('assert');

assert.equal(isError(undefined), false);
assert.equal(isError(null), false);
assert.equal(isError({}), false);
assert.equal(isError([]), false);
assert.equal(isError(Error), false);
assert.equal(isError({ __proto__: Error.prototype, constructor: Error }), false);

assert.equal(isError(new Error()), true);
assert.equal(isError(new EvalError()), true);
assert.equal(isError(new RangeError()), true);
assert.equal(isError(new ReferenceError()), true);
assert.equal(isError(new SyntaxError()), true);
assert.equal(isError(new TypeError()), true);
assert.equal(isError(new URIError()), true);

if (typeof AggregateError === 'function') {
    assert.equal(isError(new AggregateError([])), true);
}
if (typeof SuppressedError === 'function') {
    assert.equal(isError(new SuppressedError()), true);
}

// note: engines that have `Symbol.toStringTag`, and lack structuredClone, and lack other brand-checking
// mechanisms, are only capable of brand-checking Error objects when they lack a `Symbol.toStringTag` property in their
// prototype chain. An object with it will give the wrong answer.
// This affects node 6 - 9, Chrome 49 - 97, Safari 10 - 14, Edge 15 - 18

assert.equal(isError({ __proto__: Error.prototype, constructor: Error, [Symbol.toStringTag]: 'Error' }), false);

const err = Object.assign(new Error(), { [Symbol.toStringTag]: 'Non-Error' });
Object.setPrototypeOf(err, null);
assert.equal(isError(err), true);


// note: node < v24.3 has an `Error.isError` that does not work correctly with DOMException objects
assert.equal(isError(new DOMException()), true);
var shimIsError = require('error.iserror/shim');
const getPolyfill = require('error.iserror/polyfill');
var assert = require('assert');
/* when Error.isError is not present */
delete Error.isError;
var shimmed = shimIsError();

assert.equal(shimmed, getPolyfill());
assert.deepEqual(Error.isError(new Error()), isError(new Error()));
var shimIsError = require('error.iserror/shim');
var assert = require('assert');
/* when Error.isError is present */
var shimmed = shimIsError();

assert.equal(shimmed, Error.isError);
assert.deepEqual(Error.isError(new Error()), isError(new Error()));

Tests

Simply clone the repo, npm install, and run npm test

Keywords

javascript

FAQs

Package last updated on 24 Jul 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts