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