ut2 1.2.1 → 1.3.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.
Files changed (76) hide show
  1. package/README.md +36 -35
  2. package/dist/ut2.js +440 -264
  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/eq.js +3 -5
  7. package/es/index.js +30 -29
  8. package/es/internals/compare.js +23 -6
  9. package/es/internals/getTag.js +7 -9
  10. package/es/internals/helpers.js +4 -4
  11. package/es/internals/native.js +17 -1
  12. package/es/isArguments.js +1 -3
  13. package/es/isArrayBuffer.js +1 -3
  14. package/es/isEqual.js +185 -0
  15. package/es/isSafeInteger.js +1 -3
  16. package/es/isTypedArray.js +1 -15
  17. package/lib/eq.js +3 -5
  18. package/lib/index.js +60 -58
  19. package/lib/internals/compare.js +23 -6
  20. package/lib/internals/getTag.js +6 -8
  21. package/lib/internals/helpers.js +3 -3
  22. package/lib/internals/native.js +16 -0
  23. package/lib/isArguments.js +1 -3
  24. package/lib/isArrayBuffer.js +1 -3
  25. package/lib/isEqual.js +187 -0
  26. package/lib/isSafeInteger.js +1 -3
  27. package/lib/isTypedArray.js +1 -15
  28. package/package.json +1 -1
  29. package/types/difference.d.ts +1 -1
  30. package/types/eq.d.ts +2 -2
  31. package/types/index.d.ts +42 -41
  32. package/types/internals/helpers.d.ts +0 -1
  33. package/types/internals/native.d.ts +16 -0
  34. package/types/intersection.d.ts +1 -1
  35. package/types/isArguments.d.ts +1 -1
  36. package/types/isArray.d.ts +1 -1
  37. package/types/isArrayBuffer.d.ts +1 -1
  38. package/types/isArrayLike.d.ts +1 -1
  39. package/types/isArrayLikeObject.d.ts +1 -1
  40. package/types/isBlob.d.ts +1 -1
  41. package/types/isBoolean.d.ts +1 -1
  42. package/types/isBuffer.d.ts +1 -1
  43. package/types/isDataView.d.ts +1 -1
  44. package/types/isDate.d.ts +1 -1
  45. package/types/isElement.d.ts +1 -1
  46. package/types/isEmpty.d.ts +1 -1
  47. package/types/isEqual.d.ts +44 -0
  48. package/types/isError.d.ts +1 -1
  49. package/types/isFinite.d.ts +1 -1
  50. package/types/isFunction.d.ts +1 -1
  51. package/types/isInteger.d.ts +1 -1
  52. package/types/isLength.d.ts +1 -1
  53. package/types/isMap.d.ts +1 -1
  54. package/types/isNaN.d.ts +1 -1
  55. package/types/isNil.d.ts +1 -1
  56. package/types/isNull.d.ts +1 -1
  57. package/types/isNumber.d.ts +1 -1
  58. package/types/isObject.d.ts +1 -1
  59. package/types/isObjectLike.d.ts +1 -1
  60. package/types/isPlainObject.d.ts +1 -1
  61. package/types/isPromiseLike.d.ts +1 -1
  62. package/types/isRegExp.d.ts +1 -1
  63. package/types/isSafeInteger.d.ts +1 -1
  64. package/types/isSet.d.ts +1 -1
  65. package/types/isString.d.ts +1 -1
  66. package/types/isSymbol.d.ts +1 -1
  67. package/types/isTypedArray.d.ts +1 -1
  68. package/types/isUndefined.d.ts +1 -1
  69. package/types/isWeakMap.d.ts +1 -1
  70. package/types/isWeakSet.d.ts +1 -1
  71. package/types/union.d.ts +1 -1
  72. package/types/uniq.d.ts +1 -1
  73. package/types/xor.d.ts +1 -1
  74. package/es/internals/sameValue.js +0 -10
  75. package/lib/internals/sameValue.js +0 -12
  76. package/types/internals/sameValue.d.ts +0 -12
@@ -2,7 +2,7 @@
2
2
  * 检查值是否可能为 `DOM` 元素。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isElement
5
+ * @alias module:Language.isElement
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `DOM` 元素,返回 `true` ,否则返回 `false` 。
@@ -6,7 +6,7 @@
6
6
  * 非上述类型值,都将被认为是空的。
7
7
  *
8
8
  * @static
9
- * @alias module:Type.isEmpty
9
+ * @alias module:Language.isEmpty
10
10
  * @since 1.0.0
11
11
  * @param {*} value 要检查的值。
12
12
  * @returns {boolean} 如果值为空,返回 `true` ,否则返回 `false` 。
@@ -0,0 +1,44 @@
1
+ type Customizer = (objValue: any, othValue: any, key?: number | string | symbol, object?: any, other?: any, valueStack?: any[], otherStack?: any[]) => void | undefined | boolean;
2
+ /**
3
+ * 深度比较两个值是否相等。
4
+ *
5
+ * 支持比较 `boolean` `number` `string` `symbol` `array` `array buffer` `date` `error` `map` `object` `regexp` `set` `typed array` 类型。对象只比较自身的属性,不包括继承和不可枚举的属性。
6
+ *
7
+ * 如果 `strictCheck=true` , 以下值不相等:
8
+ *
9
+ * 1. `0` `-0`
10
+ * 2. `typeof` 不同类型,如 `1` `Object(1)`
11
+ * 3. 无效日期对象,如 `new Date('')` `new Date('abc')`
12
+ *
13
+ * @static
14
+ * @alias module:Language.isEqual
15
+ * @since 1.3.0
16
+ * @param {*} value 要比较的值。
17
+ * @param {*} other 另一个要比较的值。
18
+ * @param {Function} [customizer] 自定义比较。
19
+ * @param {boolean} [strictCheck=false] 严格比较,默认 `false` 。
20
+ * @returns {boolean} 如果两个值相等,返回 `true` ,否则返回 `false` 。
21
+ * @example
22
+ *
23
+ * const value = { a: 1, b: -0 }
24
+ * const other = { a: 1, b: 0 }
25
+ *
26
+ * isEqual(value, other); // true
27
+ * value === other // false
28
+ *
29
+ * // 严格比较
30
+ * isEqual(value, other, undefined, true); // false
31
+ *
32
+ * // 自定义比较
33
+ * function customizer(value, other){
34
+ * if(typeof value === 'string' && typeof other === 'string'){
35
+ * return true;
36
+ * }
37
+ * }
38
+ * isEqual('a', 'b', customizer); // true
39
+ * isEqual(['a'], ['b'], customizer); // true
40
+ * isEqual({foo: 'a'}, {foo: 'b'}, customizer); // true
41
+ *
42
+ */
43
+ declare function isEqual(value: any, other: any, customizer?: Customizer, strictCheck?: boolean): boolean;
44
+ export default isEqual;
@@ -4,7 +4,7 @@
4
4
  * 继承自 `Error` 的对象,如 `EvalError` `RangeError` `ReferenceError` `SyntaxError` `TypeError` `URIError` `AggregateError`,都将返回 `true` 。
5
5
  *
6
6
  * @static
7
- * @alias module:Type.isError
7
+ * @alias module:Language.isError
8
8
  * @since 1.0.0
9
9
  * @param {*} value 要检查的值。
10
10
  * @returns {boolean} 如果值为 `Error` 或 `DOMException` 对象,返回 `true` ,否则返回 `false` 。
@@ -4,7 +4,7 @@
4
4
  * 同 `Number.isFinite` 。
5
5
  *
6
6
  * @static
7
- * @alias module:Type.isFinite
7
+ * @alias module:Language.isFinite
8
8
  * @since 1.0.0
9
9
  * @param {*} value 要检查的值。
10
10
  * @returns {boolean} 如果值为有限数字,返回 `true` ,否则返回 `false` 。
@@ -4,7 +4,7 @@
4
4
  * `Function` `AsyncFunction` `GeneratorFunction` `Proxy` 都将返回 `true` 。
5
5
  *
6
6
  * @static
7
- * @alias module:Type.isFunction
7
+ * @alias module:Language.isFunction
8
8
  * @since 1.0.0
9
9
  * @param {*} value 要检查的值。
10
10
  * @returns {boolean} 如果值为 `Function` 对象,返回 `true` ,否则返回 `false` 。
@@ -4,7 +4,7 @@
4
4
  * 同 `Number.isInteger` 。
5
5
  *
6
6
  * @static
7
- * @alias module:Type.isInteger
7
+ * @alias module:Language.isInteger
8
8
  * @since 1.0.0
9
9
  * @param {*} value 要检查的值。
10
10
  * @returns {boolean} 如果值为整数,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为有效的类数组长度。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isLength
5
+ * @alias module:Language.isLength
6
6
  * @since 1.0.0
7
7
  * @see {@link https://tc39.es/ecma262/#sec-tolength | ToLength}
8
8
  * @param {*} value 要检查的值。
package/types/isMap.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `Map` 对象。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isMap
5
+ * @alias module:Language.isMap
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `Map` 对象,返回 `true` ,否则返回 `false` 。
package/types/isNaN.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * 和 `Number.isNaN` 区别是 `new Number(NaN)` 也被认为是 `NaN`。
5
5
  *
6
6
  * @static
7
- * @alias module:Type.isNaN
7
+ * @alias module:Language.isNaN
8
8
  * @since 1.0.0
9
9
  * @param {*} value 要检查的值。
10
10
  * @returns {boolean} 如果值为 `NaN` ,返回 `true` ,否则返回 `false` 。
package/types/isNil.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `undefined` 或 `null` 。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isNil
5
+ * @alias module:Language.isNil
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `undefined` 或 `null` ,返回 `true` ,否则返回 `false` 。
package/types/isNull.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `null` 。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isNull
5
+ * @alias module:Language.isNull
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `null` ,返回 `true` ,否则返回 `false` 。
@@ -4,7 +4,7 @@
4
4
  * `Infinity` `-Infinity` `NaN` 都归类为数字。如果要排除,请使用 `isFinite` 方法。
5
5
  *
6
6
  * @static
7
- * @alias module:Type.isNumber
7
+ * @alias module:Language.isNumber
8
8
  * @since 1.0.0
9
9
  * @param {*} value 要检查的值。
10
10
  * @returns {boolean} 如果值为数字类型或对象,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为对象。(例如,数组、函数、对象、正则表达式、new Number(0) 和 new String(''))。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isObject
5
+ * @alias module:Language.isObject
6
6
  * @since 1.0.0
7
7
  * @see {@link https://tc39.es/ecma262/#sec-ecmascript-language-types | language type}
8
8
  * @param {*} value 要检查的值。
@@ -4,7 +4,7 @@
4
4
  * 如果一个值不为 `null` 并且 `typeof` 结果为 `object`,则该值是类对象。
5
5
  *
6
6
  * @static
7
- * @alias module:Type.isObjectLike
7
+ * @alias module:Language.isObjectLike
8
8
  * @since 1.0.0
9
9
  * @param {*} value 要检查的值。
10
10
  * @returns {boolean} 如果值为类对象,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为普通对象,即由 `Object` 构造函数创建或 `[[Prototype]]` 为 `null` 的对象。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isPlainObject
5
+ * @alias module:Language.isPlainObject
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为普通对象,返回 `true` ,否则返回 `false` 。
@@ -4,7 +4,7 @@
4
4
  * 如果一个对象包含 `then` 方法,它就是类似 `Promise` 对象。
5
5
  *
6
6
  * @static
7
- * @alias module:Type.isPromiseLike
7
+ * @alias module:Language.isPromiseLike
8
8
  * @since 1.0.0
9
9
  * @param {*} value 要检查的值。
10
10
  * @returns {boolean} 如果值类似 `Promise` 对象,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `RegExp` 对象。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isRegExp
5
+ * @alias module:Language.isRegExp
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值
8
8
  * @returns {boolean} 如果值为 `RegExp` 对象,返回 `true` ,否则返回 `false` 。
@@ -6,7 +6,7 @@
6
6
  * 如果一个整数是一个 `IEEE-754` 双精度数字,它不是四舍五入的不安全整数的结果,那么它就是安全的。安全整数范围为 `-(2^53 - 1)` 到 `2^53 - 1` 之间的整数,包含 `-(2^53 - 1)` 和 `2^53 - 1`。
7
7
  *
8
8
  * @static
9
- * @alias module:Type.isSafeInteger
9
+ * @alias module:Language.isSafeInteger
10
10
  * @since 1.0.0
11
11
  * @param {*} value 要检查的值。
12
12
  * @returns {boolean} 如果值为安全整数,返回 `true` ,否则返回 `false` 。
package/types/isSet.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `Set` 对象。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isSet
5
+ * @alias module:Language.isSet
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `Set` 对象,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为字符串类型或对象。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isString
5
+ * @alias module:Language.isString
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为字符串类型或对象,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `Symbol` 类型或对象。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isSymbol
5
+ * @alias module:Language.isSymbol
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `Symbol` 类型或对象,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为类型化数组。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isTypedArray
5
+ * @alias module:Language.isTypedArray
6
6
  * @since 1.0.0
7
7
  * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Typed_arrays | Typed_arrays}
8
8
  * @param {*} value 要检查的值。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `undefined` 。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isUndefined
5
+ * @alias module:Language.isUndefined
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `undefined` ,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `WeakMap` 对象。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isWeakMap
5
+ * @alias module:Language.isWeakMap
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `WeakMap` 对象,返回 `true` ,否则返回 `false` 。
@@ -2,7 +2,7 @@
2
2
  * 检查值是否为 `WeakSet` 对象。
3
3
  *
4
4
  * @static
5
- * @alias module:Type.isWeakSet
5
+ * @alias module:Language.isWeakSet
6
6
  * @since 1.0.0
7
7
  * @param {*} value 要检查的值。
8
8
  * @returns {boolean} 如果值为 `WeakSet` 对象,返回 `true` ,否则返回 `false` 。
package/types/union.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * @param {Array} array 要检查的数组。
12
12
  * @param {Array} [other=[]] 另一个要检查的数组。
13
13
  * @param {Function | string} [iteratee] 迭代函数,调用每个元素。
14
- * @param {boolean} [strictCheck=false] 严格比较,区分 `+0` `-0`。
14
+ * @param {boolean} [strictCheck=false] 严格比较,区分 `0` `-0`,默认 `false` 。
15
15
  * @returns {Array} 新的联合数组。
16
16
  * @example
17
17
  *
package/types/uniq.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  * @since 1.0.0
11
11
  * @param {Array} array 要检查的数组。
12
12
  * @param {Function | string} [iteratee] 迭代函数,调用每个元素。
13
- * @param {boolean} [strictCheck=false] 严格比较,区分 `+0` `-0`。
13
+ * @param {boolean} [strictCheck=false] 严格比较,区分 `0` `-0`,默认 `false` 。
14
14
  * @returns {Array} 去重后的新数组。
15
15
  * @example
16
16
  *
package/types/xor.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * @param {Array} array 要检查的数组。
12
12
  * @param {Array} [other=[]] 另一个要检查的数组。
13
13
  * @param {Function | string} [iteratee] 迭代函数,调用每个元素。
14
- * @param {boolean} [strictCheck=false] 严格比较,区分 `+0` `-0`。
14
+ * @param {boolean} [strictCheck=false] 严格比较,区分 `0` `-0`,默认 `false` 。
15
15
  * @returns {Array} 过滤值后的新数组。
16
16
  * @example
17
17
  *
@@ -1,10 +0,0 @@
1
- import { objectIs } from './helpers.js';
2
-
3
- function sameValue(value, other) {
4
- if (typeof objectIs === 'function') {
5
- return objectIs(value, other);
6
- }
7
- return value === other ? value !== 0 || 1 / value === 1 / other : value != value && other != other;
8
- }
9
-
10
- export { sameValue as default };
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- var helpers = require('./helpers.js');
4
-
5
- function sameValue(value, other) {
6
- if (typeof helpers.objectIs === 'function') {
7
- return helpers.objectIs(value, other);
8
- }
9
- return value === other ? value !== 0 || 1 / value === 1 / other : value != value && other != other;
10
- }
11
-
12
- module.exports = sameValue;
@@ -1,12 +0,0 @@
1
- /**
2
- * 检查两个值是否相等。
3
- *
4
- * @private
5
- * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness | JavaScript 中的相等性判断}
6
- * @see {@link https://tc39.es/ecma262/#sec-samevalue | SameValue}
7
- * @param {*} value 要比较的值。
8
- * @param {*} other 另一个要比较的值。
9
- * @returns {boolean} 如果两个值相等返回 `true`, 否则返回 `false` 。
10
- */
11
- declare function sameValue(value: any, other: any): boolean;
12
- export default sameValue;