lodash-rails 4.5.1 → 4.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/lodash/rails/version.rb +1 -1
- data/vendor/assets/javascripts/lodash.core.js +83 -80
- data/vendor/assets/javascripts/lodash.core.min.js +23 -23
- data/vendor/assets/javascripts/lodash.js +337 -197
- data/vendor/assets/javascripts/lodash.min.js +116 -115
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f014fb0533f8bbdad7af447f2971e51fe096d89d
|
|
4
|
+
data.tar.gz: 59a1d3694c271e9c9d10574205c9321f3372205e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2a666474bb4040485a681cbb7902dbf317856bd0e94f0404547459a4500ec72cf3a03bbdb0a9ce6ecac31f3c1513753652ca2b982ff2f438ede850ed772722a9
|
|
7
|
+
data.tar.gz: eaac872af0c0d2acf72ad0aa9305fd83c7591bee80cc7200e42d3c30d941a0e05ff3b6d16e0bb19586f44bbd5c104b6db0b48127362a2eb8a4716d2ed9c60f43
|
data/README.md
CHANGED
data/lib/lodash/rails/version.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* lodash 4.
|
|
3
|
+
* lodash 4.6.1 (Custom Build) <https://lodash.com/>
|
|
4
4
|
* Build: `lodash core -o ./dist/lodash.core.js`
|
|
5
5
|
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
|
|
6
6
|
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
var undefined;
|
|
14
14
|
|
|
15
15
|
/** Used as the semantic version number. */
|
|
16
|
-
var VERSION = '4.
|
|
16
|
+
var VERSION = '4.6.1';
|
|
17
|
+
|
|
18
|
+
/** Used as the `TypeError` message for "Functions" methods. */
|
|
19
|
+
var FUNC_ERROR_TEXT = 'Expected a function';
|
|
17
20
|
|
|
18
21
|
/** Used to compose bitmasks for wrapper metadata. */
|
|
19
22
|
var BIND_FLAG = 1,
|
|
@@ -23,9 +26,6 @@
|
|
|
23
26
|
var UNORDERED_COMPARE_FLAG = 1,
|
|
24
27
|
PARTIAL_COMPARE_FLAG = 2;
|
|
25
28
|
|
|
26
|
-
/** Used as the `TypeError` message for "Functions" methods. */
|
|
27
|
-
var FUNC_ERROR_TEXT = 'Expected a function';
|
|
28
|
-
|
|
29
29
|
/** Used as references for various `Number` constants. */
|
|
30
30
|
var INFINITY = 1 / 0,
|
|
31
31
|
MAX_SAFE_INTEGER = 9007199254740991;
|
|
@@ -426,46 +426,48 @@
|
|
|
426
426
|
* `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
|
|
427
427
|
* `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
|
|
428
428
|
* `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
|
|
429
|
-
* `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
|
|
430
|
-
* `differenceBy`, `differenceWith`, `drop`, `dropRight`,
|
|
431
|
-
* `
|
|
432
|
-
* `
|
|
433
|
-
* `
|
|
434
|
-
* `
|
|
435
|
-
* `
|
|
436
|
-
* `
|
|
437
|
-
* `
|
|
438
|
-
* `
|
|
439
|
-
* `
|
|
440
|
-
* `
|
|
441
|
-
* `
|
|
442
|
-
* `
|
|
443
|
-
* `
|
|
444
|
-
* `
|
|
445
|
-
* `
|
|
446
|
-
* `
|
|
447
|
-
* `
|
|
429
|
+
* `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
|
|
430
|
+
* `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
|
|
431
|
+
* `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
|
|
432
|
+
* `flatten`, `flattenDeep`, `flattenDepth`, `flip`, `flow`, `flowRight`,
|
|
433
|
+
* `fromPairs`, `functions`, `functionsIn`, `groupBy`, `initial`, `intersection`,
|
|
434
|
+
* `intersectionBy`, `intersectionWith`, `invert`, `invertBy`, `invokeMap`,
|
|
435
|
+
* `iteratee`, `keyBy`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`,
|
|
436
|
+
* `matches`, `matchesProperty`, `memoize`, `merge`, `mergeWith`, `method`,
|
|
437
|
+
* `methodOf`, `mixin`, `negate`, `nthArg`, `omit`, `omitBy`, `once`, `orderBy`,
|
|
438
|
+
* `over`, `overArgs`, `overEvery`, `overSome`, `partial`, `partialRight`,
|
|
439
|
+
* `partition`, `pick`, `pickBy`, `plant`, `property`, `propertyOf`, `pull`,
|
|
440
|
+
* `pullAll`, `pullAllBy`, `pullAllWith`, `pullAt`, `push`, `range`,
|
|
441
|
+
* `rangeRight`, `rearg`, `reject`, `remove`, `rest`, `reverse`, `sampleSize`,
|
|
442
|
+
* `set`, `setWith`, `shuffle`, `slice`, `sort`, `sortBy`, `splice`, `spread`,
|
|
443
|
+
* `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
|
|
444
|
+
* `thru`, `toArray`, `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`,
|
|
445
|
+
* `transform`, `unary`, `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`,
|
|
446
|
+
* `uniqWith`, `unset`, `unshift`, `unzip`, `unzipWith`, `update`, `values`,
|
|
447
|
+
* `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, `zipObject`,
|
|
448
|
+
* `zipObjectDeep`, and `zipWith`
|
|
448
449
|
*
|
|
449
450
|
* The wrapper methods that are **not** chainable by default are:
|
|
450
451
|
* `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
|
|
451
|
-
* `cloneDeep`, `cloneDeepWith`, `cloneWith`, `deburr`, `
|
|
452
|
-
* `
|
|
453
|
-
* `
|
|
454
|
-
* `
|
|
455
|
-
* `
|
|
456
|
-
* `
|
|
457
|
-
* `
|
|
458
|
-
* `
|
|
459
|
-
* `
|
|
460
|
-
* `
|
|
461
|
-
* `
|
|
462
|
-
* `
|
|
463
|
-
* `
|
|
464
|
-
* `
|
|
465
|
-
* `
|
|
466
|
-
* `
|
|
467
|
-
* `
|
|
468
|
-
* `
|
|
452
|
+
* `cloneDeep`, `cloneDeepWith`, `cloneWith`, `deburr`, `each`, `eachRight`,
|
|
453
|
+
* `endsWith`, `eq`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`,
|
|
454
|
+
* `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `first`, `floor`,
|
|
455
|
+
* `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,
|
|
456
|
+
* `get`, `gt`, `gte`, `has`, `hasIn`, `head`, `identity`, `includes`,
|
|
457
|
+
* `indexOf`, `inRange`, `invoke`, `isArguments`, `isArray`, `isArrayBuffer`,
|
|
458
|
+
* `isArrayLike`, `isArrayLikeObject`, `isBoolean`, `isBuffer`, `isDate`,
|
|
459
|
+
* `isElement`, `isEmpty`, `isEqual`, `isEqualWith`, `isError`, `isFinite`,
|
|
460
|
+
* `isFunction`, `isInteger`, `isLength`, `isMap`, `isMatch`, `isMatchWith`,
|
|
461
|
+
* `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`, `isObject`, `isObjectLike`,
|
|
462
|
+
* `isPlainObject`, `isRegExp`, `isSafeInteger`, `isSet`, `isString`,
|
|
463
|
+
* `isUndefined`, `isTypedArray`, `isWeakMap`, `isWeakSet`, `join`, `kebabCase`,
|
|
464
|
+
* `last`, `lastIndexOf`, `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`,
|
|
465
|
+
* `maxBy`, `mean`, `min`, `minBy`, `noConflict`, `noop`, `now`, `pad`,
|
|
466
|
+
* `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
|
|
467
|
+
* `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
|
|
468
|
+
* `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
|
|
469
|
+
* `sortedLastIndexBy`, `startCase`, `startsWith`, `subtract`, `sum`, `sumBy`,
|
|
470
|
+
* `template`, `times`, `toInteger`, `toJSON`, `toLength`, `toLower`,
|
|
469
471
|
* `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, `trimEnd`,
|
|
470
472
|
* `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, `upperFirst`,
|
|
471
473
|
* `value`, and `words`
|
|
@@ -765,44 +767,45 @@
|
|
|
765
767
|
|
|
766
768
|
if (!objIsArr) {
|
|
767
769
|
objTag = objectToString.call(object);
|
|
768
|
-
|
|
769
|
-
objTag = objectTag;
|
|
770
|
-
}
|
|
770
|
+
objTag = objTag == argsTag ? objectTag : objTag;
|
|
771
771
|
}
|
|
772
772
|
if (!othIsArr) {
|
|
773
773
|
othTag = objectToString.call(other);
|
|
774
|
-
|
|
775
|
-
othTag = objectTag;
|
|
776
|
-
}
|
|
774
|
+
othTag = othTag == argsTag ? objectTag : othTag;
|
|
777
775
|
}
|
|
778
776
|
var objIsObj = objTag == objectTag && !isHostObject(object),
|
|
779
777
|
othIsObj = othTag == objectTag && !isHostObject(other),
|
|
780
778
|
isSameTag = objTag == othTag;
|
|
781
779
|
|
|
782
|
-
|
|
783
|
-
|
|
780
|
+
stack || (stack = []);
|
|
781
|
+
var stacked = find(stack, function(entry) {
|
|
782
|
+
return entry[0] === object;
|
|
783
|
+
});
|
|
784
|
+
if (stacked && stacked[1]) {
|
|
785
|
+
return stacked[1] == other;
|
|
786
|
+
}
|
|
787
|
+
stack.push([object, other]);
|
|
788
|
+
if (isSameTag && !objIsObj) {
|
|
789
|
+
var result = (objIsArr || isTypedArray(object))
|
|
790
|
+
? equalArrays(object, other, equalFunc, customizer, bitmask, stack)
|
|
791
|
+
: equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
|
|
792
|
+
stack.pop();
|
|
793
|
+
return result;
|
|
784
794
|
}
|
|
785
|
-
|
|
786
|
-
if (!isPartial) {
|
|
795
|
+
if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
|
|
787
796
|
var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
|
|
788
797
|
othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
|
|
789
798
|
|
|
790
799
|
if (objIsWrapped || othIsWrapped) {
|
|
791
|
-
|
|
800
|
+
var result = equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, bitmask, stack);
|
|
801
|
+
stack.pop();
|
|
802
|
+
return result;
|
|
792
803
|
}
|
|
793
804
|
}
|
|
794
805
|
if (!isSameTag) {
|
|
795
806
|
return false;
|
|
796
807
|
}
|
|
797
|
-
|
|
798
|
-
var stacked = find(stack, function(entry) {
|
|
799
|
-
return entry[0] === object;
|
|
800
|
-
});
|
|
801
|
-
if (stacked && stacked[1]) {
|
|
802
|
-
return stacked[1] == other;
|
|
803
|
-
}
|
|
804
|
-
stack.push([object, other]);
|
|
805
|
-
var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, bitmask, stack);
|
|
808
|
+
var result = equalObjects(object, other, equalFunc, customizer, bitmask, stack);
|
|
806
809
|
stack.pop();
|
|
807
810
|
return result;
|
|
808
811
|
}
|
|
@@ -1205,9 +1208,9 @@
|
|
|
1205
1208
|
* @param {Array} array The array to compare.
|
|
1206
1209
|
* @param {Array} other The other array to compare.
|
|
1207
1210
|
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
1208
|
-
* @param {Function}
|
|
1209
|
-
* @param {number}
|
|
1210
|
-
* @param {Object}
|
|
1211
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
1212
|
+
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.
|
|
1213
|
+
* @param {Object} stack Tracks traversed `array` and `other` objects.
|
|
1211
1214
|
* @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
|
|
1212
1215
|
*/
|
|
1213
1216
|
function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
|
|
@@ -1263,11 +1266,12 @@
|
|
|
1263
1266
|
* @param {Object} other The other object to compare.
|
|
1264
1267
|
* @param {string} tag The `toStringTag` of the objects to compare.
|
|
1265
1268
|
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
1266
|
-
* @param {Function}
|
|
1267
|
-
* @param {number}
|
|
1269
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
1270
|
+
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.
|
|
1271
|
+
* @param {Object} stack Tracks traversed `object` and `other` objects.
|
|
1268
1272
|
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
|
|
1269
1273
|
*/
|
|
1270
|
-
function equalByTag(object, other, tag, equalFunc, customizer, bitmask) {
|
|
1274
|
+
function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
|
|
1271
1275
|
switch (tag) {
|
|
1272
1276
|
|
|
1273
1277
|
case boolTag:
|
|
@@ -1301,9 +1305,9 @@
|
|
|
1301
1305
|
* @param {Object} object The object to compare.
|
|
1302
1306
|
* @param {Object} other The other object to compare.
|
|
1303
1307
|
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
1304
|
-
* @param {Function}
|
|
1305
|
-
* @param {number}
|
|
1306
|
-
* @param {Object}
|
|
1308
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
1309
|
+
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.
|
|
1310
|
+
* @param {Object} stack Tracks traversed `object` and `other` objects.
|
|
1307
1311
|
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
|
|
1308
1312
|
*/
|
|
1309
1313
|
function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
|
|
@@ -1395,7 +1399,7 @@
|
|
|
1395
1399
|
*/
|
|
1396
1400
|
function isPrototype(value) {
|
|
1397
1401
|
var Ctor = value && value.constructor,
|
|
1398
|
-
proto = (
|
|
1402
|
+
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
|
|
1399
1403
|
|
|
1400
1404
|
return value === proto;
|
|
1401
1405
|
}
|
|
@@ -2452,8 +2456,7 @@
|
|
|
2452
2456
|
* // => false
|
|
2453
2457
|
*/
|
|
2454
2458
|
function isArrayLike(value) {
|
|
2455
|
-
return value != null &&
|
|
2456
|
-
!(typeof value == 'function' && isFunction(value)) && isLength(getLength(value));
|
|
2459
|
+
return value != null && isLength(getLength(value)) && !isFunction(value);
|
|
2457
2460
|
}
|
|
2458
2461
|
|
|
2459
2462
|
/**
|
|
@@ -2525,14 +2528,14 @@
|
|
|
2525
2528
|
}
|
|
2526
2529
|
|
|
2527
2530
|
/**
|
|
2528
|
-
* Checks if `value` is empty. A value is considered
|
|
2529
|
-
* `arguments` object, array, string, or jQuery-like collection
|
|
2530
|
-
*
|
|
2531
|
+
* Checks if `value` is an empty collection or object. A value is considered
|
|
2532
|
+
* empty if it's an `arguments` object, array, string, or jQuery-like collection
|
|
2533
|
+
* with a length of `0` or has no own enumerable properties.
|
|
2531
2534
|
*
|
|
2532
2535
|
* @static
|
|
2533
2536
|
* @memberOf _
|
|
2534
2537
|
* @category Lang
|
|
2535
|
-
* @param {
|
|
2538
|
+
* @param {*} value The value to check.
|
|
2536
2539
|
* @returns {boolean} Returns `true` if `value` is empty, else `false`.
|
|
2537
2540
|
* @example
|
|
2538
2541
|
*
|
|
@@ -2642,8 +2645,8 @@
|
|
|
2642
2645
|
*/
|
|
2643
2646
|
function isFunction(value) {
|
|
2644
2647
|
// The use of `Object#toString` avoids issues with the `typeof` operator
|
|
2645
|
-
// in Safari 8 which returns 'object' for typed array constructors,
|
|
2646
|
-
// PhantomJS 1.9 which returns 'function' for `NodeList` instances.
|
|
2648
|
+
// in Safari 8 which returns 'object' for typed array and weak map constructors,
|
|
2649
|
+
// and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
|
|
2647
2650
|
var tag = isObject(value) ? objectToString.call(value) : '';
|
|
2648
2651
|
return tag == funcTag || tag == genTag;
|
|
2649
2652
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* lodash 4.
|
|
3
|
+
* lodash 4.6.1 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
|
|
4
4
|
* Build: `lodash core -o ./dist/lodash.core.js`
|
|
5
5
|
*/
|
|
6
6
|
;(function(){function n(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function t(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===an?i===i:r(i,c)))var c=i,f=o}return f}function r(n,t,r){var e;return r(n,function(n,r,u){return t(n,r,u)?(e=n,false):void 0}),e}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return O(t,function(t){return n[t]})}function o(n){return n&&n.Object===Object?n:null}function i(n){return vn[n];
|
|
7
|
-
}function c(n){var t=false;if(null!=n&&typeof n.toString!="function")try{t=!!(n+"")}catch(r){}return t}function f(n,t){return n=typeof n=="number"||hn.test(n)?+n:-1,n>-1&&0==n%1&&(null==t?9007199254740991:t)>n}function a(n){if(Y(n)&&!Pn(n)){if(n instanceof l)return n;if(
|
|
8
|
-
u=(n===u||n!==n&&u!==u)&&!
|
|
9
|
-
}return u}function
|
|
10
|
-
|
|
11
|
-
var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&j(n[u],r[u],an,3)))return false}return true}}function
|
|
12
|
-
|
|
13
|
-
return X(t)?t:r}}function D(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==wn&&this instanceof e?u:n;++c<f;)a[c]=r[c];for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");var u=B(n);return e}function I(n,t,r,e,u,o){var i=-1,c=1&u,f=n.length,a=t.length;if(f!=a&&!(2&u&&a>f))return false;for(a=true;++i<f;){
|
|
14
|
-
})){a=false;break}}else if(l!==p&&!r(l,p,e,u,o)){a=false;break}}return a}function $(n,t,r){switch(r){case"[object Boolean]":case"[object Date]":return+n==+t;case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object Number]":return n!=+n?t!=+t:n==+t;case"[object RegExp]":case"[object String]":return n==t+""}return false}function q(n,t,r,e,u,o){var i=2&u,c=en(n),f=c.length,a=en(t).length;if(f!=a&&!i)return false;
|
|
15
|
-
var p=c[l],s=n[p],h=t[p];if(void 0!==an||s!==h&&!r(s,h,e,u,o)){a=false;break}i||(i="constructor"==p)}return a&&!i&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(a=false)),a}function z(n){var t=n?n.length:an;if(W(t)&&(Pn(n)||nn(n)||K(n))){n=String;for(var r=-1,e=Array(t);++r<t;)e[r]=n(r);t=e}else t=null;return t}
|
|
16
|
-
return n?n[0]:an}function J(n,t){return r(n,
|
|
17
|
-
for(u=Array(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function H(n,t){return n>t}function K(n){return Y(n)&&L(n)&&
|
|
18
|
-
}function Y(n){return!!n&&typeof n=="object"}function Z(n){return typeof n=="number"||Y(n)&&"[object Number]"==kn.call(n)}function nn(n){return typeof n=="string"||!Pn(n)&&Y(n)&&"[object String]"==kn.call(n)}function tn(n,t){return t>n}function rn(n){return typeof n=="string"?n:null==n?"":n+""}function en(n){var t=C(n);if(!t&&!L(n))return Dn(Object(n));var r,e=z(n),u=!!e,e=e||[],o=e.length;for(r in n)!
|
|
19
|
-
var a=e[t];i&&("length"==a||f(a,c))||"constructor"==a&&(r||!
|
|
20
|
-
thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}var an,ln=1/0,pn=/[&<>"'`]/g,sn=RegExp(pn.source),hn=/^(?:0|[1-9]\d*)$/,vn={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},yn={"function":true,object:true},_n=yn[typeof exports]&&exports&&!exports.nodeType?exports:an,
|
|
21
|
-
return function(r,e){if(null==r)return r;if(!L(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}(
|
|
22
|
-
n(N(t),on)}),Gn=V(function(n,t,r){return D(n,t,r)}),Jn=V(function(n,t){return h(n,1,t)}),Mn=V(function(n,t,r){return h(n,Vn(t)||0,r)}),Pn=Array.isArray,Un=Number,Vn=Number,Hn=R(function(n,t){F(t,en(t),n)}),Kn=R(function(n,t){F(t,un(t),n)}),Ln=R(function(n,t,r,e){F(t,un(t),n,e)}),Qn=V(function(n){return n.push(an,p),Ln.apply(an,n)}),Wn=V(function(n,t){return null==n?{}:
|
|
23
|
-
n.__chain__=true,n},a.compact=function(n){return y(n,Boolean)},a.concat=Cn,a.create=function(n,t){var r=s(n);return t?Hn(r,t):r},a.defaults=Qn,a.defer=Jn,a.delay=Mn,a.filter=function(n,t){return y(n,
|
|
24
|
-
return function(){return!n.apply(this,arguments)}},a.once=function(n){return U(2,n)},a.pick=Wn,a.slice=function(n,t,r){var e=n?n.length:0;return r=r===an?e:+r,e?k(n,null==t?0:+t,r):[]},a.sortBy=function(n,t){var r=0;return t=
|
|
25
|
-
}),
|
|
26
|
-
r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1},a.isArguments=K,a.isArray=Pn,a.isBoolean=function(n){return true===n||false===n||Y(n)&&"[object Boolean]"==kn.call(n)},a.isDate=function(n){return Y(n)&&"[object Date]"==kn.call(n)},a.isEmpty=function(n){if(L(n)&&(Pn(n)||nn(n)||Q(n.splice)||K(n)))return!n.length;for(var t in n)if(
|
|
7
|
+
}function c(n){var t=false;if(null!=n&&typeof n.toString!="function")try{t=!!(n+"")}catch(r){}return t}function f(n,t){return n=typeof n=="number"||hn.test(n)?+n:-1,n>-1&&0==n%1&&(null==t?9007199254740991:t)>n}function a(n){if(Y(n)&&!Pn(n)){if(n instanceof l)return n;if(An.call(n,"__wrapped__")){var t=new l(n.__wrapped__,n.__chain__);return t.__actions__=N(n.__actions__),t}}return new l(n)}function l(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function p(n,t,r,e){var u;return(u=n===an)||(u=xn[r],
|
|
8
|
+
u=(n===u||n!==n&&u!==u)&&!An.call(e,r)),u?t:n}function s(n){return X(n)?Fn(n):{}}function h(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");return setTimeout(function(){n.apply(an,r)},t)}function v(n,t){var r=true;return $n(n,function(n,e,u){return r=!!t(n,e,u)}),r}function y(n,t){var r=[];return $n(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function _(t,r,e,u){u||(u=[]);for(var o=-1,i=t.length;++o<i;){var c=t[o];r>0&&Y(c)&&L(c)&&(e||Pn(c)||K(c))?r>1?_(c,r-1,e,u):n(u,c):e||(u[u.length]=c);
|
|
9
|
+
}return u}function b(n,t){return n&&qn(n,t,en)}function g(n,t){return y(t,function(t){return Q(n[t])})}function j(n,t,r,e,u){return n===t?true:null==n||null==t||!X(n)&&!Y(t)?n!==n&&t!==t:d(n,t,j,r,e,u)}function d(n,t,r,e,u,o){var i=Pn(n),f=Pn(t),a="[object Array]",l="[object Array]";i||(a=kn.call(n),a="[object Arguments]"==a?"[object Object]":a),f||(l=kn.call(t),l="[object Arguments]"==l?"[object Object]":l);var p="[object Object]"==a&&!c(n),f="[object Object]"==l&&!c(t),l=a==l;o||(o=[]);var s=J(o,function(t){
|
|
10
|
+
return t[0]===n});return s&&s[1]?s[1]==t:(o.push([n,t]),l&&!p?(t=i||isTypedArray(n)?I(n,t,r,e,u,o):$(n,t,a),o.pop(),t):2&u||(i=p&&An.call(n,"__wrapped__"),a=f&&An.call(t,"__wrapped__"),!i&&!a)?l?(t=q(n,t,r,e,u,o),o.pop(),t):false:(t=r(i?n.value():n,a?t.value():t,e,u,o),o.pop(),t))}function m(n){var t=typeof n;return"function"==t?n:null==n?cn:("object"==t?x:E)(n)}function w(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r}function O(n,t){var r=-1,e=L(n)?Array(n.length):[];return $n(n,function(n,u,o){
|
|
11
|
+
e[++r]=t(n,u,o)}),e}function x(n){var t=en(n);return function(r){var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&j(n[u],r[u],an,3)))return false}return true}}function A(n,t){return n=Object(n),P(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function E(n){return function(t){return null==t?an:t[n]}}function k(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function N(n){return k(n,0,n.length);
|
|
12
|
+
}function S(n,t){var r;return $n(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function T(t,r){return P(r,function(t,r){return r.func.apply(r.thisArg,n([t],r.args))},t)}function F(n,t,r,e){r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],c=e?e(r[i],n[i],i,r,n):n[i],f=r,a=f[i];An.call(f,i)&&(a===c||a!==a&&c!==c)&&(c!==an||i in f)||(f[i]=c)}return r}function R(n){return V(function(t,r){var e=-1,u=r.length,o=u>1?r[u-1]:an,o=typeof o=="function"?(u--,o):an;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o);
|
|
13
|
+
}return t})}function B(n){return function(){var t=arguments,r=s(n.prototype),t=n.apply(r,t);return X(t)?t:r}}function D(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==wn&&this instanceof e?u:n;++c<f;)a[c]=r[c];for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");var u=B(n);return e}function I(n,t,r,e,u,o){var i=-1,c=1&u,f=n.length,a=t.length;if(f!=a&&!(2&u&&a>f))return false;for(a=true;++i<f;){
|
|
14
|
+
var l=n[i],p=t[i];if(void 0!==an){a=false;break}if(c){if(!S(t,function(n){return l===n||r(l,n,e,u,o)})){a=false;break}}else if(l!==p&&!r(l,p,e,u,o)){a=false;break}}return a}function $(n,t,r){switch(r){case"[object Boolean]":case"[object Date]":return+n==+t;case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object Number]":return n!=+n?t!=+t:n==+t;case"[object RegExp]":case"[object String]":return n==t+""}return false}function q(n,t,r,e,u,o){var i=2&u,c=en(n),f=c.length,a=en(t).length;if(f!=a&&!i)return false;
|
|
15
|
+
for(var l=f;l--;){var p=c[l];if(!(i?p in t:An.call(t,p)))return false}for(a=true;++l<f;){var p=c[l],s=n[p],h=t[p];if(void 0!==an||s!==h&&!r(s,h,e,u,o)){a=false;break}i||(i="constructor"==p)}return a&&!i&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(a=false)),a}function z(n){var t=n?n.length:an;if(W(t)&&(Pn(n)||nn(n)||K(n))){n=String;for(var r=-1,e=Array(t);++r<t;)e[r]=n(r);t=e}else t=null;return t}
|
|
16
|
+
function C(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||xn)}function G(n){return n?n[0]:an}function J(n,t){return r(n,m(t),$n)}function M(n,t){return $n(n,typeof t=="function"?t:cn)}function P(n,t,r){return e(n,m(t),r,3>arguments.length,$n)}function U(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Un(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=an),r}}function V(n){var t;if(typeof n!="function")throw new TypeError("Expected a function");
|
|
17
|
+
return t=In(t===an?n.length-1:Un(t),0),function(){for(var r=arguments,e=-1,u=In(r.length-t,0),o=Array(u);++e<u;)o[e]=r[t+e];for(u=Array(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function H(n,t){return n>t}function K(n){return Y(n)&&L(n)&&An.call(n,"callee")&&(!Rn.call(n,"callee")||"[object Arguments]"==kn.call(n))}function L(n){return null!=n&&W(zn(n))&&!Q(n)}function Q(n){return n=X(n)?kn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function W(n){return typeof n=="number"&&n>-1&&0==n%1&&9007199254740991>=n;
|
|
18
|
+
}function X(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function Y(n){return!!n&&typeof n=="object"}function Z(n){return typeof n=="number"||Y(n)&&"[object Number]"==kn.call(n)}function nn(n){return typeof n=="string"||!Pn(n)&&Y(n)&&"[object String]"==kn.call(n)}function tn(n,t){return t>n}function rn(n){return typeof n=="string"?n:null==n?"":n+""}function en(n){var t=C(n);if(!t&&!L(n))return Dn(Object(n));var r,e=z(n),u=!!e,e=e||[],o=e.length;for(r in n)!An.call(n,r)||u&&("length"==r||f(r,o))||t&&"constructor"==r||e.push(r);
|
|
19
|
+
return e}function un(n){for(var t=-1,r=C(n),e=w(n),u=e.length,o=z(n),i=!!o,o=o||[],c=o.length;++t<u;){var a=e[t];i&&("length"==a||f(a,c))||"constructor"==a&&(r||!An.call(n,a))||o.push(a)}return o}function on(n){return n?u(n,en(n)):[]}function cn(n){return n}function fn(t,r,e){var u=en(r),o=g(r,u);null!=e||X(r)&&(o.length||!u.length)||(e=r,r=t,t=this,o=g(r,en(r)));var i=X(e)&&"chain"in e?e.chain:true,c=Q(t);return $n(o,function(e){var u=r[e];t[e]=u,c&&(t.prototype[e]=function(){var r=this.__chain__;if(i||r){
|
|
20
|
+
var e=t(this.__wrapped__);return(e.__actions__=N(this.__actions__)).push({func:u,args:arguments,thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}var an,ln=1/0,pn=/[&<>"'`]/g,sn=RegExp(pn.source),hn=/^(?:0|[1-9]\d*)$/,vn={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},yn={"function":true,object:true},_n=yn[typeof exports]&&exports&&!exports.nodeType?exports:an,bn=yn[typeof module]&&module&&!module.nodeType?module:an,gn=bn&&bn.exports===_n?_n:an,jn=o(yn[typeof self]&&self),dn=o(yn[typeof window]&&window),mn=o(yn[typeof this]&&this),wn=o(_n&&bn&&typeof global=="object"&&global)||dn!==(mn&&mn.window)&&dn||jn||mn||Function("return this")(),On=Array.prototype,xn=Object.prototype,An=xn.hasOwnProperty,En=0,kn=xn.toString,Nn=wn._,Sn=wn.Reflect,Tn=Sn?Sn.f:an,Fn=Object.create,Rn=xn.propertyIsEnumerable,Bn=wn.isFinite,Dn=Object.keys,In=Math.max,$n=function(n,t){
|
|
21
|
+
return function(r,e){if(null==r)return r;if(!L(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}(b),qn=function(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var c=e[n?i:++u];if(false===r(o[c],c,o))break}return t}}();Tn&&!Rn.call({valueOf:1},"valueOf")&&(w=function(n){n=Tn(n);for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r});var zn=E("length"),Cn=V(function(t,r){return Pn(t)||(t=null==t?[]:[Object(t)]),_(r,1),
|
|
22
|
+
n(N(t),on)}),Gn=V(function(n,t,r){return D(n,t,r)}),Jn=V(function(n,t){return h(n,1,t)}),Mn=V(function(n,t,r){return h(n,Vn(t)||0,r)}),Pn=Array.isArray,Un=Number,Vn=Number,Hn=R(function(n,t){F(t,en(t),n)}),Kn=R(function(n,t){F(t,un(t),n)}),Ln=R(function(n,t,r,e){F(t,un(t),n,e)}),Qn=V(function(n){return n.push(an,p),Ln.apply(an,n)}),Wn=V(function(n,t){return null==n?{}:A(n,_(t,1))}),Xn=m;l.prototype=s(a.prototype),l.prototype.constructor=l,a.assignIn=Kn,a.before=U,a.bind=Gn,a.chain=function(n){return n=a(n),
|
|
23
|
+
n.__chain__=true,n},a.compact=function(n){return y(n,Boolean)},a.concat=Cn,a.create=function(n,t){var r=s(n);return t?Hn(r,t):r},a.defaults=Qn,a.defer=Jn,a.delay=Mn,a.filter=function(n,t){return y(n,m(t))},a.flatten=function(n){return n&&n.length?_(n,1):[]},a.flattenDeep=function(n){return n&&n.length?_(n,ln):[]},a.iteratee=Xn,a.keys=en,a.map=function(n,t){return O(n,m(t))},a.matches=function(n){return x(Hn({},n))},a.mixin=fn,a.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");
|
|
24
|
+
return function(){return!n.apply(this,arguments)}},a.once=function(n){return U(2,n)},a.pick=Wn,a.slice=function(n,t,r){var e=n?n.length:0;return r=r===an?e:+r,e?k(n,null==t?0:+t,r):[]},a.sortBy=function(n,t){var r=0;return t=m(t),O(O(n,function(n,e,u){return{c:n,b:r++,a:t(n,e,u)}}).sort(function(n,t){var r;n:{r=n.a;var e=t.a;if(r!==e){var u=null===r,o=r===an,i=r===r,c=null===e,f=e===an,a=e===e;if(r>e&&!c||!i||u&&!f&&a||o&&a){r=1;break n}if(e>r&&!u||!a||c&&!o&&i||f&&i){r=-1;break n}}r=0}return r||n.b-t.b;
|
|
25
|
+
}),E("c"))},a.tap=function(n,t){return t(n),n},a.thru=function(n,t){return t(n)},a.toArray=function(n){return L(n)?n.length?N(n):[]:on(n)},a.values=on,a.extend=Kn,fn(a,a),a.clone=function(n){return X(n)?Pn(n)?N(n):F(n,en(n)):n},a.escape=function(n){return(n=rn(n))&&sn.test(n)?n.replace(pn,i):n},a.every=function(n,t,r){return t=r?an:t,v(n,m(t))},a.find=J,a.forEach=M,a.has=function(n,t){return null!=n&&An.call(n,t)},a.head=G,a.identity=cn,a.indexOf=function(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?In(e+r,0):r:0,
|
|
26
|
+
r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1},a.isArguments=K,a.isArray=Pn,a.isBoolean=function(n){return true===n||false===n||Y(n)&&"[object Boolean]"==kn.call(n)},a.isDate=function(n){return Y(n)&&"[object Date]"==kn.call(n)},a.isEmpty=function(n){if(L(n)&&(Pn(n)||nn(n)||Q(n.splice)||K(n)))return!n.length;for(var t in n)if(An.call(n,t))return false;return true},a.isEqual=function(n,t){return j(n,t)},a.isFinite=function(n){return typeof n=="number"&&Bn(n)},a.isFunction=Q,a.isNaN=function(n){
|
|
27
27
|
return Z(n)&&n!=+n},a.isNull=function(n){return null===n},a.isNumber=Z,a.isObject=X,a.isRegExp=function(n){return X(n)&&"[object RegExp]"==kn.call(n)},a.isString=nn,a.isUndefined=function(n){return n===an},a.last=function(n){var t=n?n.length:0;return t?n[t-1]:an},a.max=function(n){return n&&n.length?t(n,cn,H):an},a.min=function(n){return n&&n.length?t(n,cn,tn):an},a.noConflict=function(){return wn._===this&&(wn._=Nn),this},a.noop=function(){},a.reduce=P,a.result=function(n,t,r){return t=null==n?an:n[t],
|
|
28
|
-
t===an&&(t=r),Q(t)?t.call(n):t},a.size=function(n){return null==n?0:(n=L(n)?n:en(n),n.length)},a.some=function(n,t,r){return t=r?an:t,S(n,
|
|
29
|
-
a.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),a.prototype.toJSON=a.prototype.valueOf=a.prototype.value=function(){return T(this.__wrapped__,this.__actions__)},(
|
|
28
|
+
t===an&&(t=r),Q(t)?t.call(n):t},a.size=function(n){return null==n?0:(n=L(n)?n:en(n),n.length)},a.some=function(n,t,r){return t=r?an:t,S(n,m(t))},a.uniqueId=function(n){var t=++En;return rn(n)+t},a.each=M,a.first=G,fn(a,function(){var n={};return b(a,function(t,r){An.call(a.prototype,r)||(n[r]=t)}),n}(),{chain:false}),a.VERSION="4.6.1",$n("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:On)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);
|
|
29
|
+
a.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),a.prototype.toJSON=a.prototype.valueOf=a.prototype.value=function(){return T(this.__wrapped__,this.__actions__)},(dn||jn||{})._=a,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return a}):_n&&bn?(gn&&((bn.exports=a)._=a),_n._=a):wn._=a}).call(this);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* lodash 4.
|
|
3
|
+
* lodash 4.6.1 (Custom Build) <https://lodash.com/>
|
|
4
4
|
* Build: `lodash -o ./dist/lodash.js`
|
|
5
5
|
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
|
|
6
6
|
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
@@ -13,7 +13,19 @@
|
|
|
13
13
|
var undefined;
|
|
14
14
|
|
|
15
15
|
/** Used as the semantic version number. */
|
|
16
|
-
var VERSION = '4.
|
|
16
|
+
var VERSION = '4.6.1';
|
|
17
|
+
|
|
18
|
+
/** Used as the size to enable large array optimizations. */
|
|
19
|
+
var LARGE_ARRAY_SIZE = 200;
|
|
20
|
+
|
|
21
|
+
/** Used as the `TypeError` message for "Functions" methods. */
|
|
22
|
+
var FUNC_ERROR_TEXT = 'Expected a function';
|
|
23
|
+
|
|
24
|
+
/** Used to stand-in for `undefined` hash values. */
|
|
25
|
+
var HASH_UNDEFINED = '__lodash_hash_undefined__';
|
|
26
|
+
|
|
27
|
+
/** Used as the internal argument placeholder. */
|
|
28
|
+
var PLACEHOLDER = '__lodash_placeholder__';
|
|
17
29
|
|
|
18
30
|
/** Used to compose bitmasks for wrapper metadata. */
|
|
19
31
|
var BIND_FLAG = 1,
|
|
@@ -39,20 +51,11 @@
|
|
|
39
51
|
var HOT_COUNT = 150,
|
|
40
52
|
HOT_SPAN = 16;
|
|
41
53
|
|
|
42
|
-
/** Used as the size to enable large array optimizations. */
|
|
43
|
-
var LARGE_ARRAY_SIZE = 200;
|
|
44
|
-
|
|
45
54
|
/** Used to indicate the type of lazy iteratees. */
|
|
46
55
|
var LAZY_FILTER_FLAG = 1,
|
|
47
56
|
LAZY_MAP_FLAG = 2,
|
|
48
57
|
LAZY_WHILE_FLAG = 3;
|
|
49
58
|
|
|
50
|
-
/** Used as the `TypeError` message for "Functions" methods. */
|
|
51
|
-
var FUNC_ERROR_TEXT = 'Expected a function';
|
|
52
|
-
|
|
53
|
-
/** Used to stand-in for `undefined` hash values. */
|
|
54
|
-
var HASH_UNDEFINED = '__lodash_hash_undefined__';
|
|
55
|
-
|
|
56
59
|
/** Used as references for various `Number` constants. */
|
|
57
60
|
var INFINITY = 1 / 0,
|
|
58
61
|
MAX_SAFE_INTEGER = 9007199254740991,
|
|
@@ -64,9 +67,6 @@
|
|
|
64
67
|
MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
|
|
65
68
|
HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
|
|
66
69
|
|
|
67
|
-
/** Used as the internal argument placeholder. */
|
|
68
|
-
var PLACEHOLDER = '__lodash_placeholder__';
|
|
69
|
-
|
|
70
70
|
/** `Object#toString` result references. */
|
|
71
71
|
var argsTag = '[object Arguments]',
|
|
72
72
|
arrayTag = '[object Array]',
|
|
@@ -382,6 +382,7 @@
|
|
|
382
382
|
* @returns {Object} Returns `map`.
|
|
383
383
|
*/
|
|
384
384
|
function addMapEntry(map, pair) {
|
|
385
|
+
// Don't return `Map#set` because it doesn't return the map instance in IE 11.
|
|
385
386
|
map.set(pair[0], pair[1]);
|
|
386
387
|
return map;
|
|
387
388
|
}
|
|
@@ -539,13 +540,13 @@
|
|
|
539
540
|
function arrayFilter(array, predicate) {
|
|
540
541
|
var index = -1,
|
|
541
542
|
length = array.length,
|
|
542
|
-
resIndex =
|
|
543
|
+
resIndex = 0,
|
|
543
544
|
result = [];
|
|
544
545
|
|
|
545
546
|
while (++index < length) {
|
|
546
547
|
var value = array[index];
|
|
547
548
|
if (predicate(value, index, array)) {
|
|
548
|
-
result[++
|
|
549
|
+
result[resIndex++] = value;
|
|
549
550
|
}
|
|
550
551
|
}
|
|
551
552
|
return result;
|
|
@@ -565,8 +566,7 @@
|
|
|
565
566
|
}
|
|
566
567
|
|
|
567
568
|
/**
|
|
568
|
-
*
|
|
569
|
-
* specifying an index to search from.
|
|
569
|
+
* This function is like `arrayIncludes` except that it accepts a comparator.
|
|
570
570
|
*
|
|
571
571
|
* @private
|
|
572
572
|
* @param {Array} array The array to search.
|
|
@@ -790,6 +790,28 @@
|
|
|
790
790
|
return -1;
|
|
791
791
|
}
|
|
792
792
|
|
|
793
|
+
/**
|
|
794
|
+
* This function is like `baseIndexOf` except that it accepts a comparator.
|
|
795
|
+
*
|
|
796
|
+
* @private
|
|
797
|
+
* @param {Array} array The array to search.
|
|
798
|
+
* @param {*} value The value to search for.
|
|
799
|
+
* @param {number} fromIndex The index to search from.
|
|
800
|
+
* @param {Function} comparator The comparator invoked per element.
|
|
801
|
+
* @returns {number} Returns the index of the matched value, else `-1`.
|
|
802
|
+
*/
|
|
803
|
+
function baseIndexOfWith(array, value, fromIndex, comparator) {
|
|
804
|
+
var index = fromIndex - 1,
|
|
805
|
+
length = array.length;
|
|
806
|
+
|
|
807
|
+
while (++index < length) {
|
|
808
|
+
if (comparator(array[index], value)) {
|
|
809
|
+
return index;
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
return -1;
|
|
813
|
+
}
|
|
814
|
+
|
|
793
815
|
/**
|
|
794
816
|
* The base implementation of `_.reduce` and `_.reduceRight`, without support
|
|
795
817
|
* for iteratee shorthands, which iterates over `collection` using `eachFunc`.
|
|
@@ -812,9 +834,9 @@
|
|
|
812
834
|
}
|
|
813
835
|
|
|
814
836
|
/**
|
|
815
|
-
* The base implementation of `_.sortBy` which uses `comparer` to define
|
|
816
|
-
*
|
|
817
|
-
*
|
|
837
|
+
* The base implementation of `_.sortBy` which uses `comparer` to define the
|
|
838
|
+
* sort order of `array` and replaces criteria objects with their corresponding
|
|
839
|
+
* values.
|
|
818
840
|
*
|
|
819
841
|
* @private
|
|
820
842
|
* @param {Array} array The array to sort.
|
|
@@ -1187,14 +1209,14 @@
|
|
|
1187
1209
|
function replaceHolders(array, placeholder) {
|
|
1188
1210
|
var index = -1,
|
|
1189
1211
|
length = array.length,
|
|
1190
|
-
resIndex =
|
|
1212
|
+
resIndex = 0,
|
|
1191
1213
|
result = [];
|
|
1192
1214
|
|
|
1193
1215
|
while (++index < length) {
|
|
1194
1216
|
var value = array[index];
|
|
1195
1217
|
if (value === placeholder || value === PLACEHOLDER) {
|
|
1196
1218
|
array[index] = PLACEHOLDER;
|
|
1197
|
-
result[++
|
|
1219
|
+
result[resIndex++] = index;
|
|
1198
1220
|
}
|
|
1199
1221
|
}
|
|
1200
1222
|
return result;
|
|
@@ -1371,6 +1393,12 @@
|
|
|
1371
1393
|
/** Used to store function metadata. */
|
|
1372
1394
|
var metaMap = WeakMap && new WeakMap;
|
|
1373
1395
|
|
|
1396
|
+
/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */
|
|
1397
|
+
var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');
|
|
1398
|
+
|
|
1399
|
+
/** Used to lookup unminified function names. */
|
|
1400
|
+
var realNames = {};
|
|
1401
|
+
|
|
1374
1402
|
/** Used to detect maps, sets, and weakmaps. */
|
|
1375
1403
|
var mapCtorString = Map ? funcToString.call(Map) : '',
|
|
1376
1404
|
setCtorString = Set ? funcToString.call(Set) : '',
|
|
@@ -1378,11 +1406,8 @@
|
|
|
1378
1406
|
|
|
1379
1407
|
/** Used to convert symbols to primitives and strings. */
|
|
1380
1408
|
var symbolProto = Symbol ? Symbol.prototype : undefined,
|
|
1381
|
-
symbolValueOf =
|
|
1382
|
-
symbolToString =
|
|
1383
|
-
|
|
1384
|
-
/** Used to lookup unminified function names. */
|
|
1385
|
-
var realNames = {};
|
|
1409
|
+
symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
|
|
1410
|
+
symbolToString = symbolProto ? symbolProto.toString : undefined;
|
|
1386
1411
|
|
|
1387
1412
|
/*------------------------------------------------------------------------*/
|
|
1388
1413
|
|
|
@@ -1428,46 +1453,48 @@
|
|
|
1428
1453
|
* `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
|
|
1429
1454
|
* `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
|
|
1430
1455
|
* `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
|
|
1431
|
-
* `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
|
|
1432
|
-
* `differenceBy`, `differenceWith`, `drop`, `dropRight`,
|
|
1433
|
-
* `
|
|
1434
|
-
* `
|
|
1435
|
-
* `
|
|
1436
|
-
* `
|
|
1437
|
-
* `
|
|
1438
|
-
* `
|
|
1439
|
-
* `
|
|
1440
|
-
* `
|
|
1441
|
-
* `
|
|
1442
|
-
* `
|
|
1443
|
-
* `
|
|
1444
|
-
* `
|
|
1445
|
-
* `
|
|
1446
|
-
* `
|
|
1447
|
-
* `
|
|
1448
|
-
* `
|
|
1449
|
-
* `
|
|
1456
|
+
* `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
|
|
1457
|
+
* `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
|
|
1458
|
+
* `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
|
|
1459
|
+
* `flatten`, `flattenDeep`, `flattenDepth`, `flip`, `flow`, `flowRight`,
|
|
1460
|
+
* `fromPairs`, `functions`, `functionsIn`, `groupBy`, `initial`, `intersection`,
|
|
1461
|
+
* `intersectionBy`, `intersectionWith`, `invert`, `invertBy`, `invokeMap`,
|
|
1462
|
+
* `iteratee`, `keyBy`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`,
|
|
1463
|
+
* `matches`, `matchesProperty`, `memoize`, `merge`, `mergeWith`, `method`,
|
|
1464
|
+
* `methodOf`, `mixin`, `negate`, `nthArg`, `omit`, `omitBy`, `once`, `orderBy`,
|
|
1465
|
+
* `over`, `overArgs`, `overEvery`, `overSome`, `partial`, `partialRight`,
|
|
1466
|
+
* `partition`, `pick`, `pickBy`, `plant`, `property`, `propertyOf`, `pull`,
|
|
1467
|
+
* `pullAll`, `pullAllBy`, `pullAllWith`, `pullAt`, `push`, `range`,
|
|
1468
|
+
* `rangeRight`, `rearg`, `reject`, `remove`, `rest`, `reverse`, `sampleSize`,
|
|
1469
|
+
* `set`, `setWith`, `shuffle`, `slice`, `sort`, `sortBy`, `splice`, `spread`,
|
|
1470
|
+
* `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
|
|
1471
|
+
* `thru`, `toArray`, `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`,
|
|
1472
|
+
* `transform`, `unary`, `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`,
|
|
1473
|
+
* `uniqWith`, `unset`, `unshift`, `unzip`, `unzipWith`, `update`, `values`,
|
|
1474
|
+
* `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, `zipObject`,
|
|
1475
|
+
* `zipObjectDeep`, and `zipWith`
|
|
1450
1476
|
*
|
|
1451
1477
|
* The wrapper methods that are **not** chainable by default are:
|
|
1452
1478
|
* `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
|
|
1453
|
-
* `cloneDeep`, `cloneDeepWith`, `cloneWith`, `deburr`, `
|
|
1454
|
-
* `
|
|
1455
|
-
* `
|
|
1456
|
-
* `
|
|
1457
|
-
* `
|
|
1458
|
-
* `
|
|
1459
|
-
* `
|
|
1460
|
-
* `
|
|
1461
|
-
* `
|
|
1462
|
-
* `
|
|
1463
|
-
* `
|
|
1464
|
-
* `
|
|
1465
|
-
* `
|
|
1466
|
-
* `
|
|
1467
|
-
* `
|
|
1468
|
-
* `
|
|
1469
|
-
* `
|
|
1470
|
-
* `
|
|
1479
|
+
* `cloneDeep`, `cloneDeepWith`, `cloneWith`, `deburr`, `each`, `eachRight`,
|
|
1480
|
+
* `endsWith`, `eq`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`,
|
|
1481
|
+
* `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `first`, `floor`,
|
|
1482
|
+
* `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,
|
|
1483
|
+
* `get`, `gt`, `gte`, `has`, `hasIn`, `head`, `identity`, `includes`,
|
|
1484
|
+
* `indexOf`, `inRange`, `invoke`, `isArguments`, `isArray`, `isArrayBuffer`,
|
|
1485
|
+
* `isArrayLike`, `isArrayLikeObject`, `isBoolean`, `isBuffer`, `isDate`,
|
|
1486
|
+
* `isElement`, `isEmpty`, `isEqual`, `isEqualWith`, `isError`, `isFinite`,
|
|
1487
|
+
* `isFunction`, `isInteger`, `isLength`, `isMap`, `isMatch`, `isMatchWith`,
|
|
1488
|
+
* `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`, `isObject`, `isObjectLike`,
|
|
1489
|
+
* `isPlainObject`, `isRegExp`, `isSafeInteger`, `isSet`, `isString`,
|
|
1490
|
+
* `isUndefined`, `isTypedArray`, `isWeakMap`, `isWeakSet`, `join`, `kebabCase`,
|
|
1491
|
+
* `last`, `lastIndexOf`, `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`,
|
|
1492
|
+
* `maxBy`, `mean`, `min`, `minBy`, `noConflict`, `noop`, `now`, `pad`,
|
|
1493
|
+
* `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
|
|
1494
|
+
* `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
|
|
1495
|
+
* `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
|
|
1496
|
+
* `sortedLastIndexBy`, `startCase`, `startsWith`, `subtract`, `sum`, `sumBy`,
|
|
1497
|
+
* `template`, `times`, `toInteger`, `toJSON`, `toLength`, `toLower`,
|
|
1471
1498
|
* `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, `trimEnd`,
|
|
1472
1499
|
* `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, `upperFirst`,
|
|
1473
1500
|
* `value`, and `words`
|
|
@@ -2156,7 +2183,8 @@
|
|
|
2156
2183
|
}
|
|
2157
2184
|
|
|
2158
2185
|
/**
|
|
2159
|
-
* This function is like `assignValue` except that it doesn't assign
|
|
2186
|
+
* This function is like `assignValue` except that it doesn't assign
|
|
2187
|
+
* `undefined` values.
|
|
2160
2188
|
*
|
|
2161
2189
|
* @private
|
|
2162
2190
|
* @param {Object} object The object to modify.
|
|
@@ -2300,13 +2328,14 @@
|
|
|
2300
2328
|
* @private
|
|
2301
2329
|
* @param {*} value The value to clone.
|
|
2302
2330
|
* @param {boolean} [isDeep] Specify a deep clone.
|
|
2331
|
+
* @param {boolean} [isFull] Specify a clone including symbols.
|
|
2303
2332
|
* @param {Function} [customizer] The function to customize cloning.
|
|
2304
2333
|
* @param {string} [key] The key of `value`.
|
|
2305
2334
|
* @param {Object} [object] The parent object of `value`.
|
|
2306
2335
|
* @param {Object} [stack] Tracks traversed objects and their clone counterparts.
|
|
2307
2336
|
* @returns {*} Returns the cloned value.
|
|
2308
2337
|
*/
|
|
2309
|
-
function baseClone(value, isDeep, customizer, key, object, stack) {
|
|
2338
|
+
function baseClone(value, isDeep, isFull, customizer, key, object, stack) {
|
|
2310
2339
|
var result;
|
|
2311
2340
|
if (customizer) {
|
|
2312
2341
|
result = object ? customizer(value, key, object, stack) : customizer(value);
|
|
@@ -2336,7 +2365,8 @@
|
|
|
2336
2365
|
}
|
|
2337
2366
|
result = initCloneObject(isFunc ? {} : value);
|
|
2338
2367
|
if (!isDeep) {
|
|
2339
|
-
|
|
2368
|
+
result = baseAssign(result, value);
|
|
2369
|
+
return isFull ? copySymbols(value, result) : result;
|
|
2340
2370
|
}
|
|
2341
2371
|
} else {
|
|
2342
2372
|
if (!cloneableTags[tag]) {
|
|
@@ -2355,9 +2385,9 @@
|
|
|
2355
2385
|
|
|
2356
2386
|
// Recursively populate clone (susceptible to call stack limits).
|
|
2357
2387
|
(isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {
|
|
2358
|
-
assignValue(result, key, baseClone(subValue, isDeep, customizer, key, value, stack));
|
|
2388
|
+
assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));
|
|
2359
2389
|
});
|
|
2360
|
-
return isArr ?
|
|
2390
|
+
return (isFull && !isArr) ? copySymbols(value, result) : result;
|
|
2361
2391
|
}
|
|
2362
2392
|
|
|
2363
2393
|
/**
|
|
@@ -2739,9 +2769,11 @@
|
|
|
2739
2769
|
*/
|
|
2740
2770
|
function baseIntersection(arrays, iteratee, comparator) {
|
|
2741
2771
|
var includes = comparator ? arrayIncludesWith : arrayIncludes,
|
|
2772
|
+
length = arrays[0].length,
|
|
2742
2773
|
othLength = arrays.length,
|
|
2743
2774
|
othIndex = othLength,
|
|
2744
2775
|
caches = Array(othLength),
|
|
2776
|
+
maxLength = Infinity,
|
|
2745
2777
|
result = [];
|
|
2746
2778
|
|
|
2747
2779
|
while (othIndex--) {
|
|
@@ -2749,18 +2781,18 @@
|
|
|
2749
2781
|
if (othIndex && iteratee) {
|
|
2750
2782
|
array = arrayMap(array, baseUnary(iteratee));
|
|
2751
2783
|
}
|
|
2752
|
-
|
|
2784
|
+
maxLength = nativeMin(array.length, maxLength);
|
|
2785
|
+
caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
|
|
2753
2786
|
? new SetCache(othIndex && array)
|
|
2754
2787
|
: undefined;
|
|
2755
2788
|
}
|
|
2756
2789
|
array = arrays[0];
|
|
2757
2790
|
|
|
2758
2791
|
var index = -1,
|
|
2759
|
-
length = array.length,
|
|
2760
2792
|
seen = caches[0];
|
|
2761
2793
|
|
|
2762
2794
|
outer:
|
|
2763
|
-
while (++index < length) {
|
|
2795
|
+
while (++index < length && result.length < maxLength) {
|
|
2764
2796
|
var value = array[index],
|
|
2765
2797
|
computed = iteratee ? iteratee(value) : value;
|
|
2766
2798
|
|
|
@@ -2768,7 +2800,7 @@
|
|
|
2768
2800
|
? cacheHas(seen, computed)
|
|
2769
2801
|
: includes(result, computed, comparator)
|
|
2770
2802
|
)) {
|
|
2771
|
-
|
|
2803
|
+
othIndex = othLength;
|
|
2772
2804
|
while (--othIndex) {
|
|
2773
2805
|
var cache = caches[othIndex];
|
|
2774
2806
|
if (!(cache
|
|
@@ -2872,33 +2904,28 @@
|
|
|
2872
2904
|
|
|
2873
2905
|
if (!objIsArr) {
|
|
2874
2906
|
objTag = getTag(object);
|
|
2875
|
-
|
|
2876
|
-
objTag = objectTag;
|
|
2877
|
-
} else if (objTag != objectTag) {
|
|
2878
|
-
objIsArr = isTypedArray(object);
|
|
2879
|
-
}
|
|
2907
|
+
objTag = objTag == argsTag ? objectTag : objTag;
|
|
2880
2908
|
}
|
|
2881
2909
|
if (!othIsArr) {
|
|
2882
2910
|
othTag = getTag(other);
|
|
2883
|
-
|
|
2884
|
-
othTag = objectTag;
|
|
2885
|
-
} else if (othTag != objectTag) {
|
|
2886
|
-
othIsArr = isTypedArray(other);
|
|
2887
|
-
}
|
|
2911
|
+
othTag = othTag == argsTag ? objectTag : othTag;
|
|
2888
2912
|
}
|
|
2889
2913
|
var objIsObj = objTag == objectTag && !isHostObject(object),
|
|
2890
2914
|
othIsObj = othTag == objectTag && !isHostObject(other),
|
|
2891
2915
|
isSameTag = objTag == othTag;
|
|
2892
2916
|
|
|
2893
|
-
if (isSameTag && !
|
|
2894
|
-
|
|
2917
|
+
if (isSameTag && !objIsObj) {
|
|
2918
|
+
stack || (stack = new Stack);
|
|
2919
|
+
return (objIsArr || isTypedArray(object))
|
|
2920
|
+
? equalArrays(object, other, equalFunc, customizer, bitmask, stack)
|
|
2921
|
+
: equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
|
|
2895
2922
|
}
|
|
2896
|
-
|
|
2897
|
-
if (!isPartial) {
|
|
2923
|
+
if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
|
|
2898
2924
|
var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
|
|
2899
2925
|
othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
|
|
2900
2926
|
|
|
2901
2927
|
if (objIsWrapped || othIsWrapped) {
|
|
2928
|
+
stack || (stack = new Stack);
|
|
2902
2929
|
return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, bitmask, stack);
|
|
2903
2930
|
}
|
|
2904
2931
|
}
|
|
@@ -2906,7 +2933,7 @@
|
|
|
2906
2933
|
return false;
|
|
2907
2934
|
}
|
|
2908
2935
|
stack || (stack = new Stack);
|
|
2909
|
-
return
|
|
2936
|
+
return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
|
|
2910
2937
|
}
|
|
2911
2938
|
|
|
2912
2939
|
/**
|
|
@@ -3163,7 +3190,7 @@
|
|
|
3163
3190
|
}
|
|
3164
3191
|
else {
|
|
3165
3192
|
isCommon = false;
|
|
3166
|
-
newValue = baseClone(srcValue,
|
|
3193
|
+
newValue = baseClone(srcValue, !customizer);
|
|
3167
3194
|
}
|
|
3168
3195
|
}
|
|
3169
3196
|
else if (isPlainObject(srcValue) || isArguments(srcValue)) {
|
|
@@ -3172,7 +3199,7 @@
|
|
|
3172
3199
|
}
|
|
3173
3200
|
else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {
|
|
3174
3201
|
isCommon = false;
|
|
3175
|
-
newValue = baseClone(srcValue,
|
|
3202
|
+
newValue = baseClone(srcValue, !customizer);
|
|
3176
3203
|
}
|
|
3177
3204
|
else {
|
|
3178
3205
|
newValue = objValue;
|
|
@@ -3188,6 +3215,7 @@
|
|
|
3188
3215
|
// Recursively merge objects and arrays (susceptible to call stack limits).
|
|
3189
3216
|
mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
|
|
3190
3217
|
}
|
|
3218
|
+
stack['delete'](srcValue);
|
|
3191
3219
|
assignMergeValue(object, key, newValue);
|
|
3192
3220
|
}
|
|
3193
3221
|
|
|
@@ -3201,12 +3229,8 @@
|
|
|
3201
3229
|
* @returns {Array} Returns the new sorted array.
|
|
3202
3230
|
*/
|
|
3203
3231
|
function baseOrderBy(collection, iteratees, orders) {
|
|
3204
|
-
var index = -1
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
iteratees = arrayMap(iteratees.length ? iteratees : Array(1), function(iteratee) {
|
|
3208
|
-
return toIteratee(iteratee);
|
|
3209
|
-
});
|
|
3232
|
+
var index = -1;
|
|
3233
|
+
iteratees = arrayMap(iteratees.length ? iteratees : Array(1), getIteratee());
|
|
3210
3234
|
|
|
3211
3235
|
var result = baseMap(collection, function(value, key, collection) {
|
|
3212
3236
|
var criteria = arrayMap(iteratees, function(iteratee) {
|
|
@@ -3283,18 +3307,6 @@
|
|
|
3283
3307
|
};
|
|
3284
3308
|
}
|
|
3285
3309
|
|
|
3286
|
-
/**
|
|
3287
|
-
* The base implementation of `_.pullAll`.
|
|
3288
|
-
*
|
|
3289
|
-
* @private
|
|
3290
|
-
* @param {Array} array The array to modify.
|
|
3291
|
-
* @param {Array} values The values to remove.
|
|
3292
|
-
* @returns {Array} Returns `array`.
|
|
3293
|
-
*/
|
|
3294
|
-
function basePullAll(array, values) {
|
|
3295
|
-
return basePullAllBy(array, values);
|
|
3296
|
-
}
|
|
3297
|
-
|
|
3298
3310
|
/**
|
|
3299
3311
|
* The base implementation of `_.pullAllBy` without support for iteratee
|
|
3300
3312
|
* shorthands.
|
|
@@ -3303,22 +3315,24 @@
|
|
|
3303
3315
|
* @param {Array} array The array to modify.
|
|
3304
3316
|
* @param {Array} values The values to remove.
|
|
3305
3317
|
* @param {Function} [iteratee] The iteratee invoked per element.
|
|
3318
|
+
* @param {Function} [comparator] The comparator invoked per element.
|
|
3306
3319
|
* @returns {Array} Returns `array`.
|
|
3307
3320
|
*/
|
|
3308
|
-
function
|
|
3309
|
-
var
|
|
3321
|
+
function basePullAll(array, values, iteratee, comparator) {
|
|
3322
|
+
var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
|
|
3323
|
+
index = -1,
|
|
3310
3324
|
length = values.length,
|
|
3311
3325
|
seen = array;
|
|
3312
3326
|
|
|
3313
3327
|
if (iteratee) {
|
|
3314
|
-
seen = arrayMap(array,
|
|
3328
|
+
seen = arrayMap(array, baseUnary(iteratee));
|
|
3315
3329
|
}
|
|
3316
3330
|
while (++index < length) {
|
|
3317
3331
|
var fromIndex = 0,
|
|
3318
3332
|
value = values[index],
|
|
3319
3333
|
computed = iteratee ? iteratee(value) : value;
|
|
3320
3334
|
|
|
3321
|
-
while ((fromIndex =
|
|
3335
|
+
while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
|
|
3322
3336
|
if (seen !== array) {
|
|
3323
3337
|
splice.call(seen, fromIndex, 1);
|
|
3324
3338
|
}
|
|
@@ -3604,7 +3618,7 @@
|
|
|
3604
3618
|
value = array[0],
|
|
3605
3619
|
computed = iteratee ? iteratee(value) : value,
|
|
3606
3620
|
seen = computed,
|
|
3607
|
-
resIndex =
|
|
3621
|
+
resIndex = 1,
|
|
3608
3622
|
result = [value];
|
|
3609
3623
|
|
|
3610
3624
|
while (++index < length) {
|
|
@@ -3613,7 +3627,7 @@
|
|
|
3613
3627
|
|
|
3614
3628
|
if (!eq(computed, seen)) {
|
|
3615
3629
|
seen = computed;
|
|
3616
|
-
result[++
|
|
3630
|
+
result[resIndex++] = value;
|
|
3617
3631
|
}
|
|
3618
3632
|
}
|
|
3619
3633
|
return result;
|
|
@@ -3694,6 +3708,20 @@
|
|
|
3694
3708
|
return (object != null && has(object, key)) ? delete object[key] : true;
|
|
3695
3709
|
}
|
|
3696
3710
|
|
|
3711
|
+
/**
|
|
3712
|
+
* The base implementation of `_.update`.
|
|
3713
|
+
*
|
|
3714
|
+
* @private
|
|
3715
|
+
* @param {Object} object The object to query.
|
|
3716
|
+
* @param {Array|string} path The path of the property to update.
|
|
3717
|
+
* @param {Function} updater The function to produce the updated value.
|
|
3718
|
+
* @param {Function} [customizer] The function to customize path creation.
|
|
3719
|
+
* @returns {Object} Returns `object`.
|
|
3720
|
+
*/
|
|
3721
|
+
function baseUpdate(object, path, updater, customizer) {
|
|
3722
|
+
return baseSet(object, path, updater(baseGet(object, path)), customizer);
|
|
3723
|
+
}
|
|
3724
|
+
|
|
3697
3725
|
/**
|
|
3698
3726
|
* The base implementation of methods like `_.dropWhile` and `_.takeWhile`
|
|
3699
3727
|
* without support for iteratee shorthands.
|
|
@@ -3795,9 +3823,7 @@
|
|
|
3795
3823
|
if (isDeep) {
|
|
3796
3824
|
return buffer.slice();
|
|
3797
3825
|
}
|
|
3798
|
-
var
|
|
3799
|
-
result = new Ctor(buffer.length);
|
|
3800
|
-
|
|
3826
|
+
var result = new buffer.constructor(buffer.length);
|
|
3801
3827
|
buffer.copy(result);
|
|
3802
3828
|
return result;
|
|
3803
3829
|
}
|
|
@@ -3810,11 +3836,8 @@
|
|
|
3810
3836
|
* @returns {ArrayBuffer} Returns the cloned array buffer.
|
|
3811
3837
|
*/
|
|
3812
3838
|
function cloneArrayBuffer(arrayBuffer) {
|
|
3813
|
-
var
|
|
3814
|
-
|
|
3815
|
-
view = new Uint8Array(result);
|
|
3816
|
-
|
|
3817
|
-
view.set(new Uint8Array(arrayBuffer));
|
|
3839
|
+
var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
|
|
3840
|
+
new Uint8Array(result).set(new Uint8Array(arrayBuffer));
|
|
3818
3841
|
return result;
|
|
3819
3842
|
}
|
|
3820
3843
|
|
|
@@ -3826,8 +3849,7 @@
|
|
|
3826
3849
|
* @returns {Object} Returns the cloned map.
|
|
3827
3850
|
*/
|
|
3828
3851
|
function cloneMap(map) {
|
|
3829
|
-
|
|
3830
|
-
return arrayReduce(mapToArray(map), addMapEntry, new Ctor);
|
|
3852
|
+
return arrayReduce(mapToArray(map), addMapEntry, new map.constructor);
|
|
3831
3853
|
}
|
|
3832
3854
|
|
|
3833
3855
|
/**
|
|
@@ -3838,9 +3860,7 @@
|
|
|
3838
3860
|
* @returns {Object} Returns the cloned regexp.
|
|
3839
3861
|
*/
|
|
3840
3862
|
function cloneRegExp(regexp) {
|
|
3841
|
-
var
|
|
3842
|
-
result = new Ctor(regexp.source, reFlags.exec(regexp));
|
|
3843
|
-
|
|
3863
|
+
var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
|
|
3844
3864
|
result.lastIndex = regexp.lastIndex;
|
|
3845
3865
|
return result;
|
|
3846
3866
|
}
|
|
@@ -3853,8 +3873,7 @@
|
|
|
3853
3873
|
* @returns {Object} Returns the cloned set.
|
|
3854
3874
|
*/
|
|
3855
3875
|
function cloneSet(set) {
|
|
3856
|
-
|
|
3857
|
-
return arrayReduce(setToArray(set), addSetEntry, new Ctor);
|
|
3876
|
+
return arrayReduce(setToArray(set), addSetEntry, new set.constructor);
|
|
3858
3877
|
}
|
|
3859
3878
|
|
|
3860
3879
|
/**
|
|
@@ -3865,7 +3884,7 @@
|
|
|
3865
3884
|
* @returns {Object} Returns the cloned symbol object.
|
|
3866
3885
|
*/
|
|
3867
3886
|
function cloneSymbol(symbol) {
|
|
3868
|
-
return
|
|
3887
|
+
return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
|
|
3869
3888
|
}
|
|
3870
3889
|
|
|
3871
3890
|
/**
|
|
@@ -3877,11 +3896,8 @@
|
|
|
3877
3896
|
* @returns {Object} Returns the cloned typed array.
|
|
3878
3897
|
*/
|
|
3879
3898
|
function cloneTypedArray(typedArray, isDeep) {
|
|
3880
|
-
var
|
|
3881
|
-
|
|
3882
|
-
Ctor = typedArray.constructor;
|
|
3883
|
-
|
|
3884
|
-
return new Ctor(buffer, typedArray.byteOffset, typedArray.length);
|
|
3899
|
+
var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
|
|
3900
|
+
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
|
|
3885
3901
|
}
|
|
3886
3902
|
|
|
3887
3903
|
/**
|
|
@@ -4678,9 +4694,9 @@
|
|
|
4678
4694
|
* @param {Array} array The array to compare.
|
|
4679
4695
|
* @param {Array} other The other array to compare.
|
|
4680
4696
|
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
4681
|
-
* @param {Function}
|
|
4682
|
-
* @param {number}
|
|
4683
|
-
* @param {Object}
|
|
4697
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
4698
|
+
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.
|
|
4699
|
+
* @param {Object} stack Tracks traversed `array` and `other` objects.
|
|
4684
4700
|
* @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
|
|
4685
4701
|
*/
|
|
4686
4702
|
function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
|
|
@@ -4747,11 +4763,12 @@
|
|
|
4747
4763
|
* @param {Object} other The other object to compare.
|
|
4748
4764
|
* @param {string} tag The `toStringTag` of the objects to compare.
|
|
4749
4765
|
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
4750
|
-
* @param {Function}
|
|
4751
|
-
* @param {number}
|
|
4766
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
4767
|
+
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.
|
|
4768
|
+
* @param {Object} stack Tracks traversed `object` and `other` objects.
|
|
4752
4769
|
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
|
|
4753
4770
|
*/
|
|
4754
|
-
function equalByTag(object, other, tag, equalFunc, customizer, bitmask) {
|
|
4771
|
+
function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
|
|
4755
4772
|
switch (tag) {
|
|
4756
4773
|
case arrayBufferTag:
|
|
4757
4774
|
if ((object.byteLength != other.byteLength) ||
|
|
@@ -4786,12 +4803,21 @@
|
|
|
4786
4803
|
var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
|
|
4787
4804
|
convert || (convert = setToArray);
|
|
4788
4805
|
|
|
4806
|
+
if (object.size != other.size && !isPartial) {
|
|
4807
|
+
return false;
|
|
4808
|
+
}
|
|
4809
|
+
// Assume cyclic values are equal.
|
|
4810
|
+
var stacked = stack.get(object);
|
|
4811
|
+
if (stacked) {
|
|
4812
|
+
return stacked == other;
|
|
4813
|
+
}
|
|
4789
4814
|
// Recursively compare objects (susceptible to call stack limits).
|
|
4790
|
-
return (
|
|
4791
|
-
equalFunc(convert(object), convert(other), customizer, bitmask | UNORDERED_COMPARE_FLAG);
|
|
4815
|
+
return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask | UNORDERED_COMPARE_FLAG, stack.set(object, other));
|
|
4792
4816
|
|
|
4793
4817
|
case symbolTag:
|
|
4794
|
-
|
|
4818
|
+
if (symbolValueOf) {
|
|
4819
|
+
return symbolValueOf.call(object) == symbolValueOf.call(other);
|
|
4820
|
+
}
|
|
4795
4821
|
}
|
|
4796
4822
|
return false;
|
|
4797
4823
|
}
|
|
@@ -4804,9 +4830,9 @@
|
|
|
4804
4830
|
* @param {Object} object The object to compare.
|
|
4805
4831
|
* @param {Object} other The other object to compare.
|
|
4806
4832
|
* @param {Function} equalFunc The function to determine equivalents of values.
|
|
4807
|
-
* @param {Function}
|
|
4808
|
-
* @param {number}
|
|
4809
|
-
* @param {Object}
|
|
4833
|
+
* @param {Function} customizer The function to customize comparisons.
|
|
4834
|
+
* @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.
|
|
4835
|
+
* @param {Object} stack Tracks traversed `object` and `other` objects.
|
|
4810
4836
|
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
|
|
4811
4837
|
*/
|
|
4812
4838
|
function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
|
|
@@ -4959,7 +4985,7 @@
|
|
|
4959
4985
|
* @returns {*} Returns the function if it's native, else `undefined`.
|
|
4960
4986
|
*/
|
|
4961
4987
|
function getNative(object, key) {
|
|
4962
|
-
var value = object
|
|
4988
|
+
var value = object[key];
|
|
4963
4989
|
return isNative(value) ? value : undefined;
|
|
4964
4990
|
}
|
|
4965
4991
|
|
|
@@ -5101,7 +5127,7 @@
|
|
|
5101
5127
|
* @returns {Object} Returns the initialized clone.
|
|
5102
5128
|
*/
|
|
5103
5129
|
function initCloneObject(object) {
|
|
5104
|
-
return (
|
|
5130
|
+
return (typeof object.constructor == 'function' && !isPrototype(object))
|
|
5105
5131
|
? baseCreate(getPrototypeOf(object))
|
|
5106
5132
|
: {};
|
|
5107
5133
|
}
|
|
@@ -5250,7 +5276,7 @@
|
|
|
5250
5276
|
*/
|
|
5251
5277
|
function isPrototype(value) {
|
|
5252
5278
|
var Ctor = value && value.constructor,
|
|
5253
|
-
proto = (
|
|
5279
|
+
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
|
|
5254
5280
|
|
|
5255
5281
|
return value === proto;
|
|
5256
5282
|
}
|
|
@@ -5351,8 +5377,7 @@
|
|
|
5351
5377
|
*/
|
|
5352
5378
|
function mergeDefaults(objValue, srcValue, key, object, source, stack) {
|
|
5353
5379
|
if (isObject(objValue) && isObject(srcValue)) {
|
|
5354
|
-
stack.set(srcValue, objValue);
|
|
5355
|
-
baseMerge(objValue, srcValue, undefined, mergeDefaults, stack);
|
|
5380
|
+
baseMerge(objValue, srcValue, undefined, mergeDefaults, stack.set(srcValue, objValue));
|
|
5356
5381
|
}
|
|
5357
5382
|
return objValue;
|
|
5358
5383
|
}
|
|
@@ -5486,11 +5511,11 @@
|
|
|
5486
5511
|
return [];
|
|
5487
5512
|
}
|
|
5488
5513
|
var index = 0,
|
|
5489
|
-
resIndex =
|
|
5514
|
+
resIndex = 0,
|
|
5490
5515
|
result = Array(nativeCeil(length / size));
|
|
5491
5516
|
|
|
5492
5517
|
while (index < length) {
|
|
5493
|
-
result[++
|
|
5518
|
+
result[resIndex++] = baseSlice(array, index, (index += size));
|
|
5494
5519
|
}
|
|
5495
5520
|
return result;
|
|
5496
5521
|
}
|
|
@@ -5512,13 +5537,13 @@
|
|
|
5512
5537
|
function compact(array) {
|
|
5513
5538
|
var index = -1,
|
|
5514
5539
|
length = array ? array.length : 0,
|
|
5515
|
-
resIndex =
|
|
5540
|
+
resIndex = 0,
|
|
5516
5541
|
result = [];
|
|
5517
5542
|
|
|
5518
5543
|
while (++index < length) {
|
|
5519
5544
|
var value = array[index];
|
|
5520
5545
|
if (value) {
|
|
5521
|
-
result[++
|
|
5546
|
+
result[resIndex++] = value;
|
|
5522
5547
|
}
|
|
5523
5548
|
}
|
|
5524
5549
|
return result;
|
|
@@ -5556,7 +5581,8 @@
|
|
|
5556
5581
|
/**
|
|
5557
5582
|
* Creates an array of unique `array` values not included in the other
|
|
5558
5583
|
* given arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
|
|
5559
|
-
* for equality comparisons.
|
|
5584
|
+
* for equality comparisons. The order of result values is determined by the
|
|
5585
|
+
* order they occur in the first array.
|
|
5560
5586
|
*
|
|
5561
5587
|
* @static
|
|
5562
5588
|
* @memberOf _
|
|
@@ -5578,7 +5604,8 @@
|
|
|
5578
5604
|
/**
|
|
5579
5605
|
* This method is like `_.difference` except that it accepts `iteratee` which
|
|
5580
5606
|
* is invoked for each element of `array` and `values` to generate the criterion
|
|
5581
|
-
* by which
|
|
5607
|
+
* by which they're compared. Result values are chosen from the first array.
|
|
5608
|
+
* The iteratee is invoked with one argument: (value).
|
|
5582
5609
|
*
|
|
5583
5610
|
* @static
|
|
5584
5611
|
* @memberOf _
|
|
@@ -5608,8 +5635,9 @@
|
|
|
5608
5635
|
|
|
5609
5636
|
/**
|
|
5610
5637
|
* This method is like `_.difference` except that it accepts `comparator`
|
|
5611
|
-
* which is invoked to compare elements of `array` to `values`.
|
|
5612
|
-
* is invoked with two arguments:
|
|
5638
|
+
* which is invoked to compare elements of `array` to `values`. Result values
|
|
5639
|
+
* are chosen from the first array. The comparator is invoked with two arguments:
|
|
5640
|
+
* (arrVal, othVal).
|
|
5613
5641
|
*
|
|
5614
5642
|
* @static
|
|
5615
5643
|
* @memberOf _
|
|
@@ -6065,13 +6093,14 @@
|
|
|
6065
6093
|
/**
|
|
6066
6094
|
* Creates an array of unique values that are included in all given arrays
|
|
6067
6095
|
* using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
|
|
6068
|
-
* for equality comparisons.
|
|
6096
|
+
* for equality comparisons. The order of result values is determined by the
|
|
6097
|
+
* order they occur in the first array.
|
|
6069
6098
|
*
|
|
6070
6099
|
* @static
|
|
6071
6100
|
* @memberOf _
|
|
6072
6101
|
* @category Array
|
|
6073
6102
|
* @param {...Array} [arrays] The arrays to inspect.
|
|
6074
|
-
* @returns {Array} Returns the new array of
|
|
6103
|
+
* @returns {Array} Returns the new array of intersecting values.
|
|
6075
6104
|
* @example
|
|
6076
6105
|
*
|
|
6077
6106
|
* _.intersection([2, 1], [4, 2], [1, 2]);
|
|
@@ -6087,14 +6116,15 @@
|
|
|
6087
6116
|
/**
|
|
6088
6117
|
* This method is like `_.intersection` except that it accepts `iteratee`
|
|
6089
6118
|
* which is invoked for each element of each `arrays` to generate the criterion
|
|
6090
|
-
* by which
|
|
6119
|
+
* by which they're compared. Result values are chosen from the first array.
|
|
6120
|
+
* The iteratee is invoked with one argument: (value).
|
|
6091
6121
|
*
|
|
6092
6122
|
* @static
|
|
6093
6123
|
* @memberOf _
|
|
6094
6124
|
* @category Array
|
|
6095
6125
|
* @param {...Array} [arrays] The arrays to inspect.
|
|
6096
6126
|
* @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
|
|
6097
|
-
* @returns {Array} Returns the new array of
|
|
6127
|
+
* @returns {Array} Returns the new array of intersecting values.
|
|
6098
6128
|
* @example
|
|
6099
6129
|
*
|
|
6100
6130
|
* _.intersectionBy([2.1, 1.2], [4.3, 2.4], Math.floor);
|
|
@@ -6120,15 +6150,16 @@
|
|
|
6120
6150
|
|
|
6121
6151
|
/**
|
|
6122
6152
|
* This method is like `_.intersection` except that it accepts `comparator`
|
|
6123
|
-
* which is invoked to compare elements of `arrays`.
|
|
6124
|
-
* with two arguments:
|
|
6153
|
+
* which is invoked to compare elements of `arrays`. Result values are chosen
|
|
6154
|
+
* from the first array. The comparator is invoked with two arguments:
|
|
6155
|
+
* (arrVal, othVal).
|
|
6125
6156
|
*
|
|
6126
6157
|
* @static
|
|
6127
6158
|
* @memberOf _
|
|
6128
6159
|
* @category Array
|
|
6129
6160
|
* @param {...Array} [arrays] The arrays to inspect.
|
|
6130
6161
|
* @param {Function} [comparator] The comparator invoked per element.
|
|
6131
|
-
* @returns {Array} Returns the new array of
|
|
6162
|
+
* @returns {Array} Returns the new array of intersecting values.
|
|
6132
6163
|
* @example
|
|
6133
6164
|
*
|
|
6134
6165
|
* var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
|
|
@@ -6280,7 +6311,7 @@
|
|
|
6280
6311
|
/**
|
|
6281
6312
|
* This method is like `_.pullAll` except that it accepts `iteratee` which is
|
|
6282
6313
|
* invoked for each element of `array` and `values` to generate the criterion
|
|
6283
|
-
* by which
|
|
6314
|
+
* by which they're compared. The iteratee is invoked with one argument: (value).
|
|
6284
6315
|
*
|
|
6285
6316
|
* **Note:** Unlike `_.differenceBy`, this method mutates `array`.
|
|
6286
6317
|
*
|
|
@@ -6301,7 +6332,35 @@
|
|
|
6301
6332
|
*/
|
|
6302
6333
|
function pullAllBy(array, values, iteratee) {
|
|
6303
6334
|
return (array && array.length && values && values.length)
|
|
6304
|
-
?
|
|
6335
|
+
? basePullAll(array, values, getIteratee(iteratee))
|
|
6336
|
+
: array;
|
|
6337
|
+
}
|
|
6338
|
+
|
|
6339
|
+
/**
|
|
6340
|
+
* This method is like `_.pullAll` except that it accepts `comparator` which
|
|
6341
|
+
* is invoked to compare elements of `array` to `values`. The comparator is
|
|
6342
|
+
* invoked with two arguments: (arrVal, othVal).
|
|
6343
|
+
*
|
|
6344
|
+
* **Note:** Unlike `_.differenceWith`, this method mutates `array`.
|
|
6345
|
+
*
|
|
6346
|
+
* @static
|
|
6347
|
+
* @memberOf _
|
|
6348
|
+
* @category Array
|
|
6349
|
+
* @param {Array} array The array to modify.
|
|
6350
|
+
* @param {Array} values The values to remove.
|
|
6351
|
+
* @param {Function} [comparator] The comparator invoked per element.
|
|
6352
|
+
* @returns {Array} Returns `array`.
|
|
6353
|
+
* @example
|
|
6354
|
+
*
|
|
6355
|
+
* var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
|
|
6356
|
+
*
|
|
6357
|
+
* _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
|
|
6358
|
+
* console.log(array);
|
|
6359
|
+
* // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
|
|
6360
|
+
*/
|
|
6361
|
+
function pullAllWith(array, values, comparator) {
|
|
6362
|
+
return (array && array.length && values && values.length)
|
|
6363
|
+
? basePullAll(array, values, undefined, comparator)
|
|
6305
6364
|
: array;
|
|
6306
6365
|
}
|
|
6307
6366
|
|
|
@@ -7023,7 +7082,8 @@
|
|
|
7023
7082
|
|
|
7024
7083
|
/**
|
|
7025
7084
|
* Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
|
|
7026
|
-
* of the given arrays.
|
|
7085
|
+
* of the given arrays. The order of result values is determined by the order
|
|
7086
|
+
* they occur in the arrays.
|
|
7027
7087
|
*
|
|
7028
7088
|
* @static
|
|
7029
7089
|
* @memberOf _
|
|
@@ -7042,7 +7102,7 @@
|
|
|
7042
7102
|
/**
|
|
7043
7103
|
* This method is like `_.xor` except that it accepts `iteratee` which is
|
|
7044
7104
|
* invoked for each element of each `arrays` to generate the criterion by which
|
|
7045
|
-
*
|
|
7105
|
+
* by which they're compared. The iteratee is invoked with one argument: (value).
|
|
7046
7106
|
*
|
|
7047
7107
|
* @static
|
|
7048
7108
|
* @memberOf _
|
|
@@ -9409,7 +9469,7 @@
|
|
|
9409
9469
|
* // => true
|
|
9410
9470
|
*/
|
|
9411
9471
|
function clone(value) {
|
|
9412
|
-
return baseClone(value);
|
|
9472
|
+
return baseClone(value, false, true);
|
|
9413
9473
|
}
|
|
9414
9474
|
|
|
9415
9475
|
/**
|
|
@@ -9442,7 +9502,7 @@
|
|
|
9442
9502
|
* // => 0
|
|
9443
9503
|
*/
|
|
9444
9504
|
function cloneWith(value, customizer) {
|
|
9445
|
-
return baseClone(value, false, customizer);
|
|
9505
|
+
return baseClone(value, false, true, customizer);
|
|
9446
9506
|
}
|
|
9447
9507
|
|
|
9448
9508
|
/**
|
|
@@ -9462,7 +9522,7 @@
|
|
|
9462
9522
|
* // => false
|
|
9463
9523
|
*/
|
|
9464
9524
|
function cloneDeep(value) {
|
|
9465
|
-
return baseClone(value, true);
|
|
9525
|
+
return baseClone(value, true, true);
|
|
9466
9526
|
}
|
|
9467
9527
|
|
|
9468
9528
|
/**
|
|
@@ -9492,7 +9552,7 @@
|
|
|
9492
9552
|
* // => 20
|
|
9493
9553
|
*/
|
|
9494
9554
|
function cloneDeepWith(value, customizer) {
|
|
9495
|
-
return baseClone(value, true, customizer);
|
|
9555
|
+
return baseClone(value, true, true, customizer);
|
|
9496
9556
|
}
|
|
9497
9557
|
|
|
9498
9558
|
/**
|
|
@@ -9669,8 +9729,7 @@
|
|
|
9669
9729
|
* // => false
|
|
9670
9730
|
*/
|
|
9671
9731
|
function isArrayLike(value) {
|
|
9672
|
-
return value != null &&
|
|
9673
|
-
!(typeof value == 'function' && isFunction(value)) && isLength(getLength(value));
|
|
9732
|
+
return value != null && isLength(getLength(value)) && !isFunction(value);
|
|
9674
9733
|
}
|
|
9675
9734
|
|
|
9676
9735
|
/**
|
|
@@ -9782,14 +9841,14 @@
|
|
|
9782
9841
|
}
|
|
9783
9842
|
|
|
9784
9843
|
/**
|
|
9785
|
-
* Checks if `value` is empty. A value is considered
|
|
9786
|
-
* `arguments` object, array, string, or jQuery-like collection
|
|
9787
|
-
*
|
|
9844
|
+
* Checks if `value` is an empty collection or object. A value is considered
|
|
9845
|
+
* empty if it's an `arguments` object, array, string, or jQuery-like collection
|
|
9846
|
+
* with a length of `0` or has no own enumerable properties.
|
|
9788
9847
|
*
|
|
9789
9848
|
* @static
|
|
9790
9849
|
* @memberOf _
|
|
9791
9850
|
* @category Lang
|
|
9792
|
-
* @param {
|
|
9851
|
+
* @param {*} value The value to check.
|
|
9793
9852
|
* @returns {boolean} Returns `true` if `value` is empty, else `false`.
|
|
9794
9853
|
* @example
|
|
9795
9854
|
*
|
|
@@ -9961,8 +10020,8 @@
|
|
|
9961
10020
|
*/
|
|
9962
10021
|
function isFunction(value) {
|
|
9963
10022
|
// The use of `Object#toString` avoids issues with the `typeof` operator
|
|
9964
|
-
// in Safari 8 which returns 'object' for typed array constructors,
|
|
9965
|
-
// PhantomJS 1.9 which returns 'function' for `NodeList` instances.
|
|
10023
|
+
// in Safari 8 which returns 'object' for typed array and weak map constructors,
|
|
10024
|
+
// and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
|
|
9966
10025
|
var tag = isObject(value) ? objectToString.call(value) : '';
|
|
9967
10026
|
return tag == funcTag || tag == genTag;
|
|
9968
10027
|
}
|
|
@@ -10798,7 +10857,7 @@
|
|
|
10798
10857
|
return '';
|
|
10799
10858
|
}
|
|
10800
10859
|
if (isSymbol(value)) {
|
|
10801
|
-
return
|
|
10860
|
+
return symbolToString ? symbolToString.call(value) : '';
|
|
10802
10861
|
}
|
|
10803
10862
|
var result = (value + '');
|
|
10804
10863
|
return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
|
|
@@ -10837,7 +10896,15 @@
|
|
|
10837
10896
|
* // => { 'a': 1, 'c': 3, 'e': 5 }
|
|
10838
10897
|
*/
|
|
10839
10898
|
var assign = createAssigner(function(object, source) {
|
|
10840
|
-
|
|
10899
|
+
if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {
|
|
10900
|
+
copyObject(source, keys(source), object);
|
|
10901
|
+
return;
|
|
10902
|
+
}
|
|
10903
|
+
for (var key in source) {
|
|
10904
|
+
if (hasOwnProperty.call(source, key)) {
|
|
10905
|
+
assignValue(object, key, source[key]);
|
|
10906
|
+
}
|
|
10907
|
+
}
|
|
10841
10908
|
});
|
|
10842
10909
|
|
|
10843
10910
|
/**
|
|
@@ -10870,7 +10937,13 @@
|
|
|
10870
10937
|
* // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 }
|
|
10871
10938
|
*/
|
|
10872
10939
|
var assignIn = createAssigner(function(object, source) {
|
|
10873
|
-
|
|
10940
|
+
if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {
|
|
10941
|
+
copyObject(source, keysIn(source), object);
|
|
10942
|
+
return;
|
|
10943
|
+
}
|
|
10944
|
+
for (var key in source) {
|
|
10945
|
+
assignValue(object, key, source[key]);
|
|
10946
|
+
}
|
|
10874
10947
|
});
|
|
10875
10948
|
|
|
10876
10949
|
/**
|
|
@@ -11601,12 +11674,13 @@
|
|
|
11601
11674
|
}
|
|
11602
11675
|
|
|
11603
11676
|
/**
|
|
11604
|
-
*
|
|
11605
|
-
*
|
|
11606
|
-
*
|
|
11607
|
-
*
|
|
11608
|
-
*
|
|
11609
|
-
*
|
|
11677
|
+
* This method is like `_.assign` except that it recursively merges own and
|
|
11678
|
+
* inherited enumerable properties of source objects into the destination
|
|
11679
|
+
* object. Source properties that resolve to `undefined` are skipped if a
|
|
11680
|
+
* destination value exists. Array and plain object properties are merged
|
|
11681
|
+
* recursively.Other objects and value types are overridden by assignment.
|
|
11682
|
+
* Source objects are applied from left to right. Subsequent sources
|
|
11683
|
+
* overwrite property assignments of previous sources.
|
|
11610
11684
|
*
|
|
11611
11685
|
* **Note:** This method mutates `object`.
|
|
11612
11686
|
*
|
|
@@ -11859,8 +11933,10 @@
|
|
|
11859
11933
|
* @returns {Object} Returns `object`.
|
|
11860
11934
|
* @example
|
|
11861
11935
|
*
|
|
11862
|
-
*
|
|
11863
|
-
*
|
|
11936
|
+
* var object = {};
|
|
11937
|
+
*
|
|
11938
|
+
* _.setWith(object, '[0][1]', 'a', Object);
|
|
11939
|
+
* // => { '0': { '1': 'a' } }
|
|
11864
11940
|
*/
|
|
11865
11941
|
function setWith(object, path, value, customizer) {
|
|
11866
11942
|
customizer = typeof customizer == 'function' ? customizer : undefined;
|
|
@@ -11997,6 +12073,64 @@
|
|
|
11997
12073
|
return object == null ? true : baseUnset(object, path);
|
|
11998
12074
|
}
|
|
11999
12075
|
|
|
12076
|
+
/**
|
|
12077
|
+
* This method is like `_.set` except that accepts `updater` to produce the
|
|
12078
|
+
* value to set. Use `_.updateWith` to customize `path` creation. The `updater`
|
|
12079
|
+
* is invoked with one argument: (value).
|
|
12080
|
+
*
|
|
12081
|
+
* **Note:** This method mutates `object`.
|
|
12082
|
+
*
|
|
12083
|
+
* @static
|
|
12084
|
+
* @memberOf _
|
|
12085
|
+
* @category Object
|
|
12086
|
+
* @param {Object} object The object to modify.
|
|
12087
|
+
* @param {Array|string} path The path of the property to set.
|
|
12088
|
+
* @param {Function} updater The function to produce the updated value.
|
|
12089
|
+
* @returns {Object} Returns `object`.
|
|
12090
|
+
* @example
|
|
12091
|
+
*
|
|
12092
|
+
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
|
12093
|
+
*
|
|
12094
|
+
* _.update(object, 'a[0].b.c', function(n) { return n * n; });
|
|
12095
|
+
* console.log(object.a[0].b.c);
|
|
12096
|
+
* // => 9
|
|
12097
|
+
*
|
|
12098
|
+
* _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
|
|
12099
|
+
* console.log(object.x[0].y.z);
|
|
12100
|
+
* // => 0
|
|
12101
|
+
*/
|
|
12102
|
+
function update(object, path, updater) {
|
|
12103
|
+
return object == null ? object : baseUpdate(object, path, baseCastFunction(updater));
|
|
12104
|
+
}
|
|
12105
|
+
|
|
12106
|
+
/**
|
|
12107
|
+
* This method is like `_.update` except that it accepts `customizer` which is
|
|
12108
|
+
* invoked to produce the objects of `path`. If `customizer` returns `undefined`
|
|
12109
|
+
* path creation is handled by the method instead. The `customizer` is invoked
|
|
12110
|
+
* with three arguments: (nsValue, key, nsObject).
|
|
12111
|
+
*
|
|
12112
|
+
* **Note:** This method mutates `object`.
|
|
12113
|
+
*
|
|
12114
|
+
* @static
|
|
12115
|
+
* @memberOf _
|
|
12116
|
+
* @category Object
|
|
12117
|
+
* @param {Object} object The object to modify.
|
|
12118
|
+
* @param {Array|string} path The path of the property to set.
|
|
12119
|
+
* @param {Function} updater The function to produce the updated value.
|
|
12120
|
+
* @param {Function} [customizer] The function to customize assigned values.
|
|
12121
|
+
* @returns {Object} Returns `object`.
|
|
12122
|
+
* @example
|
|
12123
|
+
*
|
|
12124
|
+
* var object = {};
|
|
12125
|
+
*
|
|
12126
|
+
* _.updateWith(object, '[0][1]', _.constant('a'), Object);
|
|
12127
|
+
* // => { '0': { '1': 'a' } }
|
|
12128
|
+
*/
|
|
12129
|
+
function updateWith(object, path, updater, customizer) {
|
|
12130
|
+
customizer = typeof customizer == 'function' ? customizer : undefined;
|
|
12131
|
+
return object == null ? object : baseUpdate(object, path, baseCastFunction(updater), customizer);
|
|
12132
|
+
}
|
|
12133
|
+
|
|
12000
12134
|
/**
|
|
12001
12135
|
* Creates an array of the own enumerable property values of `object`.
|
|
12002
12136
|
*
|
|
@@ -12933,7 +13067,8 @@
|
|
|
12933
13067
|
}
|
|
12934
13068
|
|
|
12935
13069
|
/**
|
|
12936
|
-
* Converts `string`, as a whole, to lower case
|
|
13070
|
+
* Converts `string`, as a whole, to lower case just like
|
|
13071
|
+
* [String#toLowerCase](https://mdn.io/toLowerCase).
|
|
12937
13072
|
*
|
|
12938
13073
|
* @static
|
|
12939
13074
|
* @memberOf _
|
|
@@ -12956,7 +13091,8 @@
|
|
|
12956
13091
|
}
|
|
12957
13092
|
|
|
12958
13093
|
/**
|
|
12959
|
-
* Converts `string`, as a whole, to upper case
|
|
13094
|
+
* Converts `string`, as a whole, to upper case just like
|
|
13095
|
+
* [String#toUpperCase](https://mdn.io/toUpperCase).
|
|
12960
13096
|
*
|
|
12961
13097
|
* @static
|
|
12962
13098
|
* @memberOf _
|
|
@@ -14330,6 +14466,7 @@
|
|
|
14330
14466
|
|
|
14331
14467
|
// Ensure wrappers are instances of `baseLodash`.
|
|
14332
14468
|
lodash.prototype = baseLodash.prototype;
|
|
14469
|
+
lodash.prototype.constructor = lodash;
|
|
14333
14470
|
|
|
14334
14471
|
LodashWrapper.prototype = baseCreate(baseLodash.prototype);
|
|
14335
14472
|
LodashWrapper.prototype.constructor = LodashWrapper;
|
|
@@ -14451,6 +14588,7 @@
|
|
|
14451
14588
|
lodash.pull = pull;
|
|
14452
14589
|
lodash.pullAll = pullAll;
|
|
14453
14590
|
lodash.pullAllBy = pullAllBy;
|
|
14591
|
+
lodash.pullAllWith = pullAllWith;
|
|
14454
14592
|
lodash.pullAt = pullAt;
|
|
14455
14593
|
lodash.range = range;
|
|
14456
14594
|
lodash.rangeRight = rangeRight;
|
|
@@ -14493,6 +14631,8 @@
|
|
|
14493
14631
|
lodash.unset = unset;
|
|
14494
14632
|
lodash.unzip = unzip;
|
|
14495
14633
|
lodash.unzipWith = unzipWith;
|
|
14634
|
+
lodash.update = update;
|
|
14635
|
+
lodash.updateWith = updateWith;
|
|
14496
14636
|
lodash.values = values;
|
|
14497
14637
|
lodash.valuesIn = valuesIn;
|
|
14498
14638
|
lodash.without = without;
|