ut2 1.19.1 → 1.20.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/dist/ut2.js +35 -2
- package/dist/ut2.js.map +1 -1
- package/dist/ut2.min.js +1 -1
- package/dist/ut2.min.js.map +1 -1
- package/es/has.js +12 -0
- package/es/hasIn.js +11 -0
- package/es/index.js +2 -0
- package/es/internals/hasPath.js +21 -0
- package/es/internals/helpers.js +1 -1
- package/es/toPath.js +2 -1
- package/lib/has.js +14 -0
- package/lib/hasIn.js +13 -0
- package/lib/index.js +4 -0
- package/lib/internals/hasPath.js +23 -0
- package/lib/internals/helpers.js +1 -1
- package/lib/toPath.js +2 -1
- package/package.json +1 -1
- package/types/has.d.ts +28 -0
- package/types/hasIn.d.ts +28 -0
- package/types/index.d.ts +2 -0
- package/types/internals/hasPath.d.ts +13 -0
package/es/has.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import hasPath from './internals/hasPath.js';
|
|
2
|
+
import { objectProtoHasOwnProperty } from './internals/native.js';
|
|
3
|
+
import isNil from './isNil.js';
|
|
4
|
+
|
|
5
|
+
function baseHas(object, key) {
|
|
6
|
+
return objectProtoHasOwnProperty.call(object, key);
|
|
7
|
+
}
|
|
8
|
+
function has(object, key) {
|
|
9
|
+
return !isNil(object) && hasPath(object, key, baseHas);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { has as default };
|
package/es/hasIn.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import hasPath from './internals/hasPath.js';
|
|
2
|
+
import isNil from './isNil.js';
|
|
3
|
+
|
|
4
|
+
function baseHasIn(object, key) {
|
|
5
|
+
return key in Object(object);
|
|
6
|
+
}
|
|
7
|
+
function hasIn(object, key) {
|
|
8
|
+
return !isNil(object) && hasPath(object, key, baseHasIn);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { hasIn as default };
|
package/es/index.js
CHANGED
|
@@ -93,6 +93,8 @@ export { default as get } from './get.js';
|
|
|
93
93
|
export { default as invert } from './invert.js';
|
|
94
94
|
export { default as keys } from './keys.js';
|
|
95
95
|
export { default as keysIn } from './keysIn.js';
|
|
96
|
+
export { default as has } from './has.js';
|
|
97
|
+
export { default as hasIn } from './hasIn.js';
|
|
96
98
|
export { default as merge } from './merge.js';
|
|
97
99
|
export { default as mergeObject } from './mergeObject.js';
|
|
98
100
|
export { default as omit } from './omit.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import isNil from '../isNil.js';
|
|
2
|
+
import toPath from '../toPath.js';
|
|
3
|
+
|
|
4
|
+
function hasPath(object, key, hasFunc) {
|
|
5
|
+
var paths = toPath(key, object);
|
|
6
|
+
var length = paths.length;
|
|
7
|
+
var index = 0;
|
|
8
|
+
var result = true;
|
|
9
|
+
while (!isNil(object) && index < length) {
|
|
10
|
+
var key_1 = paths[index];
|
|
11
|
+
result = hasFunc(object, key_1);
|
|
12
|
+
if (!result) {
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
object = object[key_1];
|
|
16
|
+
index++;
|
|
17
|
+
}
|
|
18
|
+
return !!index && index === length && result;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { hasPath as default };
|
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.20.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/toPath.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import stringToPath from './internals/stringToPath.js';
|
|
2
2
|
import isArray from './isArray.js';
|
|
3
|
+
import isNil from './isNil.js';
|
|
3
4
|
import isObject from './isObject.js';
|
|
4
5
|
import isSymbol from './isSymbol.js';
|
|
5
6
|
import toString from './toString.js';
|
|
6
7
|
|
|
7
8
|
function toKey(value) {
|
|
8
|
-
return isSymbol(value) ? value : toString(value);
|
|
9
|
+
return isSymbol(value) ? value : isNil(value) ? value + '' : toString(value);
|
|
9
10
|
}
|
|
10
11
|
function toPath(value, object) {
|
|
11
12
|
if (isArray(value)) {
|
package/lib/has.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var hasPath = require('./internals/hasPath.js');
|
|
4
|
+
var native = require('./internals/native.js');
|
|
5
|
+
var isNil = require('./isNil.js');
|
|
6
|
+
|
|
7
|
+
function baseHas(object, key) {
|
|
8
|
+
return native.objectProtoHasOwnProperty.call(object, key);
|
|
9
|
+
}
|
|
10
|
+
function has(object, key) {
|
|
11
|
+
return !isNil(object) && hasPath(object, key, baseHas);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
module.exports = has;
|
package/lib/hasIn.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var hasPath = require('./internals/hasPath.js');
|
|
4
|
+
var isNil = require('./isNil.js');
|
|
5
|
+
|
|
6
|
+
function baseHasIn(object, key) {
|
|
7
|
+
return key in Object(object);
|
|
8
|
+
}
|
|
9
|
+
function hasIn(object, key) {
|
|
10
|
+
return !isNil(object) && hasPath(object, key, baseHasIn);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
module.exports = hasIn;
|
package/lib/index.js
CHANGED
|
@@ -95,6 +95,8 @@ var get = require('./get.js');
|
|
|
95
95
|
var invert = require('./invert.js');
|
|
96
96
|
var keys = require('./keys.js');
|
|
97
97
|
var keysIn = require('./keysIn.js');
|
|
98
|
+
var has = require('./has.js');
|
|
99
|
+
var hasIn = require('./hasIn.js');
|
|
98
100
|
var merge = require('./merge.js');
|
|
99
101
|
var mergeObject = require('./mergeObject.js');
|
|
100
102
|
var omit = require('./omit.js');
|
|
@@ -247,6 +249,8 @@ exports.get = get;
|
|
|
247
249
|
exports.invert = invert;
|
|
248
250
|
exports.keys = keys;
|
|
249
251
|
exports.keysIn = keysIn;
|
|
252
|
+
exports.has = has;
|
|
253
|
+
exports.hasIn = hasIn;
|
|
250
254
|
exports.merge = merge;
|
|
251
255
|
exports.mergeObject = mergeObject;
|
|
252
256
|
exports.omit = omit;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var isNil = require('../isNil.js');
|
|
4
|
+
var toPath = require('../toPath.js');
|
|
5
|
+
|
|
6
|
+
function hasPath(object, key, hasFunc) {
|
|
7
|
+
var paths = toPath(key, object);
|
|
8
|
+
var length = paths.length;
|
|
9
|
+
var index = 0;
|
|
10
|
+
var result = true;
|
|
11
|
+
while (!isNil(object) && index < length) {
|
|
12
|
+
var key_1 = paths[index];
|
|
13
|
+
result = hasFunc(object, key_1);
|
|
14
|
+
if (!result) {
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
object = object[key_1];
|
|
18
|
+
index++;
|
|
19
|
+
}
|
|
20
|
+
return !!index && index === length && result;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = hasPath;
|
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.20.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/toPath.js
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
var stringToPath = require('./internals/stringToPath.js');
|
|
4
4
|
var isArray = require('./isArray.js');
|
|
5
|
+
var isNil = require('./isNil.js');
|
|
5
6
|
var isObject = require('./isObject.js');
|
|
6
7
|
var isSymbol = require('./isSymbol.js');
|
|
7
8
|
var toString = require('./toString.js');
|
|
8
9
|
|
|
9
10
|
function toKey(value) {
|
|
10
|
-
return isSymbol(value) ? value : toString(value);
|
|
11
|
+
return isSymbol(value) ? value : isNil(value) ? value + '' : toString(value);
|
|
11
12
|
}
|
|
12
13
|
function toPath(value, object) {
|
|
13
14
|
if (isArray(value)) {
|
package/package.json
CHANGED
package/types/has.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Many, TPath } from './internals/types';
|
|
2
|
+
/**
|
|
3
|
+
* 判断对象自身的属性是否包含路径属性。
|
|
4
|
+
*
|
|
5
|
+
* @alias module:Object.has
|
|
6
|
+
* @since 1.20.0
|
|
7
|
+
* @see {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty | hasOwnProperty}
|
|
8
|
+
* @param {*} object 要查询的对象。
|
|
9
|
+
* @param {string | number | symbol | Array} path 属性路径字符串或数组。
|
|
10
|
+
* @returns {boolean} 对象自身的属性是否包含路径属性。
|
|
11
|
+
* @example
|
|
12
|
+
* const obj = { a: [{ b: { c: 1 } }] };
|
|
13
|
+
*
|
|
14
|
+
* has(obj, 'a[0].b.c'); // true
|
|
15
|
+
*
|
|
16
|
+
* has(obj, 'a.0.b.c'); // true
|
|
17
|
+
*
|
|
18
|
+
* has(obj, ['a', '0', 'b', 'c']); // true
|
|
19
|
+
*
|
|
20
|
+
* has(obj, 'a.b.c'); // false
|
|
21
|
+
*
|
|
22
|
+
* has(obj, 'a.0.b.c.d'); // false
|
|
23
|
+
*
|
|
24
|
+
* // 不包含继承属性
|
|
25
|
+
* has(obj, 'toString'); // false
|
|
26
|
+
*/
|
|
27
|
+
declare function has(object: any, key: Many<TPath>): boolean;
|
|
28
|
+
export default has;
|
package/types/hasIn.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Many, TPath } from './internals/types';
|
|
2
|
+
/**
|
|
3
|
+
* 判断对象自身及继承的属性是否包含路径属性。
|
|
4
|
+
*
|
|
5
|
+
* @alias module:Object.hasIn
|
|
6
|
+
* @since 1.20.0
|
|
7
|
+
* @see {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/in | in}
|
|
8
|
+
* @param {*} object 要查询的对象。
|
|
9
|
+
* @param {string | number | symbol | Array} path 属性路径字符串或数组。
|
|
10
|
+
* @returns {boolean} 对象自身及继承的属性是否包含路径属性。
|
|
11
|
+
* @example
|
|
12
|
+
* const obj = { a: [{ b: { c: 1 } }] };
|
|
13
|
+
*
|
|
14
|
+
* hasIn(obj, 'a[0].b.c'); // true
|
|
15
|
+
*
|
|
16
|
+
* hasIn(obj, 'a.0.b.c'); // true
|
|
17
|
+
*
|
|
18
|
+
* hasIn(obj, ['a', '0', 'b', 'c']); // true
|
|
19
|
+
*
|
|
20
|
+
* hasIn(obj, 'a.b.c'); // false
|
|
21
|
+
*
|
|
22
|
+
* hasIn(obj, 'a.0.b.c.d'); // false
|
|
23
|
+
*
|
|
24
|
+
* // 包含继承属性
|
|
25
|
+
* hasIn(obj, 'toString'); // true
|
|
26
|
+
*/
|
|
27
|
+
declare function hasIn(object: any, key: Many<TPath>): boolean;
|
|
28
|
+
export default hasIn;
|
package/types/index.d.ts
CHANGED
|
@@ -135,6 +135,8 @@ export { default as get } from './get';
|
|
|
135
135
|
export { default as invert } from './invert';
|
|
136
136
|
export { default as keys } from './keys';
|
|
137
137
|
export { default as keysIn } from './keysIn';
|
|
138
|
+
export { default as has } from './has';
|
|
139
|
+
export { default as hasIn } from './hasIn';
|
|
138
140
|
export { default as merge } from './merge';
|
|
139
141
|
export { default as mergeObject } from './mergeObject';
|
|
140
142
|
export { default as omit } from './omit';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Many, TPath } from './types';
|
|
2
|
+
type HasFunc = (object: object, key: TPath) => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* 判断对象是否包含路径属性。
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
* @param {*} object 要查询的对象。
|
|
8
|
+
* @param {string | number | symbol | Array} path 属性路径字符串或数组。
|
|
9
|
+
* @param {Function} hasFunc 对象包含属性的函数。
|
|
10
|
+
* @returns {boolean} 对象是否包含路径属性。
|
|
11
|
+
*/
|
|
12
|
+
declare function hasPath(object: object, key: Many<TPath>, hasFunc: HasFunc): boolean;
|
|
13
|
+
export default hasPath;
|