UNPKG

@iota-big3/sdk-gateway

Version:

Universal API Gateway with protocol translation, intelligent routing, rate limiting, health checking, and caching

67 lines 2.91 kB
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