ut2 1.8.0 → 1.9.0

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.
Files changed (92) hide show
  1. package/dist/ut2.js +116 -143
  2. package/dist/ut2.js.map +1 -1
  3. package/dist/ut2.min.js +1 -1
  4. package/dist/ut2.min.js.map +1 -1
  5. package/es/before.js +2 -1
  6. package/es/clamp.js +7 -6
  7. package/es/conformsTo.js +2 -1
  8. package/es/countBy.js +2 -2
  9. package/es/groupBy.js +2 -2
  10. package/es/internals/baseDebounce.js +15 -14
  11. package/es/internals/compare.js +19 -26
  12. package/es/internals/createExtremum.js +4 -3
  13. package/es/internals/createForEach.js +2 -2
  14. package/es/internals/createReduce.js +2 -2
  15. package/es/internals/getTagWithBugfix.js +7 -7
  16. package/es/internals/helpers.js +1 -1
  17. package/es/internals/isEqualDeep.js +4 -4
  18. package/es/internals/native.js +9 -6
  19. package/es/internals/nodeUtil.js +4 -2
  20. package/es/invert.js +2 -2
  21. package/es/isBlob.js +2 -2
  22. package/es/isEmpty.js +2 -2
  23. package/es/isEqual.js +2 -1
  24. package/es/isMatch.js +5 -5
  25. package/es/isUndefined.js +3 -1
  26. package/es/keyBy.js +2 -2
  27. package/es/max.js +4 -3
  28. package/es/merge.js +6 -5
  29. package/es/min.js +4 -3
  30. package/es/nth.js +2 -1
  31. package/es/orderBy.js +5 -4
  32. package/es/partition.js +2 -2
  33. package/es/toString.js +2 -2
  34. package/lib/before.js +2 -1
  35. package/lib/clamp.js +7 -6
  36. package/lib/conformsTo.js +2 -1
  37. package/lib/countBy.js +2 -2
  38. package/lib/groupBy.js +2 -2
  39. package/lib/internals/baseDebounce.js +15 -14
  40. package/lib/internals/compare.js +18 -27
  41. package/lib/internals/createExtremum.js +4 -3
  42. package/lib/internals/createForEach.js +2 -2
  43. package/lib/internals/createReduce.js +2 -2
  44. package/lib/internals/getTagWithBugfix.js +6 -6
  45. package/lib/internals/helpers.js +1 -1
  46. package/lib/internals/isEqualDeep.js +3 -3
  47. package/lib/internals/native.js +8 -5
  48. package/lib/internals/nodeUtil.js +4 -2
  49. package/lib/invert.js +2 -2
  50. package/lib/isBlob.js +1 -1
  51. package/lib/isEmpty.js +2 -2
  52. package/lib/isEqual.js +2 -1
  53. package/lib/isMatch.js +4 -4
  54. package/lib/isUndefined.js +3 -1
  55. package/lib/keyBy.js +2 -2
  56. package/lib/max.js +4 -3
  57. package/lib/merge.js +6 -5
  58. package/lib/min.js +4 -3
  59. package/lib/nth.js +2 -1
  60. package/lib/orderBy.js +5 -4
  61. package/lib/partition.js +2 -2
  62. package/lib/toString.js +1 -1
  63. package/package.json +1 -1
  64. package/types/countBy.d.ts +7 -5
  65. package/types/difference.d.ts +2 -2
  66. package/types/groupBy.d.ts +7 -5
  67. package/types/internals/compare.d.ts +4 -6
  68. package/types/internals/createExtremum.d.ts +2 -2
  69. package/types/internals/native.d.ts +3 -0
  70. package/types/internals/types.d.ts +9 -2
  71. package/types/intersection.d.ts +3 -3
  72. package/types/invert.d.ts +1 -1
  73. package/types/keyBy.d.ts +7 -5
  74. package/types/max.d.ts +5 -5
  75. package/types/merge.d.ts +3 -3
  76. package/types/min.d.ts +4 -4
  77. package/types/omitBy.d.ts +1 -1
  78. package/types/orderBy.d.ts +8 -6
  79. package/types/partition.d.ts +7 -5
  80. package/types/pickBy.d.ts +1 -1
  81. package/types/reduce.d.ts +1 -1
  82. package/types/reduceRight.d.ts +1 -1
  83. package/types/times.d.ts +1 -1
  84. package/types/union.d.ts +2 -2
  85. package/types/uniq.d.ts +2 -2
  86. package/types/xor.d.ts +3 -3
  87. package/es/internals/isPrototype.js +0 -12
  88. package/es/internals/specialKeys.js +0 -17
  89. package/lib/internals/isPrototype.js +0 -14
  90. package/lib/internals/specialKeys.js +0 -19
  91. package/types/internals/isPrototype.d.ts +0 -9
  92. package/types/internals/specialKeys.d.ts +0 -9
package/dist/ut2.js CHANGED
@@ -4,6 +4,9 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ut2 = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
+ var nativeUndefined = void 0;
8
+ var stringUndefined = 'undefined';
9
+ var stringObject = 'object';
7
10
  var objectProto = Object.prototype;
8
11
  var objectProtoToString = objectProto.toString;
9
12
  var objectProtoHasOwnProperty = objectProto.hasOwnProperty;
@@ -13,8 +16,8 @@
13
16
  var objectKeys = Object.keys;
14
17
  var functionProto = Function.prototype;
15
18
  var functionProtoToString = functionProto.toString;
16
- var symbolExisted = typeof Symbol !== 'undefined';
17
- var symbolProto = symbolExisted ? Symbol.prototype : undefined;
19
+ var symbolExisted = typeof Symbol !== stringUndefined;
20
+ var symbolProto = symbolExisted ? Symbol.prototype : nativeUndefined;
18
21
  var arrayProto = Array.prototype;
19
22
  var arrayProtoSlice = arrayProto.slice;
20
23
  var mathMin = Math.min;
@@ -26,9 +29,9 @@
26
29
  var numberIsFinite = Number.isFinite;
27
30
  var numberIsInteger = Number.isInteger;
28
31
  var numberIsSafeInteger = Number.isSafeInteger;
29
- var globalThisExisted = typeof globalThis === 'object' && globalThis;
30
- var globalExisted = typeof global === 'object' && global;
31
- var selfExisted = typeof self === 'object' && self;
32
+ var globalThisExisted = typeof globalThis === stringObject && globalThis;
33
+ var globalExisted = typeof global === stringObject && global;
34
+ var selfExisted = typeof self === stringObject && self;
32
35
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
33
36
  var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
34
37
  var MAX_ARRAY_LENGTH = 4294967295;
@@ -225,7 +228,7 @@
225
228
  function nth(array, n) {
226
229
  if (n === void 0) { n = 0; }
227
230
  if (!isArrayLike(array)) {
228
- return undefined;
231
+ return nativeUndefined;
229
232
  }
230
233
  n += n < 0 ? array.length : 0;
231
234
  return array[n];
@@ -350,17 +353,24 @@
350
353
  return unzip(arrays);
351
354
  }
352
355
 
353
- function keys$1(object) {
356
+ function getSymbols(object) {
357
+ if (!objectGetOwnPropertySymbols || object === null) {
358
+ return [];
359
+ }
360
+ return objectGetOwnPropertySymbols(object).filter(function (item) { return objectProtoPropertyIsEnumerable.call(object, item); });
361
+ }
362
+
363
+ function allKeys(object) {
354
364
  if (!isObject(object)) {
355
365
  return [];
356
366
  }
357
- return objectKeys(object);
367
+ return objectKeys(object).concat(getSymbols(object));
358
368
  }
359
369
 
360
370
  function createForEach(dir) {
361
371
  var forEach = function (collection, iteratee) {
362
372
  if (iteratee === void 0) { iteratee = identity; }
363
- var _keys = !isArrayLike(collection) && keys$1(collection);
373
+ var _keys = !isArrayLike(collection) && allKeys(collection);
364
374
  var len = (_keys || collection).length;
365
375
  var i = dir > 0 ? 0 : len - 1;
366
376
  while (i >= 0 && i < len) {
@@ -380,8 +390,8 @@
380
390
  var countBy = function (collection, iteratee) {
381
391
  var result = {};
382
392
  var internalIteratee = createIteratee(iteratee);
383
- forEach(collection, function (item) {
384
- var key = internalIteratee(item);
393
+ forEach(collection, function (item, index, arr) {
394
+ var key = internalIteratee(item, index, arr);
385
395
  if (key in result) {
386
396
  ++result[key];
387
397
  }
@@ -433,8 +443,8 @@
433
443
  if (iteratee === void 0) { iteratee = identity; }
434
444
  var result = {};
435
445
  var internalIteratee = createIteratee(iteratee);
436
- forEach(collection, function (item) {
437
- var key = internalIteratee(item);
446
+ forEach(collection, function (item, index, arr) {
447
+ var key = internalIteratee(item, index, arr);
438
448
  if (key in result) {
439
449
  result[key].push(item);
440
450
  }
@@ -449,18 +459,22 @@
449
459
  if (iteratee === void 0) { iteratee = identity; }
450
460
  var result = {};
451
461
  var internalIteratee = createIteratee(iteratee);
452
- forEach(collection, function (item) {
453
- var key = internalIteratee(item);
462
+ forEach(collection, function (item, index, arr) {
463
+ var key = internalIteratee(item, index, arr);
454
464
  result[key] = item;
455
465
  });
456
466
  return result;
457
467
  };
458
468
 
469
+ function isNumber(value) {
470
+ return typeof value === 'number' || getTag(value) === numberTag;
471
+ }
472
+
459
473
  function isNil(value) {
460
474
  return value == null;
461
475
  }
462
476
 
463
- var symbolToString = symbolProto ? symbolProto.toString : undefined;
477
+ var symbolToString = symbolProto ? symbolProto.toString : nativeUndefined;
464
478
  function baseToString(value) {
465
479
  if (typeof value === 'string') {
466
480
  return value;
@@ -478,31 +492,23 @@
478
492
  return isNil(value) ? '' : baseToString(value);
479
493
  }
480
494
 
481
- function compareAsc(value, other) {
482
- var valueIsSymbol = isSymbol(value);
483
- var otherIsSymbol = isSymbol(other);
484
- var valueStr = toString(value);
485
- var otherStr = toString(other);
486
- if (!otherIsSymbol && (valueIsSymbol || valueStr > otherStr)) {
487
- return 1;
488
- }
489
- if (!valueIsSymbol && (otherIsSymbol || valueStr < otherStr)) {
490
- return -1;
491
- }
492
- return 0;
493
- }
494
- function compareDesc(value, other) {
495
- var valueIsSymbol = isSymbol(value);
496
- var otherIsSymbol = isSymbol(other);
497
- var valueStr = toString(value);
498
- var otherStr = toString(other);
499
- if (!otherIsSymbol && (valueIsSymbol || valueStr > otherStr)) {
500
- return -1;
501
- }
502
- if (!valueIsSymbol && (otherIsSymbol || valueStr < otherStr)) {
503
- return 1;
495
+ function createCompare(dir) {
496
+ var asc = dir === 1;
497
+ function wrapper(value, other) {
498
+ var valueIsSymbol = isSymbol(value);
499
+ var otherIsSymbol = isSymbol(other);
500
+ var isNeedConvertString = !valueIsSymbol && !otherIsSymbol && !(isNumber(value) && isNumber(other));
501
+ var _value = isNeedConvertString ? toString(value) : value;
502
+ var _other = isNeedConvertString ? toString(other) : other;
503
+ if (!otherIsSymbol && (valueIsSymbol || _value > _other)) {
504
+ return asc ? 1 : -1;
505
+ }
506
+ if (!valueIsSymbol && (otherIsSymbol || _value < _other)) {
507
+ return asc ? -1 : 1;
508
+ }
509
+ return 0;
504
510
  }
505
- return 0;
511
+ return wrapper;
506
512
  }
507
513
  function compareMultiple(object, other, orders) {
508
514
  var objCriteria = object.criteria;
@@ -511,7 +517,7 @@
511
517
  var index = -1;
512
518
  while (++index < length) {
513
519
  var order = orders[index];
514
- var cmpFn = typeof order === 'function' ? order : order === 'desc' ? compareDesc : compareAsc;
520
+ var cmpFn = typeof order === 'function' ? order : order === 'desc' ? createCompare(0) : createCompare(1);
515
521
  var result = cmpFn(objCriteria[index], othCriteria[index]);
516
522
  if (result) {
517
523
  return result;
@@ -522,11 +528,11 @@
522
528
 
523
529
  var orderBy = function (collection, iteratees, orders) {
524
530
  var result = [];
525
- iteratees = (isArray(iteratees) ? iteratees : iteratees !== undefined ? [iteratees] : [identity]);
526
- orders = (isArray(orders) ? orders : orders !== undefined ? [orders] : []);
531
+ iteratees = (isArray(iteratees) ? iteratees : iteratees !== nativeUndefined ? [iteratees] : [identity]);
532
+ orders = (isArray(orders) ? orders : orders !== nativeUndefined ? [orders] : []);
527
533
  var index = -1;
528
- forEach(collection, function (item) {
529
- var criteria = iteratees.map(function (iteratee) { return createIteratee(iteratee)(item); });
534
+ forEach(collection, function (item, key, arr) {
535
+ var criteria = iteratees.map(function (iteratee) { return createIteratee(iteratee)(item, key, arr); });
530
536
  result.push({
531
537
  criteria: criteria,
532
538
  index: ++index,
@@ -549,15 +555,15 @@
549
555
  if (predicate === void 0) { predicate = identity; }
550
556
  var result = [[], []];
551
557
  var internalIteratee = createIteratee(predicate);
552
- forEach(collection, function (item) {
553
- result[internalIteratee(item) ? 0 : 1].push(item);
558
+ forEach(collection, function (item, index, arr) {
559
+ result[internalIteratee(item, index, arr) ? 0 : 1].push(item);
554
560
  });
555
561
  return result;
556
562
  };
557
563
 
558
564
  function createReduce(dir) {
559
565
  function reducer(collection, iteratee, memo, initial) {
560
- var _keys = !isArrayLike(collection) && keys$1(collection);
566
+ var _keys = !isArrayLike(collection) && allKeys(collection);
561
567
  var len = (_keys || collection).length;
562
568
  var i = dir > 0 ? 0 : len - 1;
563
569
  if (!initial && len > 0) {
@@ -599,7 +605,7 @@
599
605
  return value == null || value !== value ? defaultValue : value;
600
606
  };
601
607
 
602
- var VERSION = "1.8.0";
608
+ var VERSION = "1.9.0";
603
609
  var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
604
610
  var FUNC_ERROR_TEXT = 'Expected a function';
605
611
  function toSource(func) {
@@ -643,14 +649,14 @@
643
649
  result = func.apply(this, arguments);
644
650
  }
645
651
  if (n <= 1) {
646
- func = undefined;
652
+ func = nativeUndefined;
647
653
  }
648
654
  return result;
649
655
  };
650
656
  }
651
657
 
652
658
  function isUndefined(value) {
653
- return value === void 0;
659
+ return value === nativeUndefined;
654
660
  }
655
661
 
656
662
  var PLACEHOLDER$1 = {
@@ -687,7 +693,7 @@
687
693
  var timer, lastCallTime, lastInvokeTime, lastArgs, lastThis, result;
688
694
  wait = defaultTo(toNumber(wait), 0);
689
695
  function shouldInvoke(time) {
690
- if (lastCallTime === undefined) {
696
+ if (lastCallTime === nativeUndefined) {
691
697
  return true;
692
698
  }
693
699
  var timeSinceLastCall = time - lastCallTime;
@@ -697,7 +703,7 @@
697
703
  function invokeFunc(time) {
698
704
  lastInvokeTime = time;
699
705
  result = func.apply(lastThis, lastArgs);
700
- lastThis = lastArgs = undefined;
706
+ lastThis = lastArgs = nativeUndefined;
701
707
  return result;
702
708
  }
703
709
  function debounced() {
@@ -709,36 +715,36 @@
709
715
  lastArgs = args;
710
716
  var time = Date.now();
711
717
  var isInvoke = shouldInvoke(time);
712
- var waitTime = !__throttle__ ? wait : !isInvoke && lastCallTime !== undefined && timer === undefined ? wait - (time - lastCallTime) : wait;
718
+ var waitTime = !__throttle__ ? wait : !isInvoke && lastCallTime !== nativeUndefined && timer === nativeUndefined ? wait - (time - lastCallTime) : wait;
713
719
  lastCallTime = time;
714
720
  if (isInvoke) {
715
- if (immediate && timer === undefined) {
721
+ if (immediate && timer === nativeUndefined) {
716
722
  return invokeFunc(time);
717
723
  }
718
724
  }
719
- if (timer !== undefined && !__throttle__) {
725
+ if (timer !== nativeUndefined && !__throttle__) {
720
726
  clearTimeout(timer);
721
- timer = undefined;
727
+ timer = nativeUndefined;
722
728
  }
723
- if (timer === undefined) {
729
+ if (timer === nativeUndefined) {
724
730
  timer = setTimeout(function () {
725
- timer = undefined;
731
+ timer = nativeUndefined;
726
732
  invokeFunc(Date.now());
727
733
  }, waitTime);
728
734
  }
729
735
  return result;
730
736
  }
731
737
  function cancel() {
732
- if (timer !== undefined) {
738
+ if (timer !== nativeUndefined) {
733
739
  clearTimeout(timer);
734
- timer = undefined;
740
+ timer = nativeUndefined;
735
741
  }
736
- lastCallTime = timer = lastArgs = lastThis = undefined;
742
+ lastCallTime = timer = lastArgs = lastThis = nativeUndefined;
737
743
  }
738
744
  function flush() {
739
- if (timer !== undefined) {
745
+ if (timer !== nativeUndefined) {
740
746
  clearTimeout(timer);
741
- timer = undefined;
747
+ timer = nativeUndefined;
742
748
  if (lastArgs) {
743
749
  return invokeFunc(Date.now());
744
750
  }
@@ -746,7 +752,7 @@
746
752
  return result;
747
753
  }
748
754
  function pending() {
749
- return timer !== undefined;
755
+ return timer !== nativeUndefined;
750
756
  }
751
757
  debounced.cancel = cancel;
752
758
  debounced.flush = flush;
@@ -822,8 +828,8 @@
822
828
  return isObjectLike(value) && objectProtoHasOwnProperty.call(value, 'callee') && !objectProtoPropertyIsEnumerable.call(value, 'callee');
823
829
  }
824
830
 
825
- var freeExports = typeof exports === 'object' && exports && !exports.nodeType && exports;
826
- var freeModule = freeExports && typeof module === 'object' && module && !module.nodeType && module;
831
+ var freeExports = typeof exports === stringObject && exports && !exports.nodeType && exports;
832
+ var freeModule = freeExports && typeof module === stringObject && module && !module.nodeType && module;
827
833
  var nodeUtil = (function () {
828
834
  try {
829
835
  var types = freeModule && freeModule.require && freeModule.require('util').types;
@@ -849,7 +855,7 @@
849
855
  return typeof value === 'bigint' || getTag(value) === bigIntTag;
850
856
  }
851
857
 
852
- var blobExisted = typeof Blob !== 'undefined';
858
+ var blobExisted = typeof Blob !== stringUndefined;
853
859
  function isBlob(value) {
854
860
  if (blobExisted && value instanceof Blob) {
855
861
  return true;
@@ -871,11 +877,11 @@
871
877
  return false;
872
878
  }
873
879
 
874
- var dataViewExisted = typeof DataView !== 'undefined';
875
- var mapExisted = typeof Map !== 'undefined';
876
- var promiseExisted = typeof Promise !== 'undefined';
877
- var setExisted = typeof Set !== 'undefined';
878
- var weakMapExisted = typeof WeakMap !== 'undefined';
880
+ var dataViewExisted = typeof DataView !== stringUndefined;
881
+ var mapExisted = typeof Map !== stringUndefined;
882
+ var promiseExisted = typeof Promise !== stringUndefined;
883
+ var setExisted = typeof Set !== stringUndefined;
884
+ var weakMapExisted = typeof WeakMap !== stringUndefined;
879
885
  var dataViewCtorString = toSource(DataView);
880
886
  var mapCtorString = toSource(Map);
881
887
  var promiseCtorString = toSource(Promise);
@@ -889,7 +895,7 @@
889
895
  (weakMapExisted && getTag(new WeakMap()) !== weakMapTag)) {
890
896
  getTagWithBugfix = function (value) {
891
897
  var result = getTag(value);
892
- var Ctor = result === objectTag ? value.constructor : undefined;
898
+ var Ctor = result === objectTag ? value.constructor : nativeUndefined;
893
899
  var ctorString = Ctor ? toSource(Ctor) : '';
894
900
  if (ctorString) {
895
901
  switch (ctorString) {
@@ -935,28 +941,6 @@
935
941
  return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
936
942
  }
937
943
 
938
- function isPrototype(value) {
939
- if (typeof value !== 'object') {
940
- return false;
941
- }
942
- var Ctor = value.constructor;
943
- var proto = typeof Ctor === 'function' ? Ctor.prototype : objectProto;
944
- return value === proto;
945
- }
946
-
947
- function keys(value) {
948
- if (!isPrototype(value)) {
949
- return objectKeys(value);
950
- }
951
- var result = [];
952
- for (var key in Object(value)) {
953
- if (objectProtoHasOwnProperty.call(value, key) && key !== 'constructor') {
954
- result.push(key);
955
- }
956
- }
957
- return result;
958
- }
959
-
960
944
  function isEmpty(value) {
961
945
  if (isNil(value)) {
962
946
  return true;
@@ -966,7 +950,7 @@
966
950
  return !value.size;
967
951
  }
968
952
  if (isObjectLike(value)) {
969
- return !keys(value).length;
953
+ return !allKeys(value).length;
970
954
  }
971
955
  if (isArrayLike(value)) {
972
956
  return !value.length;
@@ -974,20 +958,6 @@
974
958
  return true;
975
959
  }
976
960
 
977
- function getSymbols(object) {
978
- if (!objectGetOwnPropertySymbols || object === null) {
979
- return [];
980
- }
981
- return objectGetOwnPropertySymbols(object).filter(function (item) { return objectProtoPropertyIsEnumerable.call(object, item); });
982
- }
983
-
984
- function allKeys(object) {
985
- if (!isObject(object)) {
986
- return [];
987
- }
988
- return objectKeys(object).concat(getSymbols(object));
989
- }
990
-
991
961
  function isTypedArray(value) {
992
962
  if (nodeIsTypedArray) {
993
963
  return nodeIsTypedArray(value);
@@ -999,7 +969,7 @@
999
969
  return false;
1000
970
  }
1001
971
 
1002
- var symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
972
+ var symbolValueOf = symbolProto ? symbolProto.valueOf : nativeUndefined;
1003
973
  function mapToArray(map) {
1004
974
  var result = [];
1005
975
  map.forEach(function (value, key) {
@@ -1112,7 +1082,7 @@
1112
1082
  while (length--) {
1113
1083
  if (hasCustomizer) {
1114
1084
  var compared = customizer(value[length], other[length], length, value, other, valueStack, otherStack);
1115
- if (compared !== undefined) {
1085
+ if (compared !== nativeUndefined) {
1116
1086
  if (!compared) {
1117
1087
  return false;
1118
1088
  }
@@ -1135,7 +1105,7 @@
1135
1105
  var key = keys[length];
1136
1106
  if (hasCustomizer) {
1137
1107
  var compared = customizer(value[key], other[key], key, value, other, valueStack, otherStack);
1138
- if (compared !== undefined) {
1108
+ if (compared !== nativeUndefined) {
1139
1109
  if (!compared) {
1140
1110
  return false;
1141
1111
  }
@@ -1169,7 +1139,7 @@
1169
1139
  if (strictCheck === void 0) { strictCheck = false; }
1170
1140
  if (typeof customizer === 'function') {
1171
1141
  var result = customizer(value, other);
1172
- if (result !== undefined) {
1142
+ if (result !== nativeUndefined) {
1173
1143
  return !!result;
1174
1144
  }
1175
1145
  }
@@ -1232,7 +1202,7 @@
1232
1202
  }
1233
1203
  if (hasCustomizer) {
1234
1204
  var compared = customizer(object[key], source[key], key, object, source, objStack, srcStack);
1235
- if (compared !== undefined) {
1205
+ if (compared !== nativeUndefined) {
1236
1206
  if (!compared) {
1237
1207
  return false;
1238
1208
  }
@@ -1250,7 +1220,7 @@
1250
1220
  var result = isEqualDeep(object, source, function (objValue, srcValue, k, obj, src) {
1251
1221
  if (hasCustomizer) {
1252
1222
  var compared = customizer(objValue, srcValue, k, obj, src, objStack, srcStack);
1253
- if (compared !== undefined) {
1223
+ if (compared !== nativeUndefined) {
1254
1224
  return compared;
1255
1225
  }
1256
1226
  }
@@ -1264,15 +1234,11 @@
1264
1234
  if (strictCheck === void 0) { strictCheck = false; }
1265
1235
  if (typeof customizer === 'function') {
1266
1236
  var compared = customizer(object, source);
1267
- if (compared !== undefined) {
1237
+ if (compared !== nativeUndefined) {
1268
1238
  return !!compared;
1269
1239
  }
1270
1240
  }
1271
- return baseIsMatch(object, source, customizer, strictCheck, undefined, undefined);
1272
- }
1273
-
1274
- function isNumber(value) {
1275
- return typeof value === 'number' || getTag(value) === numberTag;
1241
+ return baseIsMatch(object, source, customizer, strictCheck, nativeUndefined, nativeUndefined);
1276
1242
  }
1277
1243
 
1278
1244
  function isNaN(value) {
@@ -1361,9 +1327,9 @@
1361
1327
  }
1362
1328
  var result, computed;
1363
1329
  var internalIteratee = createIteratee(iteratee);
1364
- array.forEach(function (value) {
1365
- var current = internalIteratee(value);
1366
- if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
1330
+ array.forEach(function (value, index) {
1331
+ var current = internalIteratee(value, index, array);
1332
+ if (current != null && (computed === nativeUndefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
1367
1333
  computed = current;
1368
1334
  result = value;
1369
1335
  }
@@ -1371,35 +1337,35 @@
1371
1337
  return result;
1372
1338
  }
1373
1339
 
1374
- function max(array, iteratee) {
1340
+ var max = function (array, iteratee) {
1375
1341
  return createExtremum(array, baseGt, iteratee);
1376
- }
1342
+ };
1377
1343
 
1378
- function min(array, iteratee) {
1344
+ var min = function (array, iteratee) {
1379
1345
  return createExtremum(array, baseLt, iteratee);
1380
- }
1346
+ };
1381
1347
 
1382
1348
  function round(number, precision) {
1383
1349
  return decimalAdjust('round', number, precision);
1384
1350
  }
1385
1351
 
1386
1352
  var clamp = function (number, lower, upper) {
1387
- if (upper === undefined) {
1353
+ if (upper === nativeUndefined) {
1388
1354
  upper = lower;
1389
- lower = undefined;
1355
+ lower = nativeUndefined;
1390
1356
  }
1391
- if (upper !== undefined) {
1357
+ if (upper !== nativeUndefined) {
1392
1358
  upper = defaultTo(toNumber(upper), 0);
1393
1359
  }
1394
- if (lower !== undefined) {
1360
+ if (lower !== nativeUndefined) {
1395
1361
  lower = defaultTo(toNumber(lower), 0);
1396
1362
  }
1397
1363
  number = toNumber(number);
1398
1364
  if (number === number) {
1399
- if (upper !== undefined) {
1365
+ if (upper !== nativeUndefined) {
1400
1366
  number = number <= upper ? number : upper;
1401
1367
  }
1402
- if (lower !== undefined) {
1368
+ if (lower !== nativeUndefined) {
1403
1369
  number = number >= lower ? number : lower;
1404
1370
  }
1405
1371
  }
@@ -1455,7 +1421,7 @@
1455
1421
 
1456
1422
  function invert(object, predicate) {
1457
1423
  if (predicate === void 0) { predicate = stubTrue; }
1458
- var _keys = keys$1(object);
1424
+ var _keys = allKeys(object);
1459
1425
  var result = {};
1460
1426
  _keys.forEach(function (key) {
1461
1427
  var value = object[key];
@@ -1470,6 +1436,13 @@
1470
1436
  return result;
1471
1437
  }
1472
1438
 
1439
+ function keys(object) {
1440
+ if (!isObject(object)) {
1441
+ return [];
1442
+ }
1443
+ return objectKeys(object);
1444
+ }
1445
+
1473
1446
  function keysIn(object) {
1474
1447
  if (!isObject(object)) {
1475
1448
  return [];
@@ -1492,8 +1465,8 @@
1492
1465
  obj[key] = srcValue;
1493
1466
  }
1494
1467
  else {
1495
- var newValue = hasCustomizer ? customizer(obj[key], srcValue, key, obj, source) : undefined;
1496
- if (newValue !== undefined) {
1468
+ var newValue = hasCustomizer ? customizer(obj[key], srcValue, key, obj, source) : nativeUndefined;
1469
+ if (newValue !== nativeUndefined) {
1497
1470
  obj[key] = newValue;
1498
1471
  }
1499
1472
  else {
@@ -1511,7 +1484,7 @@
1511
1484
  if (newObjValue) {
1512
1485
  obj[key] = baseMerge(newObjValue, srcValue, getKeys, customizer, stack);
1513
1486
  }
1514
- else if (srcValue !== undefined || !(key in obj)) {
1487
+ else if (srcValue !== nativeUndefined || !(key in obj)) {
1515
1488
  obj[key] = srcValue;
1516
1489
  }
1517
1490
  }
@@ -1520,7 +1493,7 @@
1520
1493
  return obj;
1521
1494
  }
1522
1495
  function merge(object, source, customizer, getKeys) {
1523
- if (getKeys === void 0) { getKeys = keysIn; }
1496
+ if (getKeys === void 0) { getKeys = allKeys; }
1524
1497
  return baseMerge(object, source, getKeys, customizer);
1525
1498
  }
1526
1499
 
@@ -1691,7 +1664,7 @@
1691
1664
  var key = props[i];
1692
1665
  var predicate = source[key];
1693
1666
  var value = object[key];
1694
- if ((value === undefined && !(key in object)) || !predicate(value)) {
1667
+ if ((value === nativeUndefined && !(key in object)) || !predicate(value)) {
1695
1668
  return false;
1696
1669
  }
1697
1670
  }
@@ -1879,7 +1852,7 @@
1879
1852
  exports.isWeakSet = isWeakSet;
1880
1853
  exports.kebabCase = kebabCase;
1881
1854
  exports.keyBy = keyBy;
1882
- exports.keys = keys$1;
1855
+ exports.keys = keys;
1883
1856
  exports.keysIn = keysIn;
1884
1857
  exports.lowerCase = lowerCase;
1885
1858
  exports.lowerFirst = lowerFirst;