From 8bff780a94247c5a87d90dbbce0da8135e11103e Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sun, 7 Feb 2016 23:23:22 -0800 Subject: [PATCH] Bump to v4.3.0. --- LICENSE | 33 +++++++++++++++++---------------- README.md | 4 ++-- _baseClone.js | 5 +++++ _baseDelay.js | 2 +- _baseFunctions.js | 2 +- _cloneArrayBuffer.js | 19 +++++++++++++++++++ _cloneBuffer.js | 19 ++++++++++--------- _cloneTypedArray.js | 4 ++-- _getTag.js | 24 ++++++++++++++---------- _initCloneByTag.js | 4 ++-- _isIterateeCall.js | 2 +- add.js | 3 +++ bind.js | 3 +++ bindKey.js | 3 +++ create.js | 2 +- curry.js | 3 +++ curryRight.js | 3 +++ debounce.js | 2 +- difference.js | 2 +- flow.js | 6 +++--- flowRight.js | 2 +- identity.js | 2 +- intersection.js | 4 ++-- isArrayBuffer.js | 35 +++++++++++++++++++++++++++++++++++ isBuffer.js | 42 ++++++++++++++++++++++++++++++++++++++++++ isMap.js | 27 +++++++++++++++++++++++++++ isSet.js | 27 +++++++++++++++++++++++++++ isWeakMap.js | 27 +++++++++++++++++++++++++++ isWeakSet.js | 35 +++++++++++++++++++++++++++++++++++ lang.default.js | 25 ++++++++++++++++--------- lang.js | 6 ++++++ lodash.default.js | 10 ++++++++-- lodash.js | 8 +++++++- package.json | 2 +- partial.js | 3 +++ partialRight.js | 3 +++ pull.js | 2 +- reduce.js | 2 +- subtract.js | 3 +++ template.js | 2 +- union.js | 4 ++-- uniqueId.js | 2 +- without.js | 2 +- xor.js | 2 +- 44 files changed, 347 insertions(+), 75 deletions(-) create mode 100644 _cloneArrayBuffer.js create mode 100644 isArrayBuffer.js create mode 100644 isBuffer.js create mode 100644 isMap.js create mode 100644 isSet.js create mode 100644 isWeakMap.js create mode 100644 isWeakSet.js 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 _