@hairy/utils 1.15.0 → 1.16.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 (2) hide show
  1. package/dist/index.d.ts +16 -2
  2. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -107,9 +107,23 @@ type DeepReplace<T, K = unknown, V = unknown> = {
107
107
  [P in keyof T]: K extends P ? V : DeepReplace<T[P], K, V>;
108
108
  };
109
109
  type DeepKeyof<T> = T extends object ? keyof T | DeepKeyof<T[keyof T]> : never;
110
+ type MergeInsertions<T> = T extends object ? {
111
+ [K in keyof T]: MergeInsertions<T[K]>;
112
+ } : T;
113
+ type DeepMerge<F, S> = MergeInsertions<{
114
+ [K in keyof F | keyof S]: K extends keyof S & keyof F ? DeepMerge<F[K], S[K]> : K extends keyof S ? S[K] : K extends keyof F ? F[K] : never;
115
+ }>;
110
116
 
111
- type Awaitable<T> = T | Promise<T>;
117
+ type Awaitable<T> = T | PromiseLike<T>;
112
118
  type Arrayable<T> = T | T[];
119
+ type Nullable<T> = T | null | undefined;
120
+ type ElementOf<T> = T extends (infer E)[] ? E : never;
121
+ type Fn<T = void> = () => T;
122
+ type AnyFn = (...args: any[]) => any;
123
+ type PromiseFn = (...args: any[]) => Promise<any>;
124
+ type Constructor<T = void> = new (...args: any[]) => T;
125
+ type ArgumentsType<T> = T extends ((...args: infer A) => any) ? A : never;
126
+ declare type PromiseType<P extends PromiseLike<any>> = P extends PromiseLike<infer T> ? T : never;
113
127
  type Option<L extends Key = 'label', V extends Key = 'value', C extends Key = 'children'> = {
114
128
  [P in L]?: string;
115
129
  } & {
@@ -321,4 +335,4 @@ declare function riposte<T>(...args: [cond: boolean, value: T][]): T;
321
335
  declare function unwrap<T extends object>(value: T | (() => T)): T;
322
336
  declare function whenever<T, C extends (value: Exclude<T, null | undefined>) => any>(value: T, callback: C): ReturnType<C> | undefined;
323
337
 
324
- export { type Arrayable, type Awaitable, BIG_INTS, BigNum, type BooleanLike, type DecimalOptions, type DeepKeyof, type DeepPartial, type DeepReadonly, type DeepReplace, type DeepRequired, Deferred, type Delimiter, type Dimension, type DynamicObject, type FormatGroupOptions, type FormatNumericOptions, type Key, type Noop, type NumberObject, type Numberish, type Numeric, type NumericObject, type Option, type Pipeline, type StringObject, type SymbolObject, type Typeof, type UnaryFunction, arange, average, camelCase, capitalCase, compose, constantCase, cover, decimal, delay, dotCase, formToObject, formatNumeric, formatSize, formatUnit, getTypeof, gt, gte, integer, isAndroid, isBrowser, isChrome, isEdge, isFF, isFormData, isIE, isIE11, isIE9, isIOS, isMobile, isPhantomJS, isTypeof, isWeex, isWindow, jsonTryParse, kebabCase, loop, lt, lte, noCase, noop, numerfix, objectToForm, pPipe, parseNumeric, pascalCase, pascalSnakeCase, pathCase, percentage, pipe, plus, randomArray, randomNumer, riposte, sentenceCase, snakeCase, trainCase, unwrap, whenever, zerofill, zeromove };
338
+ export { type AnyFn, type ArgumentsType, type Arrayable, type Awaitable, BIG_INTS, BigNum, type BooleanLike, type Constructor, type DecimalOptions, type DeepKeyof, type DeepMerge, type DeepPartial, type DeepReadonly, type DeepReplace, type DeepRequired, Deferred, type Delimiter, type Dimension, type DynamicObject, type ElementOf, type Fn, type FormatGroupOptions, type FormatNumericOptions, type Key, type MergeInsertions, type Noop, type Nullable, type NumberObject, type Numberish, type Numeric, type NumericObject, type Option, type Pipeline, type PromiseFn, type PromiseType, type StringObject, type SymbolObject, type Typeof, type UnaryFunction, arange, average, camelCase, capitalCase, compose, constantCase, cover, decimal, delay, dotCase, formToObject, formatNumeric, formatSize, formatUnit, getTypeof, gt, gte, integer, isAndroid, isBrowser, isChrome, isEdge, isFF, isFormData, isIE, isIE11, isIE9, isIOS, isMobile, isPhantomJS, isTypeof, isWeex, isWindow, jsonTryParse, kebabCase, loop, lt, lte, noCase, noop, numerfix, objectToForm, pPipe, parseNumeric, pascalCase, pascalSnakeCase, pathCase, percentage, pipe, plus, randomArray, randomNumer, riposte, sentenceCase, snakeCase, trainCase, unwrap, whenever, zerofill, zeromove };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hairy/utils",
3
3
  "type": "module",
4
- "version": "1.15.0",
4
+ "version": "1.16.0",
5
5
  "description": "Library for anywhere",
6
6
  "author": "Hairyf <wwu710632@gmail.com>",
7
7
  "license": "MIT",