@iota-big3/sdk-gateway
Version:
Universal API Gateway with protocol translation, intelligent routing, rate limiting, health checking, and caching
67 lines • 2.91 kB
TypeScript
export type DeepPartial<T> = T extends object ? {
[P in keyof T]?: DeepPartial<T[P]>;
} : T;
export type DeepRequired<T> = T extends object ? {
[P in keyof T]-?: DeepRequired<T[P]>;
} : T;
export type DeepReadonly<T> = T extends object ? {
readonly [P in keyof T]: DeepReadonly<T[P]>;
} : T;
export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
export type RequireKeys<T, K extends keyof T> = T & Required<Pick<T, K>>;
export type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
export type NonNullableFields<T> = {
[P in keyof T]: NonNullable<T[P]>;
};
export interface TypeGuard<T> {
(value: unknown): value is T;
}
export type PromiseValue<T> = T extends Promise<infer U> ? U : T;
export type AsyncReturnType<T extends (...args: unknown[]) => Promise<unknown>> = T extends (...args: unknown[]) => Promise<infer R> ? R : never;
export type ArgumentTypes<F extends (...args: unknown[]) => unknown> = F extends (...args: infer A) => unknown ? A : never;
export type ReturnType<F extends (...args: unknown[]) => unknown> = F extends (...args: unknown[]) => infer R ? R : never;
export type Mutable<T> = {
-readonly [P in keyof T]: T[P];
};
export type ValueOf<T> = T[keyof T];
export type Split<S extends string, D extends string> = string extends S ? string[] : S extends '' ? [] : S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] : [
S
];
export type Join<T extends string[], D extends string> = T extends [] ? '' : T extends [string] ? T[0] : T extends [string, ...infer U] ? U extends string[] ? `${T[0]}${D}${Join<U, D>}` : never : never;
export type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
export type Brand<K, T> = K & {
__brand: T;
};
export type UUID = Brand<string, 'UUID'>;
export type Email = Brand<string, 'Email'>;
export type URL = Brand<string, 'URL'>;
export type Timestamp = Brand<number, 'Timestamp'>;
export type Result<T, E = Error> = {
success: true;
data: T;
} | {
success: false;
error: E;
};
export type Maybe<T> = T | null | undefined;
export type Some<T> = NonNullable<T>;
export type Head<T extends readonly unknown[]> = T extends readonly [infer H, ...unknown[]] ? H : never;
export type Tail<T extends readonly unknown[]> = T extends readonly [unknown, ...infer R] ? R : [];
export type Length<T extends readonly unknown[]> = T['length'];
export type ValidateShape<T, Shape> = T extends Shape ? T : never;
export interface ApiResponse<T = unknown> {
data?: T;
error?: ApiError;
meta?: ResponseMeta;
}
export interface ApiError {
code: string;
message: string;
details?: unknown;
}
export interface ResponseMeta {
timestamp: number;
version: string;
requestId: string;
}
//# sourceMappingURL=utilities.d.ts.map