From 3d3907ff2709382abe6e5be0403db15ac116ed9a Mon Sep 17 00:00:00 2001 From: jdalton Date: Sun, 24 May 2015 01:42:23 -0700 Subject: [PATCH] Bump to v3.9.2. --- README.md | 4 ++-- array/difference.js | 4 ++-- array/intersection.js | 4 ++-- array/union.js | 4 ++-- array/xor.js | 2 +- collection/sample.js | 18 +++++++++++++++--- collection/shuffle.js | 21 +++++---------------- internal/arrayExtremum.js | 2 +- internal/baseIsEqual.js | 3 ++- internal/baseMatchesProperty.js | 3 +-- internal/isLaziable.js | 11 ++++++++++- lodash.js | 4 ++-- math/max.js | 5 ++++- math/min.js | 5 ++++- object/set.js | 4 ++-- package.json | 2 +- utility/matches.js | 2 +- utility/matchesProperty.js | 2 +- utility/method.js | 4 +++- utility/methodOf.js | 6 ++++-- utility/noop.js | 2 +- utility/property.js | 2 +- utility/propertyOf.js | 2 +- 23 files changed, 68 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 3ca546f63..1c8619896 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# lodash-es v3.9.0 +# lodash-es v3.9.2 The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [ES](https://people.mozilla.org/~jorendorff/es6-draft.html) modules. @@ -7,4 +7,4 @@ Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli): $ lodash modularize modern exports=es -o ./ ``` -See the [package source](https://github.com/lodash/lodash/tree/3.9.0-es) for more details. +See the [package source](https://github.com/lodash/lodash/tree/3.9.2-es) for more details. diff --git a/array/difference.js b/array/difference.js index be2e45869..727962b5a 100644 --- a/array/difference.js +++ b/array/difference.js @@ -4,8 +4,8 @@ import isArrayLike from '../internal/isArrayLike'; import restParam from '../function/restParam'; /** - * Creates an array excluding all values of the provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique `array` values not included in the other + * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static diff --git a/array/intersection.js b/array/intersection.js index 68c384989..a188aba3d 100644 --- a/array/intersection.js +++ b/array/intersection.js @@ -5,8 +5,8 @@ import isArrayLike from '../internal/isArrayLike'; import restParam from '../function/restParam'; /** - * Creates an array of unique values in all provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique values that are included in all of the provided + * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static diff --git a/array/union.js b/array/union.js index ffe601e42..d3de0dfb0 100644 --- a/array/union.js +++ b/array/union.js @@ -3,8 +3,8 @@ import baseUniq from '../internal/baseUniq'; import restParam from '../function/restParam'; /** - * Creates an array of unique values, in order, of the provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique values, in order, from all of the provided arrays + * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static diff --git a/array/xor.js b/array/xor.js index ddeb59341..41bcb91ea 100644 --- a/array/xor.js +++ b/array/xor.js @@ -3,7 +3,7 @@ import baseUniq from '../internal/baseUniq'; import isArrayLike from '../internal/isArrayLike'; /** - * Creates an array that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) * of the provided arrays. * * @static diff --git a/collection/sample.js b/collection/sample.js index 93ba9bc8d..f18dccd69 100644 --- a/collection/sample.js +++ b/collection/sample.js @@ -1,6 +1,6 @@ import baseRandom from '../internal/baseRandom'; import isIterateeCall from '../internal/isIterateeCall'; -import shuffle from './shuffle'; +import toArray from '../lang/toArray'; import toIterable from '../internal/toIterable'; /* Native method references for those with the same name as other `lodash` methods. */ @@ -30,8 +30,20 @@ function sample(collection, n, guard) { var length = collection.length; return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; } - var result = shuffle(collection); - result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); + var index = -1, + result = toArray(collection), + length = result.length, + lastIndex = length - 1; + + n = nativeMin(n < 0 ? 0 : (+n || 0), length); + while (++index < n) { + var rand = baseRandom(index, lastIndex), + value = result[rand]; + + result[rand] = result[index]; + result[index] = value; + } + result.length = n; return result; } diff --git a/collection/shuffle.js b/collection/shuffle.js index d2bd30f88..4ec9ab344 100644 --- a/collection/shuffle.js +++ b/collection/shuffle.js @@ -1,5 +1,7 @@ -import baseRandom from '../internal/baseRandom'; -import toIterable from '../internal/toIterable'; +import sample from './sample'; + +/** Used as references for `-Infinity` and `Infinity`. */ +var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; /** * Creates an array of shuffled values, using a version of the @@ -16,20 +18,7 @@ import toIterable from '../internal/toIterable'; * // => [4, 1, 3, 2] */ function shuffle(collection) { - collection = toIterable(collection); - - var index = -1, - length = collection.length, - result = Array(length); - - while (++index < length) { - var rand = baseRandom(0, index); - if (index != rand) { - result[index] = result[rand]; - } - result[rand] = collection[index]; - } - return result; + return sample(collection, POSITIVE_INFINITY); } export default shuffle; diff --git a/internal/arrayExtremum.js b/internal/arrayExtremum.js index 6a9b12628..1c77ac368 100644 --- a/internal/arrayExtremum.js +++ b/internal/arrayExtremum.js @@ -1,5 +1,5 @@ /** - * A specialized version of `baseExtremum` for arrays whichs invokes `iteratee` + * A specialized version of `baseExtremum` for arrays which invokes `iteratee` * with one argument: (value). * * @private diff --git a/internal/baseIsEqual.js b/internal/baseIsEqual.js index 8468a1e68..b594fc13f 100644 --- a/internal/baseIsEqual.js +++ b/internal/baseIsEqual.js @@ -1,5 +1,6 @@ import baseIsEqualDeep from './baseIsEqualDeep'; import isObject from '../lang/isObject'; +import isObjectLike from './isObjectLike'; /** * The base implementation of `_.isEqual` without support for `this` binding @@ -18,7 +19,7 @@ function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) { if (value === other) { return true; } - if (value == null || other == null || (!isObject(value) && !isObject(other))) { + if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { return value !== value && other !== other; } return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); diff --git a/internal/baseMatchesProperty.js b/internal/baseMatchesProperty.js index 9685d1e3f..7f423546b 100644 --- a/internal/baseMatchesProperty.js +++ b/internal/baseMatchesProperty.js @@ -9,8 +9,7 @@ import toObject from './toObject'; import toPath from './toPath'; /** - * The base implementation of `_.matchesProperty` which does not which does - * not clone `value`. + * The base implementation of `_.matchesProperty` which does not clone `srcValue`. * * @private * @param {string} path The path of the property to get. diff --git a/internal/isLaziable.js b/internal/isLaziable.js index 6a14e5f6c..952b71ee6 100644 --- a/internal/isLaziable.js +++ b/internal/isLaziable.js @@ -1,4 +1,5 @@ import LazyWrapper from './LazyWrapper'; +import getData from './getData'; import getFuncName from './getFuncName'; import lodash from '../chain/lodash'; @@ -11,7 +12,15 @@ import lodash from '../chain/lodash'; */ function isLaziable(func) { var funcName = getFuncName(func); - return !!funcName && func === lodash[funcName] && funcName in LazyWrapper.prototype; + if (!(funcName in LazyWrapper.prototype)) { + return false; + } + var other = lodash[funcName]; + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; } export default isLaziable; diff --git a/lodash.js b/lodash.js index 642a5bb83..215c3988a 100644 --- a/lodash.js +++ b/lodash.js @@ -1,6 +1,6 @@ /** * @license - * lodash 3.9.0 (Custom Build) + * lodash 3.9.2 (Custom Build) * Build: `lodash modularize modern exports="es" -o ./` * Copyright 2012-2015 The Dojo Foundation * Based on Underscore.js 1.8.3 @@ -42,7 +42,7 @@ import support from './support'; import thru from './chain/thru'; /** Used as the semantic version number. */ -var VERSION = '3.9.0'; +var VERSION = '3.9.2'; /** Used to compose bitmasks for wrapper metadata. */ var BIND_KEY_FLAG = 2; diff --git a/math/max.js b/math/max.js index 7187f0af9..b1ba1356f 100644 --- a/math/max.js +++ b/math/max.js @@ -1,6 +1,9 @@ import createExtremum from '../internal/createExtremum'; import gt from '../lang/gt'; +/** Used as references for `-Infinity` and `Infinity`. */ +var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; + /** * Gets the maximum value of `collection`. If `collection` is empty or falsey * `-Infinity` is returned. If an iteratee function is provided it is invoked @@ -48,6 +51,6 @@ import gt from '../lang/gt'; * _.max(users, 'age'); * // => { 'user': 'fred', 'age': 40 } */ -var max = createExtremum(gt, -Infinity); +var max = createExtremum(gt, NEGATIVE_INFINITY); export default max; diff --git a/math/min.js b/math/min.js index 8971ec9c3..f70d91c62 100644 --- a/math/min.js +++ b/math/min.js @@ -1,6 +1,9 @@ import createExtremum from '../internal/createExtremum'; import lt from '../lang/lt'; +/** Used as references for `-Infinity` and `Infinity`. */ +var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; + /** * Gets the minimum value of `collection`. If `collection` is empty or falsey * `Infinity` is returned. If an iteratee function is provided it is invoked @@ -48,6 +51,6 @@ import lt from '../lang/lt'; * _.min(users, 'age'); * // => { 'user': 'barney', 'age': 36 } */ -var min = createExtremum(lt, Infinity); +var min = createExtremum(lt, POSITIVE_INFINITY); export default min; diff --git a/object/set.js b/object/set.js index 953169a9c..464174a75 100644 --- a/object/set.js +++ b/object/set.js @@ -35,13 +35,13 @@ function set(object, path, value) { var index = -1, length = path.length, - endIndex = length - 1, + lastIndex = length - 1, nested = object; while (nested != null && ++index < length) { var key = path[index]; if (isObject(nested)) { - if (index == endIndex) { + if (index == lastIndex) { nested[key] = value; } else if (nested[key] == null) { nested[key] = isIndex(path[index + 1]) ? [] : {}; diff --git a/package.json b/package.json index 87a1e5ba9..49ed990eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lodash-es", - "version": "3.9.0", + "version": "3.9.2", "description": "The modern build of lodash exported as ES modules.", "homepage": "https://lodash.com/custom-builds", "license": "MIT", diff --git a/utility/matches.js b/utility/matches.js index 3f4437314..aa29d1e19 100644 --- a/utility/matches.js +++ b/utility/matches.js @@ -2,7 +2,7 @@ import baseClone from '../internal/baseClone'; import baseMatches from '../internal/baseMatches'; /** - * Creates a function which performs a deep comparison between a given object + * Creates a function that performs a deep comparison between a given object * and `source`, returning `true` if the given object has equivalent property * values, else `false`. * diff --git a/utility/matchesProperty.js b/utility/matchesProperty.js index 1c4791cf1..273d0ee6b 100644 --- a/utility/matchesProperty.js +++ b/utility/matchesProperty.js @@ -2,7 +2,7 @@ import baseClone from '../internal/baseClone'; import baseMatchesProperty from '../internal/baseMatchesProperty'; /** - * Creates a function which compares the property value of `path` on a given + * Creates a function that compares the property value of `path` on a given * object to `value`. * * **Note:** This method supports comparing arrays, booleans, `Date` objects, diff --git a/utility/method.js b/utility/method.js index 869663901..eab75386d 100644 --- a/utility/method.js +++ b/utility/method.js @@ -2,12 +2,14 @@ import invokePath from '../internal/invokePath'; import restParam from '../function/restParam'; /** - * Creates a function which invokes the method at `path` on a given object. + * Creates a function that invokes the method at `path` on a given object. + * Any additional arguments are provided to the invoked method. * * @static * @memberOf _ * @category Utility * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. * @returns {Function} Returns the new function. * @example * diff --git a/utility/methodOf.js b/utility/methodOf.js index a08d572ca..72dd94259 100644 --- a/utility/methodOf.js +++ b/utility/methodOf.js @@ -2,13 +2,15 @@ import invokePath from '../internal/invokePath'; import restParam from '../function/restParam'; /** - * The opposite of `_.method`; this method creates a function which invokes - * the method at a given path on `object`. + * The opposite of `_.method`; this method creates a function that invokes + * the method at a given path on `object`. Any additional arguments are + * provided to the invoked method. * * @static * @memberOf _ * @category Utility * @param {Object} object The object to query. + * @param {...*} [args] The arguments to invoke the method with. * @returns {Function} Returns the new function. * @example * diff --git a/utility/noop.js b/utility/noop.js index 0ca700339..8b697d7bc 100644 --- a/utility/noop.js +++ b/utility/noop.js @@ -1,5 +1,5 @@ /** - * A no-operation function which returns `undefined` regardless of the + * A no-operation function that returns `undefined` regardless of the * arguments it receives. * * @static diff --git a/utility/property.js b/utility/property.js index c0e131d3f..8ed39c41a 100644 --- a/utility/property.js +++ b/utility/property.js @@ -3,7 +3,7 @@ import basePropertyDeep from '../internal/basePropertyDeep'; import isKey from '../internal/isKey'; /** - * Creates a function which returns the property value at `path` on a + * Creates a function that returns the property value at `path` on a * given object. * * @static diff --git a/utility/propertyOf.js b/utility/propertyOf.js index 89106afa1..782c94e5a 100644 --- a/utility/propertyOf.js +++ b/utility/propertyOf.js @@ -2,7 +2,7 @@ import baseGet from '../internal/baseGet'; import toPath from '../internal/toPath'; /** - * The opposite of `_.property`; this method creates a function which returns + * The opposite of `_.property`; this method creates a function that returns * the property value at a given path on `object`. * * @static