diff --git a/README.md b/README.md
index 661a058d4..f021e24a2 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# lodash-es v4.16.6
+# lodash-es v4.17.0
The [Lodash](https://lodash.com/) library exported as [ES](http://www.ecma-international.org/ecma-262/6.0/) modules.
@@ -7,4 +7,4 @@ Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
$ lodash modularize exports=es -o ./
```
-See the [package source](https://github.com/lodash/lodash/tree/4.16.6-es) for more details.
+See the [package source](https://github.com/lodash/lodash/tree/4.17.0-es) for more details.
diff --git a/_baseAssignIn.js b/_baseAssignIn.js
new file mode 100644
index 000000000..83c6e83e2
--- /dev/null
+++ b/_baseAssignIn.js
@@ -0,0 +1,17 @@
+import copyObject from './_copyObject.js';
+import keysIn from './keysIn.js';
+
+/**
+ * The base implementation of `_.assignIn` without support for multiple sources
+ * or `customizer` functions.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @returns {Object} Returns `object`.
+ */
+function baseAssignIn(object, source) {
+ return object && copyObject(source, keysIn(source), object);
+}
+
+export default baseAssignIn;
diff --git a/_baseAt.js b/_baseAt.js
index 0f5a61087..394738914 100644
--- a/_baseAt.js
+++ b/_baseAt.js
@@ -5,7 +5,7 @@ import get from './get.js';
*
* @private
* @param {Object} object The object to iterate over.
- * @param {string[]} paths The property paths of elements to pick.
+ * @param {string[]} paths The property paths to pick.
* @returns {Array} Returns the picked elements.
*/
function baseAt(object, paths) {
diff --git a/_baseClone.js b/_baseClone.js
index 4fa9a4b72..41959eb47 100644
--- a/_baseClone.js
+++ b/_baseClone.js
@@ -2,10 +2,13 @@ import Stack from './_Stack.js';
import arrayEach from './_arrayEach.js';
import assignValue from './_assignValue.js';
import baseAssign from './_baseAssign.js';
+import baseAssignIn from './_baseAssignIn.js';
import cloneBuffer from './_cloneBuffer.js';
import copyArray from './_copyArray.js';
import copySymbols from './_copySymbols.js';
+import copySymbolsIn from './_copySymbolsIn.js';
import getAllKeys from './_getAllKeys.js';
+import getAllKeysIn from './_getAllKeysIn.js';
import getTag from './_getTag.js';
import initCloneArray from './_initCloneArray.js';
import initCloneByTag from './_initCloneByTag.js';
@@ -15,6 +18,11 @@ import isBuffer from './isBuffer.js';
import isObject from './isObject.js';
import keys from './keys.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+ CLONE_FLAT_FLAG = 2,
+ CLONE_SYMBOLS_FLAG = 4;
+
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
arrayTag = '[object Array]',
@@ -66,16 +74,22 @@ cloneableTags[weakMapTag] = false;
*
* @private
* @param {*} value The value to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @param {boolean} [isFull] Specify a clone including symbols.
+ * @param {boolean} bitmask The bitmask flags.
+ * 1 - Deep clone
+ * 2 - Flatten inherited properties
+ * 4 - Clone symbols
* @param {Function} [customizer] The function to customize cloning.
* @param {string} [key] The key of `value`.
* @param {Object} [object] The parent object of `value`.
* @param {Object} [stack] Tracks traversed objects and their clone counterparts.
* @returns {*} Returns the cloned value.
*/
-function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
- var result;
+function baseClone(value, bitmask, customizer, key, object, stack) {
+ var result,
+ isDeep = bitmask & CLONE_DEEP_FLAG,
+ isFlat = bitmask & CLONE_FLAT_FLAG,
+ isFull = bitmask & CLONE_SYMBOLS_FLAG;
+
if (customizer) {
result = object ? customizer(value, key, object, stack) : customizer(value);
}
@@ -99,9 +113,11 @@ function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
return cloneBuffer(value, isDeep);
}
if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
- result = initCloneObject(isFunc ? {} : value);
+ result = (isFlat || isFunc) ? {} : initCloneObject(value);
if (!isDeep) {
- return copySymbols(value, baseAssign(result, value));
+ return isFlat
+ ? copySymbolsIn(value, baseAssignIn(result, value))
+ : copySymbols(value, baseAssign(result, value));
}
} else {
if (!cloneableTags[tag]) {
@@ -118,14 +134,18 @@ function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
}
stack.set(value, result);
- var props = isArr ? undefined : (isFull ? getAllKeys : keys)(value);
+ var keysFunc = isFull
+ ? (isFlat ? getAllKeysIn : getAllKeys)
+ : (isFlat ? keysIn : keys);
+
+ var props = isArr ? undefined : keysFunc(value);
arrayEach(props || value, function(subValue, key) {
if (props) {
key = subValue;
subValue = value[key];
}
// Recursively populate clone (susceptible to call stack limits).
- assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));
+ assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
});
return result;
}
diff --git a/_baseIsEqual.js b/_baseIsEqual.js
index c8b9738db..67f274118 100644
--- a/_baseIsEqual.js
+++ b/_baseIsEqual.js
@@ -9,22 +9,21 @@ import isObjectLike from './isObjectLike.js';
* @private
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
+ * @param {boolean} bitmask The bitmask flags.
+ * 1 - Unordered comparison
+ * 2 - Partial comparison
* @param {Function} [customizer] The function to customize comparisons.
- * @param {boolean} [bitmask] The bitmask of comparison flags.
- * The bitmask may be composed of the following flags:
- * 1 - Unordered comparison
- * 2 - Partial comparison
* @param {Object} [stack] Tracks traversed `value` and `other` objects.
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
*/
-function baseIsEqual(value, other, customizer, bitmask, stack) {
+function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
return value !== value && other !== other;
}
- return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
+ return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
export default baseIsEqual;
diff --git a/_baseIsEqualDeep.js b/_baseIsEqualDeep.js
index 70133f5cf..aa8bd25da 100644
--- a/_baseIsEqualDeep.js
+++ b/_baseIsEqualDeep.js
@@ -7,8 +7,8 @@ import isArray from './isArray.js';
import isBuffer from './isBuffer.js';
import isTypedArray from './isTypedArray.js';
-/** Used to compose bitmasks for comparison styles. */
-var PARTIAL_COMPARE_FLAG = 2;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1;
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
@@ -29,14 +29,13 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* @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 {Function} [customizer] The function to customize comparisons.
- * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`
- * for more details.
* @param {Object} [stack] Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
-function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
+function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray(object),
othIsArr = isArray(other),
objTag = arrayTag,
@@ -64,10 +63,10 @@ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
if (isSameTag && !objIsObj) {
stack || (stack = new Stack);
return (objIsArr || isTypedArray(object))
- ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)
- : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
+ ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
+ : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
}
- if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
+ if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
@@ -76,14 +75,14 @@ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new Stack);
- return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
+ return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack);
- return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
+ return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
export default baseIsEqualDeep;
diff --git a/_baseIsMatch.js b/_baseIsMatch.js
index e72774db4..926e03fee 100644
--- a/_baseIsMatch.js
+++ b/_baseIsMatch.js
@@ -1,9 +1,9 @@
import Stack from './_Stack.js';
import baseIsEqual from './_baseIsEqual.js';
-/** Used to compose bitmasks for comparison styles. */
-var UNORDERED_COMPARE_FLAG = 1,
- PARTIAL_COMPARE_FLAG = 2;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+ COMPARE_UNORDERED_FLAG = 2;
/**
* The base implementation of `_.isMatch` without support for iteratee shorthands.
@@ -49,7 +49,7 @@ function baseIsMatch(object, source, matchData, customizer) {
var result = customizer(objValue, srcValue, key, object, source, stack);
}
if (!(result === undefined
- ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)
+ ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
: result
)) {
return false;
diff --git a/_baseMatchesProperty.js b/_baseMatchesProperty.js
index 1085ab239..f92d68087 100644
--- a/_baseMatchesProperty.js
+++ b/_baseMatchesProperty.js
@@ -6,9 +6,9 @@ import isStrictComparable from './_isStrictComparable.js';
import matchesStrictComparable from './_matchesStrictComparable.js';
import toKey from './_toKey.js';
-/** Used to compose bitmasks for comparison styles. */
-var UNORDERED_COMPARE_FLAG = 1,
- PARTIAL_COMPARE_FLAG = 2;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+ COMPARE_UNORDERED_FLAG = 2;
/**
* The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
@@ -26,7 +26,7 @@ function baseMatchesProperty(path, srcValue) {
var objValue = get(object, path);
return (objValue === undefined && objValue === srcValue)
? hasIn(object, path)
- : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
+ : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
};
}
diff --git a/_basePick.js b/_basePick.js
index afdf4b2c3..be2da0e44 100644
--- a/_basePick.js
+++ b/_basePick.js
@@ -1,4 +1,5 @@
import basePickBy from './_basePickBy.js';
+import hasIn from './hasIn.js';
/**
* The base implementation of `_.pick` without support for individual
@@ -6,13 +7,13 @@ import basePickBy from './_basePickBy.js';
*
* @private
* @param {Object} object The source object.
- * @param {string[]} props The property identifiers to pick.
+ * @param {string[]} paths The property paths to pick.
* @returns {Object} Returns the new object.
*/
-function basePick(object, props) {
+function basePick(object, paths) {
object = Object(object);
- return basePickBy(object, props, function(value, key) {
- return key in object;
+ return basePickBy(object, paths, function(value, path) {
+ return hasIn(object, path);
});
}
diff --git a/_basePickBy.js b/_basePickBy.js
index bf027dd22..95e995405 100644
--- a/_basePickBy.js
+++ b/_basePickBy.js
@@ -1,25 +1,26 @@
-import baseAssignValue from './_baseAssignValue.js';
+import baseGet from './_baseGet.js';
+import baseSet from './_baseSet.js';
/**
* The base implementation of `_.pickBy` without support for iteratee shorthands.
*
* @private
* @param {Object} object The source object.
- * @param {string[]} props The property identifiers to pick from.
+ * @param {string[]} paths The property paths to pick.
* @param {Function} predicate The function invoked per property.
* @returns {Object} Returns the new object.
*/
-function basePickBy(object, props, predicate) {
+function basePickBy(object, paths, predicate) {
var index = -1,
- length = props.length,
+ length = paths.length,
result = {};
while (++index < length) {
- var key = props[index],
- value = object[key];
+ var path = paths[index],
+ value = baseGet(object, path);
- if (predicate(value, key)) {
- baseAssignValue(result, key, value);
+ if (predicate(value, path)) {
+ baseSet(result, path, value);
}
}
return result;
diff --git a/_baseUnset.js b/_baseUnset.js
index 064fe3e20..b681142b8 100644
--- a/_baseUnset.js
+++ b/_baseUnset.js
@@ -15,7 +15,7 @@ var hasOwnProperty = objectProto.hasOwnProperty;
*
* @private
* @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to unset.
+ * @param {Array|string} path The property path to unset.
* @returns {boolean} Returns `true` if the property is deleted, else `false`.
*/
function baseUnset(object, path) {
diff --git a/_cloneMap.js b/_cloneMap.js
index 4b9d28e1d..a4aa5b5d6 100644
--- a/_cloneMap.js
+++ b/_cloneMap.js
@@ -2,6 +2,9 @@ import addMapEntry from './_addMapEntry.js';
import arrayReduce from './_arrayReduce.js';
import mapToArray from './_mapToArray.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1;
+
/**
* Creates a clone of `map`.
*
@@ -12,7 +15,7 @@ import mapToArray from './_mapToArray.js';
* @returns {Object} Returns the cloned map.
*/
function cloneMap(map, isDeep, cloneFunc) {
- var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);
+ var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map);
return arrayReduce(array, addMapEntry, new map.constructor);
}
diff --git a/_cloneSet.js b/_cloneSet.js
index c6f0e0db4..e1d1063d0 100644
--- a/_cloneSet.js
+++ b/_cloneSet.js
@@ -2,6 +2,9 @@ import addSetEntry from './_addSetEntry.js';
import arrayReduce from './_arrayReduce.js';
import setToArray from './_setToArray.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1;
+
/**
* Creates a clone of `set`.
*
@@ -12,7 +15,7 @@ import setToArray from './_setToArray.js';
* @returns {Object} Returns the cloned set.
*/
function cloneSet(set, isDeep, cloneFunc) {
- var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);
+ var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set);
return arrayReduce(array, addSetEntry, new set.constructor);
}
diff --git a/_copySymbols.js b/_copySymbols.js
index abf914c41..002d8b767 100644
--- a/_copySymbols.js
+++ b/_copySymbols.js
@@ -2,7 +2,7 @@ import copyObject from './_copyObject.js';
import getSymbols from './_getSymbols.js';
/**
- * Copies own symbol properties of `source` to `object`.
+ * Copies own symbols of `source` to `object`.
*
* @private
* @param {Object} source The object to copy symbols from.
diff --git a/_copySymbolsIn.js b/_copySymbolsIn.js
new file mode 100644
index 000000000..12268d271
--- /dev/null
+++ b/_copySymbolsIn.js
@@ -0,0 +1,16 @@
+import copyObject from './_copyObject.js';
+import getSymbolsIn from './_getSymbolsIn.js';
+
+/**
+ * Copies own and inherited symbols of `source` to `object`.
+ *
+ * @private
+ * @param {Object} source The object to copy symbols from.
+ * @param {Object} [object={}] The object to copy symbols to.
+ * @returns {Object} Returns `object`.
+ */
+function copySymbolsIn(source, object) {
+ return copyObject(source, getSymbolsIn(source), object);
+}
+
+export default copySymbolsIn;
diff --git a/_createBind.js b/_createBind.js
index b16c99b45..3083ae498 100644
--- a/_createBind.js
+++ b/_createBind.js
@@ -2,7 +2,7 @@ import createCtor from './_createCtor.js';
import root from './_root.js';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1;
+var WRAP_BIND_FLAG = 1;
/**
* Creates a function that wraps `func` to invoke it with the optional `this`
@@ -15,7 +15,7 @@ var BIND_FLAG = 1;
* @returns {Function} Returns the new wrapped function.
*/
function createBind(func, bitmask, thisArg) {
- var isBind = bitmask & BIND_FLAG,
+ var isBind = bitmask & WRAP_BIND_FLAG,
Ctor = createCtor(func);
function wrapper() {
diff --git a/_createFlow.js b/_createFlow.js
index 6a31788b0..70ce17fcc 100644
--- a/_createFlow.js
+++ b/_createFlow.js
@@ -12,10 +12,10 @@ var LARGE_ARRAY_SIZE = 200;
var FUNC_ERROR_TEXT = 'Expected a function';
/** Used to compose bitmasks for function metadata. */
-var CURRY_FLAG = 8,
- PARTIAL_FLAG = 32,
- ARY_FLAG = 128,
- REARG_FLAG = 256;
+var WRAP_CURRY_FLAG = 8,
+ WRAP_PARTIAL_FLAG = 32,
+ WRAP_ARY_FLAG = 128,
+ WRAP_REARG_FLAG = 256;
/**
* Creates a `_.flow` or `_.flowRight` function.
@@ -50,7 +50,7 @@ function createFlow(fromRight) {
data = funcName == 'wrapper' ? getData(func) : undefined;
if (data && isLaziable(data[0]) &&
- data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) &&
+ data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
!data[4].length && data[9] == 1
) {
wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
diff --git a/_createHybrid.js b/_createHybrid.js
index ab2cd856b..300f66b1b 100644
--- a/_createHybrid.js
+++ b/_createHybrid.js
@@ -9,12 +9,12 @@ import replaceHolders from './_replaceHolders.js';
import root from './_root.js';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1,
- BIND_KEY_FLAG = 2,
- CURRY_FLAG = 8,
- CURRY_RIGHT_FLAG = 16,
- ARY_FLAG = 128,
- FLIP_FLAG = 512;
+var WRAP_BIND_FLAG = 1,
+ WRAP_BIND_KEY_FLAG = 2,
+ WRAP_CURRY_FLAG = 8,
+ WRAP_CURRY_RIGHT_FLAG = 16,
+ WRAP_ARY_FLAG = 128,
+ WRAP_FLIP_FLAG = 512;
/**
* Creates a function that wraps `func` to invoke it with optional `this`
@@ -36,11 +36,11 @@ var BIND_FLAG = 1,
* @returns {Function} Returns the new wrapped function.
*/
function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
- var isAry = bitmask & ARY_FLAG,
- isBind = bitmask & BIND_FLAG,
- isBindKey = bitmask & BIND_KEY_FLAG,
- isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG),
- isFlip = bitmask & FLIP_FLAG,
+ var isAry = bitmask & WRAP_ARY_FLAG,
+ isBind = bitmask & WRAP_BIND_FLAG,
+ isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
+ isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
+ isFlip = bitmask & WRAP_FLIP_FLAG,
Ctor = isBindKey ? undefined : createCtor(func);
function wrapper() {
diff --git a/_createPartial.js b/_createPartial.js
index 036d557ec..851a3b6b6 100644
--- a/_createPartial.js
+++ b/_createPartial.js
@@ -3,7 +3,7 @@ import createCtor from './_createCtor.js';
import root from './_root.js';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1;
+var WRAP_BIND_FLAG = 1;
/**
* Creates a function that wraps `func` to invoke it with the `this` binding
@@ -18,7 +18,7 @@ var BIND_FLAG = 1;
* @returns {Function} Returns the new wrapped function.
*/
function createPartial(func, bitmask, thisArg, partials) {
- var isBind = bitmask & BIND_FLAG,
+ var isBind = bitmask & WRAP_BIND_FLAG,
Ctor = createCtor(func);
function wrapper() {
diff --git a/_createRecurry.js b/_createRecurry.js
index 73195844d..d4bd5888b 100644
--- a/_createRecurry.js
+++ b/_createRecurry.js
@@ -3,12 +3,12 @@ import setData from './_setData.js';
import setWrapToString from './_setWrapToString.js';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1,
- BIND_KEY_FLAG = 2,
- CURRY_BOUND_FLAG = 4,
- CURRY_FLAG = 8,
- PARTIAL_FLAG = 32,
- PARTIAL_RIGHT_FLAG = 64;
+var WRAP_BIND_FLAG = 1,
+ WRAP_BIND_KEY_FLAG = 2,
+ WRAP_CURRY_BOUND_FLAG = 4,
+ WRAP_CURRY_FLAG = 8,
+ WRAP_PARTIAL_FLAG = 32,
+ WRAP_PARTIAL_RIGHT_FLAG = 64;
/**
* Creates a function that wraps `func` to continue currying.
@@ -28,17 +28,17 @@ var BIND_FLAG = 1,
* @returns {Function} Returns the new wrapped function.
*/
function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
- var isCurry = bitmask & CURRY_FLAG,
+ var isCurry = bitmask & WRAP_CURRY_FLAG,
newHolders = isCurry ? holders : undefined,
newHoldersRight = isCurry ? undefined : holders,
newPartials = isCurry ? partials : undefined,
newPartialsRight = isCurry ? undefined : partials;
- bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);
- bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
+ bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
+ bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
- if (!(bitmask & CURRY_BOUND_FLAG)) {
- bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
+ if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
+ bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
}
var newData = [
func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
diff --git a/_createWrap.js b/_createWrap.js
index 4727ae6c8..c306ded74 100644
--- a/_createWrap.js
+++ b/_createWrap.js
@@ -13,12 +13,12 @@ import toInteger from './toInteger.js';
var FUNC_ERROR_TEXT = 'Expected a function';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1,
- BIND_KEY_FLAG = 2,
- CURRY_FLAG = 8,
- CURRY_RIGHT_FLAG = 16,
- PARTIAL_FLAG = 32,
- PARTIAL_RIGHT_FLAG = 64;
+var WRAP_BIND_FLAG = 1,
+ WRAP_BIND_KEY_FLAG = 2,
+ WRAP_CURRY_FLAG = 8,
+ WRAP_CURRY_RIGHT_FLAG = 16,
+ WRAP_PARTIAL_FLAG = 32,
+ WRAP_PARTIAL_RIGHT_FLAG = 64;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax = Math.max;
@@ -30,17 +30,16 @@ var nativeMax = Math.max;
* @private
* @param {Function|string} func The function or method name to wrap.
* @param {number} bitmask The bitmask flags.
- * The bitmask may be composed of the following flags:
- * 1 - `_.bind`
- * 2 - `_.bindKey`
- * 4 - `_.curry` or `_.curryRight` of a bound function
- * 8 - `_.curry`
- * 16 - `_.curryRight`
- * 32 - `_.partial`
- * 64 - `_.partialRight`
- * 128 - `_.rearg`
- * 256 - `_.ary`
- * 512 - `_.flip`
+ * 1 - `_.bind`
+ * 2 - `_.bindKey`
+ * 4 - `_.curry` or `_.curryRight` of a bound function
+ * 8 - `_.curry`
+ * 16 - `_.curryRight`
+ * 32 - `_.partial`
+ * 64 - `_.partialRight`
+ * 128 - `_.rearg`
+ * 256 - `_.ary`
+ * 512 - `_.flip`
* @param {*} [thisArg] The `this` binding of `func`.
* @param {Array} [partials] The arguments to be partially applied.
* @param {Array} [holders] The `partials` placeholder indexes.
@@ -50,20 +49,20 @@ var nativeMax = Math.max;
* @returns {Function} Returns the new wrapped function.
*/
function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
- var isBindKey = bitmask & BIND_KEY_FLAG;
+ var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
if (!isBindKey && typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT);
}
var length = partials ? partials.length : 0;
if (!length) {
- bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
+ bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
partials = holders = undefined;
}
ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
arity = arity === undefined ? arity : toInteger(arity);
length -= holders ? holders.length : 0;
- if (bitmask & PARTIAL_RIGHT_FLAG) {
+ if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
var partialsRight = partials,
holdersRight = holders;
@@ -88,14 +87,14 @@ function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arit
? (isBindKey ? 0 : func.length)
: nativeMax(newData[9] - length, 0);
- if (!arity && bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG)) {
- bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG);
+ if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
+ bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
}
- if (!bitmask || bitmask == BIND_FLAG) {
+ if (!bitmask || bitmask == WRAP_BIND_FLAG) {
var result = createBind(func, bitmask, thisArg);
- } else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) {
+ } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
result = createCurry(func, bitmask, arity);
- } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !holders.length) {
+ } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
result = createPartial(func, bitmask, thisArg, partials);
} else {
result = createHybrid.apply(undefined, newData);
diff --git a/_equalArrays.js b/_equalArrays.js
index a19c673e8..77cafd960 100644
--- a/_equalArrays.js
+++ b/_equalArrays.js
@@ -2,9 +2,9 @@ import SetCache from './_SetCache.js';
import arraySome from './_arraySome.js';
import cacheHas from './_cacheHas.js';
-/** Used to compose bitmasks for comparison styles. */
-var UNORDERED_COMPARE_FLAG = 1,
- PARTIAL_COMPARE_FLAG = 2;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+ COMPARE_UNORDERED_FLAG = 2;
/**
* A specialized version of `baseIsEqualDeep` for arrays with support for
@@ -13,15 +13,14 @@ var UNORDERED_COMPARE_FLAG = 1,
* @private
* @param {Array} array The array to compare.
* @param {Array} other The other array to compare.
- * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
- * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
- * for more details.
+ * @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed `array` and `other` objects.
* @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
*/
-function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
- var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
+function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
arrLength = array.length,
othLength = other.length;
@@ -35,7 +34,7 @@ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
}
var index = -1,
result = true,
- seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;
+ seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
stack.set(array, other);
stack.set(other, array);
@@ -61,7 +60,7 @@ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
if (seen) {
if (!arraySome(other, function(othValue, othIndex) {
if (!cacheHas(seen, othIndex) &&
- (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
+ (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
@@ -70,7 +69,7 @@ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
}
} else if (!(
arrValue === othValue ||
- equalFunc(arrValue, othValue, customizer, bitmask, stack)
+ equalFunc(arrValue, othValue, bitmask, customizer, stack)
)) {
result = false;
break;
diff --git a/_equalByTag.js b/_equalByTag.js
index ede1b61fe..a7090ffe6 100644
--- a/_equalByTag.js
+++ b/_equalByTag.js
@@ -5,9 +5,9 @@ import equalArrays from './_equalArrays.js';
import mapToArray from './_mapToArray.js';
import setToArray from './_setToArray.js';
-/** Used to compose bitmasks for comparison styles. */
-var UNORDERED_COMPARE_FLAG = 1,
- PARTIAL_COMPARE_FLAG = 2;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1,
+ COMPARE_UNORDERED_FLAG = 2;
/** `Object#toString` result references. */
var boolTag = '[object Boolean]',
@@ -38,14 +38,13 @@ var symbolProto = Symbol ? Symbol.prototype : undefined,
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {string} tag The `toStringTag` of the objects to compare.
- * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
- * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
- * for more details.
+ * @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 equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
+function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if ((object.byteLength != other.byteLength) ||
@@ -83,7 +82,7 @@ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
var convert = mapToArray;
case setTag:
- var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
convert || (convert = setToArray);
if (object.size != other.size && !isPartial) {
@@ -94,11 +93,11 @@ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
if (stacked) {
return stacked == other;
}
- bitmask |= UNORDERED_COMPARE_FLAG;
+ bitmask |= COMPARE_UNORDERED_FLAG;
// Recursively compare objects (susceptible to call stack limits).
stack.set(object, other);
- var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
+ var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
stack['delete'](object);
return result;
diff --git a/_equalObjects.js b/_equalObjects.js
index 55e5aef46..da70dc469 100644
--- a/_equalObjects.js
+++ b/_equalObjects.js
@@ -1,7 +1,7 @@
import keys from './keys.js';
-/** Used to compose bitmasks for comparison styles. */
-var PARTIAL_COMPARE_FLAG = 2;
+/** Used to compose bitmasks for value comparisons. */
+var COMPARE_PARTIAL_FLAG = 1;
/** Used for built-in method references. */
var objectProto = Object.prototype;
@@ -16,15 +16,14 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
- * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
- * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
- * for more details.
+ * @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, equalFunc, customizer, bitmask, stack) {
- var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
+function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
+ var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
objProps = keys(object),
objLength = objProps.length,
othProps = keys(other),
@@ -62,7 +61,7 @@ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
}
// Recursively compare objects (susceptible to call stack limits).
if (!(compared === undefined
- ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))
+ ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
: compared
)) {
result = false;
diff --git a/_getSymbols.js b/_getSymbols.js
index b748002d6..801893a9a 100644
--- a/_getSymbols.js
+++ b/_getSymbols.js
@@ -5,7 +5,7 @@ import stubArray from './stubArray.js';
var nativeGetSymbols = Object.getOwnPropertySymbols;
/**
- * Creates an array of the own enumerable symbol properties of `object`.
+ * Creates an array of the own enumerable symbols of `object`.
*
* @private
* @param {Object} object The object to query.
diff --git a/_getSymbolsIn.js b/_getSymbolsIn.js
index 0e810a4b7..5f33b71e8 100644
--- a/_getSymbolsIn.js
+++ b/_getSymbolsIn.js
@@ -7,8 +7,7 @@ import stubArray from './stubArray.js';
var nativeGetSymbols = Object.getOwnPropertySymbols;
/**
- * Creates an array of the own and inherited enumerable symbol properties
- * of `object`.
+ * Creates an array of the own and inherited enumerable symbols of `object`.
*
* @private
* @param {Object} object The object to query.
diff --git a/_hasUnicode.js b/_hasUnicode.js
index ae9548690..c0808981e 100644
--- a/_hasUnicode.js
+++ b/_hasUnicode.js
@@ -1,14 +1,16 @@
/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23',
- rsComboSymbolsRange = '\\u20d0-\\u20f0',
+ rsComboMarksRange = '\\u0300-\\u036f',
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
rsVarRange = '\\ufe0e\\ufe0f';
/** Used to compose unicode capture groups. */
var rsZWJ = '\\u200d';
/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
-var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');
+var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');
/**
* Checks if `string` contains Unicode symbols.
diff --git a/_mergeData.js b/_mergeData.js
index c8f012e64..9222069f8 100644
--- a/_mergeData.js
+++ b/_mergeData.js
@@ -6,12 +6,12 @@ import replaceHolders from './_replaceHolders.js';
var PLACEHOLDER = '__lodash_placeholder__';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1,
- BIND_KEY_FLAG = 2,
- CURRY_BOUND_FLAG = 4,
- CURRY_FLAG = 8,
- ARY_FLAG = 128,
- REARG_FLAG = 256;
+var WRAP_BIND_FLAG = 1,
+ WRAP_BIND_KEY_FLAG = 2,
+ WRAP_CURRY_BOUND_FLAG = 4,
+ WRAP_CURRY_FLAG = 8,
+ WRAP_ARY_FLAG = 128,
+ WRAP_REARG_FLAG = 256;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMin = Math.min;
@@ -36,22 +36,22 @@ function mergeData(data, source) {
var bitmask = data[1],
srcBitmask = source[1],
newBitmask = bitmask | srcBitmask,
- isCommon = newBitmask < (BIND_FLAG | BIND_KEY_FLAG | ARY_FLAG);
+ isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
var isCombo =
- ((srcBitmask == ARY_FLAG) && (bitmask == CURRY_FLAG)) ||
- ((srcBitmask == ARY_FLAG) && (bitmask == REARG_FLAG) && (data[7].length <= source[8])) ||
- ((srcBitmask == (ARY_FLAG | REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == CURRY_FLAG));
+ ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
+ ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
+ ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
// Exit early if metadata can't be merged.
if (!(isCommon || isCombo)) {
return data;
}
// Use source `thisArg` if available.
- if (srcBitmask & BIND_FLAG) {
+ if (srcBitmask & WRAP_BIND_FLAG) {
data[2] = source[2];
// Set when currying a bound function.
- newBitmask |= bitmask & BIND_FLAG ? 0 : CURRY_BOUND_FLAG;
+ newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
}
// Compose partial arguments.
var value = source[3];
@@ -73,7 +73,7 @@ function mergeData(data, source) {
data[7] = value;
}
// Use source `ary` if it's smaller.
- if (srcBitmask & ARY_FLAG) {
+ if (srcBitmask & WRAP_ARY_FLAG) {
data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
}
// Use source `arity` if one is not provided.
diff --git a/_nodeUtil.js b/_nodeUtil.js
index 0f0e0c8b6..467331693 100644
--- a/_nodeUtil.js
+++ b/_nodeUtil.js
@@ -15,7 +15,7 @@ var freeProcess = moduleExports && freeGlobal.process;
/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
try {
- return freeProcess && freeProcess.binding('util');
+ return freeProcess && freeProcess.binding && freeProcess.binding('util');
} catch (e) {}
}());
diff --git a/_unicodeSize.js b/_unicodeSize.js
index 171d393bb..8c0317541 100644
--- a/_unicodeSize.js
+++ b/_unicodeSize.js
@@ -1,12 +1,14 @@
/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23',
- rsComboSymbolsRange = '\\u20d0-\\u20f0',
+ rsComboMarksRange = '\\u0300-\\u036f',
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
rsVarRange = '\\ufe0e\\ufe0f';
/** Used to compose unicode capture groups. */
var rsAstral = '[' + rsAstralRange + ']',
- rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',
+ rsCombo = '[' + rsComboRange + ']',
rsFitz = '\\ud83c[\\udffb-\\udfff]',
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
rsNonAstral = '[^' + rsAstralRange + ']',
diff --git a/_unicodeToArray.js b/_unicodeToArray.js
index 0ef8e3e4d..ea4976206 100644
--- a/_unicodeToArray.js
+++ b/_unicodeToArray.js
@@ -1,12 +1,14 @@
/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23',
- rsComboSymbolsRange = '\\u20d0-\\u20f0',
+ rsComboMarksRange = '\\u0300-\\u036f',
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
rsVarRange = '\\ufe0e\\ufe0f';
/** Used to compose unicode capture groups. */
var rsAstral = '[' + rsAstralRange + ']',
- rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',
+ rsCombo = '[' + rsComboRange + ']',
rsFitz = '\\ud83c[\\udffb-\\udfff]',
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
rsNonAstral = '[^' + rsAstralRange + ']',
diff --git a/_unicodeWords.js b/_unicodeWords.js
index 4ca2d4ca4..99acbefc2 100644
--- a/_unicodeWords.js
+++ b/_unicodeWords.js
@@ -1,7 +1,9 @@
/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
- rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23',
- rsComboSymbolsRange = '\\u20d0-\\u20f0',
+ rsComboMarksRange = '\\u0300-\\u036f',
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
rsDingbatRange = '\\u2700-\\u27bf',
rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
@@ -15,7 +17,7 @@ var rsAstralRange = '\\ud800-\\udfff',
/** Used to compose unicode capture groups. */
var rsApos = "['\u2019]",
rsBreak = '[' + rsBreakRange + ']',
- rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',
+ rsCombo = '[' + rsComboRange + ']',
rsDigits = '\\d+',
rsDingbat = '[' + rsDingbatRange + ']',
rsLower = '[' + rsLowerRange + ']',
diff --git a/_updateWrapDetails.js b/_updateWrapDetails.js
index 9032d308a..69ecc1ec4 100644
--- a/_updateWrapDetails.js
+++ b/_updateWrapDetails.js
@@ -2,27 +2,27 @@ import arrayEach from './_arrayEach.js';
import arrayIncludes from './_arrayIncludes.js';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1,
- BIND_KEY_FLAG = 2,
- CURRY_FLAG = 8,
- CURRY_RIGHT_FLAG = 16,
- PARTIAL_FLAG = 32,
- PARTIAL_RIGHT_FLAG = 64,
- ARY_FLAG = 128,
- REARG_FLAG = 256,
- FLIP_FLAG = 512;
+var WRAP_BIND_FLAG = 1,
+ WRAP_BIND_KEY_FLAG = 2,
+ WRAP_CURRY_FLAG = 8,
+ WRAP_CURRY_RIGHT_FLAG = 16,
+ WRAP_PARTIAL_FLAG = 32,
+ WRAP_PARTIAL_RIGHT_FLAG = 64,
+ WRAP_ARY_FLAG = 128,
+ WRAP_REARG_FLAG = 256,
+ WRAP_FLIP_FLAG = 512;
/** Used to associate wrap methods with their bit flags. */
var wrapFlags = [
- ['ary', ARY_FLAG],
- ['bind', BIND_FLAG],
- ['bindKey', BIND_KEY_FLAG],
- ['curry', CURRY_FLAG],
- ['curryRight', CURRY_RIGHT_FLAG],
- ['flip', FLIP_FLAG],
- ['partial', PARTIAL_FLAG],
- ['partialRight', PARTIAL_RIGHT_FLAG],
- ['rearg', REARG_FLAG]
+ ['ary', WRAP_ARY_FLAG],
+ ['bind', WRAP_BIND_FLAG],
+ ['bindKey', WRAP_BIND_KEY_FLAG],
+ ['curry', WRAP_CURRY_FLAG],
+ ['curryRight', WRAP_CURRY_RIGHT_FLAG],
+ ['flip', WRAP_FLIP_FLAG],
+ ['partial', WRAP_PARTIAL_FLAG],
+ ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
+ ['rearg', WRAP_REARG_FLAG]
];
/**
diff --git a/ary.js b/ary.js
index 76a95cb7d..eb64a45a3 100644
--- a/ary.js
+++ b/ary.js
@@ -1,7 +1,7 @@
import createWrap from './_createWrap.js';
/** Used to compose bitmasks for function metadata. */
-var ARY_FLAG = 128;
+var WRAP_ARY_FLAG = 128;
/**
* Creates a function that invokes `func`, with up to `n` arguments,
@@ -23,7 +23,7 @@ var ARY_FLAG = 128;
function ary(func, n, guard) {
n = guard ? undefined : n;
n = (func && n == null) ? func.length : n;
- return createWrap(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);
+ return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
}
export default ary;
diff --git a/at.js b/at.js
index 2a9220a06..6475c67f6 100644
--- a/at.js
+++ b/at.js
@@ -9,7 +9,7 @@ import flatRest from './_flatRest.js';
* @since 1.0.0
* @category Object
* @param {Object} object The object to iterate over.
- * @param {...(string|string[])} [paths] The property paths of elements to pick.
+ * @param {...(string|string[])} [paths] The property paths to pick.
* @returns {Array} Returns the picked values.
* @example
*
diff --git a/bind.js b/bind.js
index ca8f7174b..4bc03b320 100644
--- a/bind.js
+++ b/bind.js
@@ -4,8 +4,8 @@ import getHolder from './_getHolder.js';
import replaceHolders from './_replaceHolders.js';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1,
- PARTIAL_FLAG = 32;
+var WRAP_BIND_FLAG = 1,
+ WRAP_PARTIAL_FLAG = 32;
/**
* Creates a function that invokes `func` with the `this` binding of `thisArg`
@@ -43,10 +43,10 @@ var BIND_FLAG = 1,
* // => 'hi fred!'
*/
var bind = baseRest(function(func, thisArg, partials) {
- var bitmask = BIND_FLAG;
+ var bitmask = WRAP_BIND_FLAG;
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bind));
- bitmask |= PARTIAL_FLAG;
+ bitmask |= WRAP_PARTIAL_FLAG;
}
return createWrap(func, bitmask, thisArg, partials, holders);
});
diff --git a/bindKey.js b/bindKey.js
index f18f426a8..fbbfa2987 100644
--- a/bindKey.js
+++ b/bindKey.js
@@ -4,9 +4,9 @@ import getHolder from './_getHolder.js';
import replaceHolders from './_replaceHolders.js';
/** Used to compose bitmasks for function metadata. */
-var BIND_FLAG = 1,
- BIND_KEY_FLAG = 2,
- PARTIAL_FLAG = 32;
+var WRAP_BIND_FLAG = 1,
+ WRAP_BIND_KEY_FLAG = 2,
+ WRAP_PARTIAL_FLAG = 32;
/**
* Creates a function that invokes the method at `object[key]` with `partials`
@@ -54,10 +54,10 @@ var BIND_FLAG = 1,
* // => 'hiya fred!'
*/
var bindKey = baseRest(function(object, key, partials) {
- var bitmask = BIND_FLAG | BIND_KEY_FLAG;
+ var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bindKey));
- bitmask |= PARTIAL_FLAG;
+ bitmask |= WRAP_PARTIAL_FLAG;
}
return createWrap(key, bitmask, object, partials, holders);
});
diff --git a/clone.js b/clone.js
index b2f2c906d..b14701211 100644
--- a/clone.js
+++ b/clone.js
@@ -1,5 +1,8 @@
import baseClone from './_baseClone.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_SYMBOLS_FLAG = 4;
+
/**
* Creates a shallow clone of `value`.
*
@@ -27,7 +30,7 @@ import baseClone from './_baseClone.js';
* // => true
*/
function clone(value) {
- return baseClone(value, false, true);
+ return baseClone(value, CLONE_SYMBOLS_FLAG);
}
export default clone;
diff --git a/cloneDeep.js b/cloneDeep.js
index de7ce2812..44d403d77 100644
--- a/cloneDeep.js
+++ b/cloneDeep.js
@@ -1,5 +1,9 @@
import baseClone from './_baseClone.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+ CLONE_SYMBOLS_FLAG = 4;
+
/**
* This method is like `_.clone` except that it recursively clones `value`.
*
@@ -19,7 +23,7 @@ import baseClone from './_baseClone.js';
* // => false
*/
function cloneDeep(value) {
- return baseClone(value, true, true);
+ return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
}
export default cloneDeep;
diff --git a/cloneDeepWith.js b/cloneDeepWith.js
index f2fb895e8..8cd788588 100644
--- a/cloneDeepWith.js
+++ b/cloneDeepWith.js
@@ -1,5 +1,9 @@
import baseClone from './_baseClone.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+ CLONE_SYMBOLS_FLAG = 4;
+
/**
* This method is like `_.cloneWith` except that it recursively clones `value`.
*
@@ -30,7 +34,7 @@ import baseClone from './_baseClone.js';
*/
function cloneDeepWith(value, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined;
- return baseClone(value, true, true, customizer);
+ return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
}
export default cloneDeepWith;
diff --git a/cloneWith.js b/cloneWith.js
index 7a97b21e5..c900df14c 100644
--- a/cloneWith.js
+++ b/cloneWith.js
@@ -1,5 +1,8 @@
import baseClone from './_baseClone.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_SYMBOLS_FLAG = 4;
+
/**
* This method is like `_.clone` except that it accepts `customizer` which
* is invoked to produce the cloned value. If `customizer` returns `undefined`,
@@ -33,7 +36,7 @@ import baseClone from './_baseClone.js';
*/
function cloneWith(value, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined;
- return baseClone(value, false, true, customizer);
+ return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
}
export default cloneWith;
diff --git a/conforms.js b/conforms.js
index 21a3c8696..2fb1ebe91 100644
--- a/conforms.js
+++ b/conforms.js
@@ -1,6 +1,9 @@
import baseClone from './_baseClone.js';
import baseConforms from './_baseConforms.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1;
+
/**
* Creates a function that invokes the predicate properties of `source` with
* the corresponding property values of a given object, returning `true` if
@@ -26,7 +29,7 @@ import baseConforms from './_baseConforms.js';
* // => [{ 'a': 1, 'b': 2 }]
*/
function conforms(source) {
- return baseConforms(baseClone(source, true));
+ return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
}
export default conforms;
diff --git a/curry.js b/curry.js
index c269536d5..953102f66 100644
--- a/curry.js
+++ b/curry.js
@@ -1,7 +1,7 @@
import createWrap from './_createWrap.js';
/** Used to compose bitmasks for function metadata. */
-var CURRY_FLAG = 8;
+var WRAP_CURRY_FLAG = 8;
/**
* Creates a function that accepts arguments of `func` and either invokes
@@ -46,7 +46,7 @@ var CURRY_FLAG = 8;
*/
function curry(func, arity, guard) {
arity = guard ? undefined : arity;
- var result = createWrap(func, CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
+ var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
result.placeholder = curry.placeholder;
return result;
}
diff --git a/curryRight.js b/curryRight.js
index 8aab2d103..5cc33aac6 100644
--- a/curryRight.js
+++ b/curryRight.js
@@ -1,7 +1,7 @@
import createWrap from './_createWrap.js';
/** Used to compose bitmasks for function metadata. */
-var CURRY_RIGHT_FLAG = 16;
+var WRAP_CURRY_RIGHT_FLAG = 16;
/**
* This method is like `_.curry` except that arguments are applied to `func`
@@ -43,7 +43,7 @@ var CURRY_RIGHT_FLAG = 16;
*/
function curryRight(func, arity, guard) {
arity = guard ? undefined : arity;
- var result = createWrap(func, CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
+ var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
result.placeholder = curryRight.placeholder;
return result;
}
diff --git a/deburr.js b/deburr.js
index 0fa630440..73dc9b374 100644
--- a/deburr.js
+++ b/deburr.js
@@ -5,11 +5,13 @@ import toString from './toString.js';
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
/** Used to compose unicode character classes. */
-var rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23',
- rsComboSymbolsRange = '\\u20d0-\\u20f0';
+var rsComboMarksRange = '\\u0300-\\u036f',
+ reComboHalfMarksRange = '\\ufe20-\\ufe2f',
+ rsComboSymbolsRange = '\\u20d0-\\u20ff',
+ rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
/** Used to compose unicode capture groups. */
-var rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']';
+var rsCombo = '[' + rsComboRange + ']';
/**
* Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
diff --git a/flip.js b/flip.js
index 3cf0eeb79..787324c93 100644
--- a/flip.js
+++ b/flip.js
@@ -1,7 +1,7 @@
import createWrap from './_createWrap.js';
/** Used to compose bitmasks for function metadata. */
-var FLIP_FLAG = 512;
+var WRAP_FLIP_FLAG = 512;
/**
* Creates a function that invokes `func` with arguments reversed.
@@ -22,7 +22,7 @@ var FLIP_FLAG = 512;
* // => ['d', 'c', 'b', 'a']
*/
function flip(func) {
- return createWrap(func, FLIP_FLAG);
+ return createWrap(func, WRAP_FLIP_FLAG);
}
export default flip;
diff --git a/isEqualWith.js b/isEqualWith.js
index 74f607528..c16f2056a 100644
--- a/isEqualWith.js
+++ b/isEqualWith.js
@@ -35,7 +35,7 @@ import baseIsEqual from './_baseIsEqual.js';
function isEqualWith(value, other, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined;
var result = customizer ? customizer(value, other) : undefined;
- return result === undefined ? baseIsEqual(value, other, customizer) : !!result;
+ return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
}
export default isEqualWith;
diff --git a/isNative.js b/isNative.js
index 37160daaa..f1d2c327f 100644
--- a/isNative.js
+++ b/isNative.js
@@ -2,7 +2,7 @@ import baseIsNative from './_baseIsNative.js';
import isMaskable from './_isMaskable.js';
/** Error message constants. */
-var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://github.com/es-shims.';
+var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.';
/**
* Checks if `value` is a pristine native function.
diff --git a/iteratee.js b/iteratee.js
index 07256b473..a2a4af2ed 100644
--- a/iteratee.js
+++ b/iteratee.js
@@ -1,6 +1,9 @@
import baseClone from './_baseClone.js';
import baseIteratee from './_baseIteratee.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1;
+
/**
* Creates a function that invokes `func` with the arguments of the created
* function. If `func` is a property name, the created function returns the
@@ -44,7 +47,7 @@ import baseIteratee from './_baseIteratee.js';
* // => ['def']
*/
function iteratee(func) {
- return baseIteratee(typeof func == 'function' ? func : baseClone(func, true));
+ return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
}
export default iteratee;
diff --git a/lodash.default.js b/lodash.default.js
index e31ad38c1..1862730d4 100644
--- a/lodash.default.js
+++ b/lodash.default.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash (Custom Build)
+ * Lodash (Custom Build)
* Build: `lodash modularize exports="es" -o ./`
* Copyright JS Foundation and other contributors
* Released under MIT license
@@ -45,10 +45,10 @@ import toInteger from './toInteger.js';
import lodash from './wrapperLodash.js';
/** Used as the semantic version number. */
-var VERSION = '4.16.6';
+var VERSION = '4.17.0';
/** Used to compose bitmasks for function metadata. */
-var BIND_KEY_FLAG = 2;
+var WRAP_BIND_KEY_FLAG = 2;
/** Used to indicate the type of lazy iteratees. */
var LAZY_FILTER_FLAG = 1,
@@ -614,7 +614,7 @@ baseForOwn(LazyWrapper.prototype, function(func, methodName) {
}
});
-realNames[createHybrid(undefined, BIND_KEY_FLAG).name] = [{
+realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
'name': 'wrapper',
'func': undefined
}];
diff --git a/lodash.js b/lodash.js
index ee47962da..706eb5e98 100644
--- a/lodash.js
+++ b/lodash.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash (Custom Build)
+ * Lodash (Custom Build)
* Build: `lodash modularize exports="es" -o ./`
* Copyright JS Foundation and other contributors
* Released under MIT license
diff --git a/matches.js b/matches.js
index a929512c2..62aed6c77 100644
--- a/matches.js
+++ b/matches.js
@@ -1,6 +1,9 @@
import baseClone from './_baseClone.js';
import baseMatches from './_baseMatches.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1;
+
/**
* Creates a function that performs a partial deep comparison between a given
* object and `source`, returning `true` if the given object has equivalent
@@ -30,7 +33,7 @@ import baseMatches from './_baseMatches.js';
* // => [{ 'a': 4, 'b': 5, 'c': 6 }]
*/
function matches(source) {
- return baseMatches(baseClone(source, true));
+ return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
}
export default matches;
diff --git a/matchesProperty.js b/matchesProperty.js
index 089de7a15..a98fea92c 100644
--- a/matchesProperty.js
+++ b/matchesProperty.js
@@ -1,6 +1,9 @@
import baseClone from './_baseClone.js';
import baseMatchesProperty from './_baseMatchesProperty.js';
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1;
+
/**
* Creates a function that performs a partial deep comparison between the
* value at `path` of a given object to `srcValue`, returning `true` if the
@@ -28,7 +31,7 @@ import baseMatchesProperty from './_baseMatchesProperty.js';
* // => { 'a': 4, 'b': 5, 'c': 6 }
*/
function matchesProperty(path, srcValue) {
- return baseMatchesProperty(path, baseClone(srcValue, true));
+ return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
}
export default matchesProperty;
diff --git a/omit.js b/omit.js
index fc8677ab2..da8eb9f93 100644
--- a/omit.js
+++ b/omit.js
@@ -1,21 +1,26 @@
-import arrayMap from './_arrayMap.js';
-import baseDifference from './_baseDifference.js';
-import basePick from './_basePick.js';
+import baseClone from './_baseClone.js';
+import baseUnset from './_baseUnset.js';
+import copyObject from './_copyObject.js';
import flatRest from './_flatRest.js';
import getAllKeysIn from './_getAllKeysIn.js';
-import toKey from './_toKey.js';
+
+/** Used to compose bitmasks for cloning. */
+var CLONE_DEEP_FLAG = 1,
+ CLONE_FLAT_FLAG = 2,
+ CLONE_SYMBOLS_FLAG = 4;
/**
* The opposite of `_.pick`; this method creates an object composed of the
- * own and inherited enumerable string keyed properties of `object` that are
- * not omitted.
+ * own and inherited enumerable property paths of `object` that are not omitted.
+ *
+ * **Note:** This method is considerably slower than `_.pick`.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The source object.
- * @param {...(string|string[])} [props] The property identifiers to omit.
+ * @param {...(string|string[])} [paths] The property paths to omit.
* @returns {Object} Returns the new object.
* @example
*
@@ -24,12 +29,19 @@ import toKey from './_toKey.js';
* _.omit(object, ['a', 'c']);
* // => { 'b': '2' }
*/
-var omit = flatRest(function(object, props) {
+var omit = flatRest(function(object, paths) {
+ var result = {};
if (object == null) {
- return {};
+ return result;
}
- props = arrayMap(props, toKey);
- return basePick(object, baseDifference(getAllKeysIn(object), props));
+ copyObject(object, getAllKeysIn(object), result);
+ result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG);
+
+ var length = paths.length;
+ while (length--) {
+ baseUnset(result, paths[length]);
+ }
+ return result;
});
export default omit;
diff --git a/package.json b/package.json
index d1b9b3554..9f7a677d3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lodash-es",
- "version": "4.16.6",
+ "version": "4.17.0",
"description": "Lodash exported as ES modules.",
"keywords": "es6, modules, stdlib, util",
"homepage": "https://lodash.com/custom-builds",
diff --git a/partial.js b/partial.js
index 7c5889d34..eaf6c435f 100644
--- a/partial.js
+++ b/partial.js
@@ -4,7 +4,7 @@ import getHolder from './_getHolder.js';
import replaceHolders from './_replaceHolders.js';
/** Used to compose bitmasks for function metadata. */
-var PARTIAL_FLAG = 32;
+var WRAP_PARTIAL_FLAG = 32;
/**
* Creates a function that invokes `func` with `partials` prepended to the
@@ -41,7 +41,7 @@ var PARTIAL_FLAG = 32;
*/
var partial = baseRest(function(func, partials) {
var holders = replaceHolders(partials, getHolder(partial));
- return createWrap(func, PARTIAL_FLAG, undefined, partials, holders);
+ return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
});
// Assign default placeholders.
diff --git a/partialRight.js b/partialRight.js
index ba89ea0bd..8ffe3ebce 100644
--- a/partialRight.js
+++ b/partialRight.js
@@ -4,7 +4,7 @@ import getHolder from './_getHolder.js';
import replaceHolders from './_replaceHolders.js';
/** Used to compose bitmasks for function metadata. */
-var PARTIAL_RIGHT_FLAG = 64;
+var WRAP_PARTIAL_RIGHT_FLAG = 64;
/**
* This method is like `_.partial` except that partially applied arguments
@@ -40,7 +40,7 @@ var PARTIAL_RIGHT_FLAG = 64;
*/
var partialRight = baseRest(function(func, partials) {
var holders = replaceHolders(partials, getHolder(partialRight));
- return createWrap(func, PARTIAL_RIGHT_FLAG, undefined, partials, holders);
+ return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
});
// Assign default placeholders.
diff --git a/pick.js b/pick.js
index 337d5514a..e55570f27 100644
--- a/pick.js
+++ b/pick.js
@@ -11,7 +11,7 @@ import toKey from './_toKey.js';
* @memberOf _
* @category Object
* @param {Object} object The source object.
- * @param {...(string|string[])} [props] The property identifiers to pick.
+ * @param {...(string|string[])} [paths] The property paths to pick.
* @returns {Object} Returns the new object.
* @example
*
@@ -20,8 +20,8 @@ import toKey from './_toKey.js';
* _.pick(object, ['a', 'c']);
* // => { 'a': 1, 'c': 3 }
*/
-var pick = flatRest(function(object, props) {
- return object == null ? {} : basePick(object, arrayMap(props, toKey));
+var pick = flatRest(function(object, paths) {
+ return object == null ? {} : basePick(object, arrayMap(paths, toKey));
});
export default pick;
diff --git a/rearg.js b/rearg.js
index 4e1cec0f4..6bdda0ce4 100644
--- a/rearg.js
+++ b/rearg.js
@@ -2,7 +2,7 @@ import createWrap from './_createWrap.js';
import flatRest from './_flatRest.js';
/** Used to compose bitmasks for function metadata. */
-var REARG_FLAG = 256;
+var WRAP_REARG_FLAG = 256;
/**
* Creates a function that invokes `func` with arguments arranged according
@@ -27,7 +27,7 @@ var REARG_FLAG = 256;
* // => ['a', 'b', 'c']
*/
var rearg = flatRest(function(func, indexes) {
- return createWrap(func, REARG_FLAG, undefined, undefined, undefined, indexes);
+ return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
});
export default rearg;
diff --git a/spread.js b/spread.js
index cf221cfc9..0c973425e 100644
--- a/spread.js
+++ b/spread.js
@@ -51,11 +51,15 @@ function spread(func, start) {
start = start === undefined ? 0 : nativeMax(toInteger(start), 0);
return baseRest(function(args) {
var array = args[start],
+ lastIndex = args.length - 1,
otherArgs = castSlice(args, 0, start);
if (array) {
arrayPush(otherArgs, array);
}
+ if (start != lastIndex) {
+ arrayPush(otherArgs, castSlice(args, start + 1));
+ }
return apply(func, this, otherArgs);
});
}
diff --git a/wrapperAt.js b/wrapperAt.js
index f54af4fcb..62eb611d9 100644
--- a/wrapperAt.js
+++ b/wrapperAt.js
@@ -12,7 +12,7 @@ import thru from './thru.js';
* @memberOf _
* @since 1.0.0
* @category Seq
- * @param {...(string|string[])} [paths] The property paths of elements to pick.
+ * @param {...(string|string[])} [paths] The property paths to pick.
* @returns {Object} Returns the new `lodash` wrapper instance.
* @example
*