ut2 1.7.2 → 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.
Files changed (48) hide show
  1. package/README.md +6 -2
  2. package/dist/ut2.js +72 -12
  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/conforms.js +4 -3
  7. package/es/curry.js +32 -0
  8. package/es/index.js +4 -0
  9. package/es/internals/helpers.js +3 -2
  10. package/es/internals/native.js +2 -1
  11. package/es/invert.js +22 -0
  12. package/es/isBigInt.js +8 -0
  13. package/es/omit.js +4 -3
  14. package/es/partial.js +1 -1
  15. package/es/pascalCase.js +11 -0
  16. package/es/pick.js +4 -3
  17. package/lib/conforms.js +4 -3
  18. package/lib/curry.js +34 -0
  19. package/lib/index.js +8 -0
  20. package/lib/internals/helpers.js +2 -1
  21. package/lib/internals/native.js +1 -0
  22. package/lib/invert.js +24 -0
  23. package/lib/isBigInt.js +10 -0
  24. package/lib/omit.js +4 -3
  25. package/lib/partial.js +1 -1
  26. package/lib/pascalCase.js +13 -0
  27. package/lib/pick.js +4 -3
  28. package/package.json +1 -1
  29. package/types/allKeys.d.ts +1 -1
  30. package/types/allKeysIn.d.ts +1 -1
  31. package/types/conforms.d.ts +7 -2
  32. package/types/conformsTo.d.ts +3 -3
  33. package/types/curry.d.ts +123 -0
  34. package/types/delay.d.ts +1 -1
  35. package/types/index.d.ts +4 -0
  36. package/types/internals/helpers.d.ts +1 -0
  37. package/types/internals/native.d.ts +1 -0
  38. package/types/internals/types.d.ts +2 -0
  39. package/types/invert.d.ts +19 -0
  40. package/types/isBigInt.d.ts +22 -0
  41. package/types/keys.d.ts +1 -1
  42. package/types/keysIn.d.ts +1 -1
  43. package/types/omit.d.ts +6 -1
  44. package/types/omitBy.d.ts +3 -2
  45. package/types/partial.d.ts +5 -5
  46. package/types/pascalCase.d.ts +27 -0
  47. package/types/pick.d.ts +6 -1
  48. package/types/pickBy.d.ts +3 -2
package/es/conforms.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import conformsTo from './conformsTo.js';
2
2
 
3
- function conforms(source) {
3
+ var conforms = function (source) {
4
4
  return function (object) {
5
5
  return conformsTo(object, source);
6
6
  };
7
- }
7
+ };
8
+ var conforms$1 = conforms;
8
9
 
9
- export { conforms as default };
10
+ export { conforms$1 as default };
package/es/curry.js ADDED
@@ -0,0 +1,32 @@
1
+ import { mathMax, arrayProtoSlice } from './internals/native.js';
2
+ import isUndefined from './isUndefined.js';
3
+ import toInteger from './toInteger.js';
4
+
5
+ var PLACEHOLDER = {
6
+ __ut2_curry_ph__: null
7
+ };
8
+ var curry = function (func, arity) {
9
+ arity = isUndefined(arity) ? func.length : mathMax(toInteger(arity), 0);
10
+ function wrap() {
11
+ var args = arrayProtoSlice.call(arguments);
12
+ var context = this;
13
+ function inner() {
14
+ var argsInner = arrayProtoSlice.call(arguments);
15
+ for (var i = 0; i < args.length; i++) {
16
+ args[i] = args[i] === PLACEHOLDER && argsInner.length > 0 ? argsInner.shift() : args[i];
17
+ }
18
+ args = args.concat(argsInner);
19
+ var realArgsLength = args.filter(function (arg) { return arg !== PLACEHOLDER; }).length;
20
+ if (realArgsLength >= arity) {
21
+ return func.apply(context, args);
22
+ }
23
+ return inner;
24
+ }
25
+ return inner();
26
+ }
27
+ return wrap;
28
+ };
29
+ curry.placeholder = curry._ = PLACEHOLDER;
30
+ var curry$1 = curry;
31
+
32
+ export { curry$1 as default };
package/es/index.js CHANGED
@@ -26,6 +26,7 @@ export { default as reduceRight } from './reduceRight.js';
26
26
  export { default as some } from './some.js';
27
27
  export { default as after } from './after.js';
28
28
  export { default as before } from './before.js';
29
+ export { default as curry } from './curry.js';
29
30
  export { default as debounce } from './debounce.js';
30
31
  export { default as delay } from './delay.js';
31
32
  export { default as negate } from './negate.js';
@@ -37,6 +38,7 @@ export { default as isArray } from './isArray.js';
37
38
  export { default as isArrayBuffer } from './isArrayBuffer.js';
38
39
  export { default as isArrayLike } from './isArrayLike.js';
39
40
  export { default as isArrayLikeObject } from './isArrayLikeObject.js';
41
+ export { default as isBigInt } from './isBigInt.js';
40
42
  export { default as isBlob } from './isBlob.js';
41
43
  export { default as isBoolean } from './isBoolean.js';
42
44
  export { default as isBuffer } from './isBuffer.js';
@@ -80,6 +82,7 @@ export { default as random } from './random.js';
80
82
  export { default as randomInt } from './randomInt.js';
81
83
  export { default as allKeys } from './allKeys.js';
82
84
  export { default as allKeysIn } from './allKeysIn.js';
85
+ export { default as invert } from './invert.js';
83
86
  export { default as keys } from './keys.js';
84
87
  export { default as keysIn } from './keysIn.js';
85
88
  export { default as merge } from './merge.js';
@@ -94,6 +97,7 @@ export { default as escapeRegExp } from './escapeRegExp.js';
94
97
  export { default as kebabCase } from './kebabCase.js';
95
98
  export { default as lowerCase } from './lowerCase.js';
96
99
  export { default as lowerFirst } from './lowerFirst.js';
100
+ export { default as pascalCase } from './pascalCase.js';
97
101
  export { default as snakeCase } from './snakeCase.js';
98
102
  export { default as unescape } from './unescape.js';
99
103
  export { default as upperCase } from './upperCase.js';
@@ -1,7 +1,7 @@
1
1
  import getTag from './getTag.js';
2
2
  import { argumentsTag, functionProtoToString } from './native.js';
3
3
 
4
- var VERSION = "1.7.2";
4
+ var VERSION = "1.8.0";
5
5
  var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
6
6
  var FUNC_ERROR_TEXT = 'Expected a function';
7
7
  function toSource(func) {
@@ -20,5 +20,6 @@ function toSource(func) {
20
20
  return '';
21
21
  }
22
22
  var stubFlase = function () { return false; };
23
+ var stubTrue = function () { return true; };
23
24
 
24
- export { FUNC_ERROR_TEXT, VERSION, stubFlase, supportedArgumentsType, toSource };
25
+ export { FUNC_ERROR_TEXT, VERSION, stubFlase, stubTrue, supportedArgumentsType, toSource };
@@ -26,6 +26,7 @@ var selfExisted = typeof self === 'object' && self;
26
26
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
27
27
  var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
28
28
  var MAX_ARRAY_LENGTH = 4294967295;
29
+ var bigIntTag = '[object BigInt]';
29
30
  var numberTag = '[object Number]';
30
31
  var booleanTag = '[object Boolean]';
31
32
  var stringTag = '[object String]';
@@ -48,4 +49,4 @@ var promiseTag = '[object Promise]';
48
49
  var setTag = '[object Set]';
49
50
  var weakMapTag = '[object WeakMap]';
50
51
 
51
- export { MAX_ARRAY_LENGTH, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER, argumentsTag, arrayBufferTag, arrayProto, arrayProtoSlice, arrayTag, blobTag, booleanTag, dataViewTag, dateTag, domExceptionTag, errorTag, functionProto, functionProtoToString, functionTags, globalExisted, globalThisExisted, mapTag, mathAbs, mathCeil, mathFloor, mathMax, mathMin, mathRandom, numberIsFinite, numberIsInteger, numberIsSafeInteger, numberTag, objectGetOwnPropertySymbols, objectGetPrototypeOf, objectKeys, objectProto, objectProtoHasOwnProperty, objectProtoPropertyIsEnumerable, objectProtoToString, objectTag, promiseTag, regExpTag, selfExisted, setTag, stringTag, symbolProto, symbolTag, typedArrayTags, weakMapTag, weakSetTag };
52
+ export { MAX_ARRAY_LENGTH, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER, argumentsTag, arrayBufferTag, arrayProto, arrayProtoSlice, arrayTag, bigIntTag, blobTag, booleanTag, dataViewTag, dateTag, domExceptionTag, errorTag, functionProto, functionProtoToString, functionTags, globalExisted, globalThisExisted, mapTag, mathAbs, mathCeil, mathFloor, mathMax, mathMin, mathRandom, numberIsFinite, numberIsInteger, numberIsSafeInteger, numberTag, objectGetOwnPropertySymbols, objectGetPrototypeOf, objectKeys, objectProto, objectProtoHasOwnProperty, objectProtoPropertyIsEnumerable, objectProtoToString, objectTag, promiseTag, regExpTag, selfExisted, setTag, stringTag, symbolProto, symbolTag, typedArrayTags, weakMapTag, weakSetTag };
package/es/invert.js ADDED
@@ -0,0 +1,22 @@
1
+ import { stubTrue } from './internals/helpers.js';
2
+ import { objectProtoToString } from './internals/native.js';
3
+ import keys from './keys.js';
4
+
5
+ function invert(object, predicate) {
6
+ if (predicate === void 0) { predicate = stubTrue; }
7
+ var _keys = keys(object);
8
+ var result = {};
9
+ _keys.forEach(function (key) {
10
+ var value = object[key];
11
+ if (predicate(value, key)) {
12
+ var valueStr = value != null && typeof value.toString != 'function' ? objectProtoToString.call(value) : value;
13
+ result[valueStr] = key;
14
+ }
15
+ else {
16
+ result[key] = value;
17
+ }
18
+ });
19
+ return result;
20
+ }
21
+
22
+ export { invert as default };
package/es/isBigInt.js ADDED
@@ -0,0 +1,8 @@
1
+ import getTag from './internals/getTag.js';
2
+ import { bigIntTag } from './internals/native.js';
3
+
4
+ function isBigInt(value) {
5
+ return typeof value === 'bigint' || getTag(value) === bigIntTag;
6
+ }
7
+
8
+ export { isBigInt as default };
package/es/omit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import allKeysIn from './allKeysIn.js';
2
2
  import castArray from './castArray.js';
3
3
 
4
- function omit(object, fields) {
4
+ var omit = function (object, fields) {
5
5
  if (fields === void 0) { fields = []; }
6
6
  var keys = allKeysIn(object);
7
7
  var fieldArr = castArray(fields);
@@ -12,6 +12,7 @@ function omit(object, fields) {
12
12
  }
13
13
  });
14
14
  return result;
15
- }
15
+ };
16
+ var omit$1 = omit;
16
17
 
17
- export { omit as default };
18
+ export { omit$1 as default };
package/es/partial.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { arrayProtoSlice } from './internals/native.js';
2
2
 
3
3
  var PLACEHOLDER = {
4
- __ut2_partial__: 1
4
+ __ut2_partial_ph__: null
5
5
  };
6
6
  var partial = function (func) {
7
7
  var argsOrig = arrayProtoSlice.call(arguments, 1);
@@ -0,0 +1,11 @@
1
+ import splitCaseWords from './internals/splitCaseWords.js';
2
+ import upperFirst from './upperFirst.js';
3
+
4
+ function pascalCase(string, pattern) {
5
+ return splitCaseWords(string, pattern).reduce(function (prev, cur) {
6
+ cur = cur.toLowerCase();
7
+ return prev + upperFirst(cur);
8
+ }, '');
9
+ }
10
+
11
+ export { pascalCase as default };
package/es/pick.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import castArray from './castArray.js';
2
2
 
3
- function pick(object, fields) {
3
+ var pick = function (object, fields) {
4
4
  if (fields === void 0) { fields = []; }
5
5
  var result = {};
6
6
  var fieldArr = castArray(fields);
@@ -10,6 +10,7 @@ function pick(object, fields) {
10
10
  }
11
11
  });
12
12
  return result;
13
- }
13
+ };
14
+ var pick$1 = pick;
14
15
 
15
- export { pick as default };
16
+ export { pick$1 as default };
package/lib/conforms.js CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  var conformsTo = require('./conformsTo.js');
4
4
 
5
- function conforms(source) {
5
+ var conforms = function (source) {
6
6
  return function (object) {
7
7
  return conformsTo(object, source);
8
8
  };
9
- }
9
+ };
10
+ var conforms$1 = conforms;
10
11
 
11
- module.exports = conforms;
12
+ module.exports = conforms$1;
package/lib/curry.js ADDED
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var native = require('./internals/native.js');
4
+ var isUndefined = require('./isUndefined.js');
5
+ var toInteger = require('./toInteger.js');
6
+
7
+ var PLACEHOLDER = {
8
+ __ut2_curry_ph__: null
9
+ };
10
+ var curry = function (func, arity) {
11
+ arity = isUndefined(arity) ? func.length : native.mathMax(toInteger(arity), 0);
12
+ function wrap() {
13
+ var args = native.arrayProtoSlice.call(arguments);
14
+ var context = this;
15
+ function inner() {
16
+ var argsInner = native.arrayProtoSlice.call(arguments);
17
+ for (var i = 0; i < args.length; i++) {
18
+ args[i] = args[i] === PLACEHOLDER && argsInner.length > 0 ? argsInner.shift() : args[i];
19
+ }
20
+ args = args.concat(argsInner);
21
+ var realArgsLength = args.filter(function (arg) { return arg !== PLACEHOLDER; }).length;
22
+ if (realArgsLength >= arity) {
23
+ return func.apply(context, args);
24
+ }
25
+ return inner;
26
+ }
27
+ return inner();
28
+ }
29
+ return wrap;
30
+ };
31
+ curry.placeholder = curry._ = PLACEHOLDER;
32
+ var curry$1 = curry;
33
+
34
+ module.exports = curry$1;
package/lib/index.js CHANGED
@@ -28,6 +28,7 @@ var reduceRight = require('./reduceRight.js');
28
28
  var some = require('./some.js');
29
29
  var after = require('./after.js');
30
30
  var before = require('./before.js');
31
+ var curry = require('./curry.js');
31
32
  var debounce = require('./debounce.js');
32
33
  var delay = require('./delay.js');
33
34
  var negate = require('./negate.js');
@@ -39,6 +40,7 @@ var isArray = require('./isArray.js');
39
40
  var isArrayBuffer = require('./isArrayBuffer.js');
40
41
  var isArrayLike = require('./isArrayLike.js');
41
42
  var isArrayLikeObject = require('./isArrayLikeObject.js');
43
+ var isBigInt = require('./isBigInt.js');
42
44
  var isBlob = require('./isBlob.js');
43
45
  var isBoolean = require('./isBoolean.js');
44
46
  var isBuffer = require('./isBuffer.js');
@@ -82,6 +84,7 @@ var random = require('./random.js');
82
84
  var randomInt = require('./randomInt.js');
83
85
  var allKeys = require('./allKeys.js');
84
86
  var allKeysIn = require('./allKeysIn.js');
87
+ var invert = require('./invert.js');
85
88
  var keys = require('./keys.js');
86
89
  var keysIn = require('./keysIn.js');
87
90
  var merge = require('./merge.js');
@@ -96,6 +99,7 @@ var escapeRegExp = require('./escapeRegExp.js');
96
99
  var kebabCase = require('./kebabCase.js');
97
100
  var lowerCase = require('./lowerCase.js');
98
101
  var lowerFirst = require('./lowerFirst.js');
102
+ var pascalCase = require('./pascalCase.js');
99
103
  var snakeCase = require('./snakeCase.js');
100
104
  var unescape = require('./unescape.js');
101
105
  var upperCase = require('./upperCase.js');
@@ -157,6 +161,7 @@ exports.reduceRight = reduceRight;
157
161
  exports.some = some;
158
162
  exports.after = after;
159
163
  exports.before = before;
164
+ exports.curry = curry;
160
165
  exports.debounce = debounce;
161
166
  exports.delay = delay;
162
167
  exports.negate = negate;
@@ -168,6 +173,7 @@ exports.isArray = isArray;
168
173
  exports.isArrayBuffer = isArrayBuffer;
169
174
  exports.isArrayLike = isArrayLike;
170
175
  exports.isArrayLikeObject = isArrayLikeObject;
176
+ exports.isBigInt = isBigInt;
171
177
  exports.isBlob = isBlob;
172
178
  exports.isBoolean = isBoolean;
173
179
  exports.isBuffer = isBuffer;
@@ -211,6 +217,7 @@ exports.random = random;
211
217
  exports.randomInt = randomInt;
212
218
  exports.allKeys = allKeys;
213
219
  exports.allKeysIn = allKeysIn;
220
+ exports.invert = invert;
214
221
  exports.keys = keys;
215
222
  exports.keysIn = keysIn;
216
223
  exports.merge = merge;
@@ -225,6 +232,7 @@ exports.escapeRegExp = escapeRegExp;
225
232
  exports.kebabCase = kebabCase;
226
233
  exports.lowerCase = lowerCase;
227
234
  exports.lowerFirst = lowerFirst;
235
+ exports.pascalCase = pascalCase;
228
236
  exports.snakeCase = snakeCase;
229
237
  exports.unescape = unescape;
230
238
  exports.upperCase = upperCase;
@@ -3,7 +3,7 @@
3
3
  var getTag = require('./getTag.js');
4
4
  var native = require('./native.js');
5
5
 
6
- exports.VERSION = "1.7.2";
6
+ exports.VERSION = "1.8.0";
7
7
  exports.supportedArgumentsType = getTag((function () { return arguments; })()) === native.argumentsTag;
8
8
  exports.FUNC_ERROR_TEXT = 'Expected a function';
9
9
  function toSource(func) {
@@ -22,5 +22,6 @@ function toSource(func) {
22
22
  return '';
23
23
  }
24
24
  exports.stubFlase = function () { return false; };
25
+ exports.stubTrue = function () { return true; };
25
26
 
26
27
  exports.toSource = toSource;
@@ -28,6 +28,7 @@ exports.selfExisted = typeof self === 'object' && self;
28
28
  exports.MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
29
29
  exports.MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
30
30
  exports.MAX_ARRAY_LENGTH = 4294967295;
31
+ exports.bigIntTag = '[object BigInt]';
31
32
  exports.numberTag = '[object Number]';
32
33
  exports.booleanTag = '[object Boolean]';
33
34
  exports.stringTag = '[object String]';
package/lib/invert.js ADDED
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var helpers = require('./internals/helpers.js');
4
+ var native = require('./internals/native.js');
5
+ var keys = require('./keys.js');
6
+
7
+ function invert(object, predicate) {
8
+ if (predicate === void 0) { predicate = helpers.stubTrue; }
9
+ var _keys = keys(object);
10
+ var result = {};
11
+ _keys.forEach(function (key) {
12
+ var value = object[key];
13
+ if (predicate(value, key)) {
14
+ var valueStr = value != null && typeof value.toString != 'function' ? native.objectProtoToString.call(value) : value;
15
+ result[valueStr] = key;
16
+ }
17
+ else {
18
+ result[key] = value;
19
+ }
20
+ });
21
+ return result;
22
+ }
23
+
24
+ module.exports = invert;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var getTag = require('./internals/getTag.js');
4
+ var native = require('./internals/native.js');
5
+
6
+ function isBigInt(value) {
7
+ return typeof value === 'bigint' || getTag(value) === native.bigIntTag;
8
+ }
9
+
10
+ module.exports = isBigInt;
package/lib/omit.js CHANGED
@@ -3,7 +3,7 @@
3
3
  var allKeysIn = require('./allKeysIn.js');
4
4
  var castArray = require('./castArray.js');
5
5
 
6
- function omit(object, fields) {
6
+ var omit = function (object, fields) {
7
7
  if (fields === void 0) { fields = []; }
8
8
  var keys = allKeysIn(object);
9
9
  var fieldArr = castArray(fields);
@@ -14,6 +14,7 @@ function omit(object, fields) {
14
14
  }
15
15
  });
16
16
  return result;
17
- }
17
+ };
18
+ var omit$1 = omit;
18
19
 
19
- module.exports = omit;
20
+ module.exports = omit$1;
package/lib/partial.js CHANGED
@@ -3,7 +3,7 @@
3
3
  var native = require('./internals/native.js');
4
4
 
5
5
  var PLACEHOLDER = {
6
- __ut2_partial__: 1
6
+ __ut2_partial_ph__: null
7
7
  };
8
8
  var partial = function (func) {
9
9
  var argsOrig = native.arrayProtoSlice.call(arguments, 1);
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var splitCaseWords = require('./internals/splitCaseWords.js');
4
+ var upperFirst = require('./upperFirst.js');
5
+
6
+ function pascalCase(string, pattern) {
7
+ return splitCaseWords(string, pattern).reduce(function (prev, cur) {
8
+ cur = cur.toLowerCase();
9
+ return prev + upperFirst(cur);
10
+ }, '');
11
+ }
12
+
13
+ module.exports = pascalCase;
package/lib/pick.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  var castArray = require('./castArray.js');
4
4
 
5
- function pick(object, fields) {
5
+ var pick = function (object, fields) {
6
6
  if (fields === void 0) { fields = []; }
7
7
  var result = {};
8
8
  var fieldArr = castArray(fields);
@@ -12,6 +12,7 @@ function pick(object, fields) {
12
12
  }
13
13
  });
14
14
  return result;
15
- }
15
+ };
16
+ var pick$1 = pick;
16
17
 
17
- module.exports = pick;
18
+ module.exports = pick$1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ut2",
3
- "version": "1.7.2",
3
+ "version": "1.8.0",
4
4
  "author": "caijf",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
@@ -20,5 +20,5 @@
20
20
  * allKeys(new Foo); // ['a', Symbol(b)]
21
21
  *
22
22
  */
23
- declare function allKeys<T extends object>(object: T): (string | symbol)[];
23
+ declare function allKeys(object?: any): (string | symbol)[];
24
24
  export default allKeys;
@@ -20,5 +20,5 @@
20
20
  * allKeysIn(new Foo); // ['a', 'c', Symbol(b), Symbol(d)]
21
21
  *
22
22
  */
23
- declare function allKeysIn<T extends object>(object: T): (string | symbol)[];
23
+ declare function allKeysIn(object?: any): (string | symbol)[];
24
24
  export default allKeysIn;
@@ -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
- * @static
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 function conforms<T extends object, K extends keyof T, S extends object = Record<string, (value: T[K]) => any>>(source: S): (object: T) => boolean;
23
+ declare const conforms: ConformsFunction;
19
24
  export default conforms;
@@ -1,7 +1,7 @@
1
- import { WithNullable } from './internals/types';
1
+ import { PropertyName, WithNullable } from './internals/types';
2
2
  interface ConformsTo {
3
- <T extends object, K extends keyof T>(object: T, source: Record<K, (value: T[K]) => any>): boolean;
4
- <T extends WithNullable<object>>(object: T, source: Record<string | symbol, (value: any) => any>): boolean;
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
5
  }
6
6
  /**
7
7
  * 通过调用断言 `source` 的属性与 `object` 的相应属性值,检查 `object` 是否符合 `source` 。
@@ -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/delay.d.ts CHANGED
@@ -20,5 +20,5 @@ import { FunctionAny } from './internals/types';
20
20
  * // 'hello world'
21
21
  *
22
22
  */
23
- declare function delay<T extends FunctionAny>(func: T, wait: number, ...args: Parameters<T>): NodeJS.Timeout;
23
+ declare function delay<T extends FunctionAny>(this: any, func: T, wait: number, ...args: Parameters<T>): NodeJS.Timeout;
24
24
  export default delay;