ut2 1.20.1 → 1.21.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 -1
- package/dist/ut2.js +18 -8
- package/dist/ut2.js.map +1 -1
- package/dist/ut2.min.js +1 -1
- package/dist/ut2.min.js.map +1 -1
- package/es/equalArrayLike.js +2 -16
- package/es/index.js +1 -0
- package/es/internals/helpers.js +1 -1
- package/es/memoize.js +2 -2
- package/es/shallowEqual.js +26 -0
- package/lib/equalArrayLike.js +2 -16
- package/lib/index.js +2 -0
- package/lib/internals/helpers.js +1 -1
- package/lib/memoize.js +2 -2
- package/lib/shallowEqual.js +28 -0
- package/package.json +1 -1
- package/types/equalArrayLike.d.ts +4 -30
- package/types/index.d.ts +1 -0
- package/types/memoize.d.ts +1 -1
- package/types/shallowEqual.d.ts +39 -0
package/es/equalArrayLike.js
CHANGED
|
@@ -1,19 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import isArrayLike from './isArrayLike.js';
|
|
1
|
+
import shallowEqual from './shallowEqual.js';
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
if (strictCheck === void 0) { strictCheck = true; }
|
|
6
|
-
if (eq(arg1, arg2, strictCheck))
|
|
7
|
-
return true;
|
|
8
|
-
if (!isArrayLike(arg1) || !isArrayLike(arg2))
|
|
9
|
-
return false;
|
|
10
|
-
if (arg1.length !== arg2.length)
|
|
11
|
-
return false;
|
|
12
|
-
for (var i = 0; i < arg1.length; i++) {
|
|
13
|
-
if (!eq(arg1[i], arg2[i], strictCheck))
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
3
|
+
var equalArrayLike = shallowEqual;
|
|
18
4
|
|
|
19
5
|
export { equalArrayLike as default };
|
package/es/index.js
CHANGED
|
@@ -136,6 +136,7 @@ export { default as nthArg } from './nthArg.js';
|
|
|
136
136
|
export { default as range } from './range.js';
|
|
137
137
|
export { default as retry } from './retry.js';
|
|
138
138
|
export { default as sleep } from './sleep.js';
|
|
139
|
+
export { default as shallowEqual } from './shallowEqual.js';
|
|
139
140
|
export { default as times } from './times.js';
|
|
140
141
|
export { default as toFinite } from './toFinite.js';
|
|
141
142
|
export { default as toInteger } from './toInteger.js';
|
package/es/internals/helpers.js
CHANGED
|
@@ -2,7 +2,7 @@ import isObjectLike from '../isObjectLike.js';
|
|
|
2
2
|
import getTag from './getTag.js';
|
|
3
3
|
import { argumentsTag, functionProtoToString, stringUndefined } from './native.js';
|
|
4
4
|
|
|
5
|
-
var VERSION = "1.
|
|
5
|
+
var VERSION = "1.21.0";
|
|
6
6
|
var isBrowser = typeof window !== stringUndefined && isObjectLike(window) && typeof document !== stringUndefined && isObjectLike(document) && window.document === document;
|
|
7
7
|
var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
|
|
8
8
|
var FUNC_ERROR_TEXT = 'Expected a function';
|
package/es/memoize.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import shallowEqual from './shallowEqual.js';
|
|
2
2
|
import { mathCeil } from './internals/native.js';
|
|
3
3
|
|
|
4
4
|
function memoize(func, options) {
|
|
5
5
|
var opts = options || {};
|
|
6
6
|
var max = mathCeil(opts.max || 0);
|
|
7
|
-
var isEqual = typeof opts.isEqual === 'function' ? opts.isEqual :
|
|
7
|
+
var isEqual = typeof opts.isEqual === 'function' ? opts.isEqual : shallowEqual;
|
|
8
8
|
var cache = [];
|
|
9
9
|
function memoized() {
|
|
10
10
|
var _this = this;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import eq from './eq.js';
|
|
2
|
+
import { objectProtoHasOwnProperty } from './internals/native.js';
|
|
3
|
+
|
|
4
|
+
function shallowEqual(objA, objB, strictCheck) {
|
|
5
|
+
if (strictCheck === void 0) { strictCheck = true; }
|
|
6
|
+
if (eq(objA, objB, strictCheck)) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
var keysA = Object.keys(objA);
|
|
13
|
+
var keysB = Object.keys(objB);
|
|
14
|
+
if (keysA.length !== keysB.length) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
for (var i = 0; i < keysA.length; i++) {
|
|
18
|
+
var key = keysA[i];
|
|
19
|
+
if (!objectProtoHasOwnProperty.call(objB, key) || !eq(objA[key], objB[key], strictCheck)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { shallowEqual as default };
|
package/lib/equalArrayLike.js
CHANGED
|
@@ -1,21 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var isArrayLike = require('./isArrayLike.js');
|
|
3
|
+
var shallowEqual = require('./shallowEqual.js');
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
if (strictCheck === void 0) { strictCheck = true; }
|
|
8
|
-
if (eq(arg1, arg2, strictCheck))
|
|
9
|
-
return true;
|
|
10
|
-
if (!isArrayLike(arg1) || !isArrayLike(arg2))
|
|
11
|
-
return false;
|
|
12
|
-
if (arg1.length !== arg2.length)
|
|
13
|
-
return false;
|
|
14
|
-
for (var i = 0; i < arg1.length; i++) {
|
|
15
|
-
if (!eq(arg1[i], arg2[i], strictCheck))
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
5
|
+
var equalArrayLike = shallowEqual;
|
|
20
6
|
|
|
21
7
|
module.exports = equalArrayLike;
|
package/lib/index.js
CHANGED
|
@@ -138,6 +138,7 @@ var nthArg = require('./nthArg.js');
|
|
|
138
138
|
var range = require('./range.js');
|
|
139
139
|
var retry = require('./retry.js');
|
|
140
140
|
var sleep = require('./sleep.js');
|
|
141
|
+
var shallowEqual = require('./shallowEqual.js');
|
|
141
142
|
var times = require('./times.js');
|
|
142
143
|
var toFinite = require('./toFinite.js');
|
|
143
144
|
var toInteger = require('./toInteger.js');
|
|
@@ -292,6 +293,7 @@ exports.nthArg = nthArg;
|
|
|
292
293
|
exports.range = range;
|
|
293
294
|
exports.retry = retry;
|
|
294
295
|
exports.sleep = sleep;
|
|
296
|
+
exports.shallowEqual = shallowEqual;
|
|
295
297
|
exports.times = times;
|
|
296
298
|
exports.toFinite = toFinite;
|
|
297
299
|
exports.toInteger = toInteger;
|
package/lib/internals/helpers.js
CHANGED
|
@@ -4,7 +4,7 @@ var isObjectLike = require('../isObjectLike.js');
|
|
|
4
4
|
var getTag = require('./getTag.js');
|
|
5
5
|
var native = require('./native.js');
|
|
6
6
|
|
|
7
|
-
var VERSION = "1.
|
|
7
|
+
var VERSION = "1.21.0";
|
|
8
8
|
var isBrowser = typeof window !== native.stringUndefined && isObjectLike(window) && typeof document !== native.stringUndefined && isObjectLike(document) && window.document === document;
|
|
9
9
|
var supportedArgumentsType = getTag((function () { return arguments; })()) === native.argumentsTag;
|
|
10
10
|
var FUNC_ERROR_TEXT = 'Expected a function';
|
package/lib/memoize.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var shallowEqual = require('./shallowEqual.js');
|
|
4
4
|
var native = require('./internals/native.js');
|
|
5
5
|
|
|
6
6
|
function memoize(func, options) {
|
|
7
7
|
var opts = options || {};
|
|
8
8
|
var max = native.mathCeil(opts.max || 0);
|
|
9
|
-
var isEqual = typeof opts.isEqual === 'function' ? opts.isEqual :
|
|
9
|
+
var isEqual = typeof opts.isEqual === 'function' ? opts.isEqual : shallowEqual;
|
|
10
10
|
var cache = [];
|
|
11
11
|
function memoized() {
|
|
12
12
|
var _this = this;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var eq = require('./eq.js');
|
|
4
|
+
var native = require('./internals/native.js');
|
|
5
|
+
|
|
6
|
+
function shallowEqual(objA, objB, strictCheck) {
|
|
7
|
+
if (strictCheck === void 0) { strictCheck = true; }
|
|
8
|
+
if (eq(objA, objB, strictCheck)) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
var keysA = Object.keys(objA);
|
|
15
|
+
var keysB = Object.keys(objB);
|
|
16
|
+
if (keysA.length !== keysB.length) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
for (var i = 0; i < keysA.length; i++) {
|
|
20
|
+
var key = keysA[i];
|
|
21
|
+
if (!native.objectProtoHasOwnProperty.call(objB, key) || !eq(objA[key], objB[key], strictCheck)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = shallowEqual;
|
package/package.json
CHANGED
|
@@ -1,37 +1,11 @@
|
|
|
1
|
+
import shallowEqual from './shallowEqual';
|
|
1
2
|
/**
|
|
2
3
|
* 比较两个类数组的值是否相等。常用于参数对象比较。
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* 3. 否则返回 `false`。
|
|
7
|
-
*
|
|
5
|
+
* @deprecated 即将废弃,请使用 `shallowEqual` 替代。
|
|
6
|
+
* @private
|
|
8
7
|
* @alias module:Util.equalArrayLike
|
|
9
8
|
* @since 1.18.0
|
|
10
|
-
* @param {Array} arg1 类数组1。
|
|
11
|
-
* @param {Array} arg2 类数组2。
|
|
12
|
-
* @param {boolean} [strictCheck=true] 严格比较,如果为 `true` 表示区分 `0` 和 `-0`。默认 `true`。
|
|
13
|
-
* @returns 是否相等。
|
|
14
|
-
* @example
|
|
15
|
-
* equalArrayLike([1, 2], [1, 2]); // true
|
|
16
|
-
* equalArrayLike([1, 2], [1, 3]); // false
|
|
17
|
-
* equalArrayLike([1, 2], [1, 2, 3]); // false
|
|
18
|
-
*
|
|
19
|
-
* // 松散比较
|
|
20
|
-
* equalArrayLike(['a', 'b'], 'ab'); // true
|
|
21
|
-
* equalArrayLike(['a', 'b'], { 0: 'a', 1: 'b', length: 2 }); // true
|
|
22
|
-
*
|
|
23
|
-
* // 两个相等值返回 true
|
|
24
|
-
* equalArrayLike(NaN, NaN); // true
|
|
25
|
-
* equalArrayLike(null, null); // true
|
|
26
|
-
* equalArrayLike(undefined, undefined); // true
|
|
27
|
-
* const obj1 = {};
|
|
28
|
-
* const obj2 = obj1;
|
|
29
|
-
* equalArrayLike(obj1, obj2); // true
|
|
30
|
-
*
|
|
31
|
-
* // 0 和 -0 严格比较返回 false
|
|
32
|
-
* equalArrayLike([0, -0], [-0, 0]); // false
|
|
33
|
-
* // 非严格比较返回 true
|
|
34
|
-
* equalArrayLike([0, -0], [-0, 0], false); // true
|
|
35
9
|
*/
|
|
36
|
-
declare
|
|
10
|
+
declare const equalArrayLike: typeof shallowEqual;
|
|
37
11
|
export default equalArrayLike;
|
package/types/index.d.ts
CHANGED
|
@@ -190,6 +190,7 @@ export { default as nthArg } from './nthArg';
|
|
|
190
190
|
export { default as range } from './range';
|
|
191
191
|
export { default as retry } from './retry';
|
|
192
192
|
export { default as sleep } from './sleep';
|
|
193
|
+
export { default as shallowEqual } from './shallowEqual';
|
|
193
194
|
export { default as times } from './times';
|
|
194
195
|
export { default as toFinite } from './toFinite';
|
|
195
196
|
export { default as toInteger } from './toInteger';
|
package/types/memoize.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ type EqualFn<TFunc extends (...args: any[]) => any> = (newArgs: Parameters<TFunc
|
|
|
10
10
|
* @since 1.17.0
|
|
11
11
|
* @param {Function} func 要缓存结果的函数。
|
|
12
12
|
* @param {Object} [options] 配置项。
|
|
13
|
-
* @param {Function} [options.isEqual] 自定义比较参数方法。默认函数 `
|
|
13
|
+
* @param {Function} [options.isEqual] 自定义比较参数方法。默认函数 `shallowEqual`。
|
|
14
14
|
* @param {number} [options.max] 最大缓存数量,`0`表示不限制。默认`0`。
|
|
15
15
|
* @returns 缓存 `func` 结果的函数。
|
|
16
16
|
* @example
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 浅比较两个值是否相等。常用于参数对象比较。
|
|
3
|
+
*
|
|
4
|
+
* 1. 如果两个值相等,返回 `true`。
|
|
5
|
+
* 2. 如果两个对象属性数量相等,且遍历每个属性值都相等,则返回 `true`。
|
|
6
|
+
* 3. 否则返回 `false`。
|
|
7
|
+
*
|
|
8
|
+
* @alias module:Util.shallowEqual
|
|
9
|
+
* @since 1.21.0
|
|
10
|
+
* @param {Array} objA 要比较的值。。
|
|
11
|
+
* @param {Array} objB 另一个要比较的值。
|
|
12
|
+
* @param {boolean} [strictCheck=true] 严格比较,如果为 `true` 表示区分 `0` 和 `-0`。默认 `true`。
|
|
13
|
+
* @returns 浅比较两个值是否相等。
|
|
14
|
+
* @example
|
|
15
|
+
* shallowEqual({ a: 1, b: 2 }, { a: 1, b: 2 }); // true
|
|
16
|
+
* shallowEqual({ a: 1, b: 2 }, { a: 1, b: 3 }); // false
|
|
17
|
+
*
|
|
18
|
+
* shallowEqual([1, 2], [1, 2]); // true
|
|
19
|
+
* shallowEqual([1, 2], [1, 3]); // false
|
|
20
|
+
* shallowEqual([1, 2], [1, 2, 3]); // false
|
|
21
|
+
*
|
|
22
|
+
* // 两个相等值返回 true
|
|
23
|
+
* shallowEqual(1, 1); // true
|
|
24
|
+
* shallowEqual('foo', 'foo'); // true
|
|
25
|
+
* shallowEqual(NaN, NaN); // true
|
|
26
|
+
* shallowEqual(null, null); // true
|
|
27
|
+
* shallowEqual(undefined, undefined); // true
|
|
28
|
+
* const obj1 = {};
|
|
29
|
+
* const obj2 = obj1;
|
|
30
|
+
* shallowEqual(obj1, obj2); // true
|
|
31
|
+
*
|
|
32
|
+
* // 默认严格比较,区分 0 和 -0
|
|
33
|
+
* shallowEqual([0, -0], [-0, 0]); // false
|
|
34
|
+
*
|
|
35
|
+
* // 非严格比较,不区分 0 和 -0
|
|
36
|
+
* shallowEqual([0, -0], [-0, 0], false); // true
|
|
37
|
+
*/
|
|
38
|
+
declare function shallowEqual(objA: any, objB: any, strictCheck?: boolean): boolean;
|
|
39
|
+
export default shallowEqual;
|