# is-deep-strict-equal-x

> node's isDeepStrictEqual algorithm.

Latest version **1.1.2** (published 2019-08-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install is-deep-strict-equal-x
pnpm add is-deep-strict-equal-x
yarn add is-deep-strict-equal-x
bun add is-deep-strict-equal-x
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.2 |
| Published | 2019-08-28 |
| First published | 2019-07-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=8.11.4 |
| Dependencies | 34 |
| Unpacked size | 1.1 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Graham Fairweather |
| Maintainers | xotic750 |
| Keywords | es6, isDeepStrictEqual, library, javascript, testing, nodejs, browser, commonjs, test |

## Links

- npm: https://www.npmjs.com/package/is-deep-strict-equal-x
- Repository: https://github.com/Xotic750/is-deep-strict-equal-x
- Issues: https://github.com/Xotic750/is-deep-strict-equal-x/issues
- npm.io page: https://npm.io/package/is-deep-strict-equal-x

## Dependencies (34)

- [is-map-x](https://npm.io/package/is-map-x.md) ^2.1.2
- [is-nan-x](https://npm.io/package/is-nan-x.md) ^2.1.1
- [is-set-x](https://npm.io/package/is-set-x.md) ^2.1.2
- [attempt-x](https://npm.io/package/attempt-x.md) ^2.1.2
- [is-bigint](https://npm.io/package/is-bigint.md) ^1.0.0
- [is-buffer](https://npm.io/package/is-buffer.md) ^2.0.3
- [is-string](https://npm.io/package/is-string.md) ^1.0.4
- [is-symbol](https://npm.io/package/is-symbol.md) ^1.0.2
- [is-array-x](https://npm.io/package/is-array-x.md) ^2.1.2
- [is-error-x](https://npm.io/package/is-error-x.md) ^2.1.2
- [is-index-x](https://npm.io/package/is-index-x.md) ^2.1.2
- [is-regexp-x](https://npm.io/package/is-regexp-x.md) ^3.1.2
- [same-value-x](https://npm.io/package/same-value-x.md) ^2.1.1
- [to-boolean-x](https://npm.io/package/to-boolean-x.md) ^2.1.1
- [collections-x](https://npm.io/package/collections-x.md) ^3.1.2
- [object-keys-x](https://npm.io/package/object-keys-x.md) ^3.1.2
- [array-filter-x](https://npm.io/package/array-filter-x.md) ^3.1.2
- [is-data-view-x](https://npm.io/package/is-data-view-x.md) ^2.1.2
- [is-date-object](https://npm.io/package/is-date-object.md) ^1.0.1
- [to-string-tag-x](https://npm.io/package/to-string-tag-x.md) ^2.1.2
- [is-number-object](https://npm.io/package/is-number-object.md) ^1.0.3
- [arraybuffer-equal](https://npm.io/package/arraybuffer-equal.md) ^1.0.4
- [is-array-buffer-x](https://npm.io/package/is-array-buffer-x.md) ^2.1.2
- [is-boolean-object](https://npm.io/package/is-boolean-object.md) ^1.0.0
- [which-typed-array](https://npm.io/package/which-typed-array.md) ^1.1.0
- [get-prototype-of-x](https://npm.io/package/get-prototype-of-x.md) ^2.1.2
- [has-own-property-x](https://npm.io/package/has-own-property-x.md) ^4.1.2
- [is-boxed-primitive](https://npm.io/package/is-boxed-primitive.md) ^1.0.0
- [simple-methodize-x](https://npm.io/package/simple-methodize-x.md) ^1.0.4
- [has-symbol-support-x](https://npm.io/package/has-symbol-support-x.md) ^2.1.2
- [get-own-property-names-x](https://npm.io/package/get-own-property-names-x.md) ^3.1.2
- [property-is-enumerable-x](https://npm.io/package/property-is-enumerable-x.md) ^2.1.2
- [get-own-property-symbols-x](https://npm.io/package/get-own-property-symbols-x.md) ^2.1.2
- [to-string-symbols-supported-x](https://npm.io/package/to-string-symbols-supported-x.md) ^2.1.2

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [vest](https://npm.io/package/vest.md) — 50.1K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads

## Recent versions

- 1.1.2 (latest) — 2019-08-28
- 1.1.1 — 2019-08-20
- 1.1.0 — 2019-08-14
- 1.0.15 — 2019-08-05
- 1.0.14 — 2019-08-05
- 1.0.13 — 2019-08-05
- 1.0.12 — 2019-07-31
- 1.0.11 — 2019-07-27
- 1.0.10 — 2019-07-26
- 1.0.9 — 2019-07-25
- 1.0.8 — 2019-07-24
- 1.0.7 — 2019-07-24
- 1.0.6 — 2019-07-22
- 1.0.5 — 2019-07-21
- 1.0.4 — 2019-07-21
- … 4 more at https://npm.io/package/is-deep-strict-equal-x/versions

## README

<a
  href="https://travis-ci.org/Xotic750/is-deep-strict-equal-x"
  title="Travis status">
<img
  src="https://travis-ci.org/Xotic750/is-deep-strict-equal-x.svg?branch=master"
  alt="Travis status" height="18">
</a>
<a
  href="https://david-dm.org/Xotic750/is-deep-strict-equal-x"
  title="Dependency status">
<img src="https://david-dm.org/Xotic750/is-deep-strict-equal-x/status.svg"
  alt="Dependency status" height="18"/>
</a>
<a
  href="https://david-dm.org/Xotic750/is-deep-strict-equal-x?type=dev"
  title="devDependency status">
<img src="https://david-dm.org/Xotic750/is-deep-strict-equal-x/dev-status.svg"
  alt="devDependency status" height="18"/>
</a>
<a
  href="https://badge.fury.io/js/is-deep-strict-equal-x"
  title="npm version">
<img src="https://badge.fury.io/js/is-deep-strict-equal-x.svg"
  alt="npm version" height="18">
</a>
<a
  href="https://www.jsdelivr.com/package/npm/is-deep-strict-equal-x"
  title="jsDelivr hits">
<img src="https://data.jsdelivr.com/v1/package/npm/is-deep-strict-equal-x/badge?style=rounded"
  alt="jsDelivr hits" height="18">
</a>
<a
  href="https://bettercodehub.com/results/Xotic750/is-deep-strict-equal-x"
  title="bettercodehub score">
<img src="https://bettercodehub.com/edge/badge/Xotic750/is-deep-strict-equal-x?branch=master"
  alt="bettercodehub score" height="18">
</a>
<a
  href="https://coveralls.io/github/Xotic750/is-deep-strict-equal-x?branch=master"
  title="Coverage Status">
<img src="https://coveralls.io/repos/github/Xotic750/is-deep-strict-equal-x/badge.svg?branch=master"
  alt="Coverage Status" height="18">
</a>

<a name="module_deep-equal-x"></a>

## is-deep-strict-equal-x

node's isDeepStrictEqual algorithm.

- [is-deep-strictequal-x](#module_is-deep-strictequal-x)
  - [`.isDeepStrictEqual`](#module_is-deep-strictequal-x.isDeepStrictEqual) ⇒ <code>boolean</code>
  - [`.isDeepEqual`](#module_is-deep-strictequal-x.isDeepEqual) ⇒ <code>boolean</code>

<a name="module_is-deep-strictequal-x.isDeepStrictEqual"></a>

### `is-deep-strict-equal-x.isDeepStrictEqual` ⇒ <code>boolean</code>

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**: <code>boolean</code> - `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  | <code>\*</code> | First comparison object.  |
| val2  | <code>\*</code> | Second comparison object. |

**Example**

```js
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
```

<a name="module_is-deep-strictequal-x.isDeepEqual"></a>

### `is-deep-strict-equal-x.isDeepEqual` ⇒ <code>boolean</code>

#Deprecated - Use isDeepStrictEqual instead!

**Kind**: Exported function  
**Returns**: <code>boolean</code> - `true` if `val1` and `val2` are deemed equal,
otherwise `false`.  

| Param | Type            | Description               |
| ----- | --------------- | ------------------------- |
| val1  | <code>\*</code> | First comparison object.  |
| val2  | <code>\*</code> | Second comparison object. |

**Example**

```js
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
```

---
_Source: https://npm.io/package/is-deep-strict-equal-x · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
