UNPKG

@assassinonz/exzodus-client

Version:

Axios wrapper with end to end type safety

23 lines 1.21 kB
import { z } from "zod"; import type { Api, EndpointInputs, MethodByPath, Path } from "./index.js"; type MarkUndefinedableKeysAsOptional<T> = { [K in keyof T as undefined extends T[K] ? K : never]?: T[K]; } & { [K in keyof T as undefined extends T[K] ? never : K]: T[K]; }; type RmNever<T> = { [K in keyof T as T[K] extends never ? never : K]: T[K]; }; type AcceptedEndpointInputs<A extends Api, M extends MethodByPath<A, P>, P extends Path<A>> = { [K in keyof EndpointInputs<A, M, P>]: EndpointInputs<A, M, P>[K] extends z.ZodType ? z.input<EndpointInputs<A, M, P>[K]> : never; }; type ClientConfig<A extends Api, M extends MethodByPath<A, P>, P extends Path<A>> = MarkUndefinedableKeysAsOptional<RmNever<AcceptedEndpointInputs<A, M, P>>> & { header?: { "Authorization"?: string; "Content-Type"?: string; }; responseType?: "text" | "json" | "blob" | "arraybuffer" | "stream" | "document"; }; export type ConfigParam<A extends Api, M extends MethodByPath<A, P>, P extends Path<A>> = Partial<ClientConfig<A, M, P>> extends ClientConfig<A, M, P> ? [config?: ClientConfig<A, M, P>] : [config: ClientConfig<A, M, P>]; export {}; //# sourceMappingURL=client.d.ts.map