Comparing version 0.0.0 to 1.0.0
@@ -1,3 +0,18 @@ | ||
module.exports = function () { | ||
// | ||
module.exports = function dequal(foo, bar) { | ||
var ctor, len; | ||
if (foo === bar) return true; | ||
if (foo && bar && (ctor=foo.constructor) === bar.constructor) { | ||
if (ctor === Date) return foo.getTime() === bar.getTime(); | ||
if (ctor === RegExp) return foo.toString() === bar.toString(); | ||
if (ctor === Array && (len=foo.length) === bar.length) { | ||
while (len-- && dequal(foo[len], bar[len])); | ||
return len === -1; | ||
} | ||
if (ctor === Object) { | ||
if (Object.keys(foo).length !== Object.keys(bar).length) return false; | ||
for (len in foo) if (!(len in bar) || !dequal(foo[len], bar[len])) return false; | ||
return true; | ||
} | ||
} | ||
return foo !== foo && bar !== bar; | ||
} |
@@ -1,1 +0,1 @@ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=function(){}:"function"==typeof define&&define.amd?define(n):e.dequal=function(){}}(this,function(){return function(){}}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.dequal=t()}(this,function(){return function e(t,n){var r,i;if(t===n)return!0;if(t&&n&&(r=t.constructor)===n.constructor){if(r===Date)return t.getTime()===n.getTime();if(r===RegExp)return t.toString()===n.toString();if(r===Array&&(i=t.length)===n.length){for(;i--&&e(t[i],n[i]););return-1===i}if(r===Object){if(Object.keys(t).length!==Object.keys(n).length)return!1;for(i in t)if(!(i in n&&e(t[i],n[i])))return!1;return!0}}return t!=t&&n!=n}}); |
{ | ||
"name": "dequal", | ||
"version": "0.0.0", | ||
"version": "1.0.0", | ||
"repository": "lukeed/dequal", | ||
"description": "WIP", | ||
"description": "A tiny (247B) utility for check for deep equality", | ||
"unpkg": "dist/dequal.min.js", | ||
"module": "dist/dequal.mjs", | ||
"main": "dist/dequal.js", | ||
"types": "dequal.d.ts", | ||
"license": "MIT", | ||
@@ -24,5 +25,10 @@ "author": { | ||
"files": [ | ||
"*.d.ts", | ||
"dist" | ||
], | ||
"keywords": [], | ||
"keywords": [ | ||
"deep", | ||
"deep-equal", | ||
"equality" | ||
], | ||
"devDependencies": { | ||
@@ -29,0 +35,0 @@ "bundt": "^0.3.0", |
# dequal [![Build Status](https://badgen.now.sh/travis/lukeed/dequal)](https://travis-ci.org/lukeed/dequal) | ||
> WIP | ||
> A tiny (247B) utility to check for deep equality | ||
This module supports comparison of all types, including `Function`, `RegExp`, `Date`, `null`, `undefined`, and `NaN` values.<br> | ||
Objects and Arrays are traversed recursively. | ||
> Please note that key order **within Objects** does not matter.<br> | ||
However, the value order **within Arrays** does matter. | ||
This module exposes three module definitions: | ||
* **CommonJS**: `dist/dequal.js` | ||
* **ESModule**: `dist/dequal.mjs` | ||
* **UMD**: `dist/dequal.min.js` | ||
## Install | ||
@@ -18,3 +30,20 @@ | ||
// | ||
dequal(1, 1); //=> true | ||
dequal({}, {}); //=> true | ||
dequal('foo', 'foo'); //=> true | ||
dequal([1, 2, 3], [1, 2, 3]); //=> true | ||
dequal(dequal, dequal); //=> true | ||
dequal(/foo/, /foo/); //=> true | ||
dequal(null, null); //=> true | ||
dequal(NaN, NaN); //=> true | ||
dequal([], []); //=> true | ||
dequal( | ||
[{ a:1 }, [{ b:{ c:[1] } }]], | ||
[{ a:1 }, [{ b:{ c:[1] } }]] | ||
); //=> true | ||
dequal(1, '1'); //=> false | ||
dequal(null, undefined); //=> false | ||
dequal({ a:1, b:[2,3] }, { a:1, b:[2,5] }); //=> false | ||
dequal(/foo/i, /bar/g); //=> false | ||
``` | ||
@@ -24,8 +53,22 @@ | ||
### dequal(a, b) | ||
### dequal(foo, bar) | ||
Returns: `Boolean` | ||
Both `foo` and `bar` can be of any type.<br> | ||
A `Boolean` is returned indicating if the two were deeply equal. | ||
## Benchmarks | ||
> Running Node v10.13.0 | ||
``` | ||
fast-deep-equal x 214,365 ops/sec ±0.30% (93 runs sampled) | ||
dequal x 160,116 ops/sec ±0.29% (93 runs sampled) | ||
lodash.isEqual x 45,257 ops/sec ±0.26% (95 runs sampled) | ||
``` | ||
<sup>_Candidates operate identically to one another_</sup> | ||
## License | ||
MIT © [Luke Edwards](https://lukeed.com) |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Trivial Package
Supply chain riskPackages less than 10 lines of code are easily copied into your own project and may not warrant the additional supply chain risk of an external dependency.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
5583
7
38
1
73
0