fast-equals
Advanced tools
Comparing version 1.0.3 to 1.0.4
# fast-equals CHANGELOG | ||
## 1.0.4 | ||
* Only check values when comparing `Set` objects (improves performance of `Set` check by ~12%) | ||
## 1.0.3 | ||
* Make `Map` and `Set` comparisons more explicit | ||
## 1.0.2 | ||
@@ -4,0 +10,0 @@ * Fix symmetrical comparison of iterables |
@@ -107,10 +107,9 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
var toPairs = exports.toPairs = function toPairs(iterable) { | ||
var pairs = { keys: new Array(iterable.size), values: new Array(iterable.size) }, | ||
index = 0; | ||
var pairs = { keys: new Array(iterable.size), values: new Array(iterable.size) }; | ||
var index = 0; | ||
iterable.forEach(function (value, key) { | ||
pairs.keys[index] = key; | ||
pairs.values[index] = value; | ||
index++; | ||
pairs.values[index++] = value; | ||
}); | ||
@@ -130,12 +129,14 @@ | ||
* @param {function} comparator the comparator to determine deep equality | ||
* @param {boolean} shouldCompareKeys should the keys be tested in the equality comparison | ||
* @returns {boolean} are the objects equal in value | ||
*/ | ||
var areIterablesEqual = exports.areIterablesEqual = function areIterablesEqual(objectA, objectB, comparator) { | ||
var areIterablesEqual = exports.areIterablesEqual = function areIterablesEqual(objectA, objectB, comparator, shouldCompareKeys) { | ||
if (objectA.size !== objectB.size) { | ||
return false; | ||
} | ||
var pairsA = toPairs(objectA); | ||
var pairsB = toPairs(objectB); | ||
return comparator(pairsA.keys, pairsB.keys) && comparator(pairsA.values, pairsB.values); | ||
return shouldCompareKeys ? comparator(pairsA.keys, pairsB.keys) && comparator(pairsA.values, pairsB.values) : comparator(pairsA.values, pairsB.values); | ||
}; | ||
@@ -259,3 +260,3 @@ | ||
if (mapA || mapB) { | ||
return mapA === mapB && (0, _utils.areIterablesEqual)(objectA, objectB, comparator); | ||
return mapA === mapB && (0, _utils.areIterablesEqual)(objectA, objectB, comparator, true); | ||
} | ||
@@ -269,3 +270,3 @@ } | ||
if (setA || setB) { | ||
return setA === setB && (0, _utils.areIterablesEqual)(objectA, objectB, comparator); | ||
return setA === setB && (0, _utils.areIterablesEqual)(objectA, objectB, comparator, false); | ||
} | ||
@@ -272,0 +273,0 @@ } |
@@ -1,1 +0,1 @@ | ||
!(function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("fe",[],t):"object"==typeof exports?exports.fe=t():e.fe=t()})(this,(function(){return (function(e){function t(n){if(r[n])return r[n].exports;var u=r[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,t),u.l=!0,u.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)})([(function(e,t,r){"use strict";t.__esModule=!0;var n=(t.createIsStrictlyEqual=function(){return function(e,t){return e===t}},t.toPairs=function(e){var t={keys:new Array(e.size),values:new Array(e.size)},r=0;return e.forEach((function(e,n){t.keys[r]=n,t.values[r]=e,r++})),t});t.areIterablesEqual=function(e,t,r){if(e.size!==t.size)return!1;var u=n(e),o=n(t);return r(u.keys,o.keys)&&r(u.values,o.values)}}),(function(e,t,r){e.exports=r(2)}),(function(e,t,r){"use strict";t.__esModule=!0,t.shallowEqual=t.deepEqual=t.createCustomEqual=void 0;var n=r(3),u=(function(e){return e&&e.__esModule?e:{default:e}})(n),o=r(0),a=t.createCustomEqual=u.default,i=t.deepEqual=(0,u.default)(),f=t.shallowEqual=(0,u.default)(o.createIsStrictlyEqual);t.default={createCustom:a,deep:i,shallow:f}}),(function(e,t,r){"use strict";t.__esModule=!0;var n=r(0),u="function"==typeof Map,o="function"==typeof Set,a=function(e){function t(e,a){if(e===a)return!0;var i=typeof e;if(i!==typeof a)return!1;if("object"===i&&e&&a){var f=Array.isArray(e),s=Array.isArray(a),l=void 0;if(f||s){if(f!==s||e.length!==a.length)return!1;for(l=0;l<e.length;l++)if(!r(e[l],a[l]))return!1;return!0}var c=e instanceof Date,p=a instanceof Date;if(c||p)return c===p&&e.getTime()===a.getTime();var y=e instanceof RegExp,d=a instanceof RegExp;if(y||d)return y===d&&e.source===a.source&&e.global===a.global&&e.ignoreCase===a.ignoreCase&&e.multiline===a.multiline;if(u){var v=e instanceof Map,b=a instanceof Map;if(v||b)return v===b&&(0,n.areIterablesEqual)(e,a,t)}if(o){var g=e instanceof Set,E=a instanceof Set;if(g||E)return g===E&&(0,n.areIterablesEqual)(e,a,t)}var h=Object.keys(e);if(h.length!==Object.keys(a).length)return!1;var m=void 0;for(l=0;l<h.length;l++)if(m=h[l],!Object.prototype.hasOwnProperty.call(a,m)||!r(e[m],a[m]))return!1;return!0}return e!==e&&a!==a}var r="function"==typeof e?e(t):t;return t};t.default=a})])})); | ||
!(function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("fe",[],t):"object"==typeof exports?exports.fe=t():e.fe=t()})(this,(function(){return (function(e){function t(n){if(r[n])return r[n].exports;var u=r[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,t),u.l=!0,u.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)})([(function(e,t,r){"use strict";t.__esModule=!0;var n=(t.createIsStrictlyEqual=function(){return function(e,t){return e===t}},t.toPairs=function(e){var t={keys:new Array(e.size),values:new Array(e.size)},r=0;return e.forEach((function(e,n){t.keys[r]=n,t.values[r++]=e})),t});t.areIterablesEqual=function(e,t,r,u){if(e.size!==t.size)return!1;var o=n(e),a=n(t);return u?r(o.keys,a.keys)&&r(o.values,a.values):r(o.values,a.values)}}),(function(e,t,r){e.exports=r(2)}),(function(e,t,r){"use strict";t.__esModule=!0,t.shallowEqual=t.deepEqual=t.createCustomEqual=void 0;var n=r(3),u=(function(e){return e&&e.__esModule?e:{default:e}})(n),o=r(0),a=t.createCustomEqual=u.default,i=t.deepEqual=(0,u.default)(),f=t.shallowEqual=(0,u.default)(o.createIsStrictlyEqual);t.default={createCustom:a,deep:i,shallow:f}}),(function(e,t,r){"use strict";t.__esModule=!0;var n=r(0),u="function"==typeof Map,o="function"==typeof Set,a=function(e){function t(e,a){if(e===a)return!0;var i=typeof e;if(i!==typeof a)return!1;if("object"===i&&e&&a){var f=Array.isArray(e),s=Array.isArray(a),l=void 0;if(f||s){if(f!==s||e.length!==a.length)return!1;for(l=0;l<e.length;l++)if(!r(e[l],a[l]))return!1;return!0}var c=e instanceof Date,p=a instanceof Date;if(c||p)return c===p&&e.getTime()===a.getTime();var y=e instanceof RegExp,d=a instanceof RegExp;if(y||d)return y===d&&e.source===a.source&&e.global===a.global&&e.ignoreCase===a.ignoreCase&&e.multiline===a.multiline;if(u){var v=e instanceof Map,b=a instanceof Map;if(v||b)return v===b&&(0,n.areIterablesEqual)(e,a,t,!0)}if(o){var g=e instanceof Set,E=a instanceof Set;if(g||E)return g===E&&(0,n.areIterablesEqual)(e,a,t,!1)}var h=Object.keys(e);if(h.length!==Object.keys(a).length)return!1;var m=void 0;for(l=0;l<h.length;l++)if(m=h[l],!Object.prototype.hasOwnProperty.call(a,m)||!r(e[m],a[m]))return!1;return!0}return e!==e&&a!==a}var r="function"==typeof e?e(t):t;return t};t.default=a})])})); |
@@ -70,3 +70,3 @@ // utils | ||
if (mapA || mapB) { | ||
return mapA === mapB && areIterablesEqual(objectA, objectB, comparator); | ||
return mapA === mapB && areIterablesEqual(objectA, objectB, comparator, true); | ||
} | ||
@@ -80,3 +80,3 @@ } | ||
if (setA || setB) { | ||
return setA === setB && areIterablesEqual(objectA, objectB, comparator); | ||
return setA === setB && areIterablesEqual(objectA, objectB, comparator, false); | ||
} | ||
@@ -83,0 +83,0 @@ } |
@@ -24,10 +24,9 @@ export var createIsStrictlyEqual = function createIsStrictlyEqual() { | ||
export var toPairs = function toPairs(iterable) { | ||
var pairs = { keys: new Array(iterable.size), values: new Array(iterable.size) }, | ||
index = 0; | ||
var pairs = { keys: new Array(iterable.size), values: new Array(iterable.size) }; | ||
var index = 0; | ||
iterable.forEach(function (value, key) { | ||
pairs.keys[index] = key; | ||
pairs.values[index] = value; | ||
index++; | ||
pairs.values[index++] = value; | ||
}); | ||
@@ -47,12 +46,14 @@ | ||
* @param {function} comparator the comparator to determine deep equality | ||
* @param {boolean} shouldCompareKeys should the keys be tested in the equality comparison | ||
* @returns {boolean} are the objects equal in value | ||
*/ | ||
export var areIterablesEqual = function areIterablesEqual(objectA, objectB, comparator) { | ||
export var areIterablesEqual = function areIterablesEqual(objectA, objectB, comparator, shouldCompareKeys) { | ||
if (objectA.size !== objectB.size) { | ||
return false; | ||
} | ||
var pairsA = toPairs(objectA); | ||
var pairsB = toPairs(objectB); | ||
return comparator(pairsA.keys, pairsB.keys) && comparator(pairsA.values, pairsB.values); | ||
return shouldCompareKeys ? comparator(pairsA.keys, pairsB.keys) && comparator(pairsA.values, pairsB.values) : comparator(pairsA.values, pairsB.values); | ||
}; |
@@ -74,3 +74,3 @@ 'use strict'; | ||
if (mapA || mapB) { | ||
return mapA === mapB && (0, _utils.areIterablesEqual)(objectA, objectB, comparator); | ||
return mapA === mapB && (0, _utils.areIterablesEqual)(objectA, objectB, comparator, true); | ||
} | ||
@@ -84,3 +84,3 @@ } | ||
if (setA || setB) { | ||
return setA === setB && (0, _utils.areIterablesEqual)(objectA, objectB, comparator); | ||
return setA === setB && (0, _utils.areIterablesEqual)(objectA, objectB, comparator, false); | ||
} | ||
@@ -87,0 +87,0 @@ } |
@@ -27,10 +27,9 @@ "use strict"; | ||
var toPairs = exports.toPairs = function toPairs(iterable) { | ||
var pairs = { keys: new Array(iterable.size), values: new Array(iterable.size) }, | ||
index = 0; | ||
var pairs = { keys: new Array(iterable.size), values: new Array(iterable.size) }; | ||
var index = 0; | ||
iterable.forEach(function (value, key) { | ||
pairs.keys[index] = key; | ||
pairs.values[index] = value; | ||
index++; | ||
pairs.values[index++] = value; | ||
}); | ||
@@ -50,12 +49,14 @@ | ||
* @param {function} comparator the comparator to determine deep equality | ||
* @param {boolean} shouldCompareKeys should the keys be tested in the equality comparison | ||
* @returns {boolean} are the objects equal in value | ||
*/ | ||
var areIterablesEqual = exports.areIterablesEqual = function areIterablesEqual(objectA, objectB, comparator) { | ||
var areIterablesEqual = exports.areIterablesEqual = function areIterablesEqual(objectA, objectB, comparator, shouldCompareKeys) { | ||
if (objectA.size !== objectB.size) { | ||
return false; | ||
} | ||
var pairsA = toPairs(objectA); | ||
var pairsB = toPairs(objectB); | ||
return comparator(pairsA.keys, pairsB.keys) && comparator(pairsA.values, pairsB.values); | ||
return shouldCompareKeys ? comparator(pairsA.keys, pairsB.keys) && comparator(pairsA.values, pairsB.values) : comparator(pairsA.values, pairsB.values); | ||
}; |
@@ -90,3 +90,3 @@ { | ||
}, | ||
"version": "1.0.3" | ||
"version": "1.0.4" | ||
} |
Sorry, the diff of this file is not supported yet
45447