abaca-runtime
Advanced tools
+15
-14
| import { AsyncOrSync, Lookup } from './common.js'; | ||
| import { AllBodyMimeTypes, AllResponseMimeTypes, AllResponsesMatchingMimeType, BodiesMatchingMimeType, WithMimeTypeGlobs } from './mime-types.js'; | ||
| import { ContentFormat, MimeType, OperationTypes } from './operations.js'; | ||
| export interface SdkConfigFor<O extends OperationTypes<keyof O & string>, F extends BaseFetch = typeof fetch> { | ||
| export interface SdkConfigFor<O extends OperationTypes<keyof O & string>, F extends BaseFetch = BaseFetch> { | ||
| /** API server address. */ | ||
@@ -17,5 +16,5 @@ readonly address: Address; | ||
| /** Global request body encoders. */ | ||
| readonly encoders?: EncodersFor<O, F>; | ||
| readonly encoders?: Encoders<F>; | ||
| /** Global response decoders. */ | ||
| readonly decoders?: DecodersFor<O, F>; | ||
| readonly decoders?: Decoders<F>; | ||
| /** | ||
@@ -43,12 +42,14 @@ * Unexpected response coercion. The default will ignore bodies of responses | ||
| }; | ||
| blob(): Promise<Blob>; | ||
| json(): Promise<any>; | ||
| text(): Promise<string>; | ||
| } | ||
| export type BaseFetch = (url: string, init: BaseInit) => Promise<BaseResponse>; | ||
| export type FetchOption<F extends BaseFetch = typeof fetch> = (url: string, init: BaseInit<BodyInitFor<F>> & RequestOptions<F>) => Promise<ResponseFor<F>>; | ||
| export type BaseFetch = (url: string, init?: BaseInit) => Promise<BaseResponse>; | ||
| export type FetchOption<F extends BaseFetch = BaseFetch> = (url: string, init: BaseInit<BodyInitFor<F>> & RequestOptions<F>) => Promise<ResponseFor<F>>; | ||
| export type RequestOptions<F> = Omit<RequestInitFor<F>, 'body' | 'headers' | 'method'>; | ||
| type RequestInitFor<F> = F extends (url: any, init?: infer R) => any ? R : never; | ||
| export type EncodersFor<O extends OperationTypes, F extends BaseFetch> = { | ||
| readonly [K in WithMimeTypeGlobs<AllBodyMimeTypes<O>>]?: Encoder<BodiesMatchingMimeType<O, K>, F>; | ||
| }; | ||
| export type Encoder<B = any, F extends BaseFetch = typeof fetch> = (body: B, ctx: EncoderContext<F>) => AsyncOrSync<BodyInitFor<F>>; | ||
| export interface Encoders<F extends BaseFetch> { | ||
| readonly [mimeType: MimeType]: Encoder<F>; | ||
| } | ||
| export type Encoder<F extends BaseFetch = BaseFetch> = (body: unknown, ctx: EncoderContext<F>) => AsyncOrSync<BodyInitFor<F>>; | ||
| export type BodyInitFor<F> = Lookup<RequestInitFor<F>, 'body', unknown>; | ||
@@ -61,6 +62,6 @@ export interface EncoderContext<F> { | ||
| } | ||
| export type DecodersFor<O extends OperationTypes, F extends BaseFetch> = { | ||
| readonly [K in WithMimeTypeGlobs<AllResponseMimeTypes<O>>]?: Decoder<AllResponsesMatchingMimeType<O, K>, F>; | ||
| }; | ||
| export type Decoder<R = any, F extends BaseFetch = typeof fetch> = (res: ResponseFor<F>, ctx: DecoderContext<F>) => AsyncOrSync<R>; | ||
| export interface Decoders<F extends BaseFetch> { | ||
| readonly [mimeType: MimeType]: Decoder<F>; | ||
| } | ||
| export type Decoder<F extends BaseFetch = BaseFetch> = (res: ResponseFor<F>, ctx: DecoderContext<F>) => AsyncOrSync<unknown>; | ||
| export type ResponseFor<F> = F extends (url: any, init?: any) => Promise<infer R> ? R : never; | ||
@@ -67,0 +68,0 @@ export interface DecoderContext<F> { |
+1
-1
| { | ||
| "name": "abaca-runtime", | ||
| "version": "0.12.0", | ||
| "version": "0.13.0", | ||
| "repository": "github:opvious/abaca", | ||
@@ -5,0 +5,0 @@ "description": "Abaca runtime utilities", |
363
0.28%1
-80%25680
-1.15%