ut2 1.7.1 → 1.8.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 +138 -134
- package/dist/ut2.js +121 -65
- package/dist/ut2.js.map +1 -1
- package/dist/ut2.min.js +1 -1
- package/dist/ut2.min.js.map +1 -1
- package/es/clamp.js +4 -3
- package/es/conforms.js +4 -3
- package/es/conformsTo.js +4 -3
- package/es/countBy.js +4 -3
- package/es/curry.js +32 -0
- package/es/defaultTo.js +4 -3
- package/es/every.js +4 -3
- package/es/filter.js +4 -3
- package/es/find.js +4 -3
- package/es/fromPairs.js +4 -3
- package/es/groupBy.js +4 -3
- package/es/index.js +4 -0
- package/es/internals/baseDebounce.js +2 -8
- package/es/internals/createForEach.js +2 -2
- package/es/internals/createReduce.js +2 -2
- package/es/internals/helpers.js +3 -2
- package/es/internals/native.js +2 -1
- package/es/invert.js +22 -0
- package/es/isBigInt.js +8 -0
- package/es/keyBy.js +4 -3
- package/es/map.js +4 -3
- package/es/omit.js +4 -3
- package/es/orderBy.js +4 -3
- package/es/partial.js +16 -11
- package/es/partition.js +4 -3
- package/es/pascalCase.js +11 -0
- package/es/pick.js +4 -3
- package/es/range.js +4 -3
- package/es/some.js +4 -3
- package/es/times.js +4 -3
- package/lib/clamp.js +4 -3
- package/lib/conforms.js +4 -3
- package/lib/conformsTo.js +4 -3
- package/lib/countBy.js +4 -3
- package/lib/curry.js +34 -0
- package/lib/defaultTo.js +4 -3
- package/lib/every.js +4 -3
- package/lib/filter.js +4 -3
- package/lib/find.js +4 -3
- package/lib/fromPairs.js +4 -3
- package/lib/groupBy.js +4 -3
- package/lib/index.js +12 -4
- package/lib/internals/baseDebounce.js +2 -8
- package/lib/internals/createForEach.js +2 -2
- package/lib/internals/createReduce.js +2 -2
- package/lib/internals/helpers.js +2 -1
- package/lib/internals/native.js +1 -0
- package/lib/invert.js +24 -0
- package/lib/isBigInt.js +10 -0
- package/lib/keyBy.js +4 -3
- package/lib/map.js +4 -3
- package/lib/omit.js +4 -3
- package/lib/orderBy.js +4 -3
- package/lib/partial.js +16 -11
- package/lib/partition.js +4 -3
- package/lib/pascalCase.js +13 -0
- package/lib/pick.js +4 -3
- package/lib/range.js +4 -3
- package/lib/some.js +4 -3
- package/lib/times.js +4 -3
- package/package.json +26 -24
- package/types/after.d.ts +2 -1
- package/types/allKeys.d.ts +1 -1
- package/types/allKeysIn.d.ts +1 -1
- package/types/before.d.ts +2 -1
- package/types/clamp.d.ts +29 -2
- package/types/conforms.d.ts +7 -2
- package/types/conformsTo.d.ts +24 -3
- package/types/countBy.d.ts +28 -2
- package/types/curry.d.ts +123 -0
- package/types/debounce.d.ts +2 -1
- package/types/defaultTo.d.ts +6 -3
- package/types/delay.d.ts +2 -1
- package/types/every.d.ts +28 -4
- package/types/filter.d.ts +26 -4
- package/types/find.d.ts +26 -4
- package/types/forEach.d.ts +1 -6
- package/types/forEachRight.d.ts +1 -6
- package/types/fromPairs.d.ts +20 -2
- package/types/groupBy.d.ts +28 -2
- package/types/index.d.ts +4 -0
- package/types/internals/baseDebounce.d.ts +2 -1
- package/types/internals/createForEach.d.ts +7 -6
- package/types/internals/createReduce.d.ts +11 -10
- package/types/internals/helpers.d.ts +1 -0
- package/types/internals/native.d.ts +1 -0
- package/types/internals/types.d.ts +3 -0
- package/types/invert.d.ts +19 -0
- package/types/isBigInt.d.ts +22 -0
- package/types/isFunction.d.ts +2 -1
- package/types/keyBy.d.ts +28 -2
- package/types/keys.d.ts +1 -1
- package/types/keysIn.d.ts +1 -1
- package/types/map.d.ts +28 -4
- package/types/negate.d.ts +2 -1
- package/types/omit.d.ts +6 -1
- package/types/omitBy.d.ts +3 -2
- package/types/once.d.ts +2 -1
- package/types/orderBy.d.ts +43 -2
- package/types/partial.d.ts +63 -11
- package/types/partition.d.ts +38 -2
- package/types/pascalCase.d.ts +27 -0
- package/types/pick.d.ts +6 -1
- package/types/pickBy.d.ts +3 -2
- package/types/range.d.ts +28 -3
- package/types/reduce.d.ts +1 -10
- package/types/reduceRight.d.ts +1 -10
- package/types/some.d.ts +26 -4
- package/types/throttle.d.ts +2 -1
- package/types/times.d.ts +25 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ut2",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"author": "caijf",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"commit": "cz",
|
|
27
27
|
"prepublishOnly": "npm test && npm run build",
|
|
28
28
|
"tsc": "tsc --noEmit",
|
|
29
|
-
"prepare": "husky
|
|
29
|
+
"prepare": "husky"
|
|
30
30
|
},
|
|
31
31
|
"repository": {
|
|
32
32
|
"type": "git",
|
|
@@ -54,41 +54,43 @@
|
|
|
54
54
|
},
|
|
55
55
|
"config": {
|
|
56
56
|
"commitizen": {
|
|
57
|
-
"path": "
|
|
57
|
+
"path": "@commitlint/cz-commitlint"
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"registry": "https://registry.npmjs.org/"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@commitlint/cli": "^
|
|
65
|
-
"@commitlint/config-conventional": "^
|
|
66
|
-
"@
|
|
67
|
-
"@rollup/plugin-
|
|
68
|
-
"@rollup/plugin-
|
|
69
|
-
"@rollup/plugin-
|
|
70
|
-
"@rollup/plugin-
|
|
71
|
-
"@
|
|
72
|
-
"@types/
|
|
73
|
-
"@
|
|
74
|
-
"@typescript-eslint/
|
|
64
|
+
"@commitlint/cli": "^19.2.1",
|
|
65
|
+
"@commitlint/config-conventional": "^19.1.0",
|
|
66
|
+
"@commitlint/cz-commitlint": "^19.2.0",
|
|
67
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
|
68
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
69
|
+
"@rollup/plugin-replace": "^5.0.5",
|
|
70
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
71
|
+
"@rollup/plugin-typescript": "^11.1.6",
|
|
72
|
+
"@types/jest": "^29.5.12",
|
|
73
|
+
"@types/node": "^20.11.30",
|
|
74
|
+
"@typescript-eslint/eslint-plugin": "^7.3.1",
|
|
75
|
+
"@typescript-eslint/parser": "^7.3.1",
|
|
75
76
|
"benchmark": "^2.1.4",
|
|
77
|
+
"commitizen": "^4.3.0",
|
|
76
78
|
"cross-env": "^7.0.3",
|
|
77
|
-
"cz-conventional-changelog": "^3.3.0",
|
|
78
79
|
"dayjs": "^1.11.10",
|
|
79
80
|
"docdash": "^2.0.2",
|
|
80
|
-
"eslint": "^8.
|
|
81
|
-
"husky": "^
|
|
82
|
-
"
|
|
83
|
-
"jest
|
|
81
|
+
"eslint": "^8.57.0",
|
|
82
|
+
"husky": "^9.0.11",
|
|
83
|
+
"inquirer": "9",
|
|
84
|
+
"jest": "^29.7.0",
|
|
85
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
84
86
|
"jsdoc": "^4.0.2",
|
|
85
|
-
"lint-staged": "^
|
|
87
|
+
"lint-staged": "^15.2.2",
|
|
86
88
|
"lodash": "^4.17.21",
|
|
87
|
-
"prettier": "^2.
|
|
88
|
-
"rollup": "^
|
|
89
|
-
"ts-jest": "^29.1.
|
|
89
|
+
"prettier": "^3.2.5",
|
|
90
|
+
"rollup": "^4.13.0",
|
|
91
|
+
"ts-jest": "^29.1.2",
|
|
90
92
|
"tslib": "^2.6.2",
|
|
91
|
-
"typescript": "^5.
|
|
93
|
+
"typescript": "^5.4.3",
|
|
92
94
|
"underscore": "^1.13.6"
|
|
93
95
|
},
|
|
94
96
|
"engines": {
|
package/types/after.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FunctionAny } from './internals/types';
|
|
1
2
|
/**
|
|
2
3
|
* 创建一个函数,当它被调用 `n` 或更多次之后触发 `func` 。
|
|
3
4
|
*
|
|
@@ -21,5 +22,5 @@
|
|
|
21
22
|
* // 'done saving!'
|
|
22
23
|
*
|
|
23
24
|
*/
|
|
24
|
-
declare function after<T extends
|
|
25
|
+
declare function after<T extends FunctionAny>(n: number, func: T): T;
|
|
25
26
|
export default after;
|
package/types/allKeys.d.ts
CHANGED
package/types/allKeysIn.d.ts
CHANGED
package/types/before.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FunctionAny } from './internals/types';
|
|
1
2
|
/**
|
|
2
3
|
* 创建一个调用 `func` 的函数,调用次数少于 `n` 次。之后再调用这个函数,将返回最后一次调用 `func` 的结果。
|
|
3
4
|
*
|
|
@@ -20,5 +21,5 @@
|
|
|
20
21
|
* increment(); // 2 返回之前的结果
|
|
21
22
|
*
|
|
22
23
|
*/
|
|
23
|
-
declare function before<T extends
|
|
24
|
+
declare function before<T extends FunctionAny>(n: number, func: T): T;
|
|
24
25
|
export default before;
|
package/types/clamp.d.ts
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
interface Clamp {
|
|
2
|
+
(number: number, upper: number): number;
|
|
3
|
+
(number: number, lower: number, upper: number): number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 数字限制在 `lower` 和 `upper` 之间的值。
|
|
7
|
+
*
|
|
8
|
+
* @function
|
|
9
|
+
* @alias module:Number.clamp
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @param {number} number 被限制的值。
|
|
12
|
+
* @param {number} [lower] 下限。
|
|
13
|
+
* @param {number} upper 上限。
|
|
14
|
+
* @returns {number} 被限制的值。
|
|
15
|
+
* @example
|
|
16
|
+
*
|
|
17
|
+
* clamp(-10, -5, 5); // -5
|
|
18
|
+
*
|
|
19
|
+
* clamp(-10, 0, 5); // 0
|
|
20
|
+
*
|
|
21
|
+
* clamp(10, -5, 5); // 5
|
|
22
|
+
*
|
|
23
|
+
* // 仅限制上限
|
|
24
|
+
* clamp(10, 5); // 5
|
|
25
|
+
*
|
|
26
|
+
* clamp(-10, 5); // -10
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
declare const clamp: Clamp;
|
|
3
30
|
export default clamp;
|
package/types/conforms.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { PropertyName, WithNullable } from './internals/types';
|
|
2
|
+
interface ConformsFunction {
|
|
3
|
+
<T extends object, K extends keyof T>(source: Record<PropertyName, (value: T[K]) => boolean>): (object: WithNullable<T>) => boolean;
|
|
4
|
+
(source: object): (object: any) => boolean;
|
|
5
|
+
}
|
|
1
6
|
/**
|
|
2
7
|
* 创建一个函数,调用 `source` 的属性名对应的断言函数与传入对象相对应属性名的值进行断言处理。如果都符合返回 `true`,否则返回 `false` 。
|
|
3
8
|
*
|
|
4
|
-
* @
|
|
9
|
+
* @function
|
|
5
10
|
* @alias module:Util.conforms
|
|
6
11
|
* @since 1.0.0
|
|
7
12
|
* @param {Object} source 要断言属性是否符合的对象。
|
|
@@ -15,5 +20,5 @@
|
|
|
15
20
|
*
|
|
16
21
|
* objs.filter(conforms({ b: value => value > 1 })); // [{ a: 2: b: 2 }]
|
|
17
22
|
*/
|
|
18
|
-
declare
|
|
23
|
+
declare const conforms: ConformsFunction;
|
|
19
24
|
export default conforms;
|
package/types/conformsTo.d.ts
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
|
-
import { WithNullable } from './internals/types';
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { PropertyName, WithNullable } from './internals/types';
|
|
2
|
+
interface ConformsTo {
|
|
3
|
+
<T extends object, K extends keyof T>(object: T, source: Record<K, (value: T[K]) => boolean>): boolean;
|
|
4
|
+
(object: WithNullable<object>, source: Record<PropertyName, (value: any) => boolean>): boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* 通过调用断言 `source` 的属性与 `object` 的相应属性值,检查 `object` 是否符合 `source` 。
|
|
8
|
+
*
|
|
9
|
+
* @function
|
|
10
|
+
* @alias module:Util.conformsTo
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @param {Object} object 要检查的对象。
|
|
13
|
+
* @param {Object} source 要断言属性是否符合的对象。
|
|
14
|
+
* @returns {boolean} 如果 `object` 符合,返回 `true` ,否则返回 `false` 。
|
|
15
|
+
* @example
|
|
16
|
+
*
|
|
17
|
+
* const object = { a: 1, b: 2 }
|
|
18
|
+
*
|
|
19
|
+
* conformsTo(object, { b: value => value > 1 }); // true
|
|
20
|
+
*
|
|
21
|
+
* conformsTo(object, { b: value => value > 2 }); // false
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
declare const conformsTo: ConformsTo;
|
|
4
25
|
export default conformsTo;
|
package/types/countBy.d.ts
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
import { CollectionList, CollectionObject, IterateeParam } from './internals/types';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
interface CountBy {
|
|
3
|
+
<T>(collection: CollectionList<T>, iteratee?: IterateeParam<T>): Record<string, number>;
|
|
4
|
+
<T extends object, V extends T[keyof T]>(collection: CollectionObject<T>, iteratee?: IterateeParam<V>): Record<string, number>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* 创建一个组成对象, `key` 是经过 `iteratee` 执行处理 `collection` 中每个元素后返回的结果,每个 `key` 对应的值是 `iteratee` 返回该 `key` 的次数。
|
|
8
|
+
*
|
|
9
|
+
* `iteratee` 调用时会传入 1 个参数 `value` 。
|
|
10
|
+
*
|
|
11
|
+
* @function
|
|
12
|
+
* @alias module:Collection.countBy
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @param {ArrayLike<any> | object} collection 一个用来迭代的集合。
|
|
15
|
+
* @param {Function | string} [iteratee=identity] 迭代函数,用来转换键。
|
|
16
|
+
* @returns {Object} 组成集合对象。
|
|
17
|
+
* @example
|
|
18
|
+
*
|
|
19
|
+
* countBy([6, 4, 6]); // {'6': 2, '4': 1}
|
|
20
|
+
*
|
|
21
|
+
* countBy([6.1, 4.2, 6.3], Math.floor); // {'6': 2, '4': 1}
|
|
22
|
+
*
|
|
23
|
+
* countBy([{n: 6.1}, {n: 4.2}, {n: 6.3}], item=>Math.floor(item.n)); // {'6': 2, '4': 1}
|
|
24
|
+
*
|
|
25
|
+
* // 迭代函数可以直接写入属性。
|
|
26
|
+
* countBy(['one', 'two', 'three'], 'length'); // {'3': 2, '5': 1}
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
declare const countBy: CountBy;
|
|
4
30
|
export default countBy;
|
package/types/curry.d.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
declare const PLACEHOLDER: {
|
|
2
|
+
__ut2_curry_ph__: null;
|
|
3
|
+
};
|
|
4
|
+
type Placeholder = typeof PLACEHOLDER;
|
|
5
|
+
interface Curry {
|
|
6
|
+
<T1, R>(func: (t1: T1) => R, arity?: number): CurriedFunction1<T1, R>;
|
|
7
|
+
<T1, T2, R>(func: (t1: T1, t2: T2) => R, arity?: number): CurriedFunction2<T1, T2, R>;
|
|
8
|
+
<T1, T2, T3, R>(func: (t1: T1, t2: T2, t3: T3) => R, arity?: number): CurriedFunction3<T1, T2, T3, R>;
|
|
9
|
+
<T1, T2, T3, T4, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R, arity?: number): CurriedFunction4<T1, T2, T3, T4, R>;
|
|
10
|
+
<T1, T2, T3, T4, T5, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R, arity?: number): CurriedFunction5<T1, T2, T3, T4, T5, R>;
|
|
11
|
+
(func: (...args: any[]) => any, arity?: number): (...args: any[]) => any;
|
|
12
|
+
placeholder: Placeholder;
|
|
13
|
+
_: Placeholder;
|
|
14
|
+
}
|
|
15
|
+
interface CurriedFunction1<T1, R> {
|
|
16
|
+
(t1: T1): R;
|
|
17
|
+
(t1: Placeholder): CurriedFunction1<T1, R>;
|
|
18
|
+
(): CurriedFunction1<T1, R>;
|
|
19
|
+
}
|
|
20
|
+
interface CurriedFunction2<T1, T2, R> {
|
|
21
|
+
(t1: Placeholder, t2: T2): CurriedFunction1<T1, R>;
|
|
22
|
+
(t1: T1, t2: T2): R;
|
|
23
|
+
(t1: T1): CurriedFunction1<T2, R>;
|
|
24
|
+
(t1: Placeholder): CurriedFunction2<T1, T2, R>;
|
|
25
|
+
(): CurriedFunction2<T1, T2, R>;
|
|
26
|
+
}
|
|
27
|
+
interface CurriedFunction3<T1, T2, T3, R> {
|
|
28
|
+
(t1: Placeholder, t2: Placeholder, t3: T3): CurriedFunction2<T1, T2, R>;
|
|
29
|
+
(t1: Placeholder, t2: T2, t3: T3): CurriedFunction1<T1, R>;
|
|
30
|
+
(t1: T1, t2: Placeholder, t3: T3): CurriedFunction1<T2, R>;
|
|
31
|
+
(t1: T1, t2: T2, t3: T3): R;
|
|
32
|
+
(t1: Placeholder, t2: T2): CurriedFunction2<T1, T3, R>;
|
|
33
|
+
(t1: T1, t2: T2): CurriedFunction1<T3, R>;
|
|
34
|
+
(t1: T1): CurriedFunction2<T2, T3, R>;
|
|
35
|
+
(t1: Placeholder): CurriedFunction3<T1, T2, T3, R>;
|
|
36
|
+
(): CurriedFunction3<T1, T2, T3, R>;
|
|
37
|
+
}
|
|
38
|
+
interface CurriedFunction4<T1, T2, T3, T4, R> {
|
|
39
|
+
(t1: Placeholder, t2: Placeholder, t3: Placeholder, t4: T4): CurriedFunction3<T1, T2, T3, R>;
|
|
40
|
+
(t1: Placeholder, t2: Placeholder, t3: T3, t4: T4): CurriedFunction2<T1, T2, R>;
|
|
41
|
+
(t1: Placeholder, t2: T2, t3: Placeholder, t4: T4): CurriedFunction2<T1, T3, R>;
|
|
42
|
+
(t1: T1, t2: Placeholder, t3: Placeholder, t4: T4): CurriedFunction2<T2, T3, R>;
|
|
43
|
+
(t1: T1, t2: T2, t3: Placeholder, t4: T4): CurriedFunction1<T3, R>;
|
|
44
|
+
(t1: T1, t2: Placeholder, t3: T3, t4: T4): CurriedFunction1<T2, R>;
|
|
45
|
+
(t1: Placeholder, t2: T2, t3: T3, t4: T4): CurriedFunction1<T1, R>;
|
|
46
|
+
(t1: T1, t2: T2, t3: T3, t4: T4): R;
|
|
47
|
+
(t1: Placeholder, t2: Placeholder, t3: T3): CurriedFunction3<T1, T2, T4, R>;
|
|
48
|
+
(t1: T1, t2: Placeholder, t3: T3): CurriedFunction2<T2, T4, R>;
|
|
49
|
+
(t1: Placeholder, t2: T2, t3: T3): CurriedFunction2<T1, T4, R>;
|
|
50
|
+
(t1: T1, t2: T2, t3: T3): CurriedFunction1<T4, R>;
|
|
51
|
+
(t1: Placeholder, t2: T2): CurriedFunction3<T1, T3, T4, R>;
|
|
52
|
+
(t1: T1, t2: T2): CurriedFunction2<T3, T4, R>;
|
|
53
|
+
(t1: T1): CurriedFunction3<T2, T3, T4, R>;
|
|
54
|
+
(t1: Placeholder): CurriedFunction4<T1, T2, T3, T4, R>;
|
|
55
|
+
(): CurriedFunction4<T1, T2, T3, T4, R>;
|
|
56
|
+
}
|
|
57
|
+
interface CurriedFunction5<T1, T2, T3, T4, T5, R> {
|
|
58
|
+
(t1: Placeholder, t2: Placeholder, t3: Placeholder, t4: Placeholder, t5: T5): CurriedFunction4<T1, T2, T3, T4, R>;
|
|
59
|
+
(t1: Placeholder, t2: Placeholder, t3: Placeholder, t4: T4, t5: T5): CurriedFunction3<T1, T2, T3, R>;
|
|
60
|
+
(t1: Placeholder, t2: Placeholder, t3: T3, t4: Placeholder, t5: T5): CurriedFunction3<T1, T2, T4, R>;
|
|
61
|
+
(t1: Placeholder, t2: T2, t3: Placeholder, t4: Placeholder, t5: T5): CurriedFunction3<T1, T3, T4, R>;
|
|
62
|
+
(t1: T1, t2: Placeholder, t3: Placeholder, t4: Placeholder, t5: T5): CurriedFunction3<T2, T3, T4, R>;
|
|
63
|
+
(t1: Placeholder, t2: Placeholder, t3: T3, t4: T4, t5: T5): CurriedFunction2<T1, T2, R>;
|
|
64
|
+
(t1: Placeholder, t2: T2, t3: Placeholder, t4: T4, t5: T5): CurriedFunction2<T1, T3, R>;
|
|
65
|
+
(t1: Placeholder, t2: T2, t3: T3, t4: Placeholder, t5: T5): CurriedFunction2<T1, T4, R>;
|
|
66
|
+
(t1: T1, t2: Placeholder, t3: Placeholder, t4: T4, t5: T5): CurriedFunction2<T2, T3, R>;
|
|
67
|
+
(t1: T1, t2: Placeholder, t3: T3, t4: Placeholder, t5: T5): CurriedFunction2<T2, T4, R>;
|
|
68
|
+
(t1: T1, t2: T2, t3: Placeholder, t4: Placeholder, t5: T5): CurriedFunction2<T3, T4, R>;
|
|
69
|
+
(t1: T1, t2: T2, t3: T3, t4: Placeholder, t5: T5): CurriedFunction1<T4, R>;
|
|
70
|
+
(t1: T1, t2: T2, t3: Placeholder, t4: T4, t5: T5): CurriedFunction1<T3, R>;
|
|
71
|
+
(t1: T1, t2: Placeholder, t3: T3, t4: T4, t5: T5): CurriedFunction1<T2, R>;
|
|
72
|
+
(t1: Placeholder, t2: T2, t3: T3, t4: T4, t5: T5): CurriedFunction1<T1, R>;
|
|
73
|
+
(t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R;
|
|
74
|
+
(t1: Placeholder, t2: Placeholder, t3: Placeholder, t4: T4): CurriedFunction4<T1, T2, T3, T5, R>;
|
|
75
|
+
(t1: Placeholder, t2: Placeholder, t3: T3, t4: T4): CurriedFunction3<T1, T2, T5, R>;
|
|
76
|
+
(t1: Placeholder, t2: T2, t3: Placeholder, t4: T4): CurriedFunction3<T1, T3, T5, R>;
|
|
77
|
+
(t1: T1, t2: Placeholder, t3: Placeholder, t4: T4): CurriedFunction3<T2, T3, T5, R>;
|
|
78
|
+
(t1: T1, t2: T2, t3: Placeholder, t4: T4): CurriedFunction2<T3, T5, R>;
|
|
79
|
+
(t1: T1, t2: Placeholder, t3: T3, t4: T4): CurriedFunction2<T2, T5, R>;
|
|
80
|
+
(t1: Placeholder, t2: T2, t3: T3, t4: T4): CurriedFunction2<T1, T5, R>;
|
|
81
|
+
(t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction1<T5, R>;
|
|
82
|
+
(t1: Placeholder, t2: Placeholder, t3: T3): CurriedFunction4<T1, T2, T4, T5, R>;
|
|
83
|
+
(t1: T1, t2: Placeholder, t3: T3): CurriedFunction3<T2, T4, T5, R>;
|
|
84
|
+
(t1: Placeholder, t2: T2, t3: T3): CurriedFunction3<T1, T4, T5, R>;
|
|
85
|
+
(t1: T1, t2: T2, t3: T3): CurriedFunction2<T4, T5, R>;
|
|
86
|
+
(t1: Placeholder, t2: T2): CurriedFunction4<T1, T3, T4, T5, R>;
|
|
87
|
+
(t1: T1, t2: T2): CurriedFunction3<T3, T4, T5, R>;
|
|
88
|
+
(t1: T1): CurriedFunction4<T2, T3, T4, T5, R>;
|
|
89
|
+
(t1: Placeholder): CurriedFunction5<T1, T2, T3, T4, T5, R>;
|
|
90
|
+
(): CurriedFunction5<T1, T2, T3, T4, T5, R>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 创建一个函数。该函数接受 `func` 参数,在提供的参数数量达到 `arity` 后调用 `func` 并返回其结果。
|
|
94
|
+
*
|
|
95
|
+
* `curry._` 或 `curry.placeholder` 可用作参数的占位符。
|
|
96
|
+
*
|
|
97
|
+
* @function
|
|
98
|
+
* @alias module:Function.curry
|
|
99
|
+
* @since 1.8.0
|
|
100
|
+
* @param {Function} func 需要柯里化的函数。
|
|
101
|
+
* @param {number} [arity] 指定参数数量,默认值为 `func.length`。
|
|
102
|
+
* @returns {Function} 新的柯里化函数。
|
|
103
|
+
* @example
|
|
104
|
+
*
|
|
105
|
+
* function abc(a, b, c){
|
|
106
|
+
* return [a, b, c];
|
|
107
|
+
* }
|
|
108
|
+
*
|
|
109
|
+
* var curried = curry(abc);
|
|
110
|
+
*
|
|
111
|
+
* curried(1)(2)(3); // [1, 2, 3]
|
|
112
|
+
*
|
|
113
|
+
* curried(1, 2)(3); // [1, 2, 3]
|
|
114
|
+
*
|
|
115
|
+
* curried(1, 2, 3); // [1, 2, 3]
|
|
116
|
+
*
|
|
117
|
+
* curried(1)(curry._, 3)(2); // [1, 2, 3]
|
|
118
|
+
*
|
|
119
|
+
* curried(curry._, curry._, 3)(curry._, 2)(1); // [1, 2, 3]
|
|
120
|
+
*
|
|
121
|
+
*/
|
|
122
|
+
declare const curry: Curry;
|
|
123
|
+
export default curry;
|
package/types/debounce.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FunctionAny } from './internals/types';
|
|
1
2
|
/**
|
|
2
3
|
* 创建一个防抖动函数,该函数会从上一次被调用后,延迟 `wait` 毫秒数后调用 `func` 方法。
|
|
3
4
|
*
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
* window.addEventListener('popstate', debounced.cancel);
|
|
34
35
|
*
|
|
35
36
|
*/
|
|
36
|
-
declare function debounce<T extends
|
|
37
|
+
declare function debounce<T extends FunctionAny>(func: T, wait?: number, immediate?: boolean): {
|
|
37
38
|
(this: any, ...args: Parameters<T>): ReturnType<T>;
|
|
38
39
|
cancel: () => void;
|
|
39
40
|
flush: () => ReturnType<T>;
|
package/types/defaultTo.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
interface DefaultTo {
|
|
2
|
+
<T>(value: T | null | undefined, defaultValue: T): T;
|
|
3
|
+
<T, D>(value: T | null | undefined, defaultValue: D): T | D;
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
6
|
* 检查值以确定是否应在其位置返回默认值。如果值为 `NaN` `null` 或 `undefined` ,返回 `defaultValue` 。
|
|
3
7
|
*
|
|
4
|
-
* @
|
|
8
|
+
* @function
|
|
5
9
|
* @alias module:Util.defaultTo
|
|
6
10
|
* @since 1.0.0
|
|
7
11
|
* @param {*} value 要检查的值。
|
|
@@ -16,6 +20,5 @@
|
|
|
16
20
|
* defaultTo(null, undefined); // undefined
|
|
17
21
|
*
|
|
18
22
|
*/
|
|
19
|
-
declare
|
|
20
|
-
declare function defaultTo<T, D>(value: T | null | undefined, defaultValue: D): T | D;
|
|
23
|
+
declare const defaultTo: DefaultTo;
|
|
21
24
|
export default defaultTo;
|
package/types/delay.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import { FunctionAny } from './internals/types';
|
|
2
3
|
/**
|
|
3
4
|
* 延迟 `wait` 毫秒后调用 `func` 。
|
|
4
5
|
*
|
|
@@ -19,5 +20,5 @@
|
|
|
19
20
|
* // 'hello world'
|
|
20
21
|
*
|
|
21
22
|
*/
|
|
22
|
-
declare function delay<T extends (
|
|
23
|
+
declare function delay<T extends FunctionAny>(this: any, func: T, wait: number, ...args: Parameters<T>): NodeJS.Timeout;
|
|
23
24
|
export default delay;
|
package/types/every.d.ts
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
import { ArrayIterator, ArrayLikeIterator, ObjectIterator, StringIterator, WithNullable } from './internals/types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
interface Every {
|
|
3
|
+
<T>(collection: WithNullable<T[]>, predicate?: ArrayIterator<T, any>): boolean;
|
|
4
|
+
(collection: WithNullable<string>, predicate?: StringIterator<any>): boolean;
|
|
5
|
+
<T>(collection: WithNullable<ArrayLike<T>>, predicate?: ArrayLikeIterator<T, any>): boolean;
|
|
6
|
+
<T extends object>(collection: WithNullable<T>, predicate?: ObjectIterator<T, any>): boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 迭代集合中的元素执行 `predicate` 函数,如果全部元素都通过 `predicate` 返回真值,则返回 `true` ,否则停止迭代并返回 `false` 。
|
|
10
|
+
*
|
|
11
|
+
* `predicate` 调用时会传入三个参数 `value` `index|key` `collection` 。
|
|
12
|
+
*
|
|
13
|
+
* @function
|
|
14
|
+
* @alias module:Collection.every
|
|
15
|
+
* @since 1.7.0
|
|
16
|
+
* @param {ArrayLike<any> | Object} collection 要迭代的集合。
|
|
17
|
+
* @param {function} [predicate=identity] 每次迭代调用的函数。
|
|
18
|
+
* @returns {boolean} 如果全部元素都通过 `predicate` 测试,则返回 `true` ,否则返回 `false` 。
|
|
19
|
+
* @example
|
|
20
|
+
*
|
|
21
|
+
* const arr = [1, 2, 3, 4, 5, 6];
|
|
22
|
+
* every(arr, item => item % 2 === 0); // false
|
|
23
|
+
* every(arr); // true
|
|
24
|
+
*
|
|
25
|
+
* const obj = { one: 1, two: 2, three: 3 };
|
|
26
|
+
* every(obj, item => item > 1); // false
|
|
27
|
+
* every(obj, item => item > 0); // true
|
|
28
|
+
*/
|
|
29
|
+
declare const every: Every;
|
|
6
30
|
export default every;
|
package/types/filter.d.ts
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
import { ArrayIterator, ArrayLikeIterator, ObjectIterator, StringIterator, WithNullable } from './internals/types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
interface Filter {
|
|
3
|
+
<T>(collection: WithNullable<T[]>, predicate?: ArrayIterator<T, any>): T[];
|
|
4
|
+
(collection: WithNullable<string>, predicate?: StringIterator<any>): string[];
|
|
5
|
+
<T>(collection: WithNullable<ArrayLike<T>>, predicate?: ArrayLikeIterator<T, any>): T[];
|
|
6
|
+
<T extends object>(collection: WithNullable<T>, predicate?: ObjectIterator<T, any>): Array<T[keyof T]>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 过滤集合元素,为每个元素执行 `predicate` 函数,返回真值的元素将保留在结果数组中(不改变原值)。
|
|
10
|
+
*
|
|
11
|
+
* `predicate` 调用时会传入三个参数 `value` `index|key` `collection` 。
|
|
12
|
+
*
|
|
13
|
+
* @static
|
|
14
|
+
* @alias module:Collection.filter
|
|
15
|
+
* @since 1.7.0
|
|
16
|
+
* @param {ArrayLike<any> | Object} collection 要迭代的集合。
|
|
17
|
+
* @param {function} [predicate=identity] 每次迭代调用的函数。
|
|
18
|
+
* @returns {Array} 返回新的过滤数组。
|
|
19
|
+
* @example
|
|
20
|
+
*
|
|
21
|
+
* const arr = [1, 2, 3, 4, 5, 6];
|
|
22
|
+
* filter(arr, item => item % 2 === 0); // [2, 4, 6]
|
|
23
|
+
*
|
|
24
|
+
* const obj = { one: 1, two: 2, three: 3 };
|
|
25
|
+
* filter(obj, item => item > 1); // [2, 3]
|
|
26
|
+
*/
|
|
27
|
+
declare const filter: Filter;
|
|
6
28
|
export default filter;
|
package/types/find.d.ts
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
import { ArrayIterator, ArrayLikeIterator, ObjectIterator, StringIterator, WithNullable } from './internals/types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
interface Find {
|
|
3
|
+
<T>(collection: WithNullable<T[]>, predicate?: ArrayIterator<T, any>): T | undefined;
|
|
4
|
+
(collection: WithNullable<string>, predicate?: StringIterator<any>): string | undefined;
|
|
5
|
+
<T>(collection: WithNullable<ArrayLike<T>>, predicate?: ArrayLikeIterator<T, any>): T | undefined;
|
|
6
|
+
<T extends object>(collection: WithNullable<T>, predicate?: ObjectIterator<T, any>): T[keyof T] | undefined;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 迭代集合中的元素执行 `predicate` 函数,返回第一个通过 `predicate` 返回真值的元素(停止迭代),如果都不通过返回 `undefined` 。
|
|
10
|
+
*
|
|
11
|
+
* `predicate` 调用时会传入三个参数 `value` `index|key` `collection` 。
|
|
12
|
+
*
|
|
13
|
+
* @function
|
|
14
|
+
* @alias module:Collection.find
|
|
15
|
+
* @since 1.7.0
|
|
16
|
+
* @param {ArrayLike<any> | Object} collection 要迭代的集合。
|
|
17
|
+
* @param {function} [predicate=identity] 每次迭代调用的函数。
|
|
18
|
+
* @returns {ArrayLike<any> | Object} 返回第一个通过 `predicate` 返回真值的元素,否则返回 `undefined`。
|
|
19
|
+
* @example
|
|
20
|
+
*
|
|
21
|
+
* const arr = [1, 2, 3, 4, 5, 6];
|
|
22
|
+
* find(arr, item => item % 2 === 0); // 2
|
|
23
|
+
*
|
|
24
|
+
* const obj = { one: 1, two: 2, three: 3 };
|
|
25
|
+
* find(obj, item => item > 1); // 2
|
|
26
|
+
*/
|
|
27
|
+
declare const find: Find;
|
|
6
28
|
export default find;
|
package/types/forEach.d.ts
CHANGED
|
@@ -27,10 +27,5 @@
|
|
|
27
27
|
* // 2 'b'
|
|
28
28
|
*
|
|
29
29
|
*/
|
|
30
|
-
declare const forEach:
|
|
31
|
-
<T>(collection: import("./internals/types").WithNullable<T[]>, iteratee?: import("./internals/types").ArrayIterator<T, any> | undefined): T[];
|
|
32
|
-
(collection: import("./internals/types").WithNullable<string>, iteratee?: import("./internals/types").StringIterator<any> | undefined): string;
|
|
33
|
-
<T_1>(collection: import("./internals/types").WithNullable<ArrayLike<T_1>>, iteratee?: import("./internals/types").ArrayLikeIterator<T_1, any> | undefined): ArrayLike<T_1>;
|
|
34
|
-
<T_2 extends object>(collection: import("./internals/types").WithNullable<T_2>, iteratee?: import("./internals/types").ObjectIterator<T_2, any> | undefined): T_2;
|
|
35
|
-
};
|
|
30
|
+
declare const forEach: import("./internals/createForEach").ForEach;
|
|
36
31
|
export default forEach;
|
package/types/forEachRight.d.ts
CHANGED
|
@@ -27,10 +27,5 @@
|
|
|
27
27
|
* // 1 'a'
|
|
28
28
|
*
|
|
29
29
|
*/
|
|
30
|
-
declare const forEachRight:
|
|
31
|
-
<T>(collection: import("./internals/types").WithNullable<T[]>, iteratee?: import("./internals/types").ArrayIterator<T, any> | undefined): T[];
|
|
32
|
-
(collection: import("./internals/types").WithNullable<string>, iteratee?: import("./internals/types").StringIterator<any> | undefined): string;
|
|
33
|
-
<T_1>(collection: import("./internals/types").WithNullable<ArrayLike<T_1>>, iteratee?: import("./internals/types").ArrayLikeIterator<T_1, any> | undefined): ArrayLike<T_1>;
|
|
34
|
-
<T_2 extends object>(collection: import("./internals/types").WithNullable<T_2>, iteratee?: import("./internals/types").ObjectIterator<T_2, any> | undefined): T_2;
|
|
35
|
-
};
|
|
30
|
+
declare const forEachRight: import("./internals/createForEach").ForEach;
|
|
36
31
|
export default forEachRight;
|
package/types/fromPairs.d.ts
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
interface FromPairs {
|
|
2
|
+
<P extends string | number | symbol, V = any>(array: [P, V][]): Record<P, V>;
|
|
3
|
+
<P extends string | number | symbol>(array: any[][]): Record<P, any>;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 将键值对数组转为对象。
|
|
7
|
+
*
|
|
8
|
+
* 与 [Object.entries](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/entries) 正好相反。
|
|
9
|
+
*
|
|
10
|
+
* @static
|
|
11
|
+
* @alias module:Array.fromPairs
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
* @param {Array} array 键值对数组。
|
|
14
|
+
* @returns {Object} 新对象。
|
|
15
|
+
* @example
|
|
16
|
+
*
|
|
17
|
+
* fromPairs([['foo', 'bar'], ['baz', 42]]); // {foo: 'bar', baz: 42}
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
declare const fromPairs: FromPairs;
|
|
3
21
|
export default fromPairs;
|
package/types/groupBy.d.ts
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
import { CollectionList, CollectionObject, IterateeParam } from './internals/types';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
interface GroupBy {
|
|
3
|
+
<T>(collection: CollectionList<T>, iteratee?: IterateeParam<T>): Record<string, T[]>;
|
|
4
|
+
<T extends object, V extends T[keyof T]>(collection: CollectionObject<T>, iteratee?: IterateeParam<V>): Record<string, V[]>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* 创建一个组成聚合对象, `key` 是经过 `iteratee` 执行处理 `collection` 中每个元素后返回的结果。分组值的顺序是由他们出现在 `collection` 的顺序确定的。每个键对应的值负责生成 `key` 的元素组成的数组。
|
|
8
|
+
*
|
|
9
|
+
* `iteratee` 调用时会传入 1 个参数 `value` 。
|
|
10
|
+
*
|
|
11
|
+
* @static
|
|
12
|
+
* @alias module:Collection.groupBy
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @param {ArrayLike<any> | Object} collection 一个用来迭代的集合。
|
|
15
|
+
* @param {Function | string} [iteratee=identity] 迭代函数,用来转换键。
|
|
16
|
+
* @returns {Object} 组成聚合对象。
|
|
17
|
+
* @example
|
|
18
|
+
*
|
|
19
|
+
* groupBy([6, 4, 6]); // {'6': [6, 6], '4': [4]}
|
|
20
|
+
*
|
|
21
|
+
* groupBy([6.1, 4.2, 6.3], Math.floor); // {'6': [6.1, 6.3], '4': [4.2]}
|
|
22
|
+
*
|
|
23
|
+
* groupBy([{n: 6.1}, {n: 4.2}, {n: 6.3}], item=>Math.floor(item.n)); // {'6': [{n: 6.1}, {n: 6.3}], '4': [{n: 4.2}]}
|
|
24
|
+
*
|
|
25
|
+
* // 迭代函数可以直接写入属性。
|
|
26
|
+
* groupBy(['one', 'two', 'three'], 'length'); // {'3': ['one', 'two'], '5': ['three']}
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
declare const groupBy: GroupBy;
|
|
4
30
|
export default groupBy;
|
package/types/index.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export { default as some } from './some';
|
|
|
44
44
|
*/
|
|
45
45
|
export { default as after } from './after';
|
|
46
46
|
export { default as before } from './before';
|
|
47
|
+
export { default as curry } from './curry';
|
|
47
48
|
export { default as debounce } from './debounce';
|
|
48
49
|
export { default as delay } from './delay';
|
|
49
50
|
export { default as negate } from './negate';
|
|
@@ -61,6 +62,7 @@ export { default as isArray } from './isArray';
|
|
|
61
62
|
export { default as isArrayBuffer } from './isArrayBuffer';
|
|
62
63
|
export { default as isArrayLike } from './isArrayLike';
|
|
63
64
|
export { default as isArrayLikeObject } from './isArrayLikeObject';
|
|
65
|
+
export { default as isBigInt } from './isBigInt';
|
|
64
66
|
export { default as isBlob } from './isBlob';
|
|
65
67
|
export { default as isBoolean } from './isBoolean';
|
|
66
68
|
export { default as isBuffer } from './isBuffer';
|
|
@@ -122,6 +124,7 @@ export { default as randomInt } from './randomInt';
|
|
|
122
124
|
*/
|
|
123
125
|
export { default as allKeys } from './allKeys';
|
|
124
126
|
export { default as allKeysIn } from './allKeysIn';
|
|
127
|
+
export { default as invert } from './invert';
|
|
125
128
|
export { default as keys } from './keys';
|
|
126
129
|
export { default as keysIn } from './keysIn';
|
|
127
130
|
export { default as merge } from './merge';
|
|
@@ -142,6 +145,7 @@ export { default as escapeRegExp } from './escapeRegExp';
|
|
|
142
145
|
export { default as kebabCase } from './kebabCase';
|
|
143
146
|
export { default as lowerCase } from './lowerCase';
|
|
144
147
|
export { default as lowerFirst } from './lowerFirst';
|
|
148
|
+
export { default as pascalCase } from './pascalCase';
|
|
145
149
|
export { default as snakeCase } from './snakeCase';
|
|
146
150
|
export { default as unescape } from './unescape';
|
|
147
151
|
export { default as upperCase } from './upperCase';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { FunctionAny } from './types';
|
|
2
|
+
declare function baseDebounce<T extends FunctionAny>(func: T, wait: number, immediate: boolean, __throttle__?: boolean): {
|
|
2
3
|
(this: any, ...args: Parameters<T>): ReturnType<T>;
|
|
3
4
|
cancel: () => void;
|
|
4
5
|
flush: () => ReturnType<T>;
|