.
This commit is contained in:
		
							
								
								
									
										90
									
								
								qwen/nodejs/node_modules/lodash/_equalObjects.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								qwen/nodejs/node_modules/lodash/_equalObjects.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
var getAllKeys = require('./_getAllKeys');
 | 
			
		||||
 | 
			
		||||
/** Used to compose bitmasks for value comparisons. */
 | 
			
		||||
var COMPARE_PARTIAL_FLAG = 1;
 | 
			
		||||
 | 
			
		||||
/** Used for built-in method references. */
 | 
			
		||||
var objectProto = Object.prototype;
 | 
			
		||||
 | 
			
		||||
/** Used to check objects for own properties. */
 | 
			
		||||
var hasOwnProperty = objectProto.hasOwnProperty;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A specialized version of `baseIsEqualDeep` for objects with support for
 | 
			
		||||
 * partial deep comparisons.
 | 
			
		||||
 *
 | 
			
		||||
 * @private
 | 
			
		||||
 * @param {Object} object The object to compare.
 | 
			
		||||
 * @param {Object} other The other object to compare.
 | 
			
		||||
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 | 
			
		||||
 * @param {Function} customizer The function to customize comparisons.
 | 
			
		||||
 * @param {Function} equalFunc The function to determine equivalents of values.
 | 
			
		||||
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 | 
			
		||||
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 | 
			
		||||
 */
 | 
			
		||||
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
 | 
			
		||||
  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
 | 
			
		||||
      objProps = getAllKeys(object),
 | 
			
		||||
      objLength = objProps.length,
 | 
			
		||||
      othProps = getAllKeys(other),
 | 
			
		||||
      othLength = othProps.length;
 | 
			
		||||
 | 
			
		||||
  if (objLength != othLength && !isPartial) {
 | 
			
		||||
    return false;
 | 
			
		||||
  }
 | 
			
		||||
  var index = objLength;
 | 
			
		||||
  while (index--) {
 | 
			
		||||
    var key = objProps[index];
 | 
			
		||||
    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  // Check that cyclic values are equal.
 | 
			
		||||
  var objStacked = stack.get(object);
 | 
			
		||||
  var othStacked = stack.get(other);
 | 
			
		||||
  if (objStacked && othStacked) {
 | 
			
		||||
    return objStacked == other && othStacked == object;
 | 
			
		||||
  }
 | 
			
		||||
  var result = true;
 | 
			
		||||
  stack.set(object, other);
 | 
			
		||||
  stack.set(other, object);
 | 
			
		||||
 | 
			
		||||
  var skipCtor = isPartial;
 | 
			
		||||
  while (++index < objLength) {
 | 
			
		||||
    key = objProps[index];
 | 
			
		||||
    var objValue = object[key],
 | 
			
		||||
        othValue = other[key];
 | 
			
		||||
 | 
			
		||||
    if (customizer) {
 | 
			
		||||
      var compared = isPartial
 | 
			
		||||
        ? customizer(othValue, objValue, key, other, object, stack)
 | 
			
		||||
        : customizer(objValue, othValue, key, object, other, stack);
 | 
			
		||||
    }
 | 
			
		||||
    // Recursively compare objects (susceptible to call stack limits).
 | 
			
		||||
    if (!(compared === undefined
 | 
			
		||||
          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
 | 
			
		||||
          : compared
 | 
			
		||||
        )) {
 | 
			
		||||
      result = false;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    skipCtor || (skipCtor = key == 'constructor');
 | 
			
		||||
  }
 | 
			
		||||
  if (result && !skipCtor) {
 | 
			
		||||
    var objCtor = object.constructor,
 | 
			
		||||
        othCtor = other.constructor;
 | 
			
		||||
 | 
			
		||||
    // Non `Object` object instances with different constructors are not equal.
 | 
			
		||||
    if (objCtor != othCtor &&
 | 
			
		||||
        ('constructor' in object && 'constructor' in other) &&
 | 
			
		||||
        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
 | 
			
		||||
          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
 | 
			
		||||
      result = false;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  stack['delete'](object);
 | 
			
		||||
  stack['delete'](other);
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = equalObjects;
 | 
			
		||||
		Reference in New Issue
	
	Block a user