Gathering detailed insights and metrics for deep-eql
Gathering detailed insights and metrics for deep-eql
Gathering detailed insights and metrics for deep-eql
Gathering detailed insights and metrics for deep-eql
Improved deep equality testing for Node.js and the browser.
npm install deep-eql
99.6
Supply Chain
97.5
Quality
77.7
Maintenance
100
Vulnerability
100
License
Module System
Min. Node Version
Typescript Support
Node Version
NPM Version
108 Stars
117 Commits
39 Forks
6 Watching
2 Branches
23 Contributors
Updated on 28 Oct 2024
Minified
Minified + Gzipped
JavaScript (100%)
Cumulative downloads
Total Downloads
Last day
-9.5%
3,174,468
Compared to previous day
Last week
4.2%
19,131,191
Compared to previous week
Last month
24.3%
74,416,520
Compared to previous month
Last year
55.7%
581,394,588
Compared to previous year
Improved deep equality testing for node and the browser.
Deep Eql is a module which you can use to determine if two objects are "deeply" equal - that is, rather than having referential equality (a === b
), this module checks an object's keys recursively, until it finds primitives to check for referential equality. For more on equality in JavaScript, read the comparison operators article on mdn.
As an example, take the following:
11 === 1 // These are primitives, they hold the same reference - they are strictly equal 21 == '1' // These are two different primitives, through type coercion they hold the same value - they are loosely equal 3{ a: 1 } !== { a: 1 } // These are two different objects, they hold different references and so are not strictly equal - even though they hold the same values inside 4{ a: 1 } != { a: 1 } // They have the same type, meaning loose equality performs the same check as strict equality - they are still not equal. 5 6import deepEql from "deep-eql"; 7deepEql({ a: 1 }, { a: 1 }) === true // deepEql can determine that they share the same keys and those keys share the same values, therefore they are deeply equal!
deep-eql
is available on npm.
$ npm install deep-eql
The primary export of deep-eql
is function that can be given two objects to compare. It will always return a boolean which can be used to determine if two objects are deeply equal.
Object.is
:
eql(NaN, NaN).should.be.true;
eql(-0, +0).should.be.false;
eql(Object.create({ foo: { a: 1 } }), Object.create({ foo: { a: 1 } })).should.be.true;
eql(Object.create({ foo: { a: 1 } }), Object.create({ foo: { a: 2 } })).should.be.false;
Error
objects, only name
, message
, and code
properties are considered, regardless of enumerability:
eql(Error('foo'), Error('foo')).should.be.true;
eql(Error('foo'), Error('bar')).should.be.false;
eql(Error('foo'), TypeError('foo')).should.be.false;
eql(Object.assign(Error('foo'), { code: 42 }), Object.assign(Error('foo'), { code: 42 })).should.be.true;
eql(Object.assign(Error('foo'), { code: 42 }), Object.assign(Error('foo'), { code: 13 })).should.be.false;
eql(Object.assign(Error('foo'), { otherProp: 42 }), Object.assign(Error('foo'), { otherProp: 13 })).should.be.true;
eql([], arguments).should.be.false;
eql([], Array.prototype.slice.call(arguments)).should.be.true;
No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
no binaries found in the repo
Reason
license file detected
Details
Reason
Found 14/26 approved changesets -- score normalized to 5
Reason
dependency not pinned by hash detected -- score normalized to 1
Details
Reason
1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Reason
21 existing vulnerabilities detected
Details
Score
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More