UNPKG

@elysiajs/eden

Version:

Fully type-safe Elysia client

49 lines (45 loc) 2.12 kB
import { Elysia } from 'elysia'; import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-C41kuZ-K.mjs'; declare namespace EdenFetch { type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends { _routes: infer Schema extends Record<string, unknown>; } ? EdenFetch.Fn<TreatyToPath<Schema>> : 'Please install Elysia before using Eden'; interface Config extends RequestInit { fetcher?: typeof globalThis.fetch; } type Fn<Schema extends Record<string, any>> = <Endpoint extends keyof Schema, Method extends Uppercase<Extract<keyof Schema[Endpoint], string>>, Route extends Schema[Endpoint][Lowercase<Method>]>(endpoint: Endpoint, options: Omit<RequestInit, 'body' | 'method' | 'headers'> & ('GET' extends Method ? { method?: Method; } : { method: Method; }) & (IsNever<keyof Route['params']> extends true ? { params?: Record<never, string>; } : { params: Route['params']; }) & (IsNever<keyof Route['query']> extends true ? { query?: Record<never, string>; } : { query: Route['query']; }) & (undefined extends Route['headers'] ? { headers?: Record<string, string>; } : { headers: Route['headers']; }) & (IsUnknown<Route['body']> extends false ? { body: Route['body']; } : { body?: unknown; })) => Promise<Prettify<{ data: Awaited<Route['response'][200]>; error: null; status: number; headers: Record<string, unknown>; retry(): Promise<void>; } | { data: null; error: MapError<Route['response']> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string>; status: number; headers: Record<string, unknown>; retry(): Promise<void>; }>>; } declare const edenFetch: <App extends Elysia<any, any, any, any, any, any, any>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>; export { EdenFetch, edenFetch };