npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

is-deep-strict-equal-x

v1.1.2

Published

node's isDeepStrictEqual algorithm.

Downloads

329

Readme

is-deep-strict-equal-x

node's isDeepStrictEqual algorithm.

is-deep-strict-equal-x.isDeepStrictEqualboolean

Tests for deep equality between the actual and expected parameters. "Deep" equality means that the enumerable "own" properties of child objects are recursively evaluated also by the following rules.

#Comparison details Primitive values are compared using the SameValue Comparison, used by Object.is(). Type tags of objects should be the same. [[Prototype]] of objects are compared using the Strict Equality Comparison. Only enumerable "own" properties are considered. Error names and messages are always compared, even if these are not enumerable properties. Enumerable own Symbol properties are compared as well. Object wrappers are compared both as objects and unwrapped values. Object properties are compared unordered. Map keys and Set items are compared unordered. Recursion stops when both sides differ or both sides encounter a circular reference. WeakMap and WeakSet comparison does not rely on their values. See below for further details.

Kind: Exported function
Returns: boolean - true if val1 and val2 are deemed equal, otherwise false.
See: https://nodejs.org/dist/latest-v10.x/docs/api/util.html#util_util_isdeepstrictequal_val1_val2

| Param | Type | Description | | ----- | --------------- | ------------------------- | | val1 | * | First comparison object. | | val2 | * | Second comparison object. |

Example

import {isDeepStrictEqual} from 'is-deep-strict-equal-x';

// This fails because 1 !== '1'.
isDeepStrictEqual({a: 1}, {a: '1'}); // false

// The following objects don't have own properties
const date = new Date();
const object = {};
const fakeDate = {};
isDeepStrictEqual(fakeDate, Date.prototype);

// Different [[Prototype]]:
isDeepStrictEqual(object, fakeDate); // false

// Different type tags:
isDeepStrictEqual(date, fakeDate); // false

isDeepStrictEqual(NaN, NaN); // true

// Different unwrapped numbers:
isDeepStrictEqual(Object(1), Object(2)); // false

isDeepStrictEqual(Object('foo'), Object('foo')); // true

isDeepStrictEqual(-0, -0); // true

// Different zeros using the SameValue Comparison:
isDeepStrictEqual(0, -0); // false

const symbol1 = Symbol();
const symbol2 = Symbol();
isDeepStrictEqual({[symbol1]: 1}, {[symbol1]: 1}); // true
isDeepStrictEqual({[symbol1]: 1}, {[symbol2]: 1}); // false

const weakMap1 = new WeakMap();
const weakMap2 = new WeakMap([[{}, {}]]);
const weakMap3 = new WeakMap();
weakMap3.unequal = true;

isDeepStrictEqual(weakMap1, weakMap2); // true

// Fails because weakMap3 has a property that weakMap1 does not contain:
isDeepStrictEqual(weakMap1, weakMap3); // false

is-deep-strict-equal-x.isDeepEqualboolean

#Deprecated - Use isDeepStrictEqual instead!

Kind: Exported function
Returns: boolean - true if val1 and val2 are deemed equal, otherwise false.

| Param | Type | Description | | ----- | --------------- | ------------------------- | | val1 | * | First comparison object. | | val2 | * | Second comparison object. |

Example

import {isDeepEqual} from 'is-deep-strict-equal-x';

isDeepEqual(Error('a'), Error('b')); // true

isDeepEqual(4, '4'); // => true

isDeepEqual({a: 4, b: '1'}, {b: '1', a: 4}); // => true

isDeepEqual(new Date(), new Date(2000, 3, 14)); // => false

isDeepEqual(4, '4', true); // => false