UNPKG

@ffsm/napi

Version:

Napi - A framework using with Next.js for building APIs.

7 lines (6 loc) 649 B
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>>;