ut2 1.16.0 → 1.17.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 +1 -0
- package/dist/ut2.js +69 -24
- package/dist/ut2.js.map +1 -1
- package/dist/ut2.min.js +1 -1
- package/dist/ut2.min.js.map +1 -1
- package/es/index.js +1 -0
- package/es/internals/helpers.js +2 -2
- package/es/internals/isEqualDeep.js +1 -1
- package/es/internals/native.js +24 -23
- package/es/memoize.js +47 -0
- package/lib/index.js +2 -0
- package/lib/internals/helpers.js +1 -1
- package/lib/internals/native.js +24 -23
- package/lib/memoize.js +49 -0
- package/package.json +24 -25
- package/types/index.d.ts +1 -0
- package/types/internals/native.d.ts +22 -22
- package/types/memoize.d.ts +50 -0
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) - 预设部分参数。
|
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
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
var
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
52
|
-
var
|
|
53
|
-
var
|
|
54
|
-
var
|
|
55
|
-
var
|
|
56
|
-
var
|
|
57
|
-
var
|
|
58
|
-
var
|
|
59
|
-
var
|
|
60
|
-
var
|
|
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.
|
|
610
|
+
var VERSION = "1.17.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,49 @@
|
|
|
783
784
|
}, wait);
|
|
784
785
|
}
|
|
785
786
|
|
|
787
|
+
function argsEqual(newArgs, lastArgs) {
|
|
788
|
+
if (newArgs.length !== lastArgs.length) {
|
|
789
|
+
return false;
|
|
790
|
+
}
|
|
791
|
+
for (var i = 0, len = newArgs.length; i < len; i++) {
|
|
792
|
+
if (!eq(newArgs[i], lastArgs[i])) {
|
|
793
|
+
return false;
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
return true;
|
|
797
|
+
}
|
|
798
|
+
function memoize(func, options) {
|
|
799
|
+
var opts = options || {};
|
|
800
|
+
var max = mathCeil(opts.max || 0);
|
|
801
|
+
var isEqual = typeof opts.isEqual === 'function' ? opts.isEqual : argsEqual;
|
|
802
|
+
var cache = [];
|
|
803
|
+
function memoized() {
|
|
804
|
+
var _this = this;
|
|
805
|
+
var newArgs = [];
|
|
806
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
807
|
+
newArgs[_i] = arguments[_i];
|
|
808
|
+
}
|
|
809
|
+
var cacheValue = cache.find(function (item) { return item.lastThis === _this && isEqual(item.lastArgs, newArgs); });
|
|
810
|
+
if (cacheValue) {
|
|
811
|
+
return cacheValue.lastReturn;
|
|
812
|
+
}
|
|
813
|
+
var lastReturn = func.apply(this, newArgs);
|
|
814
|
+
if (max > 0 && cache.length >= max) {
|
|
815
|
+
cache.shift();
|
|
816
|
+
}
|
|
817
|
+
cache.push({
|
|
818
|
+
lastArgs: newArgs,
|
|
819
|
+
lastThis: this,
|
|
820
|
+
lastReturn: lastReturn
|
|
821
|
+
});
|
|
822
|
+
return lastReturn;
|
|
823
|
+
}
|
|
824
|
+
memoized.clear = function () {
|
|
825
|
+
cache.length = 0;
|
|
826
|
+
};
|
|
827
|
+
return memoized;
|
|
828
|
+
}
|
|
829
|
+
|
|
786
830
|
function negate(predicate) {
|
|
787
831
|
var _this = this;
|
|
788
832
|
if (typeof predicate !== 'function') {
|
|
@@ -2226,6 +2270,7 @@
|
|
|
2226
2270
|
exports.lte = lte;
|
|
2227
2271
|
exports.map = map;
|
|
2228
2272
|
exports.max = max;
|
|
2273
|
+
exports.memoize = memoize;
|
|
2229
2274
|
exports.merge = merge;
|
|
2230
2275
|
exports.mergeObject = mergeObject;
|
|
2231
2276
|
exports.min = min;
|