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.
@@ -1,19 +1,5 @@
1
- import eq from './eq.js';
2
- import isArrayLike from './isArrayLike.js';
1
+ import shallowEqual from './shallowEqual.js';
3
2
 
4
- function equalArrayLike(arg1, arg2, strictCheck) {
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';
@@ -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.20.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 equalArrayLike from './equalArrayLike.js';
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 : equalArrayLike;
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 };
@@ -1,21 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var eq = require('./eq.js');
4
- var isArrayLike = require('./isArrayLike.js');
3
+ var shallowEqual = require('./shallowEqual.js');
5
4
 
6
- function equalArrayLike(arg1, arg2, strictCheck) {
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;
@@ -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.20.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 equalArrayLike = require('./equalArrayLike.js');
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 : equalArrayLike;
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,6 +1,6 @@
1
1
  {
2
2
  "name": "ut2",
3
- "version": "1.20.1",
3
+ "version": "1.21.0",
4
4
  "author": "caijf",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
@@ -1,37 +1,11 @@
1
+ import shallowEqual from './shallowEqual';
1
2
  /**
2
3
  * 比较两个类数组的值是否相等。常用于参数对象比较。
3
4
  *
4
- * 1. 如果两个值相等,返回 `true`。
5
- * 2. 如果两个类数组 `length` 相等,且遍历每个值都相等,则返回 `true`。
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 function equalArrayLike(arg1: ArrayLike<any>, arg2: ArrayLike<any>, strictCheck?: boolean): boolean;
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';
@@ -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] 自定义比较参数方法。默认函数 `equalArrayLike`。
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;