Compare commits

...

1 Commits

Author SHA1 Message Date
John-David Dalton
b59e006377 Bump to v4.6.2. 2019-07-09 21:54:48 -07:00
12 changed files with 445 additions and 255 deletions

View File

@@ -1,4 +1,4 @@
# lodash v4.6.1 # lodash v4.6.2
The [lodash](https://lodash.com/) library exported as [npm packages](https://www.npmjs.com/browse/keyword/lodash-modularized) per method. The [lodash](https://lodash.com/) library exported as [npm packages](https://www.npmjs.com/browse/keyword/lodash-modularized) per method.

View File

@@ -1,4 +1,4 @@
# lodash._baseiteratee v4.6.1 # lodash._baseiteratee v4.6.2
The internal [lodash](https://lodash.com/) function `baseIteratee` exported as a [Node.js](https://nodejs.org/) module. The internal [lodash](https://lodash.com/) function `baseIteratee` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var baseIteratee = require('lodash._baseiteratee'); var baseIteratee = require('lodash._baseiteratee');
``` ```
See the [package source](https://github.com/lodash/lodash/blob/4.6.1-npm-packages/lodash._baseiteratee) for more details. See the [package source](https://github.com/lodash/lodash/blob/4.6.2-npm-packages/lodash._baseiteratee) for more details.

View File

@@ -1,5 +1,5 @@
/** /**
* lodash 4.6.1 (Custom Build) <https://lodash.com/> * lodash (Custom Build) <https://lodash.com/>
* Build: `lodash modularize exports="npm" -o ./` * Build: `lodash modularize exports="npm" -o ./`
* Copyright jQuery Foundation and other contributors <https://jquery.org/> * Copyright jQuery Foundation and other contributors <https://jquery.org/>
* Released under MIT license <https://lodash.com/license> * Released under MIT license <https://lodash.com/license>
@@ -19,7 +19,8 @@ var UNORDERED_COMPARE_FLAG = 1,
PARTIAL_COMPARE_FLAG = 2; PARTIAL_COMPARE_FLAG = 2;
/** Used as references for various `Number` constants. */ /** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991; var INFINITY = 1 / 0,
MAX_SAFE_INTEGER = 9007199254740991;
/** `Object#toString` result references. */ /** `Object#toString` result references. */
var argsTag = '[object Arguments]', var argsTag = '[object Arguments]',
@@ -189,7 +190,7 @@ function baseTimes(n, iteratee) {
* @private * @private
* @param {Object} object The object to query. * @param {Object} object The object to query.
* @param {Array} props The property names to get values for. * @param {Array} props The property names to get values for.
* @returns {Object} Returns the new array of key-value pairs. * @returns {Object} Returns the key-value pairs.
*/ */
function baseToPairs(object, props) { function baseToPairs(object, props) {
return arrayMap(props, function(key) { return arrayMap(props, function(key) {
@@ -228,25 +229,11 @@ function isHostObject(value) {
} }
/** /**
* Checks if `value` is a valid array-like index. * Converts `map` to its key-value pairs.
*
* @private
* @param {*} value The value to check.
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
*/
function isIndex(value, length) {
value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
length = length == null ? MAX_SAFE_INTEGER : length;
return value > -1 && value % 1 == 0 && value < length;
}
/**
* Converts `map` to an array.
* *
* @private * @private
* @param {Object} map The map to convert. * @param {Object} map The map to convert.
* @returns {Array} Returns the converted array. * @returns {Array} Returns the key-value pairs.
*/ */
function mapToArray(map) { function mapToArray(map) {
var index = -1, var index = -1,
@@ -259,11 +246,11 @@ function mapToArray(map) {
} }
/** /**
* Converts `set` to an array. * Converts `set` to an array of its values.
* *
* @private * @private
* @param {Object} set The set to convert. * @param {Object} set The set to convert.
* @returns {Array} Returns the converted array. * @returns {Array} Returns the values.
*/ */
function setToArray(set) { function setToArray(set) {
var index = -1, var index = -1,
@@ -275,6 +262,23 @@ function setToArray(set) {
return result; return result;
} }
/**
* Converts `set` to its value-value pairs.
*
* @private
* @param {Object} set The set to convert.
* @returns {Array} Returns the value-value pairs.
*/
function setToPairs(set) {
var index = -1,
result = Array(set.size);
set.forEach(function(value) {
result[++index] = [value, value];
});
return result;
}
/** Used for built-in method references. */ /** Used for built-in method references. */
var arrayProto = Array.prototype, var arrayProto = Array.prototype,
objectProto = Object.prototype; objectProto = Object.prototype;
@@ -332,79 +336,225 @@ var symbolProto = Symbol ? Symbol.prototype : undefined,
* *
* @private * @private
* @constructor * @constructor
* @returns {Object} Returns the new hash object. * @param {Array} [entries] The key-value pairs to cache.
*/ */
function Hash() {} function Hash(entries) {
var index = -1,
length = entries ? entries.length : 0;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
/**
* Removes all key-value entries from the hash.
*
* @private
* @name clear
* @memberOf Hash
*/
function hashClear() {
this.__data__ = nativeCreate ? nativeCreate(null) : {};
}
/** /**
* Removes `key` and its value from the hash. * Removes `key` and its value from the hash.
* *
* @private * @private
* @name delete
* @memberOf Hash
* @param {Object} hash The hash to modify. * @param {Object} hash The hash to modify.
* @param {string} key The key of the value to remove. * @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/ */
function hashDelete(hash, key) { function hashDelete(key) {
return hashHas(hash, key) && delete hash[key]; return this.has(key) && delete this.__data__[key];
} }
/** /**
* Gets the hash value for `key`. * Gets the hash value for `key`.
* *
* @private * @private
* @param {Object} hash The hash to query. * @name get
* @memberOf Hash
* @param {string} key The key of the value to get. * @param {string} key The key of the value to get.
* @returns {*} Returns the entry value. * @returns {*} Returns the entry value.
*/ */
function hashGet(hash, key) { function hashGet(key) {
var data = this.__data__;
if (nativeCreate) { if (nativeCreate) {
var result = hash[key]; var result = data[key];
return result === HASH_UNDEFINED ? undefined : result; return result === HASH_UNDEFINED ? undefined : result;
} }
return hasOwnProperty.call(hash, key) ? hash[key] : undefined; return hasOwnProperty.call(data, key) ? data[key] : undefined;
} }
/** /**
* Checks if a hash value for `key` exists. * Checks if a hash value for `key` exists.
* *
* @private * @private
* @param {Object} hash The hash to query. * @name has
* @memberOf Hash
* @param {string} key The key of the entry to check. * @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/ */
function hashHas(hash, key) { function hashHas(key) {
return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key); var data = this.__data__;
return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
} }
/** /**
* Sets the hash `key` to `value`. * Sets the hash `key` to `value`.
* *
* @private * @private
* @param {Object} hash The hash to modify. * @name set
* @memberOf Hash
* @param {string} key The key of the value to set. * @param {string} key The key of the value to set.
* @param {*} value The value to set. * @param {*} value The value to set.
* @returns {Object} Returns the hash instance.
*/ */
function hashSet(hash, key, value) { function hashSet(key, value) {
hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; var data = this.__data__;
data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
return this;
} }
// Avoid inheriting from `Object.prototype` when possible. // Add methods to `Hash`.
Hash.prototype = nativeCreate ? nativeCreate(null) : objectProto; Hash.prototype.clear = hashClear;
Hash.prototype['delete'] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
/**
* Creates an list cache object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function ListCache(entries) {
var index = -1,
length = entries ? entries.length : 0;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
/**
* Removes all key-value entries from the list cache.
*
* @private
* @name clear
* @memberOf ListCache
*/
function listCacheClear() {
this.__data__ = [];
}
/**
* Removes `key` and its value from the list cache.
*
* @private
* @name delete
* @memberOf ListCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function listCacheDelete(key) {
var data = this.__data__,
index = assocIndexOf(data, key);
if (index < 0) {
return false;
}
var lastIndex = data.length - 1;
if (index == lastIndex) {
data.pop();
} else {
splice.call(data, index, 1);
}
return true;
}
/**
* Gets the list cache value for `key`.
*
* @private
* @name get
* @memberOf ListCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function listCacheGet(key) {
var data = this.__data__,
index = assocIndexOf(data, key);
return index < 0 ? undefined : data[index][1];
}
/**
* Checks if a list cache value for `key` exists.
*
* @private
* @name has
* @memberOf ListCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function listCacheHas(key) {
return assocIndexOf(this.__data__, key) > -1;
}
/**
* Sets the list cache `key` to `value`.
*
* @private
* @name set
* @memberOf ListCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the list cache instance.
*/
function listCacheSet(key, value) {
var data = this.__data__,
index = assocIndexOf(data, key);
if (index < 0) {
data.push([key, value]);
} else {
data[index][1] = value;
}
return this;
}
// Add methods to `ListCache`.
ListCache.prototype.clear = listCacheClear;
ListCache.prototype['delete'] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
/** /**
* Creates a map cache object to store key-value pairs. * Creates a map cache object to store key-value pairs.
* *
* @private * @private
* @constructor * @constructor
* @param {Array} [values] The values to cache. * @param {Array} [entries] The key-value pairs to cache.
*/ */
function MapCache(values) { function MapCache(entries) {
var index = -1, var index = -1,
length = values ? values.length : 0; length = entries ? entries.length : 0;
this.clear(); this.clear();
while (++index < length) { while (++index < length) {
var entry = values[index]; var entry = entries[index];
this.set(entry[0], entry[1]); this.set(entry[0], entry[1]);
} }
} }
@@ -416,10 +566,10 @@ function MapCache(values) {
* @name clear * @name clear
* @memberOf MapCache * @memberOf MapCache
*/ */
function mapClear() { function mapCacheClear() {
this.__data__ = { this.__data__ = {
'hash': new Hash, 'hash': new Hash,
'map': Map ? new Map : [], 'map': new (Map || ListCache),
'string': new Hash 'string': new Hash
}; };
} }
@@ -433,12 +583,8 @@ function mapClear() {
* @param {string} key The key of the value to remove. * @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/ */
function mapDelete(key) { function mapCacheDelete(key) {
var data = this.__data__; return getMapData(this, key)['delete'](key);
if (isKeyable(key)) {
return hashDelete(typeof key == 'string' ? data.string : data.hash, key);
}
return Map ? data.map['delete'](key) : assocDelete(data.map, key);
} }
/** /**
@@ -450,12 +596,8 @@ function mapDelete(key) {
* @param {string} key The key of the value to get. * @param {string} key The key of the value to get.
* @returns {*} Returns the entry value. * @returns {*} Returns the entry value.
*/ */
function mapGet(key) { function mapCacheGet(key) {
var data = this.__data__; return getMapData(this, key).get(key);
if (isKeyable(key)) {
return hashGet(typeof key == 'string' ? data.string : data.hash, key);
}
return Map ? data.map.get(key) : assocGet(data.map, key);
} }
/** /**
@@ -467,12 +609,8 @@ function mapGet(key) {
* @param {string} key The key of the entry to check. * @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/ */
function mapHas(key) { function mapCacheHas(key) {
var data = this.__data__; return getMapData(this, key).has(key);
if (isKeyable(key)) {
return hashHas(typeof key == 'string' ? data.string : data.hash, key);
}
return Map ? data.map.has(key) : assocHas(data.map, key);
} }
/** /**
@@ -485,41 +623,77 @@ function mapHas(key) {
* @param {*} value The value to set. * @param {*} value The value to set.
* @returns {Object} Returns the map cache instance. * @returns {Object} Returns the map cache instance.
*/ */
function mapSet(key, value) { function mapCacheSet(key, value) {
var data = this.__data__; getMapData(this, key).set(key, value);
if (isKeyable(key)) {
hashSet(typeof key == 'string' ? data.string : data.hash, key, value);
} else if (Map) {
data.map.set(key, value);
} else {
assocSet(data.map, key, value);
}
return this; return this;
} }
// Add methods to `MapCache`. // Add methods to `MapCache`.
MapCache.prototype.clear = mapClear; MapCache.prototype.clear = mapCacheClear;
MapCache.prototype['delete'] = mapDelete; MapCache.prototype['delete'] = mapCacheDelete;
MapCache.prototype.get = mapGet; MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapHas; MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapSet; MapCache.prototype.set = mapCacheSet;
/**
*
* Creates an array cache object to store unique values.
*
* @private
* @constructor
* @param {Array} [values] The values to cache.
*/
function SetCache(values) {
var index = -1,
length = values ? values.length : 0;
this.__data__ = new MapCache;
while (++index < length) {
this.add(values[index]);
}
}
/**
* Adds `value` to the array cache.
*
* @private
* @name add
* @memberOf SetCache
* @alias push
* @param {*} value The value to cache.
* @returns {Object} Returns the cache instance.
*/
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
/**
* Checks if `value` is in the array cache.
*
* @private
* @name has
* @memberOf SetCache
* @param {*} value The value to search for.
* @returns {number} Returns `true` if `value` is found, else `false`.
*/
function setCacheHas(value) {
return this.__data__.has(value);
}
// Add methods to `SetCache`.
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
/** /**
* Creates a stack cache object to store key-value pairs. * Creates a stack cache object to store key-value pairs.
* *
* @private * @private
* @constructor * @constructor
* @param {Array} [values] The values to cache. * @param {Array} [entries] The key-value pairs to cache.
*/ */
function Stack(values) { function Stack(entries) {
var index = -1, this.__data__ = new ListCache(entries);
length = values ? values.length : 0;
this.clear();
while (++index < length) {
var entry = values[index];
this.set(entry[0], entry[1]);
}
} }
/** /**
@@ -530,7 +704,7 @@ function Stack(values) {
* @memberOf Stack * @memberOf Stack
*/ */
function stackClear() { function stackClear() {
this.__data__ = { 'array': [], 'map': null }; this.__data__ = new ListCache;
} }
/** /**
@@ -543,10 +717,7 @@ function stackClear() {
* @returns {boolean} Returns `true` if the entry was removed, else `false`. * @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/ */
function stackDelete(key) { function stackDelete(key) {
var data = this.__data__, return this.__data__['delete'](key);
array = data.array;
return array ? assocDelete(array, key) : data.map['delete'](key);
} }
/** /**
@@ -559,10 +730,7 @@ function stackDelete(key) {
* @returns {*} Returns the entry value. * @returns {*} Returns the entry value.
*/ */
function stackGet(key) { function stackGet(key) {
var data = this.__data__, return this.__data__.get(key);
array = data.array;
return array ? assocGet(array, key) : data.map.get(key);
} }
/** /**
@@ -575,10 +743,7 @@ function stackGet(key) {
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/ */
function stackHas(key) { function stackHas(key) {
var data = this.__data__, return this.__data__.has(key);
array = data.array;
return array ? assocHas(array, key) : data.map.has(key);
} }
/** /**
@@ -592,21 +757,11 @@ function stackHas(key) {
* @returns {Object} Returns the stack cache instance. * @returns {Object} Returns the stack cache instance.
*/ */
function stackSet(key, value) { function stackSet(key, value) {
var data = this.__data__, var cache = this.__data__;
array = data.array; if (cache instanceof ListCache && cache.__data__.length == LARGE_ARRAY_SIZE) {
cache = this.__data__ = new MapCache(cache.__data__);
if (array) {
if (array.length < (LARGE_ARRAY_SIZE - 1)) {
assocSet(array, key, value);
} else {
data.array = null;
data.map = new MapCache(array);
}
}
var map = data.map;
if (map) {
map.set(key, value);
} }
cache.set(key, value);
return this; return this;
} }
@@ -617,53 +772,6 @@ Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas; Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet; Stack.prototype.set = stackSet;
/**
* Removes `key` and its value from the associative array.
*
* @private
* @param {Array} array The array to modify.
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function assocDelete(array, key) {
var index = assocIndexOf(array, key);
if (index < 0) {
return false;
}
var lastIndex = array.length - 1;
if (index == lastIndex) {
array.pop();
} else {
splice.call(array, index, 1);
}
return true;
}
/**
* Gets the associative array value for `key`.
*
* @private
* @param {Array} array The array to query.
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function assocGet(array, key) {
var index = assocIndexOf(array, key);
return index < 0 ? undefined : array[index][1];
}
/**
* Checks if an associative array value for `key` exists.
*
* @private
* @param {Array} array The array to query.
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function assocHas(array, key) {
return assocIndexOf(array, key) > -1;
}
/** /**
* Gets the index at which the `key` is found in `array` of key-value pairs. * Gets the index at which the `key` is found in `array` of key-value pairs.
* *
@@ -682,23 +790,6 @@ function assocIndexOf(array, key) {
return -1; return -1;
} }
/**
* Sets the associative array `key` to `value`.
*
* @private
* @param {Array} array The array to modify.
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
*/
function assocSet(array, key, value) {
var index = assocIndexOf(array, key);
if (index < 0) {
array.push([key, value]);
} else {
array[index][1] = value;
}
}
/** /**
* The base implementation of `_.get` without support for default values. * The base implementation of `_.get` without support for default values.
* *
@@ -714,7 +805,7 @@ function baseGet(object, path) {
length = path.length; length = path.length;
while (object != null && index < length) { while (object != null && index < length) {
object = object[path[index++]]; object = object[toKey(path[index++])];
} }
return (index && index == length) ? object : undefined; return (index && index == length) ? object : undefined;
} }
@@ -925,7 +1016,7 @@ function baseKeys(object) {
* *
* @private * @private
* @param {Object} source The object of property values to match. * @param {Object} source The object of property values to match.
* @returns {Function} Returns the new function. * @returns {Function} Returns the new spec function.
*/ */
function baseMatches(source) { function baseMatches(source) {
var matchData = getMatchData(source); var matchData = getMatchData(source);
@@ -943,11 +1034,11 @@ function baseMatches(source) {
* @private * @private
* @param {string} path The path of the property to get. * @param {string} path The path of the property to get.
* @param {*} srcValue The value to match. * @param {*} srcValue The value to match.
* @returns {Function} Returns the new function. * @returns {Function} Returns the new spec function.
*/ */
function baseMatchesProperty(path, srcValue) { function baseMatchesProperty(path, srcValue) {
if (isKey(path) && isStrictComparable(srcValue)) { if (isKey(path) && isStrictComparable(srcValue)) {
return matchesStrictComparable(path, srcValue); return matchesStrictComparable(toKey(path), srcValue);
} }
return function(object) { return function(object) {
var objValue = get(object, path); var objValue = get(object, path);
@@ -962,7 +1053,7 @@ function baseMatchesProperty(path, srcValue) {
* *
* @private * @private
* @param {string} key The key of the property to get. * @param {string} key The key of the property to get.
* @returns {Function} Returns the new function. * @returns {Function} Returns the new accessor function.
*/ */
function baseProperty(key) { function baseProperty(key) {
return function(object) { return function(object) {
@@ -975,7 +1066,7 @@ function baseProperty(key) {
* *
* @private * @private
* @param {Array|string} path The path of the property to get. * @param {Array|string} path The path of the property to get.
* @returns {Function} Returns the new function. * @returns {Function} Returns the new accessor function.
*/ */
function basePropertyDeep(path) { function basePropertyDeep(path) {
return function(object) { return function(object) {
@@ -994,6 +1085,26 @@ function castPath(value) {
return isArray(value) ? value : stringToPath(value); return isArray(value) ? value : stringToPath(value);
} }
/**
* Creates a `_.toPairs` or `_.toPairsIn` function.
*
* @private
* @param {Function} keysFunc The function to get the keys of a given object.
* @returns {Function} Returns the new pairs function.
*/
function createToPairs(keysFunc) {
return function(object) {
var tag = getTag(object);
if (tag == mapTag) {
return mapToArray(object);
}
if (tag == setTag) {
return setToPairs(object);
}
return baseToPairs(object, keysFunc(object));
};
}
/** /**
* A specialized version of `baseIsEqualDeep` for arrays with support for * A specialized version of `baseIsEqualDeep` for arrays with support for
* partial deep comparisons. * partial deep comparisons.
@@ -1009,9 +1120,7 @@ function castPath(value) {
* @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
*/ */
function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
var index = -1, var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
isPartial = bitmask & PARTIAL_COMPARE_FLAG,
isUnordered = bitmask & UNORDERED_COMPARE_FLAG,
arrLength = array.length, arrLength = array.length,
othLength = other.length; othLength = other.length;
@@ -1023,7 +1132,10 @@ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
if (stacked) { if (stacked) {
return stacked == other; return stacked == other;
} }
var result = true; var index = -1,
result = true,
seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;
stack.set(array, other); stack.set(array, other);
// Ignore non-index properties. // Ignore non-index properties.
@@ -1044,10 +1156,12 @@ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
break; break;
} }
// Recursively compare arrays (susceptible to call stack limits). // Recursively compare arrays (susceptible to call stack limits).
if (isUnordered) { if (seen) {
if (!arraySome(other, function(othValue) { if (!arraySome(other, function(othValue, othIndex) {
return arrValue === othValue || if (!seen.has(othIndex) &&
equalFunc(arrValue, othValue, customizer, bitmask, stack); (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
return seen.add(othIndex);
}
})) { })) {
result = false; result = false;
break; break;
@@ -1238,6 +1352,21 @@ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
*/ */
var getLength = baseProperty('length'); var getLength = baseProperty('length');
/**
* Gets the data for `map`.
*
* @private
* @param {Object} map The map to query.
* @param {string} key The reference key.
* @returns {*} Returns the map data.
*/
function getMapData(map, key) {
var data = map.__data__;
return isKeyable(key)
? data[typeof key == 'string' ? 'string' : 'hash']
: data.map;
}
/** /**
* Gets the property names, values, and compare flags of `object`. * Gets the property names, values, and compare flags of `object`.
* *
@@ -1332,7 +1461,7 @@ function hasPath(object, path, hasFunc) {
length = path.length; length = path.length;
while (++index < length) { while (++index < length) {
var key = path[index]; var key = toKey(path[index]);
if (!(result = object != null && hasFunc(object, key))) { if (!(result = object != null && hasFunc(object, key))) {
break; break;
} }
@@ -1363,6 +1492,21 @@ function indexKeys(object) {
return null; return null;
} }
/**
* Checks if `value` is a valid array-like index.
*
* @private
* @param {*} value The value to check.
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
*/
function isIndex(value, length) {
length = length == null ? MAX_SAFE_INTEGER : length;
return !!length &&
(typeof value == 'number' || reIsUint.test(value)) &&
(value > -1 && value % 1 == 0 && value < length);
}
/** /**
* Checks if `value` is a property name and not a property path. * Checks if `value` is a property name and not a property path.
* *
@@ -1372,13 +1516,16 @@ function indexKeys(object) {
* @returns {boolean} Returns `true` if `value` is a property name, else `false`. * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
*/ */
function isKey(value, object) { function isKey(value, object) {
if (isArray(value)) {
return false;
}
var type = typeof value; var type = typeof value;
if (type == 'number' || type == 'symbol') { if (type == 'number' || type == 'symbol' || type == 'boolean' ||
value == null || isSymbol(value)) {
return true; return true;
} }
return !isArray(value) && return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
(isSymbol(value) || reIsPlainProp.test(value) || !reIsDeepProp.test(value) || (object != null && value in Object(object));
(object != null && value in Object(object)));
} }
/** /**
@@ -1390,8 +1537,9 @@ function isKey(value, object) {
*/ */
function isKeyable(value) { function isKeyable(value) {
var type = typeof value; var type = typeof value;
return type == 'number' || type == 'boolean' || return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
(type == 'string' && value != '__proto__') || value == null; ? (value !== '__proto__')
: (value === null);
} }
/** /**
@@ -1427,7 +1575,7 @@ function isStrictComparable(value) {
* @private * @private
* @param {string} key The key of the property to get. * @param {string} key The key of the property to get.
* @param {*} srcValue The value to match. * @param {*} srcValue The value to match.
* @returns {Function} Returns the new function. * @returns {Function} Returns the new spec function.
*/ */
function matchesStrictComparable(key, srcValue) { function matchesStrictComparable(key, srcValue) {
return function(object) { return function(object) {
@@ -1439,6 +1587,21 @@ function matchesStrictComparable(key, srcValue) {
}; };
} }
/**
* Converts `value` to a string key if it's not a string or symbol.
*
* @private
* @param {*} value The value to inspect.
* @returns {string|symbol} Returns the key.
*/
function toKey(value) {
if (typeof value == 'string' || isSymbol(value)) {
return value;
}
var result = (value + '');
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
}
/** /**
* Converts `func` to its source code. * Converts `func` to its source code.
* *
@@ -1924,7 +2087,8 @@ function keys(object) {
/** /**
* Creates an array of own enumerable string keyed-value pairs for `object` * Creates an array of own enumerable string keyed-value pairs for `object`
* which can be consumed by `_.fromPairs`. * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
* entries are returned.
* *
* @static * @static
* @memberOf _ * @memberOf _
@@ -1932,7 +2096,7 @@ function keys(object) {
* @alias entries * @alias entries
* @category Object * @category Object
* @param {Object} object The object to query. * @param {Object} object The object to query.
* @returns {Array} Returns the new array of key-value pairs. * @returns {Array} Returns the key-value pairs.
* @example * @example
* *
* function Foo() { * function Foo() {
@@ -1945,9 +2109,7 @@ function keys(object) {
* _.toPairs(new Foo); * _.toPairs(new Foo);
* // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
*/ */
function toPairs(object) { var toPairs = createToPairs(keys);
return baseToPairs(object, keys(object));
}
/** /**
* This method returns the first argument given to it. * This method returns the first argument given to it.
@@ -1977,7 +2139,7 @@ function identity(value) {
* @since 2.4.0 * @since 2.4.0
* @category Util * @category Util
* @param {Array|string} path The path of the property to get. * @param {Array|string} path The path of the property to get.
* @returns {Function} Returns the new function. * @returns {Function} Returns the new accessor function.
* @example * @example
* *
* var objects = [ * var objects = [
@@ -1992,7 +2154,7 @@ function identity(value) {
* // => [1, 2] * // => [1, 2]
*/ */
function property(path) { function property(path) {
return isKey(path) ? baseProperty(path) : basePropertyDeep(path); return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
} }
module.exports = baseIteratee; module.exports = baseIteratee;

View File

@@ -1,6 +1,6 @@
{ {
"name": "lodash._baseiteratee", "name": "lodash._baseiteratee",
"version": "4.6.1", "version": "4.6.2",
"description": "The internal lodash function `baseIteratee` exported as a module.", "description": "The internal lodash function `baseIteratee` exported as a module.",
"homepage": "https://lodash.com/", "homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg", "icon": "https://lodash.com/icon.svg",

View File

@@ -1,4 +1,4 @@
Copyright JS Foundation and other contributors <https://js.foundation/> Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
Based on Underscore.js, copyright Jeremy Ashkenas, Based on Underscore.js, copyright Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

View File

@@ -1,4 +1,4 @@
# lodash.merge v4.6.1 # lodash.merge v4.6.2
The [Lodash](https://lodash.com/) method `_.merge` exported as a [Node.js](https://nodejs.org/) module. The [Lodash](https://lodash.com/) method `_.merge` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var merge = require('lodash.merge'); var merge = require('lodash.merge');
``` ```
See the [documentation](https://lodash.com/docs#merge) or [package source](https://github.com/lodash/lodash/blob/4.6.1-npm-packages/lodash.merge) for more details. See the [documentation](https://lodash.com/docs#merge) or [package source](https://github.com/lodash/lodash/blob/4.6.2-npm-packages/lodash.merge) for more details.

View File

@@ -1,7 +1,7 @@
/** /**
* Lodash (Custom Build) <https://lodash.com/> * Lodash (Custom Build) <https://lodash.com/>
* Build: `lodash modularize exports="npm" -o ./` * Build: `lodash modularize exports="npm" -o ./`
* Copyright JS Foundation and other contributors <https://js.foundation/> * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license> * Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -104,6 +104,14 @@ var freeProcess = moduleExports && freeGlobal.process;
/** Used to access faster Node.js helpers. */ /** Used to access faster Node.js helpers. */
var nodeUtil = (function() { var nodeUtil = (function() {
try { try {
// Use `util.types` for Node.js 10+.
var types = freeModule && freeModule.require && freeModule.require('util').types;
if (types) {
return types;
}
// Legacy `process.binding('util')` for Node.js < 10.
return freeProcess && freeProcess.binding && freeProcess.binding('util'); return freeProcess && freeProcess.binding && freeProcess.binding('util');
} catch (e) {} } catch (e) {}
}()); }());
@@ -189,20 +197,6 @@ function overArg(func, transform) {
}; };
} }
/**
* Gets the value at `key`, unless `key` is "__proto__".
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function safeGet(object, key) {
return key == '__proto__'
? undefined
: object[key];
}
/** Used for built-in method references. */ /** Used for built-in method references. */
var arrayProto = Array.prototype, var arrayProto = Array.prototype,
funcProto = Function.prototype, funcProto = Function.prototype,
@@ -924,8 +918,8 @@ function baseMerge(object, source, srcIndex, customizer, stack) {
return; return;
} }
baseFor(source, function(srcValue, key) { baseFor(source, function(srcValue, key) {
stack || (stack = new Stack);
if (isObject(srcValue)) { if (isObject(srcValue)) {
stack || (stack = new Stack);
baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
} }
else { else {
@@ -1413,6 +1407,26 @@ function overRest(func, start, transform) {
}; };
} }
/**
* Gets the value at `key`, unless `key` is "__proto__" or "constructor".
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function safeGet(object, key) {
if (key === 'constructor' && typeof object[key] === 'function') {
return;
}
if (key == '__proto__') {
return;
}
return object[key];
}
/** /**
* Sets the `toString` method of `func` to return `string`. * Sets the `toString` method of `func` to return `string`.
* *

View File

@@ -1,15 +1,15 @@
{ {
"name": "lodash.merge", "name": "lodash.merge",
"version": "4.6.1", "version": "4.6.2",
"description": "The Lodash method `_.merge` exported as a module.", "description": "The Lodash method `_.merge` exported as a module.",
"homepage": "https://lodash.com/", "homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg", "icon": "https://lodash.com/icon.svg",
"license": "MIT", "license": "MIT",
"keywords": "lodash-modularized, merge", "keywords": "lodash-modularized, merge",
"author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", "author": "John-David Dalton <john.david.dalton@gmail.com>",
"contributors": [ "contributors": [
"John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", "John-David Dalton <john.david.dalton@gmail.com>",
"Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)" "Mathias Bynens <mathias@qiwi.be>"
], ],
"repository": "lodash/lodash", "repository": "lodash/lodash",
"scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }

View File

@@ -1,4 +1,4 @@
Copyright JS Foundation and other contributors <https://js.foundation/> Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
Based on Underscore.js, copyright Jeremy Ashkenas, Based on Underscore.js, copyright Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>

View File

@@ -1,4 +1,4 @@
# lodash.mergewith v4.6.1 # lodash.mergewith v4.6.2
The [Lodash](https://lodash.com/) method `_.mergeWith` exported as a [Node.js](https://nodejs.org/) module. The [Lodash](https://lodash.com/) method `_.mergeWith` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var mergeWith = require('lodash.mergewith'); var mergeWith = require('lodash.mergewith');
``` ```
See the [documentation](https://lodash.com/docs#mergeWith) or [package source](https://github.com/lodash/lodash/blob/4.6.1-npm-packages/lodash.mergewith) for more details. See the [documentation](https://lodash.com/docs#mergeWith) or [package source](https://github.com/lodash/lodash/blob/4.6.2-npm-packages/lodash.mergewith) for more details.

View File

@@ -1,7 +1,7 @@
/** /**
* Lodash (Custom Build) <https://lodash.com/> * Lodash (Custom Build) <https://lodash.com/>
* Build: `lodash modularize exports="npm" -o ./` * Build: `lodash modularize exports="npm" -o ./`
* Copyright JS Foundation and other contributors <https://js.foundation/> * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license> * Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
@@ -104,6 +104,14 @@ var freeProcess = moduleExports && freeGlobal.process;
/** Used to access faster Node.js helpers. */ /** Used to access faster Node.js helpers. */
var nodeUtil = (function() { var nodeUtil = (function() {
try { try {
// Use `util.types` for Node.js 10+.
var types = freeModule && freeModule.require && freeModule.require('util').types;
if (types) {
return types;
}
// Legacy `process.binding('util')` for Node.js < 10.
return freeProcess && freeProcess.binding && freeProcess.binding('util'); return freeProcess && freeProcess.binding && freeProcess.binding('util');
} catch (e) {} } catch (e) {}
}()); }());
@@ -189,20 +197,6 @@ function overArg(func, transform) {
}; };
} }
/**
* Gets the value at `key`, unless `key` is "__proto__".
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function safeGet(object, key) {
return key == '__proto__'
? undefined
: object[key];
}
/** Used for built-in method references. */ /** Used for built-in method references. */
var arrayProto = Array.prototype, var arrayProto = Array.prototype,
funcProto = Function.prototype, funcProto = Function.prototype,
@@ -924,8 +918,8 @@ function baseMerge(object, source, srcIndex, customizer, stack) {
return; return;
} }
baseFor(source, function(srcValue, key) { baseFor(source, function(srcValue, key) {
stack || (stack = new Stack);
if (isObject(srcValue)) { if (isObject(srcValue)) {
stack || (stack = new Stack);
baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
} }
else { else {
@@ -1413,6 +1407,26 @@ function overRest(func, start, transform) {
}; };
} }
/**
* Gets the value at `key`, unless `key` is "__proto__" or "constructor".
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function safeGet(object, key) {
if (key === 'constructor' && typeof object[key] === 'function') {
return;
}
if (key == '__proto__') {
return;
}
return object[key];
}
/** /**
* Sets the `toString` method of `func` to return `string`. * Sets the `toString` method of `func` to return `string`.
* *

View File

@@ -1,15 +1,15 @@
{ {
"name": "lodash.mergewith", "name": "lodash.mergewith",
"version": "4.6.1", "version": "4.6.2",
"description": "The Lodash method `_.mergeWith` exported as a module.", "description": "The Lodash method `_.mergeWith` exported as a module.",
"homepage": "https://lodash.com/", "homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg", "icon": "https://lodash.com/icon.svg",
"license": "MIT", "license": "MIT",
"keywords": "lodash-modularized, mergewith", "keywords": "lodash-modularized, mergewith",
"author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", "author": "John-David Dalton <john.david.dalton@gmail.com>",
"contributors": [ "contributors": [
"John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", "John-David Dalton <john.david.dalton@gmail.com>",
"Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)" "Mathias Bynens <mathias@qiwi.be>"
], ],
"repository": "lodash/lodash", "repository": "lodash/lodash",
"scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" }