forked from tsai/budibase
1292 changed files with 2 additions and 122556 deletions
@ -1,47 +0,0 @@ |
|||
Copyright OpenJS Foundation and other contributors <https://openjsf.org/> |
|||
|
|||
Based on Underscore.js, copyright Jeremy Ashkenas, |
|||
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> |
|||
|
|||
This software consists of voluntary contributions made by many |
|||
individuals. For exact contribution history, see the revision history |
|||
available at https://github.com/lodash/lodash |
|||
|
|||
The following license applies to all parts of this software except as |
|||
documented below: |
|||
|
|||
==== |
|||
|
|||
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 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. |
|||
|
|||
==== |
|||
|
|||
Copyright and related rights for sample code are waived via CC0. Sample |
|||
code is defined as all source code displayed within the prose of the |
|||
documentation. |
|||
|
|||
CC0: http://creativecommons.org/publicdomain/zero/1.0/ |
|||
|
|||
==== |
|||
|
|||
Files located in the node_modules and vendor directories are externally |
|||
maintained libraries used by this software which have their own |
|||
licenses; we recommend you read them, as their terms may differ from the |
|||
terms above. |
|||
@ -1,39 +0,0 @@ |
|||
# lodash v4.17.21 |
|||
|
|||
The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules. |
|||
|
|||
## Installation |
|||
|
|||
Using npm: |
|||
```shell |
|||
$ npm i -g npm |
|||
$ npm i --save lodash |
|||
``` |
|||
|
|||
In Node.js: |
|||
```js |
|||
// Load the full build. |
|||
var _ = require('lodash'); |
|||
// Load the core build. |
|||
var _ = require('lodash/core'); |
|||
// Load the FP build for immutable auto-curried iteratee-first data-last methods. |
|||
var fp = require('lodash/fp'); |
|||
|
|||
// Load method categories. |
|||
var array = require('lodash/array'); |
|||
var object = require('lodash/fp/object'); |
|||
|
|||
// Cherry-pick methods for smaller browserify/rollup/webpack bundles. |
|||
var at = require('lodash/at'); |
|||
var curryN = require('lodash/fp/curryN'); |
|||
``` |
|||
|
|||
See the [package source](https://github.com/lodash/lodash/tree/4.17.21-npm) for more details. |
|||
|
|||
**Note:**<br> |
|||
Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL. |
|||
|
|||
## Support |
|||
|
|||
Tested in Chrome 74-75, Firefox 66-67, IE 11, Edge 18, Safari 11-12, & Node.js 8-12.<br> |
|||
Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. |
|||
@ -1,7 +0,0 @@ |
|||
var getNative = require('./_getNative'), |
|||
root = require('./_root'); |
|||
|
|||
/* Built-in method references that are verified to be native. */ |
|||
var DataView = getNative(root, 'DataView'); |
|||
|
|||
module.exports = DataView; |
|||
@ -1,32 +0,0 @@ |
|||
var hashClear = require('./_hashClear'), |
|||
hashDelete = require('./_hashDelete'), |
|||
hashGet = require('./_hashGet'), |
|||
hashHas = require('./_hashHas'), |
|||
hashSet = require('./_hashSet'); |
|||
|
|||
/** |
|||
* Creates a hash object. |
|||
* |
|||
* @private |
|||
* @constructor |
|||
* @param {Array} [entries] The key-value pairs to cache. |
|||
*/ |
|||
function Hash(entries) { |
|||
var index = -1, |
|||
length = entries == null ? 0 : entries.length; |
|||
|
|||
this.clear(); |
|||
while (++index < length) { |
|||
var entry = entries[index]; |
|||
this.set(entry[0], entry[1]); |
|||
} |
|||
} |
|||
|
|||
// Add methods to `Hash`.
|
|||
Hash.prototype.clear = hashClear; |
|||
Hash.prototype['delete'] = hashDelete; |
|||
Hash.prototype.get = hashGet; |
|||
Hash.prototype.has = hashHas; |
|||
Hash.prototype.set = hashSet; |
|||
|
|||
module.exports = Hash; |
|||
@ -1,28 +0,0 @@ |
|||
var baseCreate = require('./_baseCreate'), |
|||
baseLodash = require('./_baseLodash'); |
|||
|
|||
/** Used as references for the maximum length and index of an array. */ |
|||
var MAX_ARRAY_LENGTH = 4294967295; |
|||
|
|||
/** |
|||
* Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. |
|||
* |
|||
* @private |
|||
* @constructor |
|||
* @param {*} value The value to wrap. |
|||
*/ |
|||
function LazyWrapper(value) { |
|||
this.__wrapped__ = value; |
|||
this.__actions__ = []; |
|||
this.__dir__ = 1; |
|||
this.__filtered__ = false; |
|||
this.__iteratees__ = []; |
|||
this.__takeCount__ = MAX_ARRAY_LENGTH; |
|||
this.__views__ = []; |
|||
} |
|||
|
|||
// Ensure `LazyWrapper` is an instance of `baseLodash`.
|
|||
LazyWrapper.prototype = baseCreate(baseLodash.prototype); |
|||
LazyWrapper.prototype.constructor = LazyWrapper; |
|||
|
|||
module.exports = LazyWrapper; |
|||
@ -1,32 +0,0 @@ |
|||
var listCacheClear = require('./_listCacheClear'), |
|||
listCacheDelete = require('./_listCacheDelete'), |
|||
listCacheGet = require('./_listCacheGet'), |
|||
listCacheHas = require('./_listCacheHas'), |
|||
listCacheSet = require('./_listCacheSet'); |
|||
|
|||
/** |
|||
* Creates an list cache object. |
|||
* |
|||
* @private |
|||
* @constructor |
|||
* @param {Array} [entries] The key-value pairs to cache. |
|||
*/ |
|||
function ListCache(entries) { |
|||
var index = -1, |
|||
length = entries == null ? 0 : entries.length; |
|||
|
|||
this.clear(); |
|||
while (++index < length) { |
|||
var entry = entries[index]; |
|||
this.set(entry[0], entry[1]); |
|||
} |
|||
} |
|||
|
|||
// Add methods to `ListCache`.
|
|||
ListCache.prototype.clear = listCacheClear; |
|||
ListCache.prototype['delete'] = listCacheDelete; |
|||
ListCache.prototype.get = listCacheGet; |
|||
ListCache.prototype.has = listCacheHas; |
|||
ListCache.prototype.set = listCacheSet; |
|||
|
|||
module.exports = ListCache; |
|||
@ -1,22 +0,0 @@ |
|||
var baseCreate = require('./_baseCreate'), |
|||
baseLodash = require('./_baseLodash'); |
|||
|
|||
/** |
|||
* The base constructor for creating `lodash` wrapper objects. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to wrap. |
|||
* @param {boolean} [chainAll] Enable explicit method chain sequences. |
|||
*/ |
|||
function LodashWrapper(value, chainAll) { |
|||
this.__wrapped__ = value; |
|||
this.__actions__ = []; |
|||
this.__chain__ = !!chainAll; |
|||
this.__index__ = 0; |
|||
this.__values__ = undefined; |
|||
} |
|||
|
|||
LodashWrapper.prototype = baseCreate(baseLodash.prototype); |
|||
LodashWrapper.prototype.constructor = LodashWrapper; |
|||
|
|||
module.exports = LodashWrapper; |
|||
@ -1,7 +0,0 @@ |
|||
var getNative = require('./_getNative'), |
|||
root = require('./_root'); |
|||
|
|||
/* Built-in method references that are verified to be native. */ |
|||
var Map = getNative(root, 'Map'); |
|||
|
|||
module.exports = Map; |
|||
@ -1,32 +0,0 @@ |
|||
var mapCacheClear = require('./_mapCacheClear'), |
|||
mapCacheDelete = require('./_mapCacheDelete'), |
|||
mapCacheGet = require('./_mapCacheGet'), |
|||
mapCacheHas = require('./_mapCacheHas'), |
|||
mapCacheSet = require('./_mapCacheSet'); |
|||
|
|||
/** |
|||
* Creates a map cache object to store key-value pairs. |
|||
* |
|||
* @private |
|||
* @constructor |
|||
* @param {Array} [entries] The key-value pairs to cache. |
|||
*/ |
|||
function MapCache(entries) { |
|||
var index = -1, |
|||
length = entries == null ? 0 : entries.length; |
|||
|
|||
this.clear(); |
|||
while (++index < length) { |
|||
var entry = entries[index]; |
|||
this.set(entry[0], entry[1]); |
|||
} |
|||
} |
|||
|
|||
// Add methods to `MapCache`.
|
|||
MapCache.prototype.clear = mapCacheClear; |
|||
MapCache.prototype['delete'] = mapCacheDelete; |
|||
MapCache.prototype.get = mapCacheGet; |
|||
MapCache.prototype.has = mapCacheHas; |
|||
MapCache.prototype.set = mapCacheSet; |
|||
|
|||
module.exports = MapCache; |
|||
@ -1,7 +0,0 @@ |
|||
var getNative = require('./_getNative'), |
|||
root = require('./_root'); |
|||
|
|||
/* Built-in method references that are verified to be native. */ |
|||
var Promise = getNative(root, 'Promise'); |
|||
|
|||
module.exports = Promise; |
|||
@ -1,7 +0,0 @@ |
|||
var getNative = require('./_getNative'), |
|||
root = require('./_root'); |
|||
|
|||
/* Built-in method references that are verified to be native. */ |
|||
var Set = getNative(root, 'Set'); |
|||
|
|||
module.exports = Set; |
|||
@ -1,27 +0,0 @@ |
|||
var MapCache = require('./_MapCache'), |
|||
setCacheAdd = require('./_setCacheAdd'), |
|||
setCacheHas = require('./_setCacheHas'); |
|||
|
|||
/** |
|||
* |
|||
* Creates an array cache object to store unique values. |
|||
* |
|||
* @private |
|||
* @constructor |
|||
* @param {Array} [values] The values to cache. |
|||
*/ |
|||
function SetCache(values) { |
|||
var index = -1, |
|||
length = values == null ? 0 : values.length; |
|||
|
|||
this.__data__ = new MapCache; |
|||
while (++index < length) { |
|||
this.add(values[index]); |
|||
} |
|||
} |
|||
|
|||
// Add methods to `SetCache`.
|
|||
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; |
|||
SetCache.prototype.has = setCacheHas; |
|||
|
|||
module.exports = SetCache; |
|||
@ -1,27 +0,0 @@ |
|||
var ListCache = require('./_ListCache'), |
|||
stackClear = require('./_stackClear'), |
|||
stackDelete = require('./_stackDelete'), |
|||
stackGet = require('./_stackGet'), |
|||
stackHas = require('./_stackHas'), |
|||
stackSet = require('./_stackSet'); |
|||
|
|||
/** |
|||
* Creates a stack cache object to store key-value pairs. |
|||
* |
|||
* @private |
|||
* @constructor |
|||
* @param {Array} [entries] The key-value pairs to cache. |
|||
*/ |
|||
function Stack(entries) { |
|||
var data = this.__data__ = new ListCache(entries); |
|||
this.size = data.size; |
|||
} |
|||
|
|||
// Add methods to `Stack`.
|
|||
Stack.prototype.clear = stackClear; |
|||
Stack.prototype['delete'] = stackDelete; |
|||
Stack.prototype.get = stackGet; |
|||
Stack.prototype.has = stackHas; |
|||
Stack.prototype.set = stackSet; |
|||
|
|||
module.exports = Stack; |
|||
@ -1,6 +0,0 @@ |
|||
var root = require('./_root'); |
|||
|
|||
/** Built-in value references. */ |
|||
var Symbol = root.Symbol; |
|||
|
|||
module.exports = Symbol; |
|||
@ -1,6 +0,0 @@ |
|||
var root = require('./_root'); |
|||
|
|||
/** Built-in value references. */ |
|||
var Uint8Array = root.Uint8Array; |
|||
|
|||
module.exports = Uint8Array; |
|||
@ -1,7 +0,0 @@ |
|||
var getNative = require('./_getNative'), |
|||
root = require('./_root'); |
|||
|
|||
/* Built-in method references that are verified to be native. */ |
|||
var WeakMap = getNative(root, 'WeakMap'); |
|||
|
|||
module.exports = WeakMap; |
|||
@ -1,21 +0,0 @@ |
|||
/** |
|||
* A faster alternative to `Function#apply`, this function invokes `func` |
|||
* with the `this` binding of `thisArg` and the arguments of `args`. |
|||
* |
|||
* @private |
|||
* @param {Function} func The function to invoke. |
|||
* @param {*} thisArg The `this` binding of `func`. |
|||
* @param {Array} args The arguments to invoke `func` with. |
|||
* @returns {*} Returns the result of `func`. |
|||
*/ |
|||
function apply(func, thisArg, args) { |
|||
switch (args.length) { |
|||
case 0: return func.call(thisArg); |
|||
case 1: return func.call(thisArg, args[0]); |
|||
case 2: return func.call(thisArg, args[0], args[1]); |
|||
case 3: return func.call(thisArg, args[0], args[1], args[2]); |
|||
} |
|||
return func.apply(thisArg, args); |
|||
} |
|||
|
|||
module.exports = apply; |
|||
@ -1,22 +0,0 @@ |
|||
/** |
|||
* A specialized version of `baseAggregator` for arrays. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} setter The function to set `accumulator` values. |
|||
* @param {Function} iteratee The iteratee to transform keys. |
|||
* @param {Object} accumulator The initial aggregated object. |
|||
* @returns {Function} Returns `accumulator`. |
|||
*/ |
|||
function arrayAggregator(array, setter, iteratee, accumulator) { |
|||
var index = -1, |
|||
length = array == null ? 0 : array.length; |
|||
|
|||
while (++index < length) { |
|||
var value = array[index]; |
|||
setter(accumulator, value, iteratee(value), array); |
|||
} |
|||
return accumulator; |
|||
} |
|||
|
|||
module.exports = arrayAggregator; |
|||
@ -1,22 +0,0 @@ |
|||
/** |
|||
* A specialized version of `_.forEach` for arrays without support for |
|||
* iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {Array} Returns `array`. |
|||
*/ |
|||
function arrayEach(array, iteratee) { |
|||
var index = -1, |
|||
length = array == null ? 0 : array.length; |
|||
|
|||
while (++index < length) { |
|||
if (iteratee(array[index], index, array) === false) { |
|||
break; |
|||
} |
|||
} |
|||
return array; |
|||
} |
|||
|
|||
module.exports = arrayEach; |
|||
@ -1,21 +0,0 @@ |
|||
/** |
|||
* A specialized version of `_.forEachRight` for arrays without support for |
|||
* iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {Array} Returns `array`. |
|||
*/ |
|||
function arrayEachRight(array, iteratee) { |
|||
var length = array == null ? 0 : array.length; |
|||
|
|||
while (length--) { |
|||
if (iteratee(array[length], length, array) === false) { |
|||
break; |
|||
} |
|||
} |
|||
return array; |
|||
} |
|||
|
|||
module.exports = arrayEachRight; |
|||
@ -1,23 +0,0 @@ |
|||
/** |
|||
* A specialized version of `_.every` for arrays without support for |
|||
* iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} predicate The function invoked per iteration. |
|||
* @returns {boolean} Returns `true` if all elements pass the predicate check, |
|||
* else `false`. |
|||
*/ |
|||
function arrayEvery(array, predicate) { |
|||
var index = -1, |
|||
length = array == null ? 0 : array.length; |
|||
|
|||
while (++index < length) { |
|||
if (!predicate(array[index], index, array)) { |
|||
return false; |
|||
} |
|||
} |
|||
return true; |
|||
} |
|||
|
|||
module.exports = arrayEvery; |
|||
@ -1,25 +0,0 @@ |
|||
/** |
|||
* A specialized version of `_.filter` for arrays without support for |
|||
* iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} predicate The function invoked per iteration. |
|||
* @returns {Array} Returns the new filtered array. |
|||
*/ |
|||
function arrayFilter(array, predicate) { |
|||
var index = -1, |
|||
length = array == null ? 0 : array.length, |
|||
resIndex = 0, |
|||
result = []; |
|||
|
|||
while (++index < length) { |
|||
var value = array[index]; |
|||
if (predicate(value, index, array)) { |
|||
result[resIndex++] = value; |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = arrayFilter; |
|||
@ -1,17 +0,0 @@ |
|||
var baseIndexOf = require('./_baseIndexOf'); |
|||
|
|||
/** |
|||
* A specialized version of `_.includes` for arrays without support for |
|||
* specifying an index to search from. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to inspect. |
|||
* @param {*} target The value to search for. |
|||
* @returns {boolean} Returns `true` if `target` is found, else `false`. |
|||
*/ |
|||
function arrayIncludes(array, value) { |
|||
var length = array == null ? 0 : array.length; |
|||
return !!length && baseIndexOf(array, value, 0) > -1; |
|||
} |
|||
|
|||
module.exports = arrayIncludes; |
|||
@ -1,22 +0,0 @@ |
|||
/** |
|||
* This function is like `arrayIncludes` except that it accepts a comparator. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to inspect. |
|||
* @param {*} target The value to search for. |
|||
* @param {Function} comparator The comparator invoked per element. |
|||
* @returns {boolean} Returns `true` if `target` is found, else `false`. |
|||
*/ |
|||
function arrayIncludesWith(array, value, comparator) { |
|||
var index = -1, |
|||
length = array == null ? 0 : array.length; |
|||
|
|||
while (++index < length) { |
|||
if (comparator(value, array[index])) { |
|||
return true; |
|||
} |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
module.exports = arrayIncludesWith; |
|||
@ -1,49 +0,0 @@ |
|||
var baseTimes = require('./_baseTimes'), |
|||
isArguments = require('./isArguments'), |
|||
isArray = require('./isArray'), |
|||
isBuffer = require('./isBuffer'), |
|||
isIndex = require('./_isIndex'), |
|||
isTypedArray = require('./isTypedArray'); |
|||
|
|||
/** Used for built-in method references. */ |
|||
var objectProto = Object.prototype; |
|||
|
|||
/** Used to check objects for own properties. */ |
|||
var hasOwnProperty = objectProto.hasOwnProperty; |
|||
|
|||
/** |
|||
* Creates an array of the enumerable property names of the array-like `value`. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to query. |
|||
* @param {boolean} inherited Specify returning inherited property names. |
|||
* @returns {Array} Returns the array of property names. |
|||
*/ |
|||
function arrayLikeKeys(value, inherited) { |
|||
var isArr = isArray(value), |
|||
isArg = !isArr && isArguments(value), |
|||
isBuff = !isArr && !isArg && isBuffer(value), |
|||
isType = !isArr && !isArg && !isBuff && isTypedArray(value), |
|||
skipIndexes = isArr || isArg || isBuff || isType, |
|||
result = skipIndexes ? baseTimes(value.length, String) : [], |
|||
length = result.length; |
|||
|
|||
for (var key in value) { |
|||
if ((inherited || hasOwnProperty.call(value, key)) && |
|||
!(skipIndexes && ( |
|||
// Safari 9 has enumerable `arguments.length` in strict mode.
|
|||
key == 'length' || |
|||
// Node.js 0.10 has enumerable non-index properties on buffers.
|
|||
(isBuff && (key == 'offset' || key == 'parent')) || |
|||
// PhantomJS 2 has enumerable non-index properties on typed arrays.
|
|||
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || |
|||
// Skip index properties.
|
|||
isIndex(key, length) |
|||
))) { |
|||
result.push(key); |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = arrayLikeKeys; |
|||
@ -1,21 +0,0 @@ |
|||
/** |
|||
* A specialized version of `_.map` for arrays without support for iteratee |
|||
* shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {Array} Returns the new mapped array. |
|||
*/ |
|||
function arrayMap(array, iteratee) { |
|||
var index = -1, |
|||
length = array == null ? 0 : array.length, |
|||
result = Array(length); |
|||
|
|||
while (++index < length) { |
|||
result[index] = iteratee(array[index], index, array); |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = arrayMap; |
|||
@ -1,20 +0,0 @@ |
|||
/** |
|||
* Appends the elements of `values` to `array`. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to modify. |
|||
* @param {Array} values The values to append. |
|||
* @returns {Array} Returns `array`. |
|||
*/ |
|||
function arrayPush(array, values) { |
|||
var index = -1, |
|||
length = values.length, |
|||
offset = array.length; |
|||
|
|||
while (++index < length) { |
|||
array[offset + index] = values[index]; |
|||
} |
|||
return array; |
|||
} |
|||
|
|||
module.exports = arrayPush; |
|||
@ -1,26 +0,0 @@ |
|||
/** |
|||
* A specialized version of `_.reduce` for arrays without support for |
|||
* iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @param {*} [accumulator] The initial value. |
|||
* @param {boolean} [initAccum] Specify using the first element of `array` as |
|||
* the initial value. |
|||
* @returns {*} Returns the accumulated value. |
|||
*/ |
|||
function arrayReduce(array, iteratee, accumulator, initAccum) { |
|||
var index = -1, |
|||
length = array == null ? 0 : array.length; |
|||
|
|||
if (initAccum && length) { |
|||
accumulator = array[++index]; |
|||
} |
|||
while (++index < length) { |
|||
accumulator = iteratee(accumulator, array[index], index, array); |
|||
} |
|||
return accumulator; |
|||
} |
|||
|
|||
module.exports = arrayReduce; |
|||
@ -1,24 +0,0 @@ |
|||
/** |
|||
* A specialized version of `_.reduceRight` for arrays without support for |
|||
* iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @param {*} [accumulator] The initial value. |
|||
* @param {boolean} [initAccum] Specify using the last element of `array` as |
|||
* the initial value. |
|||
* @returns {*} Returns the accumulated value. |
|||
*/ |
|||
function arrayReduceRight(array, iteratee, accumulator, initAccum) { |
|||
var length = array == null ? 0 : array.length; |
|||
if (initAccum && length) { |
|||
accumulator = array[--length]; |
|||
} |
|||
while (length--) { |
|||
accumulator = iteratee(accumulator, array[length], length, array); |
|||
} |
|||
return accumulator; |
|||
} |
|||
|
|||
module.exports = arrayReduceRight; |
|||
@ -1,15 +0,0 @@ |
|||
var baseRandom = require('./_baseRandom'); |
|||
|
|||
/** |
|||
* A specialized version of `_.sample` for arrays. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to sample. |
|||
* @returns {*} Returns the random element. |
|||
*/ |
|||
function arraySample(array) { |
|||
var length = array.length; |
|||
return length ? array[baseRandom(0, length - 1)] : undefined; |
|||
} |
|||
|
|||
module.exports = arraySample; |
|||
@ -1,17 +0,0 @@ |
|||
var baseClamp = require('./_baseClamp'), |
|||
copyArray = require('./_copyArray'), |
|||
shuffleSelf = require('./_shuffleSelf'); |
|||
|
|||
/** |
|||
* A specialized version of `_.sampleSize` for arrays. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to sample. |
|||
* @param {number} n The number of elements to sample. |
|||
* @returns {Array} Returns the random elements. |
|||
*/ |
|||
function arraySampleSize(array, n) { |
|||
return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); |
|||
} |
|||
|
|||
module.exports = arraySampleSize; |
|||
@ -1,15 +0,0 @@ |
|||
var copyArray = require('./_copyArray'), |
|||
shuffleSelf = require('./_shuffleSelf'); |
|||
|
|||
/** |
|||
* A specialized version of `_.shuffle` for arrays. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to shuffle. |
|||
* @returns {Array} Returns the new shuffled array. |
|||
*/ |
|||
function arrayShuffle(array) { |
|||
return shuffleSelf(copyArray(array)); |
|||
} |
|||
|
|||
module.exports = arrayShuffle; |
|||
@ -1,23 +0,0 @@ |
|||
/** |
|||
* A specialized version of `_.some` for arrays without support for iteratee |
|||
* shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} [array] The array to iterate over. |
|||
* @param {Function} predicate The function invoked per iteration. |
|||
* @returns {boolean} Returns `true` if any element passes the predicate check, |
|||
* else `false`. |
|||
*/ |
|||
function arraySome(array, predicate) { |
|||
var index = -1, |
|||
length = array == null ? 0 : array.length; |
|||
|
|||
while (++index < length) { |
|||
if (predicate(array[index], index, array)) { |
|||
return true; |
|||
} |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
module.exports = arraySome; |
|||
@ -1,12 +0,0 @@ |
|||
var baseProperty = require('./_baseProperty'); |
|||
|
|||
/** |
|||
* Gets the size of an ASCII `string`. |
|||
* |
|||
* @private |
|||
* @param {string} string The string inspect. |
|||
* @returns {number} Returns the string size. |
|||
*/ |
|||
var asciiSize = baseProperty('length'); |
|||
|
|||
module.exports = asciiSize; |
|||
@ -1,12 +0,0 @@ |
|||
/** |
|||
* Converts an ASCII `string` to an array. |
|||
* |
|||
* @private |
|||
* @param {string} string The string to convert. |
|||
* @returns {Array} Returns the converted array. |
|||
*/ |
|||
function asciiToArray(string) { |
|||
return string.split(''); |
|||
} |
|||
|
|||
module.exports = asciiToArray; |
|||
@ -1,15 +0,0 @@ |
|||
/** Used to match words composed of alphanumeric characters. */ |
|||
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; |
|||
|
|||
/** |
|||
* Splits an ASCII `string` into an array of its words. |
|||
* |
|||
* @private |
|||
* @param {string} The string to inspect. |
|||
* @returns {Array} Returns the words of `string`. |
|||
*/ |
|||
function asciiWords(string) { |
|||
return string.match(reAsciiWord) || []; |
|||
} |
|||
|
|||
module.exports = asciiWords; |
|||
@ -1,20 +0,0 @@ |
|||
var baseAssignValue = require('./_baseAssignValue'), |
|||
eq = require('./eq'); |
|||
|
|||
/** |
|||
* This function is like `assignValue` except that it doesn't assign |
|||
* `undefined` values. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to modify. |
|||
* @param {string} key The key of the property to assign. |
|||
* @param {*} value The value to assign. |
|||
*/ |
|||
function assignMergeValue(object, key, value) { |
|||
if ((value !== undefined && !eq(object[key], value)) || |
|||
(value === undefined && !(key in object))) { |
|||
baseAssignValue(object, key, value); |
|||
} |
|||
} |
|||
|
|||
module.exports = assignMergeValue; |
|||
@ -1,28 +0,0 @@ |
|||
var baseAssignValue = require('./_baseAssignValue'), |
|||
eq = require('./eq'); |
|||
|
|||
/** Used for built-in method references. */ |
|||
var objectProto = Object.prototype; |
|||
|
|||
/** Used to check objects for own properties. */ |
|||
var hasOwnProperty = objectProto.hasOwnProperty; |
|||
|
|||
/** |
|||
* Assigns `value` to `key` of `object` if the existing value is not equivalent |
|||
* using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
|
|||
* for equality comparisons. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to modify. |
|||
* @param {string} key The key of the property to assign. |
|||
* @param {*} value The value to assign. |
|||
*/ |
|||
function assignValue(object, key, value) { |
|||
var objValue = object[key]; |
|||
if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || |
|||
(value === undefined && !(key in object))) { |
|||
baseAssignValue(object, key, value); |
|||
} |
|||
} |
|||
|
|||
module.exports = assignValue; |
|||
@ -1,21 +0,0 @@ |
|||
var eq = require('./eq'); |
|||
|
|||
/** |
|||
* Gets the index at which the `key` is found in `array` of key-value pairs. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to inspect. |
|||
* @param {*} key The key to search for. |
|||
* @returns {number} Returns the index of the matched value, else `-1`. |
|||
*/ |
|||
function assocIndexOf(array, key) { |
|||
var length = array.length; |
|||
while (length--) { |
|||
if (eq(array[length][0], key)) { |
|||
return length; |
|||
} |
|||
} |
|||
return -1; |
|||
} |
|||
|
|||
module.exports = assocIndexOf; |
|||
@ -1,21 +0,0 @@ |
|||
var baseEach = require('./_baseEach'); |
|||
|
|||
/** |
|||
* Aggregates elements of `collection` on `accumulator` with keys transformed |
|||
* by `iteratee` and values set by `setter`. |
|||
* |
|||
* @private |
|||
* @param {Array|Object} collection The collection to iterate over. |
|||
* @param {Function} setter The function to set `accumulator` values. |
|||
* @param {Function} iteratee The iteratee to transform keys. |
|||
* @param {Object} accumulator The initial aggregated object. |
|||
* @returns {Function} Returns `accumulator`. |
|||
*/ |
|||
function baseAggregator(collection, setter, iteratee, accumulator) { |
|||
baseEach(collection, function(value, key, collection) { |
|||
setter(accumulator, value, iteratee(value), collection); |
|||
}); |
|||
return accumulator; |
|||
} |
|||
|
|||
module.exports = baseAggregator; |
|||
@ -1,17 +0,0 @@ |
|||
var copyObject = require('./_copyObject'), |
|||
keys = require('./keys'); |
|||
|
|||
/** |
|||
* The base implementation of `_.assign` without support for multiple sources |
|||
* or `customizer` functions. |
|||
* |
|||
* @private |
|||
* @param {Object} object The destination object. |
|||
* @param {Object} source The source object. |
|||
* @returns {Object} Returns `object`. |
|||
*/ |
|||
function baseAssign(object, source) { |
|||
return object && copyObject(source, keys(source), object); |
|||
} |
|||
|
|||
module.exports = baseAssign; |
|||
@ -1,17 +0,0 @@ |
|||
var copyObject = require('./_copyObject'), |
|||
keysIn = require('./keysIn'); |
|||
|
|||
/** |
|||
* The base implementation of `_.assignIn` without support for multiple sources |
|||
* or `customizer` functions. |
|||
* |
|||
* @private |
|||
* @param {Object} object The destination object. |
|||
* @param {Object} source The source object. |
|||
* @returns {Object} Returns `object`. |
|||
*/ |
|||
function baseAssignIn(object, source) { |
|||
return object && copyObject(source, keysIn(source), object); |
|||
} |
|||
|
|||
module.exports = baseAssignIn; |
|||
@ -1,25 +0,0 @@ |
|||
var defineProperty = require('./_defineProperty'); |
|||
|
|||
/** |
|||
* The base implementation of `assignValue` and `assignMergeValue` without |
|||
* value checks. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to modify. |
|||
* @param {string} key The key of the property to assign. |
|||
* @param {*} value The value to assign. |
|||
*/ |
|||
function baseAssignValue(object, key, value) { |
|||
if (key == '__proto__' && defineProperty) { |
|||
defineProperty(object, key, { |
|||
'configurable': true, |
|||
'enumerable': true, |
|||
'value': value, |
|||
'writable': true |
|||
}); |
|||
} else { |
|||
object[key] = value; |
|||
} |
|||
} |
|||
|
|||
module.exports = baseAssignValue; |
|||
@ -1,23 +0,0 @@ |
|||
var get = require('./get'); |
|||
|
|||
/** |
|||
* The base implementation of `_.at` without support for individual paths. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to iterate over. |
|||
* @param {string[]} paths The property paths to pick. |
|||
* @returns {Array} Returns the picked elements. |
|||
*/ |
|||
function baseAt(object, paths) { |
|||
var index = -1, |
|||
length = paths.length, |
|||
result = Array(length), |
|||
skip = object == null; |
|||
|
|||
while (++index < length) { |
|||
result[index] = skip ? undefined : get(object, paths[index]); |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseAt; |
|||
@ -1,22 +0,0 @@ |
|||
/** |
|||
* The base implementation of `_.clamp` which doesn't coerce arguments. |
|||
* |
|||
* @private |
|||
* @param {number} number The number to clamp. |
|||
* @param {number} [lower] The lower bound. |
|||
* @param {number} upper The upper bound. |
|||
* @returns {number} Returns the clamped number. |
|||
*/ |
|||
function baseClamp(number, lower, upper) { |
|||
if (number === number) { |
|||
if (upper !== undefined) { |
|||
number = number <= upper ? number : upper; |
|||
} |
|||
if (lower !== undefined) { |
|||
number = number >= lower ? number : lower; |
|||
} |
|||
} |
|||
return number; |
|||
} |
|||
|
|||
module.exports = baseClamp; |
|||
@ -1,166 +0,0 @@ |
|||
var Stack = require('./_Stack'), |
|||
arrayEach = require('./_arrayEach'), |
|||
assignValue = require('./_assignValue'), |
|||
baseAssign = require('./_baseAssign'), |
|||
baseAssignIn = require('./_baseAssignIn'), |
|||
cloneBuffer = require('./_cloneBuffer'), |
|||
copyArray = require('./_copyArray'), |
|||
copySymbols = require('./_copySymbols'), |
|||
copySymbolsIn = require('./_copySymbolsIn'), |
|||
getAllKeys = require('./_getAllKeys'), |
|||
getAllKeysIn = require('./_getAllKeysIn'), |
|||
getTag = require('./_getTag'), |
|||
initCloneArray = require('./_initCloneArray'), |
|||
initCloneByTag = require('./_initCloneByTag'), |
|||
initCloneObject = require('./_initCloneObject'), |
|||
isArray = require('./isArray'), |
|||
isBuffer = require('./isBuffer'), |
|||
isMap = require('./isMap'), |
|||
isObject = require('./isObject'), |
|||
isSet = require('./isSet'), |
|||
keys = require('./keys'), |
|||
keysIn = require('./keysIn'); |
|||
|
|||
/** Used to compose bitmasks for cloning. */ |
|||
var CLONE_DEEP_FLAG = 1, |
|||
CLONE_FLAT_FLAG = 2, |
|||
CLONE_SYMBOLS_FLAG = 4; |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var argsTag = '[object Arguments]', |
|||
arrayTag = '[object Array]', |
|||
boolTag = '[object Boolean]', |
|||
dateTag = '[object Date]', |
|||
errorTag = '[object Error]', |
|||
funcTag = '[object Function]', |
|||
genTag = '[object GeneratorFunction]', |
|||
mapTag = '[object Map]', |
|||
numberTag = '[object Number]', |
|||
objectTag = '[object Object]', |
|||
regexpTag = '[object RegExp]', |
|||
setTag = '[object Set]', |
|||
stringTag = '[object String]', |
|||
symbolTag = '[object Symbol]', |
|||
weakMapTag = '[object WeakMap]'; |
|||
|
|||
var arrayBufferTag = '[object ArrayBuffer]', |
|||
dataViewTag = '[object DataView]', |
|||
float32Tag = '[object Float32Array]', |
|||
float64Tag = '[object Float64Array]', |
|||
int8Tag = '[object Int8Array]', |
|||
int16Tag = '[object Int16Array]', |
|||
int32Tag = '[object Int32Array]', |
|||
uint8Tag = '[object Uint8Array]', |
|||
uint8ClampedTag = '[object Uint8ClampedArray]', |
|||
uint16Tag = '[object Uint16Array]', |
|||
uint32Tag = '[object Uint32Array]'; |
|||
|
|||
/** Used to identify `toStringTag` values supported by `_.clone`. */ |
|||
var cloneableTags = {}; |
|||
cloneableTags[argsTag] = cloneableTags[arrayTag] = |
|||
cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = |
|||
cloneableTags[boolTag] = cloneableTags[dateTag] = |
|||
cloneableTags[float32Tag] = cloneableTags[float64Tag] = |
|||
cloneableTags[int8Tag] = cloneableTags[int16Tag] = |
|||
cloneableTags[int32Tag] = cloneableTags[mapTag] = |
|||
cloneableTags[numberTag] = cloneableTags[objectTag] = |
|||
cloneableTags[regexpTag] = cloneableTags[setTag] = |
|||
cloneableTags[stringTag] = cloneableTags[symbolTag] = |
|||
cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = |
|||
cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; |
|||
cloneableTags[errorTag] = cloneableTags[funcTag] = |
|||
cloneableTags[weakMapTag] = false; |
|||
|
|||
/** |
|||
* The base implementation of `_.clone` and `_.cloneDeep` which tracks |
|||
* traversed objects. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to clone. |
|||
* @param {boolean} bitmask The bitmask flags. |
|||
* 1 - Deep clone |
|||
* 2 - Flatten inherited properties |
|||
* 4 - Clone symbols |
|||
* @param {Function} [customizer] The function to customize cloning. |
|||
* @param {string} [key] The key of `value`. |
|||
* @param {Object} [object] The parent object of `value`. |
|||
* @param {Object} [stack] Tracks traversed objects and their clone counterparts. |
|||
* @returns {*} Returns the cloned value. |
|||
*/ |
|||
function baseClone(value, bitmask, customizer, key, object, stack) { |
|||
var result, |
|||
isDeep = bitmask & CLONE_DEEP_FLAG, |
|||
isFlat = bitmask & CLONE_FLAT_FLAG, |
|||
isFull = bitmask & CLONE_SYMBOLS_FLAG; |
|||
|
|||
if (customizer) { |
|||
result = object ? customizer(value, key, object, stack) : customizer(value); |
|||
} |
|||
if (result !== undefined) { |
|||
return result; |
|||
} |
|||
if (!isObject(value)) { |
|||
return value; |
|||
} |
|||
var isArr = isArray(value); |
|||
if (isArr) { |
|||
result = initCloneArray(value); |
|||
if (!isDeep) { |
|||
return copyArray(value, result); |
|||
} |
|||
} else { |
|||
var tag = getTag(value), |
|||
isFunc = tag == funcTag || tag == genTag; |
|||
|
|||
if (isBuffer(value)) { |
|||
return cloneBuffer(value, isDeep); |
|||
} |
|||
if (tag == objectTag || tag == argsTag || (isFunc && !object)) { |
|||
result = (isFlat || isFunc) ? {} : initCloneObject(value); |
|||
if (!isDeep) { |
|||
return isFlat |
|||
? copySymbolsIn(value, baseAssignIn(result, value)) |
|||
: copySymbols(value, baseAssign(result, value)); |
|||
} |
|||
} else { |
|||
if (!cloneableTags[tag]) { |
|||
return object ? value : {}; |
|||
} |
|||
result = initCloneByTag(value, tag, isDeep); |
|||
} |
|||
} |
|||
// Check for circular references and return its corresponding clone.
|
|||
stack || (stack = new Stack); |
|||
var stacked = stack.get(value); |
|||
if (stacked) { |
|||
return stacked; |
|||
} |
|||
stack.set(value, result); |
|||
|
|||
if (isSet(value)) { |
|||
value.forEach(function(subValue) { |
|||
result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); |
|||
}); |
|||
} else if (isMap(value)) { |
|||
value.forEach(function(subValue, key) { |
|||
result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); |
|||
}); |
|||
} |
|||
|
|||
var keysFunc = isFull |
|||
? (isFlat ? getAllKeysIn : getAllKeys) |
|||
: (isFlat ? keysIn : keys); |
|||
|
|||
var props = isArr ? undefined : keysFunc(value); |
|||
arrayEach(props || value, function(subValue, key) { |
|||
if (props) { |
|||
key = subValue; |
|||
subValue = value[key]; |
|||
} |
|||
// Recursively populate clone (susceptible to call stack limits).
|
|||
assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); |
|||
}); |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseClone; |
|||
@ -1,18 +0,0 @@ |
|||
var baseConformsTo = require('./_baseConformsTo'), |
|||
keys = require('./keys'); |
|||
|
|||
/** |
|||
* The base implementation of `_.conforms` which doesn't clone `source`. |
|||
* |
|||
* @private |
|||
* @param {Object} source The object of property predicates to conform to. |
|||
* @returns {Function} Returns the new spec function. |
|||
*/ |
|||
function baseConforms(source) { |
|||
var props = keys(source); |
|||
return function(object) { |
|||
return baseConformsTo(object, source, props); |
|||
}; |
|||
} |
|||
|
|||
module.exports = baseConforms; |
|||
@ -1,27 +0,0 @@ |
|||
/** |
|||
* The base implementation of `_.conformsTo` which accepts `props` to check. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to inspect. |
|||
* @param {Object} source The object of property predicates to conform to. |
|||
* @returns {boolean} Returns `true` if `object` conforms, else `false`. |
|||
*/ |
|||
function baseConformsTo(object, source, props) { |
|||
var length = props.length; |
|||
if (object == null) { |
|||
return !length; |
|||
} |
|||
object = Object(object); |
|||
while (length--) { |
|||
var key = props[length], |
|||
predicate = source[key], |
|||
value = object[key]; |
|||
|
|||
if ((value === undefined && !(key in object)) || !predicate(value)) { |
|||
return false; |
|||
} |
|||
} |
|||
return true; |
|||
} |
|||
|
|||
module.exports = baseConformsTo; |
|||
@ -1,30 +0,0 @@ |
|||
var isObject = require('./isObject'); |
|||
|
|||
/** Built-in value references. */ |
|||
var objectCreate = Object.create; |
|||
|
|||
/** |
|||
* The base implementation of `_.create` without support for assigning |
|||
* properties to the created object. |
|||
* |
|||
* @private |
|||
* @param {Object} proto The object to inherit from. |
|||
* @returns {Object} Returns the new object. |
|||
*/ |
|||
var baseCreate = (function() { |
|||
function object() {} |
|||
return function(proto) { |
|||
if (!isObject(proto)) { |
|||
return {}; |
|||
} |
|||
if (objectCreate) { |
|||
return objectCreate(proto); |
|||
} |
|||
object.prototype = proto; |
|||
var result = new object; |
|||
object.prototype = undefined; |
|||
return result; |
|||
}; |
|||
}()); |
|||
|
|||
module.exports = baseCreate; |
|||
@ -1,21 +0,0 @@ |
|||
/** Error message constants. */ |
|||
var FUNC_ERROR_TEXT = 'Expected a function'; |
|||
|
|||
/** |
|||
* The base implementation of `_.delay` and `_.defer` which accepts `args` |
|||
* to provide to `func`. |
|||
* |
|||
* @private |
|||
* @param {Function} func The function to delay. |
|||
* @param {number} wait The number of milliseconds to delay invocation. |
|||
* @param {Array} args The arguments to provide to `func`. |
|||
* @returns {number|Object} Returns the timer id or timeout object. |
|||
*/ |
|||
function baseDelay(func, wait, args) { |
|||
if (typeof func != 'function') { |
|||
throw new TypeError(FUNC_ERROR_TEXT); |
|||
} |
|||
return setTimeout(function() { func.apply(undefined, args); }, wait); |
|||
} |
|||
|
|||
module.exports = baseDelay; |
|||
@ -1,67 +0,0 @@ |
|||
var SetCache = require('./_SetCache'), |
|||
arrayIncludes = require('./_arrayIncludes'), |
|||
arrayIncludesWith = require('./_arrayIncludesWith'), |
|||
arrayMap = require('./_arrayMap'), |
|||
baseUnary = require('./_baseUnary'), |
|||
cacheHas = require('./_cacheHas'); |
|||
|
|||
/** Used as the size to enable large array optimizations. */ |
|||
var LARGE_ARRAY_SIZE = 200; |
|||
|
|||
/** |
|||
* The base implementation of methods like `_.difference` without support |
|||
* for excluding multiple arrays or iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to inspect. |
|||
* @param {Array} values The values to exclude. |
|||
* @param {Function} [iteratee] The iteratee invoked per element. |
|||
* @param {Function} [comparator] The comparator invoked per element. |
|||
* @returns {Array} Returns the new array of filtered values. |
|||
*/ |
|||
function baseDifference(array, values, iteratee, comparator) { |
|||
var index = -1, |
|||
includes = arrayIncludes, |
|||
isCommon = true, |
|||
length = array.length, |
|||
result = [], |
|||
valuesLength = values.length; |
|||
|
|||
if (!length) { |
|||
return result; |
|||
} |
|||
if (iteratee) { |
|||
values = arrayMap(values, baseUnary(iteratee)); |
|||
} |
|||
if (comparator) { |
|||
includes = arrayIncludesWith; |
|||
isCommon = false; |
|||
} |
|||
else if (values.length >= LARGE_ARRAY_SIZE) { |
|||
includes = cacheHas; |
|||
isCommon = false; |
|||
values = new SetCache(values); |
|||
} |
|||
outer: |
|||
while (++index < length) { |
|||
var value = array[index], |
|||
computed = iteratee == null ? value : iteratee(value); |
|||
|
|||
value = (comparator || value !== 0) ? value : 0; |
|||
if (isCommon && computed === computed) { |
|||
var valuesIndex = valuesLength; |
|||
while (valuesIndex--) { |
|||
if (values[valuesIndex] === computed) { |
|||
continue outer; |
|||
} |
|||
} |
|||
result.push(value); |
|||
} |
|||
else if (!includes(values, computed, comparator)) { |
|||
result.push(value); |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseDifference; |
|||
@ -1,14 +0,0 @@ |
|||
var baseForOwn = require('./_baseForOwn'), |
|||
createBaseEach = require('./_createBaseEach'); |
|||
|
|||
/** |
|||
* The base implementation of `_.forEach` without support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array|Object} collection The collection to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {Array|Object} Returns `collection`. |
|||
*/ |
|||
var baseEach = createBaseEach(baseForOwn); |
|||
|
|||
module.exports = baseEach; |
|||
@ -1,14 +0,0 @@ |
|||
var baseForOwnRight = require('./_baseForOwnRight'), |
|||
createBaseEach = require('./_createBaseEach'); |
|||
|
|||
/** |
|||
* The base implementation of `_.forEachRight` without support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array|Object} collection The collection to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {Array|Object} Returns `collection`. |
|||
*/ |
|||
var baseEachRight = createBaseEach(baseForOwnRight, true); |
|||
|
|||
module.exports = baseEachRight; |
|||
@ -1,21 +0,0 @@ |
|||
var baseEach = require('./_baseEach'); |
|||
|
|||
/** |
|||
* The base implementation of `_.every` without support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array|Object} collection The collection to iterate over. |
|||
* @param {Function} predicate The function invoked per iteration. |
|||
* @returns {boolean} Returns `true` if all elements pass the predicate check, |
|||
* else `false` |
|||
*/ |
|||
function baseEvery(collection, predicate) { |
|||
var result = true; |
|||
baseEach(collection, function(value, index, collection) { |
|||
result = !!predicate(value, index, collection); |
|||
return result; |
|||
}); |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseEvery; |
|||
@ -1,32 +0,0 @@ |
|||
var isSymbol = require('./isSymbol'); |
|||
|
|||
/** |
|||
* The base implementation of methods like `_.max` and `_.min` which accepts a |
|||
* `comparator` to determine the extremum value. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to iterate over. |
|||
* @param {Function} iteratee The iteratee invoked per iteration. |
|||
* @param {Function} comparator The comparator used to compare values. |
|||
* @returns {*} Returns the extremum value. |
|||
*/ |
|||
function baseExtremum(array, iteratee, comparator) { |
|||
var index = -1, |
|||
length = array.length; |
|||
|
|||
while (++index < length) { |
|||
var value = array[index], |
|||
current = iteratee(value); |
|||
|
|||
if (current != null && (computed === undefined |
|||
? (current === current && !isSymbol(current)) |
|||
: comparator(current, computed) |
|||
)) { |
|||
var computed = current, |
|||
result = value; |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseExtremum; |
|||
@ -1,32 +0,0 @@ |
|||
var toInteger = require('./toInteger'), |
|||
toLength = require('./toLength'); |
|||
|
|||
/** |
|||
* The base implementation of `_.fill` without an iteratee call guard. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to fill. |
|||
* @param {*} value The value to fill `array` with. |
|||
* @param {number} [start=0] The start position. |
|||
* @param {number} [end=array.length] The end position. |
|||
* @returns {Array} Returns `array`. |
|||
*/ |
|||
function baseFill(array, value, start, end) { |
|||
var length = array.length; |
|||
|
|||
start = toInteger(start); |
|||
if (start < 0) { |
|||
start = -start > length ? 0 : (length + start); |
|||
} |
|||
end = (end === undefined || end > length) ? length : toInteger(end); |
|||
if (end < 0) { |
|||
end += length; |
|||
} |
|||
end = start > end ? 0 : toLength(end); |
|||
while (start < end) { |
|||
array[start++] = value; |
|||
} |
|||
return array; |
|||
} |
|||
|
|||
module.exports = baseFill; |
|||
@ -1,21 +0,0 @@ |
|||
var baseEach = require('./_baseEach'); |
|||
|
|||
/** |
|||
* The base implementation of `_.filter` without support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array|Object} collection The collection to iterate over. |
|||
* @param {Function} predicate The function invoked per iteration. |
|||
* @returns {Array} Returns the new filtered array. |
|||
*/ |
|||
function baseFilter(collection, predicate) { |
|||
var result = []; |
|||
baseEach(collection, function(value, index, collection) { |
|||
if (predicate(value, index, collection)) { |
|||
result.push(value); |
|||
} |
|||
}); |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseFilter; |
|||
@ -1,24 +0,0 @@ |
|||
/** |
|||
* The base implementation of `_.findIndex` and `_.findLastIndex` without |
|||
* support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to inspect. |
|||
* @param {Function} predicate The function invoked per iteration. |
|||
* @param {number} fromIndex The index to search from. |
|||
* @param {boolean} [fromRight] Specify iterating from right to left. |
|||
* @returns {number} Returns the index of the matched value, else `-1`. |
|||
*/ |
|||
function baseFindIndex(array, predicate, fromIndex, fromRight) { |
|||
var length = array.length, |
|||
index = fromIndex + (fromRight ? 1 : -1); |
|||
|
|||
while ((fromRight ? index-- : ++index < length)) { |
|||
if (predicate(array[index], index, array)) { |
|||
return index; |
|||
} |
|||
} |
|||
return -1; |
|||
} |
|||
|
|||
module.exports = baseFindIndex; |
|||
@ -1,23 +0,0 @@ |
|||
/** |
|||
* The base implementation of methods like `_.findKey` and `_.findLastKey`, |
|||
* without support for iteratee shorthands, which iterates over `collection` |
|||
* using `eachFunc`. |
|||
* |
|||
* @private |
|||
* @param {Array|Object} collection The collection to inspect. |
|||
* @param {Function} predicate The function invoked per iteration. |
|||
* @param {Function} eachFunc The function to iterate over `collection`. |
|||
* @returns {*} Returns the found element or its key, else `undefined`. |
|||
*/ |
|||
function baseFindKey(collection, predicate, eachFunc) { |
|||
var result; |
|||
eachFunc(collection, function(value, key, collection) { |
|||
if (predicate(value, key, collection)) { |
|||
result = key; |
|||
return false; |
|||
} |
|||
}); |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseFindKey; |
|||
@ -1,38 +0,0 @@ |
|||
var arrayPush = require('./_arrayPush'), |
|||
isFlattenable = require('./_isFlattenable'); |
|||
|
|||
/** |
|||
* The base implementation of `_.flatten` with support for restricting flattening. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to flatten. |
|||
* @param {number} depth The maximum recursion depth. |
|||
* @param {boolean} [predicate=isFlattenable] The function invoked per iteration. |
|||
* @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. |
|||
* @param {Array} [result=[]] The initial result value. |
|||
* @returns {Array} Returns the new flattened array. |
|||
*/ |
|||
function baseFlatten(array, depth, predicate, isStrict, result) { |
|||
var index = -1, |
|||
length = array.length; |
|||
|
|||
predicate || (predicate = isFlattenable); |
|||
result || (result = []); |
|||
|
|||
while (++index < length) { |
|||
var value = array[index]; |
|||
if (depth > 0 && predicate(value)) { |
|||
if (depth > 1) { |
|||
// Recursively flatten arrays (susceptible to call stack limits).
|
|||
baseFlatten(value, depth - 1, predicate, isStrict, result); |
|||
} else { |
|||
arrayPush(result, value); |
|||
} |
|||
} else if (!isStrict) { |
|||
result[result.length] = value; |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseFlatten; |
|||
@ -1,16 +0,0 @@ |
|||
var createBaseFor = require('./_createBaseFor'); |
|||
|
|||
/** |
|||
* The base implementation of `baseForOwn` which iterates over `object` |
|||
* properties returned by `keysFunc` and invokes `iteratee` for each property. |
|||
* Iteratee functions may exit iteration early by explicitly returning `false`. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @param {Function} keysFunc The function to get the keys of `object`. |
|||
* @returns {Object} Returns `object`. |
|||
*/ |
|||
var baseFor = createBaseFor(); |
|||
|
|||
module.exports = baseFor; |
|||
@ -1,16 +0,0 @@ |
|||
var baseFor = require('./_baseFor'), |
|||
keys = require('./keys'); |
|||
|
|||
/** |
|||
* The base implementation of `_.forOwn` without support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {Object} Returns `object`. |
|||
*/ |
|||
function baseForOwn(object, iteratee) { |
|||
return object && baseFor(object, iteratee, keys); |
|||
} |
|||
|
|||
module.exports = baseForOwn; |
|||
@ -1,16 +0,0 @@ |
|||
var baseForRight = require('./_baseForRight'), |
|||
keys = require('./keys'); |
|||
|
|||
/** |
|||
* The base implementation of `_.forOwnRight` without support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {Object} Returns `object`. |
|||
*/ |
|||
function baseForOwnRight(object, iteratee) { |
|||
return object && baseForRight(object, iteratee, keys); |
|||
} |
|||
|
|||
module.exports = baseForOwnRight; |
|||
@ -1,15 +0,0 @@ |
|||
var createBaseFor = require('./_createBaseFor'); |
|||
|
|||
/** |
|||
* This function is like `baseFor` except that it iterates over properties |
|||
* in the opposite order. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @param {Function} keysFunc The function to get the keys of `object`. |
|||
* @returns {Object} Returns `object`. |
|||
*/ |
|||
var baseForRight = createBaseFor(true); |
|||
|
|||
module.exports = baseForRight; |
|||
@ -1,19 +0,0 @@ |
|||
var arrayFilter = require('./_arrayFilter'), |
|||
isFunction = require('./isFunction'); |
|||
|
|||
/** |
|||
* The base implementation of `_.functions` which creates an array of |
|||
* `object` function property names filtered from `props`. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to inspect. |
|||
* @param {Array} props The property names to filter. |
|||
* @returns {Array} Returns the function names. |
|||
*/ |
|||
function baseFunctions(object, props) { |
|||
return arrayFilter(props, function(key) { |
|||
return isFunction(object[key]); |
|||
}); |
|||
} |
|||
|
|||
module.exports = baseFunctions; |
|||
@ -1,24 +0,0 @@ |
|||
var castPath = require('./_castPath'), |
|||
toKey = require('./_toKey'); |
|||
|
|||
/** |
|||
* The base implementation of `_.get` without support for default values. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to query. |
|||
* @param {Array|string} path The path of the property to get. |
|||
* @returns {*} Returns the resolved value. |
|||
*/ |
|||
function baseGet(object, path) { |
|||
path = castPath(path, object); |
|||
|
|||
var index = 0, |
|||
length = path.length; |
|||
|
|||
while (object != null && index < length) { |
|||
object = object[toKey(path[index++])]; |
|||
} |
|||
return (index && index == length) ? object : undefined; |
|||
} |
|||
|
|||
module.exports = baseGet; |
|||
@ -1,20 +0,0 @@ |
|||
var arrayPush = require('./_arrayPush'), |
|||
isArray = require('./isArray'); |
|||
|
|||
/** |
|||
* The base implementation of `getAllKeys` and `getAllKeysIn` which uses |
|||
* `keysFunc` and `symbolsFunc` to get the enumerable property names and |
|||
* symbols of `object`. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to query. |
|||
* @param {Function} keysFunc The function to get the keys of `object`. |
|||
* @param {Function} symbolsFunc The function to get the symbols of `object`. |
|||
* @returns {Array} Returns the array of property names and symbols. |
|||
*/ |
|||
function baseGetAllKeys(object, keysFunc, symbolsFunc) { |
|||
var result = keysFunc(object); |
|||
return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); |
|||
} |
|||
|
|||
module.exports = baseGetAllKeys; |
|||
@ -1,28 +0,0 @@ |
|||
var Symbol = require('./_Symbol'), |
|||
getRawTag = require('./_getRawTag'), |
|||
objectToString = require('./_objectToString'); |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var nullTag = '[object Null]', |
|||
undefinedTag = '[object Undefined]'; |
|||
|
|||
/** Built-in value references. */ |
|||
var symToStringTag = Symbol ? Symbol.toStringTag : undefined; |
|||
|
|||
/** |
|||
* The base implementation of `getTag` without fallbacks for buggy environments. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to query. |
|||
* @returns {string} Returns the `toStringTag`. |
|||
*/ |
|||
function baseGetTag(value) { |
|||
if (value == null) { |
|||
return value === undefined ? undefinedTag : nullTag; |
|||
} |
|||
return (symToStringTag && symToStringTag in Object(value)) |
|||
? getRawTag(value) |
|||
: objectToString(value); |
|||
} |
|||
|
|||
module.exports = baseGetTag; |
|||
@ -1,14 +0,0 @@ |
|||
/** |
|||
* The base implementation of `_.gt` which doesn't coerce arguments. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to compare. |
|||
* @param {*} other The other value to compare. |
|||
* @returns {boolean} Returns `true` if `value` is greater than `other`, |
|||
* else `false`. |
|||
*/ |
|||
function baseGt(value, other) { |
|||
return value > other; |
|||
} |
|||
|
|||
module.exports = baseGt; |
|||
@ -1,19 +0,0 @@ |
|||
/** Used for built-in method references. */ |
|||
var objectProto = Object.prototype; |
|||
|
|||
/** Used to check objects for own properties. */ |
|||
var hasOwnProperty = objectProto.hasOwnProperty; |
|||
|
|||
/** |
|||
* The base implementation of `_.has` without support for deep paths. |
|||
* |
|||
* @private |
|||
* @param {Object} [object] The object to query. |
|||
* @param {Array|string} key The key to check. |
|||
* @returns {boolean} Returns `true` if `key` exists, else `false`. |
|||
*/ |
|||
function baseHas(object, key) { |
|||
return object != null && hasOwnProperty.call(object, key); |
|||
} |
|||
|
|||
module.exports = baseHas; |
|||
@ -1,13 +0,0 @@ |
|||
/** |
|||
* The base implementation of `_.hasIn` without support for deep paths. |
|||
* |
|||
* @private |
|||
* @param {Object} [object] The object to query. |
|||
* @param {Array|string} key The key to check. |
|||
* @returns {boolean} Returns `true` if `key` exists, else `false`. |
|||
*/ |
|||
function baseHasIn(object, key) { |
|||
return object != null && key in Object(object); |
|||
} |
|||
|
|||
module.exports = baseHasIn; |
|||
@ -1,18 +0,0 @@ |
|||
/* Built-in method references for those with the same name as other `lodash` methods. */ |
|||
var nativeMax = Math.max, |
|||
nativeMin = Math.min; |
|||
|
|||
/** |
|||
* The base implementation of `_.inRange` which doesn't coerce arguments. |
|||
* |
|||
* @private |
|||
* @param {number} number The number to check. |
|||
* @param {number} start The start of the range. |
|||
* @param {number} end The end of the range. |
|||
* @returns {boolean} Returns `true` if `number` is in the range, else `false`. |
|||
*/ |
|||
function baseInRange(number, start, end) { |
|||
return number >= nativeMin(start, end) && number < nativeMax(start, end); |
|||
} |
|||
|
|||
module.exports = baseInRange; |
|||
@ -1,20 +0,0 @@ |
|||
var baseFindIndex = require('./_baseFindIndex'), |
|||
baseIsNaN = require('./_baseIsNaN'), |
|||
strictIndexOf = require('./_strictIndexOf'); |
|||
|
|||
/** |
|||
* The base implementation of `_.indexOf` without `fromIndex` bounds checks. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to inspect. |
|||
* @param {*} value The value to search for. |
|||
* @param {number} fromIndex The index to search from. |
|||
* @returns {number} Returns the index of the matched value, else `-1`. |
|||
*/ |
|||
function baseIndexOf(array, value, fromIndex) { |
|||
return value === value |
|||
? strictIndexOf(array, value, fromIndex) |
|||
: baseFindIndex(array, baseIsNaN, fromIndex); |
|||
} |
|||
|
|||
module.exports = baseIndexOf; |
|||
@ -1,23 +0,0 @@ |
|||
/** |
|||
* This function is like `baseIndexOf` except that it accepts a comparator. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to inspect. |
|||
* @param {*} value The value to search for. |
|||
* @param {number} fromIndex The index to search from. |
|||
* @param {Function} comparator The comparator invoked per element. |
|||
* @returns {number} Returns the index of the matched value, else `-1`. |
|||
*/ |
|||
function baseIndexOfWith(array, value, fromIndex, comparator) { |
|||
var index = fromIndex - 1, |
|||
length = array.length; |
|||
|
|||
while (++index < length) { |
|||
if (comparator(array[index], value)) { |
|||
return index; |
|||
} |
|||
} |
|||
return -1; |
|||
} |
|||
|
|||
module.exports = baseIndexOfWith; |
|||
@ -1,74 +0,0 @@ |
|||
var SetCache = require('./_SetCache'), |
|||
arrayIncludes = require('./_arrayIncludes'), |
|||
arrayIncludesWith = require('./_arrayIncludesWith'), |
|||
arrayMap = require('./_arrayMap'), |
|||
baseUnary = require('./_baseUnary'), |
|||
cacheHas = require('./_cacheHas'); |
|||
|
|||
/* Built-in method references for those with the same name as other `lodash` methods. */ |
|||
var nativeMin = Math.min; |
|||
|
|||
/** |
|||
* The base implementation of methods like `_.intersection`, without support |
|||
* for iteratee shorthands, that accepts an array of arrays to inspect. |
|||
* |
|||
* @private |
|||
* @param {Array} arrays The arrays to inspect. |
|||
* @param {Function} [iteratee] The iteratee invoked per element. |
|||
* @param {Function} [comparator] The comparator invoked per element. |
|||
* @returns {Array} Returns the new array of shared values. |
|||
*/ |
|||
function baseIntersection(arrays, iteratee, comparator) { |
|||
var includes = comparator ? arrayIncludesWith : arrayIncludes, |
|||
length = arrays[0].length, |
|||
othLength = arrays.length, |
|||
othIndex = othLength, |
|||
caches = Array(othLength), |
|||
maxLength = Infinity, |
|||
result = []; |
|||
|
|||
while (othIndex--) { |
|||
var array = arrays[othIndex]; |
|||
if (othIndex && iteratee) { |
|||
array = arrayMap(array, baseUnary(iteratee)); |
|||
} |
|||
maxLength = nativeMin(array.length, maxLength); |
|||
caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) |
|||
? new SetCache(othIndex && array) |
|||
: undefined; |
|||
} |
|||
array = arrays[0]; |
|||
|
|||
var index = -1, |
|||
seen = caches[0]; |
|||
|
|||
outer: |
|||
while (++index < length && result.length < maxLength) { |
|||
var value = array[index], |
|||
computed = iteratee ? iteratee(value) : value; |
|||
|
|||
value = (comparator || value !== 0) ? value : 0; |
|||
if (!(seen |
|||
? cacheHas(seen, computed) |
|||
: includes(result, computed, comparator) |
|||
)) { |
|||
othIndex = othLength; |
|||
while (--othIndex) { |
|||
var cache = caches[othIndex]; |
|||
if (!(cache |
|||
? cacheHas(cache, computed) |
|||
: includes(arrays[othIndex], computed, comparator)) |
|||
) { |
|||
continue outer; |
|||
} |
|||
} |
|||
if (seen) { |
|||
seen.push(computed); |
|||
} |
|||
result.push(value); |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseIntersection; |
|||
@ -1,21 +0,0 @@ |
|||
var baseForOwn = require('./_baseForOwn'); |
|||
|
|||
/** |
|||
* The base implementation of `_.invert` and `_.invertBy` which inverts |
|||
* `object` with values transformed by `iteratee` and set by `setter`. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to iterate over. |
|||
* @param {Function} setter The function to set `accumulator` values. |
|||
* @param {Function} iteratee The iteratee to transform values. |
|||
* @param {Object} accumulator The initial inverted object. |
|||
* @returns {Function} Returns `accumulator`. |
|||
*/ |
|||
function baseInverter(object, setter, iteratee, accumulator) { |
|||
baseForOwn(object, function(value, key, object) { |
|||
setter(accumulator, iteratee(value), key, object); |
|||
}); |
|||
return accumulator; |
|||
} |
|||
|
|||
module.exports = baseInverter; |
|||
@ -1,24 +0,0 @@ |
|||
var apply = require('./_apply'), |
|||
castPath = require('./_castPath'), |
|||
last = require('./last'), |
|||
parent = require('./_parent'), |
|||
toKey = require('./_toKey'); |
|||
|
|||
/** |
|||
* The base implementation of `_.invoke` without support for individual |
|||
* method arguments. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to query. |
|||
* @param {Array|string} path The path of the method to invoke. |
|||
* @param {Array} args The arguments to invoke the method with. |
|||
* @returns {*} Returns the result of the invoked method. |
|||
*/ |
|||
function baseInvoke(object, path, args) { |
|||
path = castPath(path, object); |
|||
object = parent(object, path); |
|||
var func = object == null ? object : object[toKey(last(path))]; |
|||
return func == null ? undefined : apply(func, object, args); |
|||
} |
|||
|
|||
module.exports = baseInvoke; |
|||
@ -1,18 +0,0 @@ |
|||
var baseGetTag = require('./_baseGetTag'), |
|||
isObjectLike = require('./isObjectLike'); |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var argsTag = '[object Arguments]'; |
|||
|
|||
/** |
|||
* The base implementation of `_.isArguments`. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is an `arguments` object, |
|||
*/ |
|||
function baseIsArguments(value) { |
|||
return isObjectLike(value) && baseGetTag(value) == argsTag; |
|||
} |
|||
|
|||
module.exports = baseIsArguments; |
|||
@ -1,17 +0,0 @@ |
|||
var baseGetTag = require('./_baseGetTag'), |
|||
isObjectLike = require('./isObjectLike'); |
|||
|
|||
var arrayBufferTag = '[object ArrayBuffer]'; |
|||
|
|||
/** |
|||
* The base implementation of `_.isArrayBuffer` without Node.js optimizations. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. |
|||
*/ |
|||
function baseIsArrayBuffer(value) { |
|||
return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; |
|||
} |
|||
|
|||
module.exports = baseIsArrayBuffer; |
|||
@ -1,18 +0,0 @@ |
|||
var baseGetTag = require('./_baseGetTag'), |
|||
isObjectLike = require('./isObjectLike'); |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var dateTag = '[object Date]'; |
|||
|
|||
/** |
|||
* The base implementation of `_.isDate` without Node.js optimizations. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is a date object, else `false`. |
|||
*/ |
|||
function baseIsDate(value) { |
|||
return isObjectLike(value) && baseGetTag(value) == dateTag; |
|||
} |
|||
|
|||
module.exports = baseIsDate; |
|||
@ -1,28 +0,0 @@ |
|||
var baseIsEqualDeep = require('./_baseIsEqualDeep'), |
|||
isObjectLike = require('./isObjectLike'); |
|||
|
|||
/** |
|||
* The base implementation of `_.isEqual` which supports partial comparisons |
|||
* and tracks traversed objects. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to compare. |
|||
* @param {*} other The other value to compare. |
|||
* @param {boolean} bitmask The bitmask flags. |
|||
* 1 - Unordered comparison |
|||
* 2 - Partial comparison |
|||
* @param {Function} [customizer] The function to customize comparisons. |
|||
* @param {Object} [stack] Tracks traversed `value` and `other` objects. |
|||
* @returns {boolean} Returns `true` if the values are equivalent, else `false`. |
|||
*/ |
|||
function baseIsEqual(value, other, bitmask, customizer, stack) { |
|||
if (value === other) { |
|||
return true; |
|||
} |
|||
if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { |
|||
return value !== value && other !== other; |
|||
} |
|||
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); |
|||
} |
|||
|
|||
module.exports = baseIsEqual; |
|||
@ -1,83 +0,0 @@ |
|||
var Stack = require('./_Stack'), |
|||
equalArrays = require('./_equalArrays'), |
|||
equalByTag = require('./_equalByTag'), |
|||
equalObjects = require('./_equalObjects'), |
|||
getTag = require('./_getTag'), |
|||
isArray = require('./isArray'), |
|||
isBuffer = require('./isBuffer'), |
|||
isTypedArray = require('./isTypedArray'); |
|||
|
|||
/** Used to compose bitmasks for value comparisons. */ |
|||
var COMPARE_PARTIAL_FLAG = 1; |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var argsTag = '[object Arguments]', |
|||
arrayTag = '[object Array]', |
|||
objectTag = '[object Object]'; |
|||
|
|||
/** Used for built-in method references. */ |
|||
var objectProto = Object.prototype; |
|||
|
|||
/** Used to check objects for own properties. */ |
|||
var hasOwnProperty = objectProto.hasOwnProperty; |
|||
|
|||
/** |
|||
* A specialized version of `baseIsEqual` for arrays and objects which performs |
|||
* deep comparisons and tracks traversed objects enabling objects with circular |
|||
* references to be compared. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to compare. |
|||
* @param {Object} other The other object to compare. |
|||
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. |
|||
* @param {Function} customizer The function to customize comparisons. |
|||
* @param {Function} equalFunc The function to determine equivalents of values. |
|||
* @param {Object} [stack] Tracks traversed `object` and `other` objects. |
|||
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`. |
|||
*/ |
|||
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { |
|||
var objIsArr = isArray(object), |
|||
othIsArr = isArray(other), |
|||
objTag = objIsArr ? arrayTag : getTag(object), |
|||
othTag = othIsArr ? arrayTag : getTag(other); |
|||
|
|||
objTag = objTag == argsTag ? objectTag : objTag; |
|||
othTag = othTag == argsTag ? objectTag : othTag; |
|||
|
|||
var objIsObj = objTag == objectTag, |
|||
othIsObj = othTag == objectTag, |
|||
isSameTag = objTag == othTag; |
|||
|
|||
if (isSameTag && isBuffer(object)) { |
|||
if (!isBuffer(other)) { |
|||
return false; |
|||
} |
|||
objIsArr = true; |
|||
objIsObj = false; |
|||
} |
|||
if (isSameTag && !objIsObj) { |
|||
stack || (stack = new Stack); |
|||
return (objIsArr || isTypedArray(object)) |
|||
? equalArrays(object, other, bitmask, customizer, equalFunc, stack) |
|||
: equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); |
|||
} |
|||
if (!(bitmask & COMPARE_PARTIAL_FLAG)) { |
|||
var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), |
|||
othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); |
|||
|
|||
if (objIsWrapped || othIsWrapped) { |
|||
var objUnwrapped = objIsWrapped ? object.value() : object, |
|||
othUnwrapped = othIsWrapped ? other.value() : other; |
|||
|
|||
stack || (stack = new Stack); |
|||
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); |
|||
} |
|||
} |
|||
if (!isSameTag) { |
|||
return false; |
|||
} |
|||
stack || (stack = new Stack); |
|||
return equalObjects(object, other, bitmask, customizer, equalFunc, stack); |
|||
} |
|||
|
|||
module.exports = baseIsEqualDeep; |
|||
@ -1,18 +0,0 @@ |
|||
var getTag = require('./_getTag'), |
|||
isObjectLike = require('./isObjectLike'); |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var mapTag = '[object Map]'; |
|||
|
|||
/** |
|||
* The base implementation of `_.isMap` without Node.js optimizations. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is a map, else `false`. |
|||
*/ |
|||
function baseIsMap(value) { |
|||
return isObjectLike(value) && getTag(value) == mapTag; |
|||
} |
|||
|
|||
module.exports = baseIsMap; |
|||
@ -1,62 +0,0 @@ |
|||
var Stack = require('./_Stack'), |
|||
baseIsEqual = require('./_baseIsEqual'); |
|||
|
|||
/** Used to compose bitmasks for value comparisons. */ |
|||
var COMPARE_PARTIAL_FLAG = 1, |
|||
COMPARE_UNORDERED_FLAG = 2; |
|||
|
|||
/** |
|||
* The base implementation of `_.isMatch` without support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to inspect. |
|||
* @param {Object} source The object of property values to match. |
|||
* @param {Array} matchData The property names, values, and compare flags to match. |
|||
* @param {Function} [customizer] The function to customize comparisons. |
|||
* @returns {boolean} Returns `true` if `object` is a match, else `false`. |
|||
*/ |
|||
function baseIsMatch(object, source, matchData, customizer) { |
|||
var index = matchData.length, |
|||
length = index, |
|||
noCustomizer = !customizer; |
|||
|
|||
if (object == null) { |
|||
return !length; |
|||
} |
|||
object = Object(object); |
|||
while (index--) { |
|||
var data = matchData[index]; |
|||
if ((noCustomizer && data[2]) |
|||
? data[1] !== object[data[0]] |
|||
: !(data[0] in object) |
|||
) { |
|||
return false; |
|||
} |
|||
} |
|||
while (++index < length) { |
|||
data = matchData[index]; |
|||
var key = data[0], |
|||
objValue = object[key], |
|||
srcValue = data[1]; |
|||
|
|||
if (noCustomizer && data[2]) { |
|||
if (objValue === undefined && !(key in object)) { |
|||
return false; |
|||
} |
|||
} else { |
|||
var stack = new Stack; |
|||
if (customizer) { |
|||
var result = customizer(objValue, srcValue, key, object, source, stack); |
|||
} |
|||
if (!(result === undefined |
|||
? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) |
|||
: result |
|||
)) { |
|||
return false; |
|||
} |
|||
} |
|||
} |
|||
return true; |
|||
} |
|||
|
|||
module.exports = baseIsMatch; |
|||
@ -1,12 +0,0 @@ |
|||
/** |
|||
* The base implementation of `_.isNaN` without support for number objects. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. |
|||
*/ |
|||
function baseIsNaN(value) { |
|||
return value !== value; |
|||
} |
|||
|
|||
module.exports = baseIsNaN; |
|||
@ -1,47 +0,0 @@ |
|||
var isFunction = require('./isFunction'), |
|||
isMasked = require('./_isMasked'), |
|||
isObject = require('./isObject'), |
|||
toSource = require('./_toSource'); |
|||
|
|||
/** |
|||
* Used to match `RegExp` |
|||
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
|
|||
*/ |
|||
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; |
|||
|
|||
/** Used to detect host constructors (Safari). */ |
|||
var reIsHostCtor = /^\[object .+?Constructor\]$/; |
|||
|
|||
/** Used for built-in method references. */ |
|||
var funcProto = Function.prototype, |
|||
objectProto = Object.prototype; |
|||
|
|||
/** Used to resolve the decompiled source of functions. */ |
|||
var funcToString = funcProto.toString; |
|||
|
|||
/** Used to check objects for own properties. */ |
|||
var hasOwnProperty = objectProto.hasOwnProperty; |
|||
|
|||
/** Used to detect if a method is native. */ |
|||
var reIsNative = RegExp('^' + |
|||
funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') |
|||
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' |
|||
); |
|||
|
|||
/** |
|||
* The base implementation of `_.isNative` without bad shim checks. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is a native function, |
|||
* else `false`. |
|||
*/ |
|||
function baseIsNative(value) { |
|||
if (!isObject(value) || isMasked(value)) { |
|||
return false; |
|||
} |
|||
var pattern = isFunction(value) ? reIsNative : reIsHostCtor; |
|||
return pattern.test(toSource(value)); |
|||
} |
|||
|
|||
module.exports = baseIsNative; |
|||
@ -1,18 +0,0 @@ |
|||
var baseGetTag = require('./_baseGetTag'), |
|||
isObjectLike = require('./isObjectLike'); |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var regexpTag = '[object RegExp]'; |
|||
|
|||
/** |
|||
* The base implementation of `_.isRegExp` without Node.js optimizations. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is a regexp, else `false`. |
|||
*/ |
|||
function baseIsRegExp(value) { |
|||
return isObjectLike(value) && baseGetTag(value) == regexpTag; |
|||
} |
|||
|
|||
module.exports = baseIsRegExp; |
|||
@ -1,18 +0,0 @@ |
|||
var getTag = require('./_getTag'), |
|||
isObjectLike = require('./isObjectLike'); |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var setTag = '[object Set]'; |
|||
|
|||
/** |
|||
* The base implementation of `_.isSet` without Node.js optimizations. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is a set, else `false`. |
|||
*/ |
|||
function baseIsSet(value) { |
|||
return isObjectLike(value) && getTag(value) == setTag; |
|||
} |
|||
|
|||
module.exports = baseIsSet; |
|||
@ -1,60 +0,0 @@ |
|||
var baseGetTag = require('./_baseGetTag'), |
|||
isLength = require('./isLength'), |
|||
isObjectLike = require('./isObjectLike'); |
|||
|
|||
/** `Object#toString` result references. */ |
|||
var argsTag = '[object Arguments]', |
|||
arrayTag = '[object Array]', |
|||
boolTag = '[object Boolean]', |
|||
dateTag = '[object Date]', |
|||
errorTag = '[object Error]', |
|||
funcTag = '[object Function]', |
|||
mapTag = '[object Map]', |
|||
numberTag = '[object Number]', |
|||
objectTag = '[object Object]', |
|||
regexpTag = '[object RegExp]', |
|||
setTag = '[object Set]', |
|||
stringTag = '[object String]', |
|||
weakMapTag = '[object WeakMap]'; |
|||
|
|||
var arrayBufferTag = '[object ArrayBuffer]', |
|||
dataViewTag = '[object DataView]', |
|||
float32Tag = '[object Float32Array]', |
|||
float64Tag = '[object Float64Array]', |
|||
int8Tag = '[object Int8Array]', |
|||
int16Tag = '[object Int16Array]', |
|||
int32Tag = '[object Int32Array]', |
|||
uint8Tag = '[object Uint8Array]', |
|||
uint8ClampedTag = '[object Uint8ClampedArray]', |
|||
uint16Tag = '[object Uint16Array]', |
|||
uint32Tag = '[object Uint32Array]'; |
|||
|
|||
/** Used to identify `toStringTag` values of typed arrays. */ |
|||
var typedArrayTags = {}; |
|||
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = |
|||
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = |
|||
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = |
|||
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = |
|||
typedArrayTags[uint32Tag] = true; |
|||
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = |
|||
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = |
|||
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = |
|||
typedArrayTags[errorTag] = typedArrayTags[funcTag] = |
|||
typedArrayTags[mapTag] = typedArrayTags[numberTag] = |
|||
typedArrayTags[objectTag] = typedArrayTags[regexpTag] = |
|||
typedArrayTags[setTag] = typedArrayTags[stringTag] = |
|||
typedArrayTags[weakMapTag] = false; |
|||
|
|||
/** |
|||
* The base implementation of `_.isTypedArray` without Node.js optimizations. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to check. |
|||
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`. |
|||
*/ |
|||
function baseIsTypedArray(value) { |
|||
return isObjectLike(value) && |
|||
isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; |
|||
} |
|||
|
|||
module.exports = baseIsTypedArray; |
|||
@ -1,31 +0,0 @@ |
|||
var baseMatches = require('./_baseMatches'), |
|||
baseMatchesProperty = require('./_baseMatchesProperty'), |
|||
identity = require('./identity'), |
|||
isArray = require('./isArray'), |
|||
property = require('./property'); |
|||
|
|||
/** |
|||
* The base implementation of `_.iteratee`. |
|||
* |
|||
* @private |
|||
* @param {*} [value=_.identity] The value to convert to an iteratee. |
|||
* @returns {Function} Returns the iteratee. |
|||
*/ |
|||
function baseIteratee(value) { |
|||
// Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
|
|||
// See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
|
|||
if (typeof value == 'function') { |
|||
return value; |
|||
} |
|||
if (value == null) { |
|||
return identity; |
|||
} |
|||
if (typeof value == 'object') { |
|||
return isArray(value) |
|||
? baseMatchesProperty(value[0], value[1]) |
|||
: baseMatches(value); |
|||
} |
|||
return property(value); |
|||
} |
|||
|
|||
module.exports = baseIteratee; |
|||
@ -1,30 +0,0 @@ |
|||
var isPrototype = require('./_isPrototype'), |
|||
nativeKeys = require('./_nativeKeys'); |
|||
|
|||
/** Used for built-in method references. */ |
|||
var objectProto = Object.prototype; |
|||
|
|||
/** Used to check objects for own properties. */ |
|||
var hasOwnProperty = objectProto.hasOwnProperty; |
|||
|
|||
/** |
|||
* The base implementation of `_.keys` which doesn't treat sparse arrays as dense. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to query. |
|||
* @returns {Array} Returns the array of property names. |
|||
*/ |
|||
function baseKeys(object) { |
|||
if (!isPrototype(object)) { |
|||
return nativeKeys(object); |
|||
} |
|||
var result = []; |
|||
for (var key in Object(object)) { |
|||
if (hasOwnProperty.call(object, key) && key != 'constructor') { |
|||
result.push(key); |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseKeys; |
|||
@ -1,33 +0,0 @@ |
|||
var isObject = require('./isObject'), |
|||
isPrototype = require('./_isPrototype'), |
|||
nativeKeysIn = require('./_nativeKeysIn'); |
|||
|
|||
/** Used for built-in method references. */ |
|||
var objectProto = Object.prototype; |
|||
|
|||
/** Used to check objects for own properties. */ |
|||
var hasOwnProperty = objectProto.hasOwnProperty; |
|||
|
|||
/** |
|||
* The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. |
|||
* |
|||
* @private |
|||
* @param {Object} object The object to query. |
|||
* @returns {Array} Returns the array of property names. |
|||
*/ |
|||
function baseKeysIn(object) { |
|||
if (!isObject(object)) { |
|||
return nativeKeysIn(object); |
|||
} |
|||
var isProto = isPrototype(object), |
|||
result = []; |
|||
|
|||
for (var key in object) { |
|||
if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { |
|||
result.push(key); |
|||
} |
|||
} |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseKeysIn; |
|||
@ -1,10 +0,0 @@ |
|||
/** |
|||
* The function whose prototype chain sequence wrappers inherit from. |
|||
* |
|||
* @private |
|||
*/ |
|||
function baseLodash() { |
|||
// No operation performed.
|
|||
} |
|||
|
|||
module.exports = baseLodash; |
|||
@ -1,14 +0,0 @@ |
|||
/** |
|||
* The base implementation of `_.lt` which doesn't coerce arguments. |
|||
* |
|||
* @private |
|||
* @param {*} value The value to compare. |
|||
* @param {*} other The other value to compare. |
|||
* @returns {boolean} Returns `true` if `value` is less than `other`, |
|||
* else `false`. |
|||
*/ |
|||
function baseLt(value, other) { |
|||
return value < other; |
|||
} |
|||
|
|||
module.exports = baseLt; |
|||
@ -1,22 +0,0 @@ |
|||
var baseEach = require('./_baseEach'), |
|||
isArrayLike = require('./isArrayLike'); |
|||
|
|||
/** |
|||
* The base implementation of `_.map` without support for iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array|Object} collection The collection to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {Array} Returns the new mapped array. |
|||
*/ |
|||
function baseMap(collection, iteratee) { |
|||
var index = -1, |
|||
result = isArrayLike(collection) ? Array(collection.length) : []; |
|||
|
|||
baseEach(collection, function(value, key, collection) { |
|||
result[++index] = iteratee(value, key, collection); |
|||
}); |
|||
return result; |
|||
} |
|||
|
|||
module.exports = baseMap; |
|||
@ -1,22 +0,0 @@ |
|||
var baseIsMatch = require('./_baseIsMatch'), |
|||
getMatchData = require('./_getMatchData'), |
|||
matchesStrictComparable = require('./_matchesStrictComparable'); |
|||
|
|||
/** |
|||
* The base implementation of `_.matches` which doesn't clone `source`. |
|||
* |
|||
* @private |
|||
* @param {Object} source The object of property values to match. |
|||
* @returns {Function} Returns the new spec function. |
|||
*/ |
|||
function baseMatches(source) { |
|||
var matchData = getMatchData(source); |
|||
if (matchData.length == 1 && matchData[0][2]) { |
|||
return matchesStrictComparable(matchData[0][0], matchData[0][1]); |
|||
} |
|||
return function(object) { |
|||
return object === source || baseIsMatch(object, source, matchData); |
|||
}; |
|||
} |
|||
|
|||
module.exports = baseMatches; |
|||
@ -1,33 +0,0 @@ |
|||
var baseIsEqual = require('./_baseIsEqual'), |
|||
get = require('./get'), |
|||
hasIn = require('./hasIn'), |
|||
isKey = require('./_isKey'), |
|||
isStrictComparable = require('./_isStrictComparable'), |
|||
matchesStrictComparable = require('./_matchesStrictComparable'), |
|||
toKey = require('./_toKey'); |
|||
|
|||
/** Used to compose bitmasks for value comparisons. */ |
|||
var COMPARE_PARTIAL_FLAG = 1, |
|||
COMPARE_UNORDERED_FLAG = 2; |
|||
|
|||
/** |
|||
* The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. |
|||
* |
|||
* @private |
|||
* @param {string} path The path of the property to get. |
|||
* @param {*} srcValue The value to match. |
|||
* @returns {Function} Returns the new spec function. |
|||
*/ |
|||
function baseMatchesProperty(path, srcValue) { |
|||
if (isKey(path) && isStrictComparable(srcValue)) { |
|||
return matchesStrictComparable(toKey(path), srcValue); |
|||
} |
|||
return function(object) { |
|||
var objValue = get(object, path); |
|||
return (objValue === undefined && objValue === srcValue) |
|||
? hasIn(object, path) |
|||
: baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); |
|||
}; |
|||
} |
|||
|
|||
module.exports = baseMatchesProperty; |
|||
@ -1,20 +0,0 @@ |
|||
var baseSum = require('./_baseSum'); |
|||
|
|||
/** Used as references for various `Number` constants. */ |
|||
var NAN = 0 / 0; |
|||
|
|||
/** |
|||
* The base implementation of `_.mean` and `_.meanBy` without support for |
|||
* iteratee shorthands. |
|||
* |
|||
* @private |
|||
* @param {Array} array The array to iterate over. |
|||
* @param {Function} iteratee The function invoked per iteration. |
|||
* @returns {number} Returns the mean. |
|||
*/ |
|||
function baseMean(array, iteratee) { |
|||
var length = array == null ? 0 : array.length; |
|||
return length ? (baseSum(array, iteratee) / length) : NAN; |
|||
} |
|||
|
|||
module.exports = baseMean; |
|||
@ -1,42 +0,0 @@ |
|||
var Stack = require('./_Stack'), |
|||
assignMergeValue = require('./_assignMergeValue'), |
|||
baseFor = require('./_baseFor'), |
|||
baseMergeDeep = require('./_baseMergeDeep'), |
|||
isObject = require('./isObject'), |
|||
keysIn = require('./keysIn'), |
|||
safeGet = require('./_safeGet'); |
|||
|
|||
/** |
|||
* The base implementation of `_.merge` without support for multiple sources. |
|||
* |
|||
* @private |
|||
* @param {Object} object The destination object. |
|||
* @param {Object} source The source object. |
|||
* @param {number} srcIndex The index of `source`. |
|||
* @param {Function} [customizer] The function to customize merged values. |
|||
* @param {Object} [stack] Tracks traversed source values and their merged |
|||
* counterparts. |
|||
*/ |
|||
function baseMerge(object, source, srcIndex, customizer, stack) { |
|||
if (object === source) { |
|||
return; |
|||
} |
|||
baseFor(source, function(srcValue, key) { |
|||
stack || (stack = new Stack); |
|||
if (isObject(srcValue)) { |
|||
baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); |
|||
} |
|||
else { |
|||
var newValue = customizer |
|||
? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) |
|||
: undefined; |
|||
|
|||
if (newValue === undefined) { |
|||
newValue = srcValue; |
|||
} |
|||
assignMergeValue(object, key, newValue); |
|||
} |
|||
}, keysIn); |
|||
} |
|||
|
|||
module.exports = baseMerge; |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue