@akanjs/base 0.9.42 → 0.9.44
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/package.json +1 -1
- package/src/types.d.ts +40 -5
package/package.json
CHANGED
package/src/types.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import type { Dayjs } from "dayjs";
|
|
1
2
|
export type { SshOptions } from "tunnel-ssh";
|
|
2
3
|
export type Type<T = any> = new (...args: any[]) => T;
|
|
3
4
|
export type BufferLike = string | Buffer | DataView | number | ArrayBufferView | Uint8Array | ArrayBuffer | SharedArrayBuffer | readonly any[] | readonly number[];
|
|
4
|
-
export type GetObject<T> =
|
|
5
|
-
[K in keyof T]: T[K];
|
|
6
|
-
}, "prototype">;
|
|
7
|
-
export type OptionOf<Obj> = {
|
|
8
|
-
[K in keyof Obj]?: Obj[K] | null;
|
|
5
|
+
export type GetObject<T> = {
|
|
6
|
+
[K in keyof T as K extends "prototype" ? never : K]: T[K];
|
|
9
7
|
};
|
|
8
|
+
export type OptionOf<Obj> = Partial<{
|
|
9
|
+
[K in keyof Obj]: Obj[K] | null;
|
|
10
|
+
}>;
|
|
10
11
|
export type UnType<T> = T extends new (...args: any) => infer U ? U : never;
|
|
11
12
|
export interface GraphQLUpload {
|
|
12
13
|
name: string;
|
|
@@ -41,3 +42,37 @@ export interface GraphQLJSON<TInternal = unknown, TExternal = TInternal> {
|
|
|
41
42
|
export type Prettify<T> = {
|
|
42
43
|
[K in keyof T]: T[K];
|
|
43
44
|
} & {};
|
|
45
|
+
export type GetStateObject<T> = {
|
|
46
|
+
[K in keyof T as T[K] extends (...args: any) => any ? never : K extends "prototype" ? never : K]: T[K];
|
|
47
|
+
};
|
|
48
|
+
export type GetActionObject<T> = {
|
|
49
|
+
[K in keyof T as T[K] extends (...args: any) => any ? (K extends "prototype" ? never : K) : never]: T[K];
|
|
50
|
+
};
|
|
51
|
+
export type PromiseOrObject<T> = T | Promise<T>;
|
|
52
|
+
type MergeObjectValues<T> = T extends Record<string, infer V> ? (V extends Record<string, any> ? V : never) : never;
|
|
53
|
+
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
54
|
+
export type MergedValues<T> = UnionToIntersection<MergeObjectValues<T>>;
|
|
55
|
+
export type MergeAll<T extends Record<string, any>[]> = T extends [
|
|
56
|
+
infer First extends Record<string, any>,
|
|
57
|
+
...infer Rest extends Record<string, any>[]
|
|
58
|
+
] ? Rest extends [] ? First : MergeAll<Rest> & First : unknown;
|
|
59
|
+
export type MergeAllActionTypes<T extends Type[], OmitKey extends string = never> = T extends [
|
|
60
|
+
infer First extends Type,
|
|
61
|
+
...infer Rest extends Type[]
|
|
62
|
+
] ? Rest extends [] ? Omit<GetActionObject<UnType<First>>, OmitKey> : MergeAllActionTypes<Rest, OmitKey> & Omit<UnType<First>, OmitKey> : unknown;
|
|
63
|
+
export type MergeAllTypes<T extends Type[], OmitKey extends string = never> = T extends [
|
|
64
|
+
infer First extends Type,
|
|
65
|
+
...infer Rest extends Type[]
|
|
66
|
+
] ? Rest extends [] ? Omit<UnType<First>, OmitKey> : MergeAllTypes<Rest, OmitKey> & Omit<UnType<First>, OmitKey> : unknown;
|
|
67
|
+
export type MergeAllKeyOfTypes<T extends Type<{
|
|
68
|
+
[key: string]: any;
|
|
69
|
+
}>[], Key extends string> = T extends [
|
|
70
|
+
infer First extends Type,
|
|
71
|
+
...infer Rest extends Type[]
|
|
72
|
+
] ? Rest extends [] ? UnType<First>[Key] : MergeAllKeyOfTypes<Rest, Key> & UnType<First>[Key] : unknown;
|
|
73
|
+
export type Primitive = string | number | boolean | null | undefined;
|
|
74
|
+
export type NestedKeysWithAllowed<T, Allowed = Primitive> = T extends Primitive ? never : T extends any[] ? never : T extends (...args: any[]) => any ? never : {
|
|
75
|
+
[K in keyof T & string]: T[K] extends Allowed ? K : T[K] extends Dayjs ? never : T[K] extends {
|
|
76
|
+
[key: string]: any;
|
|
77
|
+
} ? K | `${K}.${NestedKeysWithAllowed<T[K], Allowed>}` : never;
|
|
78
|
+
}[keyof T & string];
|