Compare commits

...

1 Commits

Author SHA1 Message Date
jdalton
ee1f12c851 Bump to v3.5.0. 2015-03-08 18:09:08 -07:00
29 changed files with 117 additions and 71 deletions

View File

@@ -1,4 +1,4 @@
# lodash-es v3.4.0 # lodash-es v3.5.0
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. 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 ./ $ lodash modularize modern exports=es -o ./
``` ```
See the [package source](https://github.com/lodash/lodash/tree/3.4.0-es) for more details. See the [package source](https://github.com/lodash/lodash/tree/3.5.0-es) for more details.

View File

@@ -47,7 +47,10 @@ function indexOf(array, value, fromIndex) {
var index = binaryIndex(array, value), var index = binaryIndex(array, value),
other = array[index]; other = array[index];
return (value === value ? value === other : other !== other) ? index : -1; if (value === value ? (value === other) : (other !== other)) {
return index;
}
return -1;
} }
return baseIndexOf(array, value, fromIndex || 0); return baseIndexOf(array, value, fromIndex || 0);
} }

View File

@@ -41,7 +41,10 @@ function lastIndexOf(array, value, fromIndex) {
} else if (fromIndex) { } else if (fromIndex) {
index = binaryIndex(array, value, true) - 1; index = binaryIndex(array, value, true) - 1;
var other = array[index]; var other = array[index];
return (value === value ? value === other : other !== other) ? index : -1; if (value === value ? (value === other) : (other !== other)) {
return index;
}
return -1;
} }
if (value !== value) { if (value !== value) {
return indexOfNaN(array, index, true); return indexOfNaN(array, index, true);

View File

@@ -27,9 +27,14 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* Chaining is supported in custom builds as long as the `_#value` method is * Chaining is supported in custom builds as long as the `_#value` method is
* directly or indirectly included in the build. * directly or indirectly included in the build.
* *
* In addition to lodash methods, wrappers also have the following `Array` methods: * In addition to lodash methods, wrappers have `Array` and `String` methods.
* `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`, *
* and `unshift` * The wrapper `Array` methods are:
* `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,
* `splice`, and `unshift`
*
* The wrapper `String` methods are:
* `replace` and `split`
* *
* The wrapper methods that support shortcut fusion are: * The wrapper methods that support shortcut fusion are:
* `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,

View File

@@ -14,13 +14,14 @@ import isIterateeCall from '../internal/isIterateeCall';
* @param {Array|Object|string} collection The collection to iterate over. * @param {Array|Object|string} collection The collection to iterate over.
* @param {string[]} props The property names to sort by. * @param {string[]} props The property names to sort by.
* @param {boolean[]} orders The sort orders of `props`. * @param {boolean[]} orders The sort orders of `props`.
* @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
* @returns {Array} Returns the new sorted array. * @returns {Array} Returns the new sorted array.
* @example * @example
* *
* var users = [ * var users = [
* { 'user': 'barney', 'age': 36 },
* { 'user': 'fred', 'age': 40 },
* { 'user': 'barney', 'age': 26 }, * { 'user': 'barney', 'age': 26 },
* { 'user': 'fred', 'age': 40 },
* { 'user': 'barney', 'age': 36 },
* { 'user': 'fred', 'age': 30 } * { 'user': 'fred', 'age': 30 }
* ]; * ];
* *

View File

@@ -24,7 +24,7 @@ function baseAssign(object, source, customizer) {
value = object[key], value = object[key],
result = customizer(value, source[key], key, object, source); result = customizer(value, source[key], key, object, source);
if ((result === result ? result !== value : value === value) || if ((result === result ? (result !== value) : (value === value)) ||
(typeof value == 'undefined' && !(key in object))) { (typeof value == 'undefined' && !(key in object))) {
object[key] = result; object[key] = result;
} }

View File

@@ -19,7 +19,7 @@ function baseFill(array, value, start, end) {
if (end < 0) { if (end < 0) {
end += length; end += length;
} }
length = start > end ? 0 : end >>> 0; length = start > end ? 0 : (end >>> 0);
start >>>= 0; start >>>= 0;
while (start < length) { while (start < length) {

View File

@@ -38,7 +38,7 @@ function baseMerge(object, source, customizer, stackA, stackB) {
result = srcValue; result = srcValue;
} }
if ((isSrcArr || typeof result != 'undefined') && if ((isSrcArr || typeof result != 'undefined') &&
(isCommon || (result === result ? result !== value : value === value))) { (isCommon || (result === result ? (result !== value) : (value === value)))) {
object[key] = result; object[key] = result;
} }
}); });

View File

@@ -59,7 +59,7 @@ function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stack
if (isCommon) { if (isCommon) {
// Recursively merge objects and arrays (susceptible to call stack limits). // Recursively merge objects and arrays (susceptible to call stack limits).
object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);
} else if (result === result ? result !== value : value === value) { } else if (result === result ? (result !== value) : (value === value)) {
object[key] = result; object[key] = result;
} }
} }

View File

@@ -19,7 +19,7 @@ function baseSlice(array, start, end) {
if (end < 0) { if (end < 0) {
end += length; end += length;
} }
length = start > end ? 0 : (end - start) >>> 0; length = start > end ? 0 : ((end - start) >>> 0);
start >>>= 0; start >>>= 0;
var result = Array(length); var result = Array(length);

View File

@@ -26,9 +26,8 @@ function compareMultiple(object, other, orders) {
if (result) { if (result) {
if (index >= ordersLength) { if (index >= ordersLength) {
return result; return result;
} else {
return orders[index] ? result : result * -1;
} }
return result * (orders[index] ? 1 : -1);
} }
} }
// Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications

View File

@@ -1,4 +1,5 @@
import createCtorWrapper from './createCtorWrapper'; import createCtorWrapper from './createCtorWrapper';
import root from './root';
/** /**
* Creates a function that wraps `func` and invokes it with the `this` * Creates a function that wraps `func` and invokes it with the `this`
@@ -13,7 +14,8 @@ function createBindWrapper(func, thisArg) {
var Ctor = createCtorWrapper(func); var Ctor = createCtorWrapper(func);
function wrapper() { function wrapper() {
return (this instanceof wrapper ? Ctor : func).apply(thisArg, arguments); var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
return fn.apply(thisArg, arguments);
} }
return wrapper; return wrapper;
} }

View File

@@ -12,7 +12,7 @@ function createComposer(fromRight) {
return function() { return function() {
var length = arguments.length, var length = arguments.length,
index = length, index = length,
fromIndex = fromRight ? length - 1 : 0; fromIndex = fromRight ? (length - 1) : 0;
if (!length) { if (!length) {
return function() { return arguments[0]; }; return function() { return arguments[0]; };

View File

@@ -4,6 +4,7 @@ import composeArgsRight from './composeArgsRight';
import createCtorWrapper from './createCtorWrapper'; import createCtorWrapper from './createCtorWrapper';
import reorder from './reorder'; import reorder from './reorder';
import replaceHolders from './replaceHolders'; import replaceHolders from './replaceHolders';
import root from './root';
/** Used to compose bitmasks for wrapper metadata. */ /** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1, var BIND_FLAG = 1,
@@ -96,7 +97,8 @@ function createHybridWrapper(func, bitmask, thisArg, partials, holders, partials
if (isAry && ary < args.length) { if (isAry && ary < args.length) {
args.length = ary; args.length = ary;
} }
return (this instanceof wrapper ? (Ctor || createCtorWrapper(func)) : func).apply(thisBinding, args); var fn = (this && this !== root && this instanceof wrapper) ? (Ctor || createCtorWrapper(func)) : func;
return fn.apply(thisBinding, args);
} }
return wrapper; return wrapper;
} }

View File

@@ -1,4 +1,5 @@
import createCtorWrapper from './createCtorWrapper'; import createCtorWrapper from './createCtorWrapper';
import root from './root';
/** Used to compose bitmasks for wrapper metadata. */ /** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1; var BIND_FLAG = 1;
@@ -34,7 +35,8 @@ function createPartialWrapper(func, bitmask, thisArg, partials) {
while (argsLength--) { while (argsLength--) {
args[leftIndex++] = arguments[++argsIndex]; args[leftIndex++] = arguments[++argsIndex];
} }
return (this instanceof wrapper ? Ctor : func).apply(isBind ? thisArg : this, args); var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
return fn.apply(isBind ? thisArg : this, args);
} }
return wrapper; return wrapper;
} }

View File

@@ -61,8 +61,10 @@ function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, sta
othCtor = other.constructor; othCtor = other.constructor;
// Non `Object` object instances with different constructors are not equal. // Non `Object` object instances with different constructors are not equal.
if (objCtor != othCtor && ('constructor' in object && 'constructor' in other) && if (objCtor != othCtor &&
!(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) { ('constructor' in object && 'constructor' in other) &&
!(typeof objCtor == 'function' && objCtor instanceof objCtor &&
typeof othCtor == 'function' && othCtor instanceof othCtor)) {
return false; return false;
} }
} }

View File

@@ -23,7 +23,8 @@ function extremumBy(collection, iteratee, isMin) {
baseEach(collection, function(value, index, collection) { baseEach(collection, function(value, index, collection) {
var current = iteratee(value, index, collection); var current = iteratee(value, index, collection);
if ((isMin ? current < computed : current > computed) || (current === exValue && current === result)) { if ((isMin ? (current < computed) : (current > computed)) ||
(current === exValue && current === result)) {
computed = current; computed = current;
result = value; result = value;
} }

View File

@@ -24,7 +24,7 @@ function isIterateeCall(value, index, object) {
} }
if (prereq) { if (prereq) {
var other = object[index]; var other = object[index];
return value === value ? value === other : other !== other; return value === value ? (value === other) : (other !== other);
} }
return false; return false;
} }

View File

@@ -17,7 +17,6 @@ function lazyClone() {
result.__actions__ = actions ? arrayCopy(actions) : null; result.__actions__ = actions ? arrayCopy(actions) : null;
result.__dir__ = this.__dir__; result.__dir__ = this.__dir__;
result.__dropCount__ = this.__dropCount__;
result.__filtered__ = this.__filtered__; result.__filtered__ = this.__filtered__;
result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null; result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null;
result.__takeCount__ = this.__takeCount__; result.__takeCount__ = this.__takeCount__;

View File

@@ -4,8 +4,8 @@ import isArray from '../lang/isArray';
/** Used to indicate the type of lazy iteratees. */ /** Used to indicate the type of lazy iteratees. */
var LAZY_DROP_WHILE_FLAG = 0, var LAZY_DROP_WHILE_FLAG = 0,
LAZY_MAP_FLAG = 2, LAZY_FILTER_FLAG = 1,
LAZY_TAKE_WHILE_FLAG = 3; LAZY_MAP_FLAG = 2;
/* Native method references for those with the same name as other `lodash` methods. */ /* Native method references for those with the same name as other `lodash` methods. */
var nativeMin = Math.min; var nativeMin = Math.min;
@@ -29,9 +29,8 @@ function lazyValue() {
start = view.start, start = view.start,
end = view.end, end = view.end,
length = end - start, length = end - start,
dropCount = this.__dropCount__, index = isRight ? end : (start - 1),
takeCount = nativeMin(length, this.__takeCount__), takeCount = nativeMin(length, this.__takeCount__),
index = isRight ? end : start - 1,
iteratees = this.__iteratees__, iteratees = this.__iteratees__,
iterLength = iteratees ? iteratees.length : 0, iterLength = iteratees ? iteratees.length : 0,
resIndex = 0, resIndex = 0,
@@ -49,28 +48,32 @@ function lazyValue() {
iteratee = data.iteratee, iteratee = data.iteratee,
type = data.type; type = data.type;
if (type != LAZY_DROP_WHILE_FLAG) { if (type == LAZY_DROP_WHILE_FLAG) {
var computed = iteratee(value); if (data.done && (isRight ? (index > data.index) : (index < data.index))) {
} else { data.count = 0;
data.done = data.done && (isRight ? index < data.index : index > data.index); data.done = false;
}
data.index = index; data.index = index;
computed = data.done || (data.done = !iteratee(value)); if (!data.done) {
} var limit = data.limit;
if (type == LAZY_MAP_FLAG) { if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) {
value = computed; continue outer;
} else if (!computed) { }
if (type == LAZY_TAKE_WHILE_FLAG) { }
break outer; } else {
} else { var computed = iteratee(value);
continue outer; if (type == LAZY_MAP_FLAG) {
value = computed;
} else if (!computed) {
if (type == LAZY_FILTER_FLAG) {
continue outer;
} else {
break outer;
}
} }
} }
} }
if (dropCount) { result[resIndex++] = value;
dropCount--;
} else {
result[resIndex++] = value;
}
} }
return result; return result;
} }

View File

@@ -30,7 +30,7 @@ var objToString = objectProto.toString;
*/ */
function isElement(value) { function isElement(value) {
return (value && value.nodeType === 1 && isObjectLike(value) && return (value && value.nodeType === 1 && isObjectLike(value) &&
objToString.call(value).indexOf('Element') > -1) || false; (objToString.call(value).indexOf('Element') > -1)) || false;
} }
// Fallback for environments without DOM support. // Fallback for environments without DOM support.
if (!support.dom) { if (!support.dom) {

View File

@@ -1,6 +1,6 @@
/** /**
* @license * @license
* lodash 3.4.0 (Custom Build) <https://lodash.com/> * lodash 3.5.0 (Custom Build) <https://lodash.com/>
* Build: `lodash modularize modern exports="es" -o ./` * Build: `lodash modularize modern exports="es" -o ./`
* Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/> * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
* Based on Underscore.js 1.8.2 <http://underscorejs.org/LICENSE> * Based on Underscore.js 1.8.2 <http://underscorejs.org/LICENSE>
@@ -30,6 +30,7 @@ import identity from './utility/identity';
import isArray from './lang/isArray'; import isArray from './lang/isArray';
import isObject from './lang/isObject'; import isObject from './lang/isObject';
import keys from './object/keys'; import keys from './object/keys';
import last from './array/last';
import lazyClone from './internal/lazyClone'; import lazyClone from './internal/lazyClone';
import lazyReverse from './internal/lazyReverse'; import lazyReverse from './internal/lazyReverse';
import lazyValue from './internal/lazyValue'; import lazyValue from './internal/lazyValue';
@@ -39,14 +40,15 @@ import support from './support';
import thru from './chain/thru'; import thru from './chain/thru';
/** Used as the semantic version number. */ /** Used as the semantic version number. */
var VERSION = '3.4.0'; var VERSION = '3.5.0';
/** Used to indicate the type of lazy iteratees. */ /** Used to indicate the type of lazy iteratees. */
var LAZY_DROP_WHILE_FLAG = 0, var LAZY_DROP_WHILE_FLAG = 0,
LAZY_MAP_FLAG = 2; LAZY_MAP_FLAG = 2;
/** Used for native method references. */ /** Used for native method references. */
var arrayProto = Array.prototype; var arrayProto = Array.prototype,
stringProto = String.prototype;
/** Native method references. */ /** Native method references. */
var floor = Math.floor, var floor = Math.floor,
@@ -240,7 +242,7 @@ lodash.isString = lang.isString;
lodash.isTypedArray = lang.isTypedArray; lodash.isTypedArray = lang.isTypedArray;
lodash.isUndefined = lang.isUndefined; lodash.isUndefined = lang.isUndefined;
lodash.kebabCase = string.kebabCase; lodash.kebabCase = string.kebabCase;
lodash.last = array.last; lodash.last = last;
lodash.lastIndexOf = array.lastIndexOf; lodash.lastIndexOf = array.lastIndexOf;
lodash.max = math.max; lodash.max = math.max;
lodash.min = math.min; lodash.min = math.min;
@@ -332,24 +334,35 @@ arrayEach(['dropWhile', 'filter', 'map', 'takeWhile'], function(methodName, type
result = (filtered && isDropWhile) ? new LazyWrapper(this) : this.clone(), result = (filtered && isDropWhile) ? new LazyWrapper(this) : this.clone(),
iteratees = result.__iteratees__ || (result.__iteratees__ = []); iteratees = result.__iteratees__ || (result.__iteratees__ = []);
iteratees.push({
'done': false,
'count': 0,
'index': 0,
'iteratee': baseCallback(iteratee, thisArg, 1),
'limit': -1,
'type': type
});
result.__filtered__ = filtered || isFilter; result.__filtered__ = filtered || isFilter;
iteratees.push({ 'done': false, 'index': 0, 'iteratee': baseCallback(iteratee, thisArg, 1), 'type': type });
return result; return result;
}; };
}); });
// Add `LazyWrapper` methods for `_.drop` and `_.take` variants. // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
arrayEach(['drop', 'take'], function(methodName, index) { arrayEach(['drop', 'take'], function(methodName, index) {
var countName = '__' + methodName + 'Count__', var whileName = methodName + 'While';
whileName = methodName + 'While';
LazyWrapper.prototype[methodName] = function(n) { LazyWrapper.prototype[methodName] = function(n) {
n = n == null ? 1 : nativeMax(floor(n) || 0, 0); var filtered = this.__filtered__,
result = (filtered && !index) ? this.dropWhile() : this.clone();
var result = this.clone(); n = n == null ? 1 : nativeMax(floor(n) || 0, 0);
if (result.__filtered__) { if (filtered) {
var value = result[countName]; if (index) {
result[countName] = index ? nativeMin(value, n) : (value + n); result.__takeCount__ = nativeMin(result.__takeCount__, n);
} else {
last(result.__iteratees__).limit = n;
}
} else { } else {
var views = result.__views__ || (result.__views__ = []); var views = result.__views__ || (result.__views__ = []);
views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') }); views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
@@ -465,11 +478,11 @@ baseForOwn(LazyWrapper.prototype, function(func, methodName) {
}; };
}); });
// Add `Array.prototype` functions to `lodash.prototype`. // Add `Array` and `String` methods to `lodash.prototype`.
arrayEach(['concat', 'join', 'pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { arrayEach(['concat', 'join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) {
var func = arrayProto[methodName], var func = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName],
chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
retUnwrapped = /^(?:join|pop|shift)$/.test(methodName); retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName);
lodash.prototype[methodName] = function() { lodash.prototype[methodName] = function() {
var args = arguments; var args = arguments;

View File

@@ -39,7 +39,7 @@ var keys = !nativeKeys ? shimKeys : function(object) {
length = object.length; length = object.length;
} }
if ((typeof Ctor == 'function' && Ctor.prototype === object) || if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
(typeof object != 'function' && (length && isLength(length)))) { (typeof object != 'function' && (length && isLength(length)))) {
return shimKeys(object); return shimKeys(object);
} }
return isObject(object) ? nativeKeys(object) : []; return isObject(object) ? nativeKeys(object) : [];

View File

@@ -1,6 +1,6 @@
{ {
"name": "lodash-es", "name": "lodash-es",
"version": "3.4.0", "version": "3.5.0",
"description": "The modern build of lodash exported as ES modules.", "description": "The modern build of lodash exported as ES modules.",
"homepage": "https://lodash.com/custom-builds", "homepage": "https://lodash.com/custom-builds",
"license": "MIT", "license": "MIT",

View File

@@ -29,7 +29,11 @@ function endsWith(string, target, position) {
target = (target + ''); target = (target + '');
var length = string.length; var length = string.length;
position = (typeof position == 'undefined' ? length : nativeMin(position < 0 ? 0 : (+position || 0), length)) - target.length; position = typeof position == 'undefined'
? length
: nativeMin(position < 0 ? 0 : (+position || 0), length);
position -= target.length;
return position >= 0 && string.indexOf(target, position) == position; return position >= 0 && string.indexOf(target, position) == position;
} }

View File

@@ -26,7 +26,10 @@ var nativeMin = Math.min;
*/ */
function startsWith(string, target, position) { function startsWith(string, target, position) {
string = baseToString(string); string = baseToString(string);
position = position == null ? 0 : nativeMin(position < 0 ? 0 : (+position || 0), string.length); position = position == null
? 0
: nativeMin(position < 0 ? 0 : (+position || 0), string.length);
return string.lastIndexOf(target, position) == position; return string.lastIndexOf(target, position) == position;
} }

View File

@@ -60,7 +60,7 @@ function trunc(string, options, guard) {
if (options != null) { if (options != null) {
if (isObject(options)) { if (isObject(options)) {
var separator = 'separator' in options ? options.separator : separator; var separator = 'separator' in options ? options.separator : separator;
length = 'length' in options ? +options.length || 0 : length; length = 'length' in options ? (+options.length || 0) : length;
omission = 'omission' in options ? baseToString(options.omission) : omission; omission = 'omission' in options ? baseToString(options.omission) : omission;
} else { } else {
length = +options || 0; length = +options || 0;

View File

@@ -23,7 +23,7 @@ import isError from '../lang/isError';
function attempt() { function attempt() {
var func = arguments[0], var func = arguments[0],
length = arguments.length, length = arguments.length,
args = Array(length ? length - 1 : 0); args = Array(length ? (length - 1) : 0);
while (--length > 0) { while (--length > 0) {
args[length - 1] = arguments[length]; args[length - 1] = arguments[length];

View File

@@ -70,7 +70,11 @@ function mixin(object, source, options) {
var chainAll = this.__chain__; var chainAll = this.__chain__;
if (chain || chainAll) { if (chain || chainAll) {
var result = object(this.__wrapped__); var result = object(this.__wrapped__);
(result.__actions__ = arrayCopy(this.__actions__)).push({ 'func': func, 'args': arguments, 'thisArg': object }); (result.__actions__ = arrayCopy(this.__actions__)).push({
'func': func,
'args': arguments,
'thisArg': object
});
result.__chain__ = chainAll; result.__chain__ = chainAll;
return result; return result;
} }