ut2 1.16.0 → 1.18.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.
package/README.md CHANGED
@@ -94,6 +94,7 @@ const debounced = debounce(() => {
94
94
  - [curry](https://caijf.github.io/ut2/module-Function.html#.curry) - 柯里化函数。
95
95
  - [debounce](https://caijf.github.io/ut2/module-Function.html#.debounce) - 防抖函数。
96
96
  - [delay](https://caijf.github.io/ut2/module-Function.html#.delay) - 延迟触发。
97
+ - [memoize](https://caijf.github.io/ut2/module-Function.html#.memoize) - 缓存函数结果。
97
98
  - [negate](https://caijf.github.io/ut2/module-Function.html#.negate) - 否定断言。
98
99
  - [once](https://caijf.github.io/ut2/module-Function.html#.once) - 只执行一次。
99
100
  - [partial](https://caijf.github.io/ut2/module-Function.html#.partial) - 预设部分参数。
@@ -189,6 +190,7 @@ const debounced = debounce(() => {
189
190
  - [constant](https://caijf.github.io/ut2/module-Util.html#.constant) - 返回自身的函数。
190
191
  - [defaultTo](https://caijf.github.io/ut2/module-Util.html#.defaultTo) - 默认值。
191
192
  - [eq](https://caijf.github.io/ut2/module-Util.html#.eq) - 等于。
193
+ - [equalArrayLike](https://caijf.github.io/ut2/module-Util.html#.equalArrayLike) - 比较类数组。
192
194
  - [gt](https://caijf.github.io/ut2/module-Util.html#.gt) - 大于。
193
195
  - [gte](https://caijf.github.io/ut2/module-Util.html#.gte) - 大于等于。
194
196
  - [guard](https://caijf.github.io/ut2/module-Util.html#.guard) - 函数守卫。
package/dist/ut2.js CHANGED
@@ -35,29 +35,30 @@
35
35
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
36
36
  var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
37
37
  var MAX_ARRAY_LENGTH = 4294967295;
38
- var bigIntTag = '[object BigInt]';
39
- var numberTag = '[object Number]';
40
- var booleanTag = '[object Boolean]';
41
- var stringTag = '[object String]';
42
- var dateTag = '[object Date]';
43
- var regExpTag = '[object RegExp]';
44
- var symbolTag = '[object Symbol]';
45
- var errorTag = '[object Error]';
46
- var arrayBufferTag = '[object ArrayBuffer]';
47
- var argumentsTag = '[object Arguments]';
48
- var arrayTag = '[object Array]';
49
- var functionTags = ['Function', 'AsyncFunction', 'GeneratorFunction', 'Proxy'].map(function (item) { return '[object ' + item + ']'; });
50
- var weakSetTag = '[object WeakSet]';
51
- var blobTag = '[object Blob]';
52
- var fileTag = '[object File]';
53
- var domExceptionTag = '[object DOMException]';
54
- var objectTag = '[object Object]';
55
- var dataViewTag = '[object DataView]';
56
- var mapTag = '[object Map]';
57
- var promiseTag = '[object Promise]';
58
- var setTag = '[object Set]';
59
- var weakMapTag = '[object WeakMap]';
60
- var windowTag = '[object Window]';
38
+ var tagPrefix = '[object ';
39
+ var bigIntTag = tagPrefix + 'BigInt]';
40
+ var numberTag = tagPrefix + 'Number]';
41
+ var booleanTag = tagPrefix + 'Boolean]';
42
+ var stringTag = tagPrefix + 'String]';
43
+ var dateTag = tagPrefix + 'Date]';
44
+ var regExpTag = tagPrefix + 'RegExp]';
45
+ var symbolTag = tagPrefix + 'Symbol]';
46
+ var errorTag = tagPrefix + 'Error]';
47
+ var arrayBufferTag = tagPrefix + 'ArrayBuffer]';
48
+ var argumentsTag = tagPrefix + 'Arguments]';
49
+ var arrayTag = tagPrefix + 'Array]';
50
+ var functionTags = ['Function', 'AsyncFunction', 'GeneratorFunction', 'Proxy'].map(function (item) { return tagPrefix + item + ']'; });
51
+ var weakSetTag = tagPrefix + 'WeakSet]';
52
+ var blobTag = tagPrefix + 'Blob]';
53
+ var fileTag = tagPrefix + 'File]';
54
+ var domExceptionTag = tagPrefix + 'DOMException]';
55
+ var objectTag = tagPrefix + 'Object]';
56
+ var dataViewTag = tagPrefix + 'DataView]';
57
+ var mapTag = tagPrefix + 'Map]';
58
+ var promiseTag = tagPrefix + 'Promise]';
59
+ var setTag = tagPrefix + 'Set]';
60
+ var weakMapTag = tagPrefix + 'WeakMap]';
61
+ var windowTag = tagPrefix + 'Window]';
61
62
 
62
63
  function isArray(value) {
63
64
  return Array.isArray(value);
@@ -606,7 +607,7 @@
606
607
  return value == null || value !== value ? defaultValue : value;
607
608
  };
608
609
 
609
- var VERSION = "1.16.0";
610
+ var VERSION = "1.18.0";
610
611
  var isBrowser = typeof window !== stringUndefined && isObjectLike(window) && typeof document !== stringUndefined && isObjectLike(document) && window.document === document;
611
612
  var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
612
613
  var FUNC_ERROR_TEXT = 'Expected a function';
@@ -783,6 +784,53 @@
783
784
  }, wait);
784
785
  }
785
786
 
787
+ function equalArrayLike(arg1, arg2, strictCheck) {
788
+ if (strictCheck === void 0) { strictCheck = true; }
789
+ if (eq(arg1, arg2, strictCheck))
790
+ return true;
791
+ if (!isArrayLike(arg1) || !isArrayLike(arg2))
792
+ return false;
793
+ if (arg1.length !== arg2.length)
794
+ return false;
795
+ for (var i = 0; i < arg1.length; i++) {
796
+ if (!eq(arg1[i], arg2[i], strictCheck))
797
+ return false;
798
+ }
799
+ return true;
800
+ }
801
+
802
+ function memoize(func, options) {
803
+ var opts = options || {};
804
+ var max = mathCeil(opts.max || 0);
805
+ var isEqual = typeof opts.isEqual === 'function' ? opts.isEqual : equalArrayLike;
806
+ var cache = [];
807
+ function memoized() {
808
+ var _this = this;
809
+ var newArgs = [];
810
+ for (var _i = 0; _i < arguments.length; _i++) {
811
+ newArgs[_i] = arguments[_i];
812
+ }
813
+ var cacheValue = cache.find(function (item) { return item.lastThis === _this && isEqual(item.lastArgs, newArgs); });
814
+ if (cacheValue) {
815
+ return cacheValue.lastReturn;
816
+ }
817
+ var lastReturn = func.apply(this, newArgs);
818
+ if (max > 0 && cache.length >= max) {
819
+ cache.shift();
820
+ }
821
+ cache.push({
822
+ lastArgs: newArgs,
823
+ lastThis: this,
824
+ lastReturn: lastReturn
825
+ });
826
+ return lastReturn;
827
+ }
828
+ memoized.clear = function () {
829
+ cache.length = 0;
830
+ };
831
+ return memoized;
832
+ }
833
+
786
834
  function negate(predicate) {
787
835
  var _this = this;
788
836
  if (typeof predicate !== 'function') {
@@ -2154,6 +2202,7 @@
2154
2202
  exports.delay = delay;
2155
2203
  exports.difference = difference;
2156
2204
  exports.eq = eq;
2205
+ exports.equalArrayLike = equalArrayLike;
2157
2206
  exports.escape = escape;
2158
2207
  exports.escapeRegExp = escapeRegExp;
2159
2208
  exports.every = every;
@@ -2226,6 +2275,7 @@
2226
2275
  exports.lte = lte;
2227
2276
  exports.map = map;
2228
2277
  exports.max = max;
2278
+ exports.memoize = memoize;
2229
2279
  exports.merge = merge;
2230
2280
  exports.mergeObject = mergeObject;
2231
2281
  exports.min = min;