mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-05 09:27:49 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9055c4e483 | ||
|
|
2b1eb3f480 |
@@ -1,4 +1,4 @@
|
|||||||
# lodash-es v4.4.0
|
# lodash-es v4.5.1
|
||||||
|
|
||||||
The [lodash](https://lodash.com/) library exported as [ES](http://www.ecma-international.org/ecma-262/6.0/) modules.
|
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 ./
|
$ lodash modularize exports=es -o ./
|
||||||
```
|
```
|
||||||
|
|
||||||
See the [package source](https://github.com/lodash/lodash/tree/4.4.0-es) for more details.
|
See the [package source](https://github.com/lodash/lodash/tree/4.5.1-es) for more details.
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ var hasOwnProperty = objectProto.hasOwnProperty;
|
|||||||
*/
|
*/
|
||||||
function assignValue(object, key, value) {
|
function assignValue(object, key, value) {
|
||||||
var objValue = object[key];
|
var objValue = object[key];
|
||||||
if ((!eq(objValue, value) ||
|
if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
|
||||||
(eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) ||
|
|
||||||
(value === undefined && !(key in object))) {
|
(value === undefined && !(key in object))) {
|
||||||
object[key] = value;
|
object[key] = value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,9 +105,10 @@ function baseClone(value, isDeep, customizer, key, object, stack) {
|
|||||||
return copySymbols(value, baseAssign(result, value));
|
return copySymbols(value, baseAssign(result, value));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return cloneableTags[tag]
|
if (!cloneableTags[tag]) {
|
||||||
? initCloneByTag(value, tag, isDeep)
|
return object ? value : {};
|
||||||
: (object ? value : {});
|
}
|
||||||
|
result = initCloneByTag(value, tag, isDeep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Check for circular references and return its corresponding clone.
|
// Check for circular references and return its corresponding clone.
|
||||||
|
|||||||
@@ -9,23 +9,28 @@ var nativeMax = Math.max;
|
|||||||
* @param {Array|Object} args The provided arguments.
|
* @param {Array|Object} args The provided arguments.
|
||||||
* @param {Array} partials The arguments to prepend to those provided.
|
* @param {Array} partials The arguments to prepend to those provided.
|
||||||
* @param {Array} holders The `partials` placeholder indexes.
|
* @param {Array} holders The `partials` placeholder indexes.
|
||||||
|
* @params {boolean} [isCurried] Specify composing for a curried function.
|
||||||
* @returns {Array} Returns the new array of composed arguments.
|
* @returns {Array} Returns the new array of composed arguments.
|
||||||
*/
|
*/
|
||||||
function composeArgs(args, partials, holders) {
|
function composeArgs(args, partials, holders, isCurried) {
|
||||||
var holdersLength = holders.length,
|
var argsIndex = -1,
|
||||||
argsIndex = -1,
|
argsLength = args.length,
|
||||||
argsLength = nativeMax(args.length - holdersLength, 0),
|
holdersLength = holders.length,
|
||||||
leftIndex = -1,
|
leftIndex = -1,
|
||||||
leftLength = partials.length,
|
leftLength = partials.length,
|
||||||
result = Array(leftLength + argsLength);
|
rangeLength = nativeMax(argsLength - holdersLength, 0),
|
||||||
|
result = Array(leftLength + rangeLength),
|
||||||
|
isUncurried = !isCurried;
|
||||||
|
|
||||||
while (++leftIndex < leftLength) {
|
while (++leftIndex < leftLength) {
|
||||||
result[leftIndex] = partials[leftIndex];
|
result[leftIndex] = partials[leftIndex];
|
||||||
}
|
}
|
||||||
while (++argsIndex < holdersLength) {
|
while (++argsIndex < holdersLength) {
|
||||||
result[holders[argsIndex]] = args[argsIndex];
|
if (isUncurried || argsIndex < argsLength) {
|
||||||
|
result[holders[argsIndex]] = args[argsIndex];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
while (argsLength--) {
|
while (rangeLength--) {
|
||||||
result[leftIndex++] = args[argsIndex++];
|
result[leftIndex++] = args[argsIndex++];
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -9,18 +9,21 @@ var nativeMax = Math.max;
|
|||||||
* @param {Array|Object} args The provided arguments.
|
* @param {Array|Object} args The provided arguments.
|
||||||
* @param {Array} partials The arguments to append to those provided.
|
* @param {Array} partials The arguments to append to those provided.
|
||||||
* @param {Array} holders The `partials` placeholder indexes.
|
* @param {Array} holders The `partials` placeholder indexes.
|
||||||
|
* @params {boolean} [isCurried] Specify composing for a curried function.
|
||||||
* @returns {Array} Returns the new array of composed arguments.
|
* @returns {Array} Returns the new array of composed arguments.
|
||||||
*/
|
*/
|
||||||
function composeArgsRight(args, partials, holders) {
|
function composeArgsRight(args, partials, holders, isCurried) {
|
||||||
var holdersIndex = -1,
|
var argsIndex = -1,
|
||||||
|
argsLength = args.length,
|
||||||
|
holdersIndex = -1,
|
||||||
holdersLength = holders.length,
|
holdersLength = holders.length,
|
||||||
argsIndex = -1,
|
|
||||||
argsLength = nativeMax(args.length - holdersLength, 0),
|
|
||||||
rightIndex = -1,
|
rightIndex = -1,
|
||||||
rightLength = partials.length,
|
rightLength = partials.length,
|
||||||
result = Array(argsLength + rightLength);
|
rangeLength = nativeMax(argsLength - holdersLength, 0),
|
||||||
|
result = Array(rangeLength + rightLength),
|
||||||
|
isUncurried = !isCurried;
|
||||||
|
|
||||||
while (++argsIndex < argsLength) {
|
while (++argsIndex < rangeLength) {
|
||||||
result[argsIndex] = args[argsIndex];
|
result[argsIndex] = args[argsIndex];
|
||||||
}
|
}
|
||||||
var offset = argsIndex;
|
var offset = argsIndex;
|
||||||
@@ -28,7 +31,9 @@ function composeArgsRight(args, partials, holders) {
|
|||||||
result[offset + rightIndex] = partials[rightIndex];
|
result[offset + rightIndex] = partials[rightIndex];
|
||||||
}
|
}
|
||||||
while (++holdersIndex < holdersLength) {
|
while (++holdersIndex < holdersLength) {
|
||||||
result[offset + holders[holdersIndex]] = args[argsIndex++];
|
if (isUncurried || argsIndex < argsLength) {
|
||||||
|
result[offset + holders[holdersIndex]] = args[argsIndex++];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
21
_countHolders.js
Normal file
21
_countHolders.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* Gets the number of `placeholder` occurrences in `array`.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {Array} array The array to inspect.
|
||||||
|
* @param {*} placeholder The placeholder to search for.
|
||||||
|
* @returns {number} Returns the placeholder count.
|
||||||
|
*/
|
||||||
|
function countHolders(array, placeholder) {
|
||||||
|
var length = array.length,
|
||||||
|
result = 0;
|
||||||
|
|
||||||
|
while (length--) {
|
||||||
|
if (array[length] === placeholder) {
|
||||||
|
result++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default countHolders;
|
||||||
@@ -2,6 +2,7 @@ import apply from './_apply';
|
|||||||
import createCtorWrapper from './_createCtorWrapper';
|
import createCtorWrapper from './_createCtorWrapper';
|
||||||
import createHybridWrapper from './_createHybridWrapper';
|
import createHybridWrapper from './_createHybridWrapper';
|
||||||
import createRecurryWrapper from './_createRecurryWrapper';
|
import createRecurryWrapper from './_createRecurryWrapper';
|
||||||
|
import getPlaceholder from './_getPlaceholder';
|
||||||
import replaceHolders from './_replaceHolders';
|
import replaceHolders from './_replaceHolders';
|
||||||
import root from './_root';
|
import root from './_root';
|
||||||
|
|
||||||
@@ -19,10 +20,9 @@ function createCurryWrapper(func, bitmask, arity) {
|
|||||||
|
|
||||||
function wrapper() {
|
function wrapper() {
|
||||||
var length = arguments.length,
|
var length = arguments.length,
|
||||||
index = length,
|
|
||||||
args = Array(length),
|
args = Array(length),
|
||||||
fn = (this && this !== root && this instanceof wrapper) ? Ctor : func,
|
index = length,
|
||||||
placeholder = wrapper.placeholder;
|
placeholder = getPlaceholder(wrapper);
|
||||||
|
|
||||||
while (index--) {
|
while (index--) {
|
||||||
args[index] = arguments[index];
|
args[index] = arguments[index];
|
||||||
@@ -32,9 +32,13 @@ function createCurryWrapper(func, bitmask, arity) {
|
|||||||
: replaceHolders(args, placeholder);
|
: replaceHolders(args, placeholder);
|
||||||
|
|
||||||
length -= holders.length;
|
length -= holders.length;
|
||||||
return length < arity
|
if (length < arity) {
|
||||||
? createRecurryWrapper(func, bitmask, createHybridWrapper, placeholder, undefined, args, holders, undefined, undefined, arity - length)
|
return createRecurryWrapper(
|
||||||
: apply(fn, this, args);
|
func, bitmask, createHybridWrapper, wrapper.placeholder, undefined,
|
||||||
|
args, holders, undefined, undefined, arity - length);
|
||||||
|
}
|
||||||
|
var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
|
||||||
|
return apply(fn, this, args);
|
||||||
}
|
}
|
||||||
return wrapper;
|
return wrapper;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import composeArgs from './_composeArgs';
|
import composeArgs from './_composeArgs';
|
||||||
import composeArgsRight from './_composeArgsRight';
|
import composeArgsRight from './_composeArgsRight';
|
||||||
|
import countHolders from './_countHolders';
|
||||||
import createCtorWrapper from './_createCtorWrapper';
|
import createCtorWrapper from './_createCtorWrapper';
|
||||||
import createRecurryWrapper from './_createRecurryWrapper';
|
import createRecurryWrapper from './_createRecurryWrapper';
|
||||||
|
import getPlaceholder from './_getPlaceholder';
|
||||||
import reorder from './_reorder';
|
import reorder from './_reorder';
|
||||||
import replaceHolders from './_replaceHolders';
|
import replaceHolders from './_replaceHolders';
|
||||||
import root from './_root';
|
import root from './_root';
|
||||||
@@ -35,8 +37,7 @@ function createHybridWrapper(func, bitmask, thisArg, partials, holders, partials
|
|||||||
var isAry = bitmask & ARY_FLAG,
|
var isAry = bitmask & ARY_FLAG,
|
||||||
isBind = bitmask & BIND_FLAG,
|
isBind = bitmask & BIND_FLAG,
|
||||||
isBindKey = bitmask & BIND_KEY_FLAG,
|
isBindKey = bitmask & BIND_KEY_FLAG,
|
||||||
isCurry = bitmask & CURRY_FLAG,
|
isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG),
|
||||||
isCurryRight = bitmask & CURRY_RIGHT_FLAG,
|
|
||||||
isFlip = bitmask & FLIP_FLAG,
|
isFlip = bitmask & FLIP_FLAG,
|
||||||
Ctor = isBindKey ? undefined : createCtorWrapper(func);
|
Ctor = isBindKey ? undefined : createCtorWrapper(func);
|
||||||
|
|
||||||
@@ -48,33 +49,34 @@ function createHybridWrapper(func, bitmask, thisArg, partials, holders, partials
|
|||||||
while (index--) {
|
while (index--) {
|
||||||
args[index] = arguments[index];
|
args[index] = arguments[index];
|
||||||
}
|
}
|
||||||
|
if (isCurried) {
|
||||||
|
var placeholder = getPlaceholder(wrapper),
|
||||||
|
holdersCount = countHolders(args, placeholder);
|
||||||
|
}
|
||||||
if (partials) {
|
if (partials) {
|
||||||
args = composeArgs(args, partials, holders);
|
args = composeArgs(args, partials, holders, isCurried);
|
||||||
}
|
}
|
||||||
if (partialsRight) {
|
if (partialsRight) {
|
||||||
args = composeArgsRight(args, partialsRight, holdersRight);
|
args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
|
||||||
}
|
}
|
||||||
if (isCurry || isCurryRight) {
|
length -= holdersCount;
|
||||||
var placeholder = wrapper.placeholder,
|
if (isCurried && length < arity) {
|
||||||
argsHolders = replaceHolders(args, placeholder);
|
var newHolders = replaceHolders(args, placeholder);
|
||||||
|
return createRecurryWrapper(
|
||||||
length -= argsHolders.length;
|
func, bitmask, createHybridWrapper, wrapper.placeholder, thisArg,
|
||||||
if (length < arity) {
|
args, newHolders, argPos, ary, arity - length
|
||||||
return createRecurryWrapper(
|
);
|
||||||
func, bitmask, createHybridWrapper, placeholder, thisArg, args,
|
|
||||||
argsHolders, argPos, ary, arity - length
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
var thisBinding = isBind ? thisArg : this,
|
var thisBinding = isBind ? thisArg : this,
|
||||||
fn = isBindKey ? thisBinding[func] : func;
|
fn = isBindKey ? thisBinding[func] : func;
|
||||||
|
|
||||||
|
length = args.length;
|
||||||
if (argPos) {
|
if (argPos) {
|
||||||
args = reorder(args, argPos);
|
args = reorder(args, argPos);
|
||||||
} else if (isFlip && args.length > 1) {
|
} else if (isFlip && length > 1) {
|
||||||
args.reverse();
|
args.reverse();
|
||||||
}
|
}
|
||||||
if (isAry && ary < args.length) {
|
if (isAry && ary < length) {
|
||||||
args.length = ary;
|
args.length = ary;
|
||||||
}
|
}
|
||||||
if (this && this !== root && this instanceof wrapper) {
|
if (this && this !== root && this instanceof wrapper) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ var BIND_FLAG = 1,
|
|||||||
* @param {Function} func The function to wrap.
|
* @param {Function} func The function to wrap.
|
||||||
* @param {number} bitmask The bitmask of wrapper flags. See `createWrapper` for more details.
|
* @param {number} bitmask The bitmask of wrapper flags. See `createWrapper` for more details.
|
||||||
* @param {Function} wrapFunc The function to create the `func` wrapper.
|
* @param {Function} wrapFunc The function to create the `func` wrapper.
|
||||||
* @param {*} placeholder The placeholder to replace.
|
* @param {*} placeholder The placeholder value.
|
||||||
* @param {*} [thisArg] The `this` binding of `func`.
|
* @param {*} [thisArg] The `this` binding of `func`.
|
||||||
* @param {Array} [partials] The arguments to prepend to those provided to the new function.
|
* @param {Array} [partials] The arguments to prepend to those provided to the new function.
|
||||||
* @param {Array} [holders] The `partials` placeholder indexes.
|
* @param {Array} [holders] The `partials` placeholder indexes.
|
||||||
@@ -29,7 +29,7 @@ var BIND_FLAG = 1,
|
|||||||
function createRecurryWrapper(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
|
function createRecurryWrapper(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
|
||||||
var isCurry = bitmask & CURRY_FLAG,
|
var isCurry = bitmask & CURRY_FLAG,
|
||||||
newArgPos = argPos ? copyArray(argPos) : undefined,
|
newArgPos = argPos ? copyArray(argPos) : undefined,
|
||||||
newsHolders = isCurry ? holders : undefined,
|
newHolders = isCurry ? holders : undefined,
|
||||||
newHoldersRight = isCurry ? undefined : holders,
|
newHoldersRight = isCurry ? undefined : holders,
|
||||||
newPartials = isCurry ? partials : undefined,
|
newPartials = isCurry ? partials : undefined,
|
||||||
newPartialsRight = isCurry ? undefined : partials;
|
newPartialsRight = isCurry ? undefined : partials;
|
||||||
@@ -41,7 +41,7 @@ function createRecurryWrapper(func, bitmask, wrapFunc, placeholder, thisArg, par
|
|||||||
bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
|
bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
|
||||||
}
|
}
|
||||||
var newData = [
|
var newData = [
|
||||||
func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight,
|
func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
|
||||||
newHoldersRight, newArgPos, ary, arity
|
newHoldersRight, newArgPos, ary, arity
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
13
_getPlaceholder.js
Normal file
13
_getPlaceholder.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* Gets the argument placeholder value for `func`.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {Function} func The function to inspect.
|
||||||
|
* @returns {*} Returns the placeholder value.
|
||||||
|
*/
|
||||||
|
function getPlaceholder(func) {
|
||||||
|
var object = func;
|
||||||
|
return object.placeholder;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default getPlaceholder;
|
||||||
@@ -2,6 +2,9 @@ import baseCreate from './_baseCreate';
|
|||||||
import isFunction from './isFunction';
|
import isFunction from './isFunction';
|
||||||
import isPrototype from './_isPrototype';
|
import isPrototype from './_isPrototype';
|
||||||
|
|
||||||
|
/** Built-in value references. */
|
||||||
|
var getPrototypeOf = Object.getPrototypeOf;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes an object clone.
|
* Initializes an object clone.
|
||||||
*
|
*
|
||||||
@@ -10,11 +13,9 @@ import isPrototype from './_isPrototype';
|
|||||||
* @returns {Object} Returns the initialized clone.
|
* @returns {Object} Returns the initialized clone.
|
||||||
*/
|
*/
|
||||||
function initCloneObject(object) {
|
function initCloneObject(object) {
|
||||||
if (isPrototype(object)) {
|
return (isFunction(object.constructor) && !isPrototype(object))
|
||||||
return {};
|
? baseCreate(getPrototypeOf(object))
|
||||||
}
|
: {};
|
||||||
var Ctor = object.constructor;
|
|
||||||
return baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default initCloneObject;
|
export default initCloneObject;
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import isFunction from './isFunction';
|
||||||
|
|
||||||
/** Used for built-in method references. */
|
/** Used for built-in method references. */
|
||||||
var objectProto = Object.prototype;
|
var objectProto = Object.prototype;
|
||||||
|
|
||||||
@@ -10,7 +12,7 @@ var objectProto = Object.prototype;
|
|||||||
*/
|
*/
|
||||||
function isPrototype(value) {
|
function isPrototype(value) {
|
||||||
var Ctor = value && value.constructor,
|
var Ctor = value && value.constructor,
|
||||||
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
|
proto = (isFunction(Ctor) && Ctor.prototype) || objectProto;
|
||||||
|
|
||||||
return value === proto;
|
return value === proto;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,9 +39,9 @@ function mergeData(data, source) {
|
|||||||
isCommon = newBitmask < (BIND_FLAG | BIND_KEY_FLAG | ARY_FLAG);
|
isCommon = newBitmask < (BIND_FLAG | BIND_KEY_FLAG | ARY_FLAG);
|
||||||
|
|
||||||
var isCombo =
|
var isCombo =
|
||||||
(srcBitmask == ARY_FLAG && (bitmask == CURRY_FLAG)) ||
|
((srcBitmask == ARY_FLAG) && (bitmask == CURRY_FLAG)) ||
|
||||||
(srcBitmask == ARY_FLAG && (bitmask == REARG_FLAG) && (data[7].length <= source[8])) ||
|
((srcBitmask == ARY_FLAG) && (bitmask == REARG_FLAG) && (data[7].length <= source[8])) ||
|
||||||
(srcBitmask == (ARY_FLAG | REARG_FLAG) && (source[7].length <= source[8]) && (bitmask == CURRY_FLAG));
|
((srcBitmask == (ARY_FLAG | REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == CURRY_FLAG));
|
||||||
|
|
||||||
// Exit early if metadata can't be merged.
|
// Exit early if metadata can't be merged.
|
||||||
if (!(isCommon || isCombo)) {
|
if (!(isCommon || isCombo)) {
|
||||||
@@ -51,7 +51,7 @@ function mergeData(data, source) {
|
|||||||
if (srcBitmask & BIND_FLAG) {
|
if (srcBitmask & BIND_FLAG) {
|
||||||
data[2] = source[2];
|
data[2] = source[2];
|
||||||
// Set when currying a bound function.
|
// Set when currying a bound function.
|
||||||
newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;
|
newBitmask |= bitmask & BIND_FLAG ? 0 : CURRY_BOUND_FLAG;
|
||||||
}
|
}
|
||||||
// Compose partial arguments.
|
// Compose partial arguments.
|
||||||
var value = source[3];
|
var value = source[3];
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ function replaceHolders(array, placeholder) {
|
|||||||
result = [];
|
result = [];
|
||||||
|
|
||||||
while (++index < length) {
|
while (++index < length) {
|
||||||
if (array[index] === placeholder) {
|
var value = array[index];
|
||||||
|
if (value === placeholder || value === PLACEHOLDER) {
|
||||||
array[index] = PLACEHOLDER;
|
array[index] = PLACEHOLDER;
|
||||||
result[++resIndex] = index;
|
result[++resIndex] = index;
|
||||||
}
|
}
|
||||||
|
|||||||
5
bind.js
5
bind.js
@@ -1,4 +1,5 @@
|
|||||||
import createWrapper from './_createWrapper';
|
import createWrapper from './_createWrapper';
|
||||||
|
import getPlaceholder from './_getPlaceholder';
|
||||||
import replaceHolders from './_replaceHolders';
|
import replaceHolders from './_replaceHolders';
|
||||||
import rest from './rest';
|
import rest from './rest';
|
||||||
|
|
||||||
@@ -44,9 +45,7 @@ var BIND_FLAG = 1,
|
|||||||
var bind = rest(function(func, thisArg, partials) {
|
var bind = rest(function(func, thisArg, partials) {
|
||||||
var bitmask = BIND_FLAG;
|
var bitmask = BIND_FLAG;
|
||||||
if (partials.length) {
|
if (partials.length) {
|
||||||
var placeholder = bind.placeholder,
|
var holders = replaceHolders(partials, getPlaceholder(bind));
|
||||||
holders = replaceHolders(partials, placeholder);
|
|
||||||
|
|
||||||
bitmask |= PARTIAL_FLAG;
|
bitmask |= PARTIAL_FLAG;
|
||||||
}
|
}
|
||||||
return createWrapper(func, bitmask, thisArg, partials, holders);
|
return createWrapper(func, bitmask, thisArg, partials, holders);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import createWrapper from './_createWrapper';
|
import createWrapper from './_createWrapper';
|
||||||
|
import getPlaceholder from './_getPlaceholder';
|
||||||
import replaceHolders from './_replaceHolders';
|
import replaceHolders from './_replaceHolders';
|
||||||
import rest from './rest';
|
import rest from './rest';
|
||||||
|
|
||||||
@@ -54,9 +55,7 @@ var BIND_FLAG = 1,
|
|||||||
var bindKey = rest(function(object, key, partials) {
|
var bindKey = rest(function(object, key, partials) {
|
||||||
var bitmask = BIND_FLAG | BIND_KEY_FLAG;
|
var bitmask = BIND_FLAG | BIND_KEY_FLAG;
|
||||||
if (partials.length) {
|
if (partials.length) {
|
||||||
var placeholder = bindKey.placeholder,
|
var holders = replaceHolders(partials, getPlaceholder(bindKey));
|
||||||
holders = replaceHolders(partials, placeholder);
|
|
||||||
|
|
||||||
bitmask |= PARTIAL_FLAG;
|
bitmask |= PARTIAL_FLAG;
|
||||||
}
|
}
|
||||||
return createWrapper(key, bitmask, object, partials, holders);
|
return createWrapper(key, bitmask, object, partials, holders);
|
||||||
|
|||||||
@@ -33,9 +33,8 @@ function isError(value) {
|
|||||||
if (!isObjectLike(value)) {
|
if (!isObjectLike(value)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var Ctor = value.constructor;
|
|
||||||
return (objectToString.call(value) == errorTag) ||
|
return (objectToString.call(value) == errorTag) ||
|
||||||
(typeof Ctor == 'function' && objectToString.call(Ctor.prototype) == errorTag);
|
(typeof value.message == 'string' && typeof value.name == 'string');
|
||||||
}
|
}
|
||||||
|
|
||||||
export default isError;
|
export default isError;
|
||||||
|
|||||||
@@ -54,10 +54,7 @@ function isPlainObject(value) {
|
|||||||
objectToString.call(value) != objectTag || isHostObject(value)) {
|
objectToString.call(value) != objectTag || isHostObject(value)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var proto = objectProto;
|
var proto = getPrototypeOf(value);
|
||||||
if (typeof value.constructor == 'function') {
|
|
||||||
proto = getPrototypeOf(value);
|
|
||||||
}
|
|
||||||
if (proto === null) {
|
if (proto === null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* lodash 4.4.0 (Custom Build) <https://lodash.com/>
|
* lodash 4.5.1 (Custom Build) <https://lodash.com/>
|
||||||
* Build: `lodash modularize exports="es" -o ./`
|
* Build: `lodash modularize exports="es" -o ./`
|
||||||
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
|
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
|
||||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||||||
@@ -44,7 +44,7 @@ import toInteger from './toInteger';
|
|||||||
import lodash from './wrapperLodash';
|
import lodash from './wrapperLodash';
|
||||||
|
|
||||||
/** Used as the semantic version number. */
|
/** Used as the semantic version number. */
|
||||||
var VERSION = '4.4.0';
|
var VERSION = '4.5.1';
|
||||||
|
|
||||||
/** Used to compose bitmasks for wrapper metadata. */
|
/** Used to compose bitmasks for wrapper metadata. */
|
||||||
var BIND_KEY_FLAG = 2;
|
var BIND_KEY_FLAG = 2;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* lodash 4.4.0 (Custom Build) <https://lodash.com/>
|
* lodash 4.5.1 (Custom Build) <https://lodash.com/>
|
||||||
* Build: `lodash modularize exports="es" -o ./`
|
* Build: `lodash modularize exports="es" -o ./`
|
||||||
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
|
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
|
||||||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ import baseIteratee from './_baseIteratee';
|
|||||||
/**
|
/**
|
||||||
* The opposite of `_.mapValues`; this method creates an object with the
|
* The opposite of `_.mapValues`; this method creates an object with the
|
||||||
* same values as `object` and keys generated by running each own enumerable
|
* same values as `object` and keys generated by running each own enumerable
|
||||||
* property of `object` through `iteratee`.
|
* property of `object` through `iteratee`. The iteratee is invoked with
|
||||||
|
* three arguments: (value, key, object).
|
||||||
*
|
*
|
||||||
* @static
|
* @static
|
||||||
* @memberOf _
|
* @memberOf _
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import baseIteratee from './_baseIteratee';
|
|||||||
/**
|
/**
|
||||||
* Creates an object with the same keys as `object` and values generated by
|
* Creates an object with the same keys as `object` and values generated by
|
||||||
* running each own enumerable property of `object` through `iteratee`. The
|
* running each own enumerable property of `object` through `iteratee`. The
|
||||||
* iteratee function is invoked with three arguments: (value, key, object).
|
* iteratee is invoked with three arguments: (value, key, object).
|
||||||
*
|
*
|
||||||
* @static
|
* @static
|
||||||
* @memberOf _
|
* @memberOf _
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ import baseIteratee from './_baseIteratee';
|
|||||||
import basePickBy from './_basePickBy';
|
import basePickBy from './_basePickBy';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The opposite of `_.pickBy`; this method creates an object composed of the
|
* The opposite of `_.pickBy`; this method creates an object composed of
|
||||||
* own and inherited enumerable properties of `object` that `predicate`
|
* the own and inherited enumerable properties of `object` that `predicate`
|
||||||
* doesn't return truthy for.
|
* doesn't return truthy for. The predicate is invoked with two arguments:
|
||||||
|
* (value, key).
|
||||||
*
|
*
|
||||||
* @static
|
* @static
|
||||||
* @memberOf _
|
* @memberOf _
|
||||||
@@ -20,7 +21,7 @@ import basePickBy from './_basePickBy';
|
|||||||
* // => { 'b': '2' }
|
* // => { 'b': '2' }
|
||||||
*/
|
*/
|
||||||
function omitBy(object, predicate) {
|
function omitBy(object, predicate) {
|
||||||
predicate = baseIteratee(predicate, 2);
|
predicate = baseIteratee(predicate);
|
||||||
return basePickBy(object, function(value, key) {
|
return basePickBy(object, function(value, key) {
|
||||||
return !predicate(value, key);
|
return !predicate(value, key);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lodash-es",
|
"name": "lodash-es",
|
||||||
"version": "4.4.0",
|
"version": "4.5.1",
|
||||||
"description": "Lodash exported as ES modules.",
|
"description": "Lodash exported as ES modules.",
|
||||||
"homepage": "https://lodash.com/custom-builds",
|
"homepage": "https://lodash.com/custom-builds",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import createWrapper from './_createWrapper';
|
import createWrapper from './_createWrapper';
|
||||||
|
import getPlaceholder from './_getPlaceholder';
|
||||||
import replaceHolders from './_replaceHolders';
|
import replaceHolders from './_replaceHolders';
|
||||||
import rest from './rest';
|
import rest from './rest';
|
||||||
|
|
||||||
@@ -38,9 +39,7 @@ var PARTIAL_FLAG = 32;
|
|||||||
* // => 'hi fred'
|
* // => 'hi fred'
|
||||||
*/
|
*/
|
||||||
var partial = rest(function(func, partials) {
|
var partial = rest(function(func, partials) {
|
||||||
var placeholder = partial.placeholder,
|
var holders = replaceHolders(partials, getPlaceholder(partial));
|
||||||
holders = replaceHolders(partials, placeholder);
|
|
||||||
|
|
||||||
return createWrapper(func, PARTIAL_FLAG, undefined, partials, holders);
|
return createWrapper(func, PARTIAL_FLAG, undefined, partials, holders);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import createWrapper from './_createWrapper';
|
import createWrapper from './_createWrapper';
|
||||||
|
import getPlaceholder from './_getPlaceholder';
|
||||||
import replaceHolders from './_replaceHolders';
|
import replaceHolders from './_replaceHolders';
|
||||||
import rest from './rest';
|
import rest from './rest';
|
||||||
|
|
||||||
@@ -37,9 +38,7 @@ var PARTIAL_RIGHT_FLAG = 64;
|
|||||||
* // => 'hello fred'
|
* // => 'hello fred'
|
||||||
*/
|
*/
|
||||||
var partialRight = rest(function(func, partials) {
|
var partialRight = rest(function(func, partials) {
|
||||||
var placeholder = partialRight.placeholder,
|
var holders = replaceHolders(partials, getPlaceholder(partialRight));
|
||||||
holders = replaceHolders(partials, placeholder);
|
|
||||||
|
|
||||||
return createWrapper(func, PARTIAL_RIGHT_FLAG, undefined, partials, holders);
|
return createWrapper(func, PARTIAL_RIGHT_FLAG, undefined, partials, holders);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import basePickBy from './_basePickBy';
|
|||||||
* // => { 'a': 1, 'c': 3 }
|
* // => { 'a': 1, 'c': 3 }
|
||||||
*/
|
*/
|
||||||
function pickBy(object, predicate) {
|
function pickBy(object, predicate) {
|
||||||
return object == null ? {} : basePickBy(object, baseIteratee(predicate, 2));
|
return object == null ? {} : basePickBy(object, baseIteratee(predicate));
|
||||||
}
|
}
|
||||||
|
|
||||||
export default pickBy;
|
export default pickBy;
|
||||||
|
|||||||
3
pull.js
3
pull.js
@@ -6,7 +6,8 @@ import rest from './rest';
|
|||||||
* [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
|
* [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
|
||||||
* for equality comparisons.
|
* for equality comparisons.
|
||||||
*
|
*
|
||||||
* **Note:** Unlike `_.without`, this method mutates `array`.
|
* **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
|
||||||
|
* to remove elements from an array by predicate.
|
||||||
*
|
*
|
||||||
* @static
|
* @static
|
||||||
* @memberOf _
|
* @memberOf _
|
||||||
|
|||||||
@@ -3,10 +3,11 @@ import basePullAt from './_basePullAt';
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes all elements from `array` that `predicate` returns truthy for
|
* Removes all elements from `array` that `predicate` returns truthy for
|
||||||
* and returns an array of the removed elements. The predicate is invoked with
|
* and returns an array of the removed elements. The predicate is invoked
|
||||||
* three arguments: (value, index, array).
|
* with three arguments: (value, index, array).
|
||||||
*
|
*
|
||||||
* **Note:** Unlike `_.filter`, this method mutates `array`.
|
* **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
|
||||||
|
* to pull elements from an array by value.
|
||||||
*
|
*
|
||||||
* @static
|
* @static
|
||||||
* @memberOf _
|
* @memberOf _
|
||||||
|
|||||||
4
times.js
4
times.js
@@ -12,8 +12,8 @@ var MAX_ARRAY_LENGTH = 4294967295;
|
|||||||
var nativeMin = Math.min;
|
var nativeMin = Math.min;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Invokes the iteratee function `n` times, returning an array of the results
|
* Invokes the iteratee `n` times, returning an array of the results of
|
||||||
* of each invocation. The iteratee is invoked with one argument; (index).
|
* each invocation. The iteratee is invoked with one argument; (index).
|
||||||
*
|
*
|
||||||
* @static
|
* @static
|
||||||
* @memberOf _
|
* @memberOf _
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ import isFunction from './isFunction';
|
|||||||
import isObject from './isObject';
|
import isObject from './isObject';
|
||||||
import isTypedArray from './isTypedArray';
|
import isTypedArray from './isTypedArray';
|
||||||
|
|
||||||
|
/** Built-in value references. */
|
||||||
|
var getPrototypeOf = Object.getPrototypeOf;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An alternative to `_.reduce`; this method transforms `object` to a new
|
* An alternative to `_.reduce`; this method transforms `object` to a new
|
||||||
* `accumulator` object which is the result of running each of its own enumerable
|
* `accumulator` object which is the result of running each of its own enumerable
|
||||||
@@ -45,7 +48,7 @@ function transform(object, iteratee, accumulator) {
|
|||||||
if (isArr) {
|
if (isArr) {
|
||||||
accumulator = isArray(object) ? new Ctor : [];
|
accumulator = isArray(object) ? new Ctor : [];
|
||||||
} else {
|
} else {
|
||||||
accumulator = baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined);
|
accumulator = isFunction(Ctor) ? baseCreate(getPrototypeOf(object)) : {};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
accumulator = {};
|
accumulator = {};
|
||||||
|
|||||||
@@ -76,25 +76,26 @@ var hasOwnProperty = objectProto.hasOwnProperty;
|
|||||||
* The wrapper methods that are **not** chainable by default are:
|
* The wrapper methods that are **not** chainable by default are:
|
||||||
* `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
|
* `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
|
||||||
* `cloneDeep`, `cloneDeepWith`, `cloneWith`, `deburr`, `endsWith`, `eq`,
|
* `cloneDeep`, `cloneDeepWith`, `cloneWith`, `deburr`, `endsWith`, `eq`,
|
||||||
* `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
|
* `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
|
||||||
* `findLast`, `findLastIndex`, `findLastKey`, `floor`, `forEach`, `forEachRight`,
|
* `findLastIndex`, `findLastKey`, `floor`, `forEach`, `forEachRight`, `forIn`,
|
||||||
* `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
|
* `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, `hasIn`,
|
||||||
* `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
|
* `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, `isArguments`,
|
||||||
* `isArguments`, `isArray`, `isArrayLike`, `isArrayLikeObject`, `isBoolean`,
|
* `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, `isBoolean`,
|
||||||
* `isDate`, `isElement`, `isEmpty`, `isEqual`, `isEqualWith`, `isError`,
|
* `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isEqualWith`,
|
||||||
* `isFinite`, `isFunction`, `isInteger`, `isLength`, `isMatch`, `isMatchWith`,
|
* `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, `isMap`,
|
||||||
* `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`, `isObject`, `isObjectLike`,
|
* `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`,
|
||||||
* `isPlainObject`, `isRegExp`, `isSafeInteger`, `isString`, `isUndefined`,
|
* `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, `isSafeInteger`,
|
||||||
* `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `lowerCase`,
|
* `isSet`, `isString`, `isUndefined`, `isTypedArray`, `isWeakMap`, `isWeakSet`,
|
||||||
* `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `min`, `minBy`,
|
* `join`, `kebabCase`, `last`, `lastIndexOf`, `lowerCase`, `lowerFirst`,
|
||||||
* `noConflict`, `noop`, `now`, `pad`, `padEnd`, `padStart`, `parseInt`,
|
* `lt`, `lte`, `max`, `maxBy`, `mean`, `min`, `minBy`, `noConflict`, `noop`,
|
||||||
* `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`, `round`,
|
* `now`, `pad`, `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`,
|
||||||
* `runInContext`, `sample`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
|
* `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `sample`,
|
||||||
* `sortedIndexBy`, `sortedLastIndex`, `sortedLastIndexBy`, `startCase`,
|
* `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`,
|
||||||
* `startsWith`, `subtract`, `sum`, `sumBy`, `template`, `times`, `toLower`,
|
* `sortedLastIndex`, `sortedLastIndexBy`, `startCase`, `startsWith`, `subtract`,
|
||||||
* `toInteger`, `toLength`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`,
|
* `sum`, `sumBy`, `template`, `times`, `toLower`, `toInteger`, `toLength`,
|
||||||
* `trim`, `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`,
|
* `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, `trimEnd`,
|
||||||
* `upperCase`, `upperFirst`, `value`, and `words`
|
* `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, `upperFirst`,
|
||||||
|
* `value`, and `words`
|
||||||
*
|
*
|
||||||
* @name _
|
* @name _
|
||||||
* @constructor
|
* @constructor
|
||||||
|
|||||||
Reference in New Issue
Block a user