diff --git a/LICENSE b/LICENSE
index b054ca5a3..bcbe13d67 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,22 +1,23 @@
+The MIT License (MIT)
+
Copyright 2012-2016 The Dojo Foundation
Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index 425f0e955..402a960b6 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# lodash-es v4.2.1
+# lodash-es v4.3.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.2.1-es) for more details.
+See the [package source](https://github.com/lodash/lodash/tree/4.3.0-es) for more details.
diff --git a/_baseClone.js b/_baseClone.js
index c80942113..01a95cf1b 100644
--- a/_baseClone.js
+++ b/_baseClone.js
@@ -3,6 +3,7 @@ import arrayEach from './_arrayEach';
import assignValue from './_assignValue';
import baseAssign from './_baseAssign';
import baseForOwn from './_baseForOwn';
+import cloneBuffer from './_cloneBuffer';
import copyArray from './_copyArray';
import copySymbols from './_copySymbols';
import getTag from './_getTag';
@@ -10,6 +11,7 @@ import initCloneArray from './_initCloneArray';
import initCloneByTag from './_initCloneByTag';
import initCloneObject from './_initCloneObject';
import isArray from './isArray';
+import isBuffer from './isBuffer';
import isHostObject from './_isHostObject';
import isObject from './isObject';
@@ -91,6 +93,9 @@ function baseClone(value, isDeep, customizer, key, object, stack) {
var tag = getTag(value),
isFunc = tag == funcTag || tag == genTag;
+ if (isBuffer(value)) {
+ return cloneBuffer(value, isDeep);
+ }
if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
if (isHostObject(value)) {
return object ? value : {};
diff --git a/_baseDelay.js b/_baseDelay.js
index f674ec780..a0ca3892b 100644
--- a/_baseDelay.js
+++ b/_baseDelay.js
@@ -8,7 +8,7 @@ var FUNC_ERROR_TEXT = 'Expected a function';
* @private
* @param {Function} func The function to delay.
* @param {number} wait The number of milliseconds to delay invocation.
- * @param {Object} args The arguments provide to `func`.
+ * @param {Object} args The arguments to provide to `func`.
* @returns {number} Returns the timer id.
*/
function baseDelay(func, wait, args) {
diff --git a/_baseFunctions.js b/_baseFunctions.js
index d860b7db7..45f0be6aa 100644
--- a/_baseFunctions.js
+++ b/_baseFunctions.js
@@ -3,7 +3,7 @@ import isFunction from './isFunction';
/**
* The base implementation of `_.functions` which creates an array of
- * `object` function property names filtered from those provided.
+ * `object` function property names filtered from `props`.
*
* @private
* @param {Object} object The object to inspect.
diff --git a/_cloneArrayBuffer.js b/_cloneArrayBuffer.js
new file mode 100644
index 000000000..ad319449f
--- /dev/null
+++ b/_cloneArrayBuffer.js
@@ -0,0 +1,19 @@
+import Uint8Array from './_Uint8Array';
+
+/**
+ * Creates a clone of `arrayBuffer`.
+ *
+ * @private
+ * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
+ */
+function cloneArrayBuffer(arrayBuffer) {
+ var Ctor = arrayBuffer.constructor,
+ result = new Ctor(arrayBuffer.byteLength),
+ view = new Uint8Array(result);
+
+ view.set(new Uint8Array(arrayBuffer));
+ return result;
+}
+
+export default cloneArrayBuffer;
diff --git a/_cloneBuffer.js b/_cloneBuffer.js
index 24986f3c6..0619230af 100644
--- a/_cloneBuffer.js
+++ b/_cloneBuffer.js
@@ -1,18 +1,19 @@
-import Uint8Array from './_Uint8Array';
-
/**
- * Creates a clone of `buffer`.
+ * Creates a clone of `buffer`.
*
* @private
- * @param {ArrayBuffer} buffer The array buffer to clone.
- * @returns {ArrayBuffer} Returns the cloned array buffer.
+ * @param {Buffer} buffer The buffer to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Buffer} Returns the cloned buffer.
*/
-function cloneBuffer(buffer) {
+function cloneBuffer(buffer, isDeep) {
+ if (isDeep) {
+ return buffer.slice();
+ }
var Ctor = buffer.constructor,
- result = new Ctor(buffer.byteLength),
- view = new Uint8Array(result);
+ result = new Ctor(buffer.length);
- view.set(new Uint8Array(buffer));
+ buffer.copy(result);
return result;
}
diff --git a/_cloneTypedArray.js b/_cloneTypedArray.js
index ae15df170..2fe9d7d6b 100644
--- a/_cloneTypedArray.js
+++ b/_cloneTypedArray.js
@@ -1,4 +1,4 @@
-import cloneBuffer from './_cloneBuffer';
+import cloneArrayBuffer from './_cloneArrayBuffer';
/**
* Creates a clone of `typedArray`.
@@ -12,7 +12,7 @@ function cloneTypedArray(typedArray, isDeep) {
var buffer = typedArray.buffer,
Ctor = typedArray.constructor;
- return new Ctor(isDeep ? cloneBuffer(buffer) : buffer, typedArray.byteOffset, typedArray.length);
+ return new Ctor(isDeep ? cloneArrayBuffer(buffer) : buffer, typedArray.byteOffset, typedArray.length);
}
export default cloneTypedArray;
diff --git a/_getTag.js b/_getTag.js
index 0b756c767..c4c7e8bd0 100644
--- a/_getTag.js
+++ b/_getTag.js
@@ -1,10 +1,12 @@
import Map from './_Map';
import Set from './_Set';
+import WeakMap from './_WeakMap';
/** `Object#toString` result references. */
var mapTag = '[object Map]',
objectTag = '[object Object]',
- setTag = '[object Set]';
+ setTag = '[object Set]',
+ weakMapTag = '[object WeakMap]';
/** Used for built-in method references. */
var objectProto = Object.prototype;
@@ -18,9 +20,10 @@ var funcToString = Function.prototype.toString;
*/
var objectToString = objectProto.toString;
-/** Used to detect maps and sets. */
+/** Used to detect maps, sets, and weakmaps. */
var mapCtorString = Map ? funcToString.call(Map) : '',
- setCtorString = Set ? funcToString.call(Set) : '';
+ setCtorString = Set ? funcToString.call(Set) : '',
+ weakMapCtorString = WeakMap ? funcToString.call(WeakMap) : '';
/**
* Gets the `toStringTag` of `value`.
@@ -33,19 +36,20 @@ function getTag(value) {
return objectToString.call(value);
}
-// Fallback for IE 11 providing `toStringTag` values for maps and sets.
-if ((Map && getTag(new Map) != mapTag) || (Set && getTag(new Set) != setTag)) {
+// Fallback for IE 11 providing `toStringTag` values for maps, sets, and weakmaps.
+if ((Map && getTag(new Map) != mapTag) ||
+ (Set && getTag(new Set) != setTag) ||
+ (WeakMap && getTag(new WeakMap) != weakMapTag)) {
getTag = function(value) {
var result = objectToString.call(value),
Ctor = result == objectTag ? value.constructor : null,
ctorString = typeof Ctor == 'function' ? funcToString.call(Ctor) : '';
if (ctorString) {
- if (ctorString == mapCtorString) {
- return mapTag;
- }
- if (ctorString == setCtorString) {
- return setTag;
+ switch (ctorString) {
+ case mapCtorString: return mapTag;
+ case setCtorString: return setTag;
+ case weakMapCtorString: return weakMapTag;
}
}
return result;
diff --git a/_initCloneByTag.js b/_initCloneByTag.js
index b46b625bb..0d4ea096f 100644
--- a/_initCloneByTag.js
+++ b/_initCloneByTag.js
@@ -1,4 +1,4 @@
-import cloneBuffer from './_cloneBuffer';
+import cloneArrayBuffer from './_cloneArrayBuffer';
import cloneMap from './_cloneMap';
import cloneRegExp from './_cloneRegExp';
import cloneSet from './_cloneSet';
@@ -42,7 +42,7 @@ function initCloneByTag(object, tag, isDeep) {
var Ctor = object.constructor;
switch (tag) {
case arrayBufferTag:
- return cloneBuffer(object);
+ return cloneArrayBuffer(object);
case boolTag:
case dateTag:
diff --git a/_isIterateeCall.js b/_isIterateeCall.js
index d8174b1da..23ff37d33 100644
--- a/_isIterateeCall.js
+++ b/_isIterateeCall.js
@@ -4,7 +4,7 @@ import isIndex from './_isIndex';
import isObject from './isObject';
/**
- * Checks if the provided arguments are from an iteratee call.
+ * Checks if the given arguments are from an iteratee call.
*
* @private
* @param {*} value The potential iteratee value argument.
diff --git a/add.js b/add.js
index 2a6fcb142..efa6e37e0 100644
--- a/add.js
+++ b/add.js
@@ -14,6 +14,9 @@
*/
function add(augend, addend) {
var result;
+ if (augend === undefined && addend === undefined) {
+ return 0;
+ }
if (augend !== undefined) {
result = augend;
}
diff --git a/bind.js b/bind.js
index 961641f18..350ff3d54 100644
--- a/bind.js
+++ b/bind.js
@@ -52,4 +52,7 @@ var bind = rest(function(func, thisArg, partials) {
return createWrapper(func, bitmask, thisArg, partials, holders);
});
+// Assign default placeholders.
+bind.placeholder = {};
+
export default bind;
diff --git a/bindKey.js b/bindKey.js
index efd2c1262..c0bfd695c 100644
--- a/bindKey.js
+++ b/bindKey.js
@@ -62,4 +62,7 @@ var bindKey = rest(function(object, key, partials) {
return createWrapper(key, bitmask, object, partials, holders);
});
+// Assign default placeholders.
+bindKey.placeholder = {};
+
export default bindKey;
diff --git a/create.js b/create.js
index 8cca55c2a..77f0530b0 100644
--- a/create.js
+++ b/create.js
@@ -3,7 +3,7 @@ import baseCreate from './_baseCreate';
/**
* Creates an object that inherits from the `prototype` object. If a `properties`
- * object is provided its own enumerable properties are assigned to the created object.
+ * object is given its own enumerable properties are assigned to the created object.
*
* @static
* @memberOf _
diff --git a/curry.js b/curry.js
index 4c0b97919..ce0137167 100644
--- a/curry.js
+++ b/curry.js
@@ -50,4 +50,7 @@ function curry(func, arity, guard) {
return result;
}
+// Assign default placeholders.
+curry.placeholder = {};
+
export default curry;
diff --git a/curryRight.js b/curryRight.js
index 32c5be3cd..350b84a26 100644
--- a/curryRight.js
+++ b/curryRight.js
@@ -47,4 +47,7 @@ function curryRight(func, arity, guard) {
return result;
}
+// Assign default placeholders.
+curryRight.placeholder = {};
+
export default curryRight;
diff --git a/debounce.js b/debounce.js
index 96e1787c4..539776d31 100644
--- a/debounce.js
+++ b/debounce.js
@@ -135,7 +135,7 @@ function debounce(func, wait, options) {
if (maxWait === false) {
var leadingCall = leading && !timeoutId;
} else {
- if (!maxTimeoutId && !leading) {
+ if (!lastCalled && !maxTimeoutId && !leading) {
lastCalled = stamp;
}
var remaining = maxWait - (stamp - lastCalled),
diff --git a/difference.js b/difference.js
index 111d5adc2..8691b4494 100644
--- a/difference.js
+++ b/difference.js
@@ -5,7 +5,7 @@ import rest from './rest';
/**
* Creates an array of unique `array` values not included in the other
- * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * given arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
* for equality comparisons.
*
* @static
diff --git a/flow.js b/flow.js
index 865a0feff..3a384b447 100644
--- a/flow.js
+++ b/flow.js
@@ -1,9 +1,9 @@
import createFlow from './_createFlow';
/**
- * Creates a function that returns the result of invoking the provided
- * functions with the `this` binding of the created function, where each
- * successive invocation is supplied the return value of the previous.
+ * Creates a function that returns the result of invoking the given functions
+ * with the `this` binding of the created function, where each successive
+ * invocation is supplied the return value of the previous.
*
* @static
* @memberOf _
diff --git a/flowRight.js b/flowRight.js
index fe6b55bb1..23908eaba 100644
--- a/flowRight.js
+++ b/flowRight.js
@@ -2,7 +2,7 @@ import createFlow from './_createFlow';
/**
* This method is like `_.flow` except that it creates a function that
- * invokes the provided functions from right to left.
+ * invokes the given functions from right to left.
*
* @static
* @memberOf _
diff --git a/identity.js b/identity.js
index c6101d9d7..61a4e448d 100644
--- a/identity.js
+++ b/identity.js
@@ -1,5 +1,5 @@
/**
- * This method returns the first argument provided to it.
+ * This method returns the first argument given to it.
*
* @static
* @memberOf _
diff --git a/intersection.js b/intersection.js
index 8d03b3195..4de5a206e 100644
--- a/intersection.js
+++ b/intersection.js
@@ -4,8 +4,8 @@ import rest from './rest';
import toArrayLikeObject from './_toArrayLikeObject';
/**
- * Creates an array of unique values that are included in all of the provided
- * arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * Creates an array of unique values that are included in all given arrays
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
* for equality comparisons.
*
* @static
diff --git a/isArrayBuffer.js b/isArrayBuffer.js
new file mode 100644
index 000000000..4bbfe8e4f
--- /dev/null
+++ b/isArrayBuffer.js
@@ -0,0 +1,35 @@
+import isObjectLike from './isObjectLike';
+
+var arrayBufferTag = '[object ArrayBuffer]';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/**
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/**
+ * Checks if `value` is classified as an `ArrayBuffer` object.
+ *
+ * @static
+ * @memberOf _
+ * @type Function
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isArrayBuffer(new ArrayBuffer(2));
+ * // => true
+ *
+ * _.isArrayBuffer(new Array(2));
+ * // => false
+ */
+function isArrayBuffer(value) {
+ return isObjectLike(value) && objectToString.call(value) == arrayBufferTag;
+}
+
+export default isArrayBuffer;
diff --git a/isBuffer.js b/isBuffer.js
new file mode 100644
index 000000000..d092a94f2
--- /dev/null
+++ b/isBuffer.js
@@ -0,0 +1,42 @@
+import constant from './constant';
+import root from './_root';
+
+/** Used to determine if values are of the language type `Object`. */
+var objectTypes = {
+ 'function': true,
+ 'object': true
+};
+
+/** Detect free variable `exports`. */
+var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) ? exports : null;
+
+/** Detect free variable `module`. */
+var freeModule = (objectTypes[typeof module] && module && !module.nodeType) ? module : null;
+
+/** Detect the popular CommonJS extension `module.exports`. */
+var moduleExports = (freeModule && freeModule.exports === freeExports) ? freeExports : null;
+
+/** Built-in value references. */
+var Buffer = moduleExports ? root.Buffer : undefined;
+
+/**
+ * Checks if `value` is a buffer.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
+ * @example
+ *
+ * _.isBuffer(new Buffer(2));
+ * // => true
+ *
+ * _.isBuffer(new Uint8Array(2));
+ * // => false
+ */
+var isBuffer = !Buffer ? constant(false) : function(value) {
+ return value instanceof Buffer;
+};
+
+export default isBuffer;
diff --git a/isMap.js b/isMap.js
new file mode 100644
index 000000000..7c4a6bae4
--- /dev/null
+++ b/isMap.js
@@ -0,0 +1,27 @@
+import getTag from './_getTag';
+import isObjectLike from './isObjectLike';
+
+/** `Object#toString` result references. */
+var mapTag = '[object Map]';
+
+/**
+ * Checks if `value` is classified as a `Map` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isMap(new Map);
+ * // => true
+ *
+ * _.isMap(new WeakMap);
+ * // => false
+ */
+function isMap(value) {
+ return isObjectLike(value) && getTag(value) == mapTag;
+}
+
+export default isMap;
diff --git a/isSet.js b/isSet.js
new file mode 100644
index 000000000..0e7032f10
--- /dev/null
+++ b/isSet.js
@@ -0,0 +1,27 @@
+import getTag from './_getTag';
+import isObjectLike from './isObjectLike';
+
+/** `Object#toString` result references. */
+var setTag = '[object Set]';
+
+/**
+ * Checks if `value` is classified as a `Set` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isSet(new Set);
+ * // => true
+ *
+ * _.isSet(new WeakSet);
+ * // => false
+ */
+function isSet(value) {
+ return isObjectLike(value) && getTag(value) == setTag;
+}
+
+export default isSet;
diff --git a/isWeakMap.js b/isWeakMap.js
new file mode 100644
index 000000000..f7d92a3c2
--- /dev/null
+++ b/isWeakMap.js
@@ -0,0 +1,27 @@
+import getTag from './_getTag';
+import isObjectLike from './isObjectLike';
+
+/** `Object#toString` result references. */
+var weakMapTag = '[object WeakMap]';
+
+/**
+ * Checks if `value` is classified as a `WeakMap` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isWeakMap(new WeakMap);
+ * // => true
+ *
+ * _.isWeakMap(new Map);
+ * // => false
+ */
+function isWeakMap(value) {
+ return isObjectLike(value) && getTag(value) == weakMapTag;
+}
+
+export default isWeakMap;
diff --git a/isWeakSet.js b/isWeakSet.js
new file mode 100644
index 000000000..9567f6b64
--- /dev/null
+++ b/isWeakSet.js
@@ -0,0 +1,35 @@
+import isObjectLike from './isObjectLike';
+
+/** `Object#toString` result references. */
+var weakSetTag = '[object WeakSet]';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/**
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/**
+ * Checks if `value` is classified as a `WeakSet` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isWeakSet(new WeakSet);
+ * // => true
+ *
+ * _.isWeakSet(new Set);
+ * // => false
+ */
+function isWeakSet(value) {
+ return isObjectLike(value) && objectToString.call(value) == weakSetTag;
+}
+
+export default isWeakSet;
diff --git a/lang.default.js b/lang.default.js
index b72c6c85b..b76e7b81e 100644
--- a/lang.default.js
+++ b/lang.default.js
@@ -7,9 +7,11 @@ import gt from './gt';
import gte from './gte';
import isArguments from './isArguments';
import isArray from './isArray';
+import isArrayBuffer from './isArrayBuffer';
import isArrayLike from './isArrayLike';
import isArrayLikeObject from './isArrayLikeObject';
import isBoolean from './isBoolean';
+import isBuffer from './isBuffer';
import isDate from './isDate';
import isElement from './isElement';
import isEmpty from './isEmpty';
@@ -20,6 +22,7 @@ import isFinite from './isFinite';
import isFunction from './isFunction';
import isInteger from './isInteger';
import isLength from './isLength';
+import isMap from './isMap';
import isMatch from './isMatch';
import isMatchWith from './isMatchWith';
import isNaN from './isNaN';
@@ -32,10 +35,13 @@ import isObjectLike from './isObjectLike';
import isPlainObject from './isPlainObject';
import isRegExp from './isRegExp';
import isSafeInteger from './isSafeInteger';
+import isSet from './isSet';
import isString from './isString';
import isSymbol from './isSymbol';
import isTypedArray from './isTypedArray';
import isUndefined from './isUndefined';
+import isWeakMap from './isWeakMap';
+import isWeakSet from './isWeakSet';
import lt from './lt';
import lte from './lte';
import toArray from './toArray';
@@ -48,13 +54,14 @@ import toString from './toString';
export default {
clone, cloneDeep, cloneDeepWith, cloneWith, eq,
- gt, gte, isArguments, isArray, isArrayLike,
- isArrayLikeObject, isBoolean, isDate, isElement, isEmpty,
- isEqual, isEqualWith, isError, isFinite, isFunction,
- isInteger, isLength, isMatch, isMatchWith, isNaN,
- isNative, isNil, isNull, isNumber, isObject,
- isObjectLike, isPlainObject, isRegExp, isSafeInteger, isString,
- isSymbol, isTypedArray, isUndefined, lt, lte,
- toArray, toInteger, toLength, toNumber, toPlainObject,
- toSafeInteger, toString
+ gt, gte, isArguments, isArray, isArrayBuffer,
+ isArrayLike, isArrayLikeObject, isBoolean, isBuffer, isDate,
+ isElement, isEmpty, isEqual, isEqualWith, isError,
+ isFinite, isFunction, isInteger, isLength, isMap,
+ isMatch, isMatchWith, isNaN, isNative, isNil,
+ isNull, isNumber, isObject, isObjectLike, isPlainObject,
+ isRegExp, isSafeInteger, isSet, isString, isSymbol,
+ isTypedArray, isUndefined, isWeakMap, isWeakSet, lt,
+ lte, toArray, toInteger, toLength, toNumber,
+ toPlainObject, toSafeInteger, toString
};
diff --git a/lang.js b/lang.js
index 5295b18d0..2fb3db6d9 100644
--- a/lang.js
+++ b/lang.js
@@ -7,9 +7,11 @@ export { default as gt } from './gt';
export { default as gte } from './gte';
export { default as isArguments } from './isArguments';
export { default as isArray } from './isArray';
+export { default as isArrayBuffer } from './isArrayBuffer';
export { default as isArrayLike } from './isArrayLike';
export { default as isArrayLikeObject } from './isArrayLikeObject';
export { default as isBoolean } from './isBoolean';
+export { default as isBuffer } from './isBuffer';
export { default as isDate } from './isDate';
export { default as isElement } from './isElement';
export { default as isEmpty } from './isEmpty';
@@ -20,6 +22,7 @@ export { default as isFinite } from './isFinite';
export { default as isFunction } from './isFunction';
export { default as isInteger } from './isInteger';
export { default as isLength } from './isLength';
+export { default as isMap } from './isMap';
export { default as isMatch } from './isMatch';
export { default as isMatchWith } from './isMatchWith';
export { default as isNaN } from './isNaN';
@@ -32,10 +35,13 @@ export { default as isObjectLike } from './isObjectLike';
export { default as isPlainObject } from './isPlainObject';
export { default as isRegExp } from './isRegExp';
export { default as isSafeInteger } from './isSafeInteger';
+export { default as isSet } from './isSet';
export { default as isString } from './isString';
export { default as isSymbol } from './isSymbol';
export { default as isTypedArray } from './isTypedArray';
export { default as isUndefined } from './isUndefined';
+export { default as isWeakMap } from './isWeakMap';
+export { default as isWeakSet } from './isWeakSet';
export { default as lt } from './lt';
export { default as lte } from './lte';
export { default as toArray } from './toArray';
diff --git a/lodash.default.js b/lodash.default.js
index 272dc66eb..a8ca95744 100644
--- a/lodash.default.js
+++ b/lodash.default.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash 4.2.1 (Custom Build)
+ * lodash 4.3.0 (Custom Build)
* Build: `lodash modularize exports="es" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -44,7 +44,7 @@ import toInteger from './toInteger';
import lodash from './wrapperLodash';
/** Used as the semantic version number. */
-var VERSION = '4.2.1';
+var VERSION = '4.3.0';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_KEY_FLAG = 2;
@@ -282,9 +282,11 @@ lodash.inRange = number.inRange;
lodash.invoke = object.invoke;
lodash.isArguments = lang.isArguments;
lodash.isArray = isArray;
+lodash.isArrayBuffer = lang.isArrayBuffer;
lodash.isArrayLike = lang.isArrayLike;
lodash.isArrayLikeObject = lang.isArrayLikeObject;
lodash.isBoolean = lang.isBoolean;
+lodash.isBuffer = lang.isBuffer;
lodash.isDate = lang.isDate;
lodash.isElement = lang.isElement;
lodash.isEmpty = lang.isEmpty;
@@ -295,6 +297,7 @@ lodash.isFinite = lang.isFinite;
lodash.isFunction = lang.isFunction;
lodash.isInteger = lang.isInteger;
lodash.isLength = lang.isLength;
+lodash.isMap = lang.isMap;
lodash.isMatch = lang.isMatch;
lodash.isMatchWith = lang.isMatchWith;
lodash.isNaN = lang.isNaN;
@@ -307,10 +310,13 @@ lodash.isObjectLike = lang.isObjectLike;
lodash.isPlainObject = lang.isPlainObject;
lodash.isRegExp = lang.isRegExp;
lodash.isSafeInteger = lang.isSafeInteger;
+lodash.isSet = lang.isSet;
lodash.isString = lang.isString;
lodash.isSymbol = lang.isSymbol;
lodash.isTypedArray = lang.isTypedArray;
lodash.isUndefined = lang.isUndefined;
+lodash.isWeakMap = lang.isWeakMap;
+lodash.isWeakSet = lang.isWeakSet;
lodash.join = array.join;
lodash.kebabCase = string.kebabCase;
lodash.last = last;
diff --git a/lodash.js b/lodash.js
index fd9ffafc8..36ead17df 100644
--- a/lodash.js
+++ b/lodash.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash 4.2.1 (Custom Build)
+ * lodash 4.3.0 (Custom Build)
* Build: `lodash modularize exports="es" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -107,9 +107,11 @@ export { default as invoke } from './invoke';
export { default as invokeMap } from './invokeMap';
export { default as isArguments } from './isArguments';
export { default as isArray } from './isArray';
+export { default as isArrayBuffer } from './isArrayBuffer';
export { default as isArrayLike } from './isArrayLike';
export { default as isArrayLikeObject } from './isArrayLikeObject';
export { default as isBoolean } from './isBoolean';
+export { default as isBuffer } from './isBuffer';
export { default as isDate } from './isDate';
export { default as isElement } from './isElement';
export { default as isEmpty } from './isEmpty';
@@ -120,6 +122,7 @@ export { default as isFinite } from './isFinite';
export { default as isFunction } from './isFunction';
export { default as isInteger } from './isInteger';
export { default as isLength } from './isLength';
+export { default as isMap } from './isMap';
export { default as isMatch } from './isMatch';
export { default as isMatchWith } from './isMatchWith';
export { default as isNaN } from './isNaN';
@@ -132,10 +135,13 @@ export { default as isObjectLike } from './isObjectLike';
export { default as isPlainObject } from './isPlainObject';
export { default as isRegExp } from './isRegExp';
export { default as isSafeInteger } from './isSafeInteger';
+export { default as isSet } from './isSet';
export { default as isString } from './isString';
export { default as isSymbol } from './isSymbol';
export { default as isTypedArray } from './isTypedArray';
export { default as isUndefined } from './isUndefined';
+export { default as isWeakMap } from './isWeakMap';
+export { default as isWeakSet } from './isWeakSet';
export { default as iteratee } from './iteratee';
export { default as join } from './join';
export { default as kebabCase } from './kebabCase';
diff --git a/package.json b/package.json
index e283a8b38..a1baa7ff8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lodash-es",
- "version": "4.2.1",
+ "version": "4.3.0",
"description": "Lodash exported as ES modules.",
"homepage": "https://lodash.com/custom-builds",
"license": "MIT",
diff --git a/partial.js b/partial.js
index c41ca450f..1fcbf12b5 100644
--- a/partial.js
+++ b/partial.js
@@ -44,4 +44,7 @@ var partial = rest(function(func, partials) {
return createWrapper(func, PARTIAL_FLAG, undefined, partials, holders);
});
+// Assign default placeholders.
+partial.placeholder = {};
+
export default partial;
diff --git a/partialRight.js b/partialRight.js
index 8eb9786b9..d1c0b1295 100644
--- a/partialRight.js
+++ b/partialRight.js
@@ -43,4 +43,7 @@ var partialRight = rest(function(func, partials) {
return createWrapper(func, PARTIAL_RIGHT_FLAG, undefined, partials, holders);
});
+// Assign default placeholders.
+partialRight.placeholder = {};
+
export default partialRight;
diff --git a/pull.js b/pull.js
index 7cf423453..d8adc2b88 100644
--- a/pull.js
+++ b/pull.js
@@ -2,7 +2,7 @@ import pullAll from './pullAll';
import rest from './rest';
/**
- * Removes all provided values from `array` using
+ * Removes all given values from `array` using
* [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
* for equality comparisons.
*
diff --git a/reduce.js b/reduce.js
index 84f30363c..30d6c7fa0 100644
--- a/reduce.js
+++ b/reduce.js
@@ -8,7 +8,7 @@ import isArray from './isArray';
* Reduces `collection` to a value which is the accumulated result of running
* each element in `collection` through `iteratee`, where each successive
* invocation is supplied the return value of the previous. If `accumulator`
- * is not provided the first element of `collection` is used as the initial
+ * is not given the first element of `collection` is used as the initial
* value. The iteratee is invoked with four arguments:
* (accumulator, value, index|key, collection).
*
diff --git a/subtract.js b/subtract.js
index 1ed16fdcd..deff9970c 100644
--- a/subtract.js
+++ b/subtract.js
@@ -14,6 +14,9 @@
*/
function subtract(minuend, subtrahend) {
var result;
+ if (minuend === undefined && subtrahend === undefined) {
+ return 0;
+ }
if (minuend !== undefined) {
result = minuend;
}
diff --git a/template.js b/template.js
index a15aeb21e..2bc780322 100644
--- a/template.js
+++ b/template.js
@@ -29,7 +29,7 @@ var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
* in "interpolate" delimiters, HTML-escape interpolated data properties in
* "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
* properties may be accessed as free variables in the template. If a setting
- * object is provided it takes precedence over `_.templateSettings` values.
+ * object is given it takes precedence over `_.templateSettings` values.
*
* **Note:** In the development build `_.template` utilizes
* [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
diff --git a/union.js b/union.js
index 69083f383..6d7a7ed84 100644
--- a/union.js
+++ b/union.js
@@ -3,8 +3,8 @@ import baseUniq from './_baseUniq';
import rest from './rest';
/**
- * Creates an array of unique values, in order, from all of the provided arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
+ * Creates an array of unique values, in order, from all given arrays using
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
* for equality comparisons.
*
* @static
diff --git a/uniqueId.js b/uniqueId.js
index e416f971b..71fd2cfe4 100644
--- a/uniqueId.js
+++ b/uniqueId.js
@@ -4,7 +4,7 @@ import toString from './toString';
var idCounter = 0;
/**
- * Generates a unique ID. If `prefix` is provided the ID is appended to it.
+ * Generates a unique ID. If `prefix` is given the ID is appended to it.
*
* @static
* @memberOf _
diff --git a/without.js b/without.js
index 8ec326c06..d59a29989 100644
--- a/without.js
+++ b/without.js
@@ -3,7 +3,7 @@ import isArrayLikeObject from './isArrayLikeObject';
import rest from './rest';
/**
- * Creates an array excluding all provided values using
+ * Creates an array excluding all given values using
* [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
* for equality comparisons.
*
diff --git a/xor.js b/xor.js
index aa1bb692e..0a5b97458 100644
--- a/xor.js
+++ b/xor.js
@@ -5,7 +5,7 @@ import rest from './rest';
/**
* Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
- * of the provided arrays.
+ * of the given arrays.
*
* @static
* @memberOf _