@akanjs/base 0.9.42 → 0.9.43

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/package.json +1 -1
  2. package/src/types.d.ts +23 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/base",
3
- "version": "0.9.42",
3
+ "version": "0.9.43",
4
4
  "sourceType": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
package/src/types.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export type { SshOptions } from "tunnel-ssh";
2
2
  export type Type<T = any> = new (...args: any[]) => T;
3
3
  export type BufferLike = string | Buffer | DataView | number | ArrayBufferView | Uint8Array | ArrayBuffer | SharedArrayBuffer | readonly any[] | readonly number[];
4
- export type GetObject<T> = Omit<{
5
- [K in keyof T]: T[K];
6
- }, "prototype">;
7
- export type OptionOf<Obj> = {
8
- [K in keyof Obj]?: Obj[K] | null;
4
+ export type GetObject<T> = {
5
+ [K in keyof T as K extends "prototype" ? never : K]: T[K];
9
6
  };
7
+ export type OptionOf<Obj> = Partial<{
8
+ [K in keyof Obj]: Obj[K] | null;
9
+ }>;
10
10
  export type UnType<T> = T extends new (...args: any) => infer U ? U : never;
11
11
  export interface GraphQLUpload {
12
12
  name: string;
@@ -41,3 +41,21 @@ export interface GraphQLJSON<TInternal = unknown, TExternal = TInternal> {
41
41
  export type Prettify<T> = {
42
42
  [K in keyof T]: T[K];
43
43
  } & {};
44
+ export type PromiseOrObject<T> = T | Promise<T>;
45
+ type MergeObjectValues<T> = T extends Record<string, infer V> ? (V extends Record<string, any> ? V : never) : never;
46
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
47
+ export type MergedValues<T> = UnionToIntersection<MergeObjectValues<T>>;
48
+ export type MergeAll<T extends Record<string, any>[]> = T extends [
49
+ infer First extends Record<string, any>,
50
+ ...infer Rest extends Record<string, any>[]
51
+ ] ? Rest extends [] ? First : MergeAll<Rest> & First : never;
52
+ export type MergeAllTypes<T extends Type[], OmitKey extends string = never> = T extends [
53
+ infer First extends Type,
54
+ ...infer Rest extends Type[]
55
+ ] ? Rest extends [] ? Omit<UnType<First>, OmitKey> : MergeAllTypes<Rest, OmitKey> & Omit<UnType<First>, OmitKey> : never;
56
+ export type MergeAllKeyOfTypes<T extends Type<{
57
+ [key: string]: any;
58
+ }>[], Key extends string> = T extends [
59
+ infer First extends Type,
60
+ ...infer Rest extends Type[]
61
+ ] ? Rest extends [] ? UnType<First>[Key] : MergeAllKeyOfTypes<Rest, Key> & UnType<First>[Key] : never;