@ffsm/napi
Version:
Napi - A framework using with Next.js for building APIs.
7 lines (6 loc) • 649 B
TypeScript
export type ArrayParams<T = unknown> = T extends Array<infer U> ? U[] : unknown[];
export type MaybeAsyncFunction<Params extends ArrayParams, Result> = (...args: Params) => Result | Promise<Result>;
export type EachItem<T, R = unknown> = T extends MaybeAsyncFunction<infer Params, R> ? [fn: T, params: Params] | [data: R] : [unknown];
export type SyncParams<T> = T extends Array<EachItem<infer U>> ? Array<EachItem<U>> : Array<unknown>;
export type SyncResult<T extends Array<unknown>> = T extends Array<EachItem<unknown, infer R>> ? R[] : [];
export declare function sync<T extends Array<unknown>>(...items: SyncParams<T>): Promise<SyncResult<T>>;