UNPKG

apiful

Version:
46 lines (39 loc) 2.49 kB
import { O as OpenAPIClient } from '../shared/apiful.Ccapjvp3.mjs'; export { F as FetchResponseData, a as FetchResponseError, b as FilterMethods, M as MethodOption, c as OpenAPIFetchOptions, P as ParamsOption, R as RequestBodyOption } from '../shared/apiful.Ccapjvp3.mjs'; import { FetchOptions, ResponseType, MappedResponseType, $Fetch } from 'ofetch'; import { OpenAPISchemaRepository } from 'apiful/schema'; import 'openapi-typescript-helpers'; type Fn<T = any> = (...args: any[]) => T; type HandlerExtension = Fn; type MethodsExtension = Record<string, unknown>; type ApiExtension = HandlerExtension | MethodsExtension; type HandlerExtensionBuilder = (client: ApiClient) => HandlerExtension; type MethodsExtensionBuilder = (client: ApiClient) => MethodsExtension; interface ApiClient<BaseURL extends string = string> extends Function { _handler: Fn; _extensions: Record<PropertyKey, unknown>; defaultOptions: FetchOptions; with: <Extension extends ApiExtension>(createExtension: (client: ApiClient<BaseURL>) => Extension) => this & Extension; } declare function createClient<const BaseURL extends string = '/'>(defaultOptions?: Omit<FetchOptions, 'baseURL'> & { baseURL?: BaseURL; }): ApiClient<BaseURL>; type ApiMethodHandler<Data = unknown> = <T = any, R extends ResponseType = 'json'>(data?: Data, opts?: Omit<FetchOptions<R>, 'baseURL' | 'method'>) => Promise<MappedResponseType<R, T>>; type ApiRouter = { (...args: (string | number)[]): ApiRouter; [key: string]: ApiRouter; } & { get: ApiMethodHandler<FetchOptions['query']>; post: ApiMethodHandler<FetchOptions['body']>; put: ApiMethodHandler<FetchOptions['body']>; delete: ApiMethodHandler<FetchOptions['body']>; patch: ApiMethodHandler<FetchOptions['body']>; }; declare function apiRouterBuilder(): (client: ApiClient) => ApiRouter; interface OFetchClient extends $Fetch { } declare function ofetchBuilder(): (client: ApiClient) => OFetchClient; type ExtractPaths<K> = K extends keyof OpenAPISchemaRepository ? OpenAPISchemaRepository[K] : Record<string, never>; declare function OpenAPIBuilder<const Schema extends string, Paths = ExtractPaths<Schema>>(): (client: ApiClient) => OpenAPIClient<Paths>; export { OpenAPIBuilder, OpenAPIClient, apiRouterBuilder, createClient as d, ofetchBuilder }; export type { ApiExtension as A, ApiRouter, HandlerExtension as H, MethodsExtension as M, OFetchClient, HandlerExtensionBuilder as a, MethodsExtensionBuilder as b, ApiClient as c };