UNPKG

masto

Version:

Mastodon API client for JavaScript, TypeScript, Node.js, browsers

19 lines (18 loc) 1.09 kB
import { type HttpMetaParams, type HttpResponse } from "../interfaces/http.js"; import { type Paginator } from "./paginator.js"; type IsOptional<T, TTrue, TFalse> = {} extends T ? TTrue : T extends undefined ? TTrue : TFalse; type WrapInPromiseIfNotPaginator<T> = T extends Paginator<unknown> ? T : Promise<T>; type DefaultMethod<TResult, TParams, TMeta extends HttpMetaParams<any>> = IsOptional<TParams, { (params?: TParams, meta?: TMeta): WrapInPromiseIfNotPaginator<TResult>; }, { (params: TParams, meta?: TMeta): WrapInPromiseIfNotPaginator<TResult>; }>; type Raw<T> = T extends Paginator<infer R> ? Paginator<HttpResponse<R>> : Promise<HttpResponse<T>>; /** @experimental */ type RawMethod<TResult, TParams, TMeta extends HttpMetaParams<any>> = IsOptional<TParams, { $raw(params?: TParams, meta?: TMeta): Raw<TResult>; }, { $raw(params: TParams, meta?: TMeta): Raw<TResult>; }>; export type Method<TResult, TParams = undefined, TMeta extends HttpMetaParams<any> = HttpMetaParams> = DefaultMethod<TResult, TParams, TMeta> & RawMethod<TResult, TParams, TMeta>; export {};