ut2 1.7.2 → 1.8.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.
Files changed (82) hide show
  1. package/README.md +6 -2
  2. package/dist/ut2.js +127 -64
  3. package/dist/ut2.js.map +1 -1
  4. package/dist/ut2.min.js +1 -1
  5. package/dist/ut2.min.js.map +1 -1
  6. package/es/before.js +2 -1
  7. package/es/clamp.js +7 -6
  8. package/es/conforms.js +4 -3
  9. package/es/conformsTo.js +2 -1
  10. package/es/curry.js +32 -0
  11. package/es/index.js +4 -0
  12. package/es/internals/baseDebounce.js +15 -14
  13. package/es/internals/createExtremum.js +2 -1
  14. package/es/internals/getTagWithBugfix.js +7 -7
  15. package/es/internals/helpers.js +3 -2
  16. package/es/internals/isEqualDeep.js +4 -4
  17. package/es/internals/native.js +10 -6
  18. package/es/internals/nodeUtil.js +4 -2
  19. package/es/invert.js +22 -0
  20. package/es/isBigInt.js +8 -0
  21. package/es/isBlob.js +2 -2
  22. package/es/isEqual.js +2 -1
  23. package/es/isMatch.js +5 -5
  24. package/es/isUndefined.js +3 -1
  25. package/es/merge.js +4 -3
  26. package/es/nth.js +2 -1
  27. package/es/omit.js +4 -3
  28. package/es/orderBy.js +3 -2
  29. package/es/partial.js +1 -1
  30. package/es/pascalCase.js +11 -0
  31. package/es/pick.js +4 -3
  32. package/es/toString.js +2 -2
  33. package/lib/before.js +2 -1
  34. package/lib/clamp.js +7 -6
  35. package/lib/conforms.js +4 -3
  36. package/lib/conformsTo.js +2 -1
  37. package/lib/curry.js +34 -0
  38. package/lib/index.js +8 -0
  39. package/lib/internals/baseDebounce.js +15 -14
  40. package/lib/internals/createExtremum.js +2 -1
  41. package/lib/internals/getTagWithBugfix.js +6 -6
  42. package/lib/internals/helpers.js +2 -1
  43. package/lib/internals/isEqualDeep.js +3 -3
  44. package/lib/internals/native.js +9 -5
  45. package/lib/internals/nodeUtil.js +4 -2
  46. package/lib/invert.js +24 -0
  47. package/lib/isBigInt.js +10 -0
  48. package/lib/isBlob.js +1 -1
  49. package/lib/isEqual.js +2 -1
  50. package/lib/isMatch.js +4 -4
  51. package/lib/isUndefined.js +3 -1
  52. package/lib/merge.js +4 -3
  53. package/lib/nth.js +2 -1
  54. package/lib/omit.js +4 -3
  55. package/lib/orderBy.js +3 -2
  56. package/lib/partial.js +1 -1
  57. package/lib/pascalCase.js +13 -0
  58. package/lib/pick.js +4 -3
  59. package/lib/toString.js +1 -1
  60. package/package.json +1 -1
  61. package/types/allKeys.d.ts +1 -1
  62. package/types/allKeysIn.d.ts +1 -1
  63. package/types/conforms.d.ts +7 -2
  64. package/types/conformsTo.d.ts +3 -3
  65. package/types/curry.d.ts +123 -0
  66. package/types/delay.d.ts +1 -1
  67. package/types/index.d.ts +4 -0
  68. package/types/internals/compare.d.ts +4 -4
  69. package/types/internals/helpers.d.ts +1 -0
  70. package/types/internals/native.d.ts +4 -0
  71. package/types/internals/types.d.ts +2 -0
  72. package/types/invert.d.ts +19 -0
  73. package/types/isBigInt.d.ts +22 -0
  74. package/types/keys.d.ts +1 -1
  75. package/types/keysIn.d.ts +1 -1
  76. package/types/omit.d.ts +6 -1
  77. package/types/omitBy.d.ts +3 -2
  78. package/types/orderBy.d.ts +3 -3
  79. package/types/partial.d.ts +5 -5
  80. package/types/pascalCase.d.ts +27 -0
  81. package/types/pick.d.ts +6 -1
  82. package/types/pickBy.d.ts +3 -2
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  **与其他工具库对比([`lodash`]、[`underscore`])**
10
10
 
11
- - 基于 ES2015+ 标准,无需原生支持的方法(`forEach`、`filter`、`Object.keys`、`Object.entries` ……)。
11
+ - 大部分是基于 ES2015+ 标准实现的纯函数,没有过多的包装嵌套。
12
12
  - 使用 TypeScript 实现,提供类型定义。
13
13
  - 导出 `es`、`cjs`、`umd` 模块格式,支持不同开发环境使用。
14
14
 
@@ -91,6 +91,7 @@ const debounced = debounce(() => {
91
91
  - [Function](https://caijf.github.io/ut2/module-Function.html) 函数
92
92
  - [after](https://caijf.github.io/ut2/module-Function.html#.after) - 调用 `n` 或更多次之后触发。
93
93
  - [before](https://caijf.github.io/ut2/module-Function.html#.before) - 调用次数少于 `n` 次之前触发。
94
+ - [curry](https://caijf.github.io/ut2/module-Function.html#.curry) - 柯里化函数。
94
95
  - [debounce](https://caijf.github.io/ut2/module-Function.html#.debounce) - 防抖函数。
95
96
  - [delay](https://caijf.github.io/ut2/module-Function.html#.delay) - 延迟触发。
96
97
  - [negate](https://caijf.github.io/ut2/module-Function.html#.negate) - 否定断言。
@@ -103,6 +104,7 @@ const debounced = debounce(() => {
103
104
  - [isArrayBuffer](https://caijf.github.io/ut2/module-Language.html#.isArrayBuffer) - `ArrayBuffer` 对象。
104
105
  - [isArrayLike](https://caijf.github.io/ut2/module-Language.html#.isArrayLike) - 类数组。
105
106
  - [isArrayLikeObject](https://caijf.github.io/ut2/module-Language.html#.isArrayLikeObject) - 类数组对象。
107
+ - [isBigInt](https://caijf.github.io/ut2/module-Language.html#.isBigInt) - `bigint` 类型或对象。
106
108
  - [isBlob](https://caijf.github.io/ut2/module-Language.html#.isBlob) - `Blob` 对象。
107
109
  - [isBoolean](https://caijf.github.io/ut2/module-Language.html#.isBoolean) - 布尔类型或对象。
108
110
  - [isBuffer](https://caijf.github.io/ut2/module-Language.html#.isBuffer) - `Buffer` 对象。
@@ -149,6 +151,7 @@ const debounced = debounce(() => {
149
151
  - [Object](https://caijf.github.io/ut2/module-Object.html) 对象
150
152
  - [allKeys](https://caijf.github.io/ut2/module-Object.html#.allKeys) - 对象自身的可枚举属性(包含 `Symbol` 属性)。
151
153
  - [allKeysIn](https://caijf.github.io/ut2/module-Object.html#.allKeysIn) - 对象自身及继承的可枚举属性(包含 `Symbol` 属性)。
154
+ - [invert](https://caijf.github.io/ut2/module-Object.html#.invert) - 对象自身的可枚举属性(不包含 `Symbol` 属性)和值反转。
152
155
  - [keys](https://caijf.github.io/ut2/module-Object.html#.keys) - 对象自身的可枚举属性(不包含 `Symbol` 属性)。
153
156
  - [keysIn](https://caijf.github.io/ut2/module-Object.html#.keysIn) - 对象自身及继承的可枚举属性(不包含 `Symbol` 属性)。
154
157
  - [merge](https://caijf.github.io/ut2/module-Object.html#.merge) - 递归对象或数组进行合并。
@@ -164,7 +167,8 @@ const debounced = debounce(() => {
164
167
  - [kebabCase](https://caijf.github.io/ut2/module-String.html#.kebabCase) - 连接符分隔小写。
165
168
  - [lowerCase](https://caijf.github.io/ut2/module-String.html#.lowerCase) - 空格分隔小写。
166
169
  - [lowerFirst](https://caijf.github.io/ut2/module-String.html#.lowerFirst) - 首字母小写。
167
- - [snakeCase](https://caijf.github.io/ut2/module-String.html#.snakeCase) - 下划线分隔小写
170
+ - [pascalCase](https://caijf.github.io/ut2/module-String.html#.pascalCase) - 帕斯卡小写。又名大驼峰。
171
+ - [snakeCase](https://caijf.github.io/ut2/module-String.html#.snakeCase) - 下划线分隔小写。
168
172
  - [unescape](https://caijf.github.io/ut2/module-String.html#.unescape) - 转义字符串中的 HTML 实体字符 `&` `<` `"` `'`。
169
173
  - [upperCase](https://caijf.github.io/ut2/module-String.html#.upperCase) - 空格分隔大写。
170
174
  - [upperFirst](https://caijf.github.io/ut2/module-String.html#.upperFirst) - 首字母大写。
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,12 +29,13 @@
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;
38
+ var bigIntTag = '[object BigInt]';
35
39
  var numberTag = '[object Number]';
36
40
  var booleanTag = '[object Boolean]';
37
41
  var stringTag = '[object String]';
@@ -224,7 +228,7 @@
224
228
  function nth(array, n) {
225
229
  if (n === void 0) { n = 0; }
226
230
  if (!isArrayLike(array)) {
227
- return undefined;
231
+ return nativeUndefined;
228
232
  }
229
233
  n += n < 0 ? array.length : 0;
230
234
  return array[n];
@@ -459,7 +463,7 @@
459
463
  return value == null;
460
464
  }
461
465
 
462
- var symbolToString = symbolProto ? symbolProto.toString : undefined;
466
+ var symbolToString = symbolProto ? symbolProto.toString : nativeUndefined;
463
467
  function baseToString(value) {
464
468
  if (typeof value === 'string') {
465
469
  return value;
@@ -521,8 +525,8 @@
521
525
 
522
526
  var orderBy = function (collection, iteratees, orders) {
523
527
  var result = [];
524
- iteratees = (isArray(iteratees) ? iteratees : iteratees !== undefined ? [iteratees] : [identity]);
525
- orders = (isArray(orders) ? orders : orders !== undefined ? [orders] : []);
528
+ iteratees = (isArray(iteratees) ? iteratees : iteratees !== nativeUndefined ? [iteratees] : [identity]);
529
+ orders = (isArray(orders) ? orders : orders !== nativeUndefined ? [orders] : []);
526
530
  var index = -1;
527
531
  forEach(collection, function (item) {
528
532
  var criteria = iteratees.map(function (iteratee) { return createIteratee(iteratee)(item); });
@@ -598,7 +602,7 @@
598
602
  return value == null || value !== value ? defaultValue : value;
599
603
  };
600
604
 
601
- var VERSION = "1.7.2";
605
+ var VERSION = "1.8.1";
602
606
  var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
603
607
  var FUNC_ERROR_TEXT = 'Expected a function';
604
608
  function toSource(func) {
@@ -617,6 +621,7 @@
617
621
  return '';
618
622
  }
619
623
  var stubFlase = function () { return false; };
624
+ var stubTrue = function () { return true; };
620
625
 
621
626
  function after(n, func) {
622
627
  if (typeof func !== 'function') {
@@ -641,12 +646,42 @@
641
646
  result = func.apply(this, arguments);
642
647
  }
643
648
  if (n <= 1) {
644
- func = undefined;
649
+ func = nativeUndefined;
645
650
  }
646
651
  return result;
647
652
  };
648
653
  }
649
654
 
655
+ function isUndefined(value) {
656
+ return value === nativeUndefined;
657
+ }
658
+
659
+ var PLACEHOLDER$1 = {
660
+ __ut2_curry_ph__: null
661
+ };
662
+ var curry = function (func, arity) {
663
+ arity = isUndefined(arity) ? func.length : mathMax(toInteger(arity), 0);
664
+ function wrap() {
665
+ var args = arrayProtoSlice.call(arguments);
666
+ var context = this;
667
+ function inner() {
668
+ var argsInner = arrayProtoSlice.call(arguments);
669
+ for (var i = 0; i < args.length; i++) {
670
+ args[i] = args[i] === PLACEHOLDER$1 && argsInner.length > 0 ? argsInner.shift() : args[i];
671
+ }
672
+ args = args.concat(argsInner);
673
+ var realArgsLength = args.filter(function (arg) { return arg !== PLACEHOLDER$1; }).length;
674
+ if (realArgsLength >= arity) {
675
+ return func.apply(context, args);
676
+ }
677
+ return inner;
678
+ }
679
+ return inner();
680
+ }
681
+ return wrap;
682
+ };
683
+ curry.placeholder = curry._ = PLACEHOLDER$1;
684
+
650
685
  function baseDebounce(func, wait, immediate, __throttle__) {
651
686
  if (__throttle__ === void 0) { __throttle__ = false; }
652
687
  if (typeof func !== 'function') {
@@ -655,7 +690,7 @@
655
690
  var timer, lastCallTime, lastInvokeTime, lastArgs, lastThis, result;
656
691
  wait = defaultTo(toNumber(wait), 0);
657
692
  function shouldInvoke(time) {
658
- if (lastCallTime === undefined) {
693
+ if (lastCallTime === nativeUndefined) {
659
694
  return true;
660
695
  }
661
696
  var timeSinceLastCall = time - lastCallTime;
@@ -665,7 +700,7 @@
665
700
  function invokeFunc(time) {
666
701
  lastInvokeTime = time;
667
702
  result = func.apply(lastThis, lastArgs);
668
- lastThis = lastArgs = undefined;
703
+ lastThis = lastArgs = nativeUndefined;
669
704
  return result;
670
705
  }
671
706
  function debounced() {
@@ -677,36 +712,36 @@
677
712
  lastArgs = args;
678
713
  var time = Date.now();
679
714
  var isInvoke = shouldInvoke(time);
680
- var waitTime = !__throttle__ ? wait : !isInvoke && lastCallTime !== undefined && timer === undefined ? wait - (time - lastCallTime) : wait;
715
+ var waitTime = !__throttle__ ? wait : !isInvoke && lastCallTime !== nativeUndefined && timer === nativeUndefined ? wait - (time - lastCallTime) : wait;
681
716
  lastCallTime = time;
682
717
  if (isInvoke) {
683
- if (immediate && timer === undefined) {
718
+ if (immediate && timer === nativeUndefined) {
684
719
  return invokeFunc(time);
685
720
  }
686
721
  }
687
- if (timer !== undefined && !__throttle__) {
722
+ if (timer !== nativeUndefined && !__throttle__) {
688
723
  clearTimeout(timer);
689
- timer = undefined;
724
+ timer = nativeUndefined;
690
725
  }
691
- if (timer === undefined) {
726
+ if (timer === nativeUndefined) {
692
727
  timer = setTimeout(function () {
693
- timer = undefined;
728
+ timer = nativeUndefined;
694
729
  invokeFunc(Date.now());
695
730
  }, waitTime);
696
731
  }
697
732
  return result;
698
733
  }
699
734
  function cancel() {
700
- if (timer !== undefined) {
735
+ if (timer !== nativeUndefined) {
701
736
  clearTimeout(timer);
702
- timer = undefined;
737
+ timer = nativeUndefined;
703
738
  }
704
- lastCallTime = timer = lastArgs = lastThis = undefined;
739
+ lastCallTime = timer = lastArgs = lastThis = nativeUndefined;
705
740
  }
706
741
  function flush() {
707
- if (timer !== undefined) {
742
+ if (timer !== nativeUndefined) {
708
743
  clearTimeout(timer);
709
- timer = undefined;
744
+ timer = nativeUndefined;
710
745
  if (lastArgs) {
711
746
  return invokeFunc(Date.now());
712
747
  }
@@ -714,7 +749,7 @@
714
749
  return result;
715
750
  }
716
751
  function pending() {
717
- return timer !== undefined;
752
+ return timer !== nativeUndefined;
718
753
  }
719
754
  debounced.cancel = cancel;
720
755
  debounced.flush = flush;
@@ -762,7 +797,7 @@
762
797
  }
763
798
 
764
799
  var PLACEHOLDER = {
765
- __ut2_partial__: 1
800
+ __ut2_partial_ph__: null
766
801
  };
767
802
  var partial = function (func) {
768
803
  var argsOrig = arrayProtoSlice.call(arguments, 1);
@@ -790,8 +825,8 @@
790
825
  return isObjectLike(value) && objectProtoHasOwnProperty.call(value, 'callee') && !objectProtoPropertyIsEnumerable.call(value, 'callee');
791
826
  }
792
827
 
793
- var freeExports = typeof exports === 'object' && exports && !exports.nodeType && exports;
794
- var freeModule = freeExports && typeof module === 'object' && module && !module.nodeType && module;
828
+ var freeExports = typeof exports === stringObject && exports && !exports.nodeType && exports;
829
+ var freeModule = freeExports && typeof module === stringObject && module && !module.nodeType && module;
795
830
  var nodeUtil = (function () {
796
831
  try {
797
832
  var types = freeModule && freeModule.require && freeModule.require('util').types;
@@ -813,7 +848,11 @@
813
848
  return nodeIsArrayBuffer ? nodeIsArrayBuffer(value) : getTag(value) === arrayBufferTag;
814
849
  }
815
850
 
816
- var blobExisted = typeof Blob !== 'undefined';
851
+ function isBigInt(value) {
852
+ return typeof value === 'bigint' || getTag(value) === bigIntTag;
853
+ }
854
+
855
+ var blobExisted = typeof Blob !== stringUndefined;
817
856
  function isBlob(value) {
818
857
  if (blobExisted && value instanceof Blob) {
819
858
  return true;
@@ -835,11 +874,11 @@
835
874
  return false;
836
875
  }
837
876
 
838
- var dataViewExisted = typeof DataView !== 'undefined';
839
- var mapExisted = typeof Map !== 'undefined';
840
- var promiseExisted = typeof Promise !== 'undefined';
841
- var setExisted = typeof Set !== 'undefined';
842
- var weakMapExisted = typeof WeakMap !== 'undefined';
877
+ var dataViewExisted = typeof DataView !== stringUndefined;
878
+ var mapExisted = typeof Map !== stringUndefined;
879
+ var promiseExisted = typeof Promise !== stringUndefined;
880
+ var setExisted = typeof Set !== stringUndefined;
881
+ var weakMapExisted = typeof WeakMap !== stringUndefined;
843
882
  var dataViewCtorString = toSource(DataView);
844
883
  var mapCtorString = toSource(Map);
845
884
  var promiseCtorString = toSource(Promise);
@@ -853,7 +892,7 @@
853
892
  (weakMapExisted && getTag(new WeakMap()) !== weakMapTag)) {
854
893
  getTagWithBugfix = function (value) {
855
894
  var result = getTag(value);
856
- var Ctor = result === objectTag ? value.constructor : undefined;
895
+ var Ctor = result === objectTag ? value.constructor : nativeUndefined;
857
896
  var ctorString = Ctor ? toSource(Ctor) : '';
858
897
  if (ctorString) {
859
898
  switch (ctorString) {
@@ -963,7 +1002,7 @@
963
1002
  return false;
964
1003
  }
965
1004
 
966
- var symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
1005
+ var symbolValueOf = symbolProto ? symbolProto.valueOf : nativeUndefined;
967
1006
  function mapToArray(map) {
968
1007
  var result = [];
969
1008
  map.forEach(function (value, key) {
@@ -1076,7 +1115,7 @@
1076
1115
  while (length--) {
1077
1116
  if (hasCustomizer) {
1078
1117
  var compared = customizer(value[length], other[length], length, value, other, valueStack, otherStack);
1079
- if (compared !== undefined) {
1118
+ if (compared !== nativeUndefined) {
1080
1119
  if (!compared) {
1081
1120
  return false;
1082
1121
  }
@@ -1099,7 +1138,7 @@
1099
1138
  var key = keys[length];
1100
1139
  if (hasCustomizer) {
1101
1140
  var compared = customizer(value[key], other[key], key, value, other, valueStack, otherStack);
1102
- if (compared !== undefined) {
1141
+ if (compared !== nativeUndefined) {
1103
1142
  if (!compared) {
1104
1143
  return false;
1105
1144
  }
@@ -1133,7 +1172,7 @@
1133
1172
  if (strictCheck === void 0) { strictCheck = false; }
1134
1173
  if (typeof customizer === 'function') {
1135
1174
  var result = customizer(value, other);
1136
- if (result !== undefined) {
1175
+ if (result !== nativeUndefined) {
1137
1176
  return !!result;
1138
1177
  }
1139
1178
  }
@@ -1196,7 +1235,7 @@
1196
1235
  }
1197
1236
  if (hasCustomizer) {
1198
1237
  var compared = customizer(object[key], source[key], key, object, source, objStack, srcStack);
1199
- if (compared !== undefined) {
1238
+ if (compared !== nativeUndefined) {
1200
1239
  if (!compared) {
1201
1240
  return false;
1202
1241
  }
@@ -1214,7 +1253,7 @@
1214
1253
  var result = isEqualDeep(object, source, function (objValue, srcValue, k, obj, src) {
1215
1254
  if (hasCustomizer) {
1216
1255
  var compared = customizer(objValue, srcValue, k, obj, src, objStack, srcStack);
1217
- if (compared !== undefined) {
1256
+ if (compared !== nativeUndefined) {
1218
1257
  return compared;
1219
1258
  }
1220
1259
  }
@@ -1228,11 +1267,11 @@
1228
1267
  if (strictCheck === void 0) { strictCheck = false; }
1229
1268
  if (typeof customizer === 'function') {
1230
1269
  var compared = customizer(object, source);
1231
- if (compared !== undefined) {
1270
+ if (compared !== nativeUndefined) {
1232
1271
  return !!compared;
1233
1272
  }
1234
1273
  }
1235
- return baseIsMatch(object, source, customizer, strictCheck, undefined, undefined);
1274
+ return baseIsMatch(object, source, customizer, strictCheck, nativeUndefined, nativeUndefined);
1236
1275
  }
1237
1276
 
1238
1277
  function isNumber(value) {
@@ -1267,10 +1306,6 @@
1267
1306
  return typeof value === 'string' || getTag(value) === stringTag;
1268
1307
  }
1269
1308
 
1270
- function isUndefined(value) {
1271
- return value === void 0;
1272
- }
1273
-
1274
1309
  function isWeakMap(value) {
1275
1310
  return getTagWithBugfix$1(value) === weakMapTag;
1276
1311
  }
@@ -1331,7 +1366,7 @@
1331
1366
  var internalIteratee = createIteratee(iteratee);
1332
1367
  array.forEach(function (value) {
1333
1368
  var current = internalIteratee(value);
1334
- if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
1369
+ if (current != null && (computed === nativeUndefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
1335
1370
  computed = current;
1336
1371
  result = value;
1337
1372
  }
@@ -1352,22 +1387,22 @@
1352
1387
  }
1353
1388
 
1354
1389
  var clamp = function (number, lower, upper) {
1355
- if (upper === undefined) {
1390
+ if (upper === nativeUndefined) {
1356
1391
  upper = lower;
1357
- lower = undefined;
1392
+ lower = nativeUndefined;
1358
1393
  }
1359
- if (upper !== undefined) {
1394
+ if (upper !== nativeUndefined) {
1360
1395
  upper = defaultTo(toNumber(upper), 0);
1361
1396
  }
1362
- if (lower !== undefined) {
1397
+ if (lower !== nativeUndefined) {
1363
1398
  lower = defaultTo(toNumber(lower), 0);
1364
1399
  }
1365
1400
  number = toNumber(number);
1366
1401
  if (number === number) {
1367
- if (upper !== undefined) {
1402
+ if (upper !== nativeUndefined) {
1368
1403
  number = number <= upper ? number : upper;
1369
1404
  }
1370
- if (lower !== undefined) {
1405
+ if (lower !== nativeUndefined) {
1371
1406
  number = number >= lower ? number : lower;
1372
1407
  }
1373
1408
  }
@@ -1421,6 +1456,23 @@
1421
1456
  return getKeysIn(object).concat(getSymbolsIn(object));
1422
1457
  }
1423
1458
 
1459
+ function invert(object, predicate) {
1460
+ if (predicate === void 0) { predicate = stubTrue; }
1461
+ var _keys = keys$1(object);
1462
+ var result = {};
1463
+ _keys.forEach(function (key) {
1464
+ var value = object[key];
1465
+ if (predicate(value, key)) {
1466
+ var valueStr = value != null && typeof value.toString != 'function' ? objectProtoToString.call(value) : value;
1467
+ result[valueStr] = key;
1468
+ }
1469
+ else {
1470
+ result[key] = value;
1471
+ }
1472
+ });
1473
+ return result;
1474
+ }
1475
+
1424
1476
  function keysIn(object) {
1425
1477
  if (!isObject(object)) {
1426
1478
  return [];
@@ -1443,8 +1495,8 @@
1443
1495
  obj[key] = srcValue;
1444
1496
  }
1445
1497
  else {
1446
- var newValue = hasCustomizer ? customizer(obj[key], srcValue, key, obj, source) : undefined;
1447
- if (newValue !== undefined) {
1498
+ var newValue = hasCustomizer ? customizer(obj[key], srcValue, key, obj, source) : nativeUndefined;
1499
+ if (newValue !== nativeUndefined) {
1448
1500
  obj[key] = newValue;
1449
1501
  }
1450
1502
  else {
@@ -1462,7 +1514,7 @@
1462
1514
  if (newObjValue) {
1463
1515
  obj[key] = baseMerge(newObjValue, srcValue, getKeys, customizer, stack);
1464
1516
  }
1465
- else if (srcValue !== undefined || !(key in obj)) {
1517
+ else if (srcValue !== nativeUndefined || !(key in obj)) {
1466
1518
  obj[key] = srcValue;
1467
1519
  }
1468
1520
  }
@@ -1482,7 +1534,7 @@
1482
1534
  return isArray(value) ? value : [value];
1483
1535
  }
1484
1536
 
1485
- function omit(object, fields) {
1537
+ var omit = function (object, fields) {
1486
1538
  if (fields === void 0) { fields = []; }
1487
1539
  var keys = allKeysIn(object);
1488
1540
  var fieldArr = castArray(fields);
@@ -1493,7 +1545,7 @@
1493
1545
  }
1494
1546
  });
1495
1547
  return result;
1496
- }
1548
+ };
1497
1549
 
1498
1550
  function pickBy(object, predicate) {
1499
1551
  if (predicate === void 0) { predicate = stubFlase; }
@@ -1515,7 +1567,7 @@
1515
1567
  return pickBy(object, negate(predicate));
1516
1568
  }
1517
1569
 
1518
- function pick(object, fields) {
1570
+ var pick = function (object, fields) {
1519
1571
  if (fields === void 0) { fields = []; }
1520
1572
  var result = {};
1521
1573
  var fieldArr = castArray(fields);
@@ -1525,7 +1577,7 @@
1525
1577
  }
1526
1578
  });
1527
1579
  return result;
1528
- }
1580
+ };
1529
1581
 
1530
1582
  var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
1531
1583
  function words(string, pattern) {
@@ -1596,6 +1648,13 @@
1596
1648
 
1597
1649
  var lowerFirst = createCaseFirst('toLowerCase');
1598
1650
 
1651
+ function pascalCase(string, pattern) {
1652
+ return splitCaseWords(string, pattern).reduce(function (prev, cur) {
1653
+ cur = cur.toLowerCase();
1654
+ return prev + upperFirst(cur);
1655
+ }, '');
1656
+ }
1657
+
1599
1658
  function snakeCase(string, pattern) {
1600
1659
  return splitCaseWords(string, pattern).reduce(function (prev, cur, index) { return prev + (index ? '_' : '') + cur.toLowerCase(); }, '');
1601
1660
  }
@@ -1635,18 +1694,18 @@
1635
1694
  var key = props[i];
1636
1695
  var predicate = source[key];
1637
1696
  var value = object[key];
1638
- if ((value === undefined && !(key in object)) || !predicate(value)) {
1697
+ if ((value === nativeUndefined && !(key in object)) || !predicate(value)) {
1639
1698
  return false;
1640
1699
  }
1641
1700
  }
1642
1701
  return true;
1643
1702
  };
1644
1703
 
1645
- function conforms(source) {
1704
+ var conforms = function (source) {
1646
1705
  return function (object) {
1647
1706
  return conformsTo(object, source);
1648
1707
  };
1649
- }
1708
+ };
1650
1709
 
1651
1710
  function constant(value) {
1652
1711
  return function () {
@@ -1761,6 +1820,7 @@
1761
1820
  exports.conformsTo = conformsTo;
1762
1821
  exports.constant = constant;
1763
1822
  exports.countBy = countBy;
1823
+ exports.curry = curry;
1764
1824
  exports.debounce = debounce;
1765
1825
  exports.defaultTo = defaultTo;
1766
1826
  exports.delay = delay;
@@ -1781,11 +1841,13 @@
1781
1841
  exports.identity = identity;
1782
1842
  exports.inRange = inRange;
1783
1843
  exports.intersection = intersection;
1844
+ exports.invert = invert;
1784
1845
  exports.isArguments = isArguments;
1785
1846
  exports.isArray = isArray;
1786
1847
  exports.isArrayBuffer = isArrayBuffer;
1787
1848
  exports.isArrayLike = isArrayLike;
1788
1849
  exports.isArrayLikeObject = isArrayLikeObject;
1850
+ exports.isBigInt = isBigInt;
1789
1851
  exports.isBlob = isBlob;
1790
1852
  exports.isBoolean = isBoolean;
1791
1853
  exports.isBuffer = isBuffer;
@@ -1840,6 +1902,7 @@
1840
1902
  exports.orderBy = orderBy;
1841
1903
  exports.partial = partial;
1842
1904
  exports.partition = partition;
1905
+ exports.pascalCase = pascalCase;
1843
1906
  exports.pick = pick;
1844
1907
  exports.pickBy = pickBy;
1845
1908
  exports.random = random;