UNPKG

@ant-design/x-sdk

Version:

placeholder for @ant-design/x-sdk

104 lines (103 loc) 4.06 kB
import type { AnyObject } from '../_util/type'; import type { SSEOutput, XStreamOptions } from '../x-stream'; import type { XFetchMiddlewares } from './x-fetch'; export interface XRequestCallbacks<Output> { /** * @description Callback when the request is successful */ onSuccess: (chunks: Output[], responseHeaders: Headers) => void; /** * @description Callback when the request fails */ onError: (error: Error) => void; /** * @description Callback when the request is updated */ onUpdate?: (chunk: Output, responseHeaders: Headers) => void; } export interface XRequestOptions<Input = AnyObject, Output = SSEOutput> extends RequestInit { /** * @description Callbacks for the request */ callbacks?: XRequestCallbacks<Output>; /** * @description The parameters to be sent */ params?: Input; /** * @description The custom headers to be sent */ headers?: Record<string, string>; /** * @description The timeout for the request */ timeout?: number; /** * @description The timeout for the stream mode request,when the stream mode request is timeout, the request will be aborted */ streamTimeout?: number; /** * @description Custom fetch */ fetch?: (baseURL: Parameters<typeof fetch>[0], options: XRequestOptions<Input, Output>) => Promise<Response>; /** * @description Middlewares for the request and response */ middlewares?: XFetchMiddlewares<Input, Output>; /** * @description Custom stream transformer, can use to adapt the stream data to the custom format */ transformStream?: XStreamOptions<Output>['transformStream'] | ((baseURL: string, responseHeaders: Headers) => XStreamOptions<Output>['transformStream']); /** * @description Whether to manually run the request */ manual?: boolean; } export type XRequestGlobalOptions<Input, Output> = Pick<XRequestOptions<Input, Output>, 'headers' | 'timeout' | 'streamTimeout' | 'middlewares' | 'fetch' | 'transformStream' | 'manual'>; export type XRequestFunction<Input = AnyObject, Output = SSEOutput> = (baseURL: string, options?: XRequestOptions<Input, Output>) => XRequestClass<Input, Output>; /** * Set global options for the request * @param options XRequestGlobalOptions<Input, Output> */ export declare function setXRequestGlobalOptions<Input, Output>(options: XRequestGlobalOptions<Input, Output>): void; export declare abstract class AbstractXRequestClass<Input, Output> { baseURL: string; options: XRequestOptions<Input, Output>; constructor(baseURL: string, options?: XRequestOptions<Input, Output>); abstract get asyncHandler(): Promise<any>; abstract get isTimeout(): boolean; abstract get isStreamTimeout(): boolean; abstract get isRequesting(): boolean; abstract get manual(): boolean; abstract run(params?: Input): void; abstract abort(): void; } export declare class XRequestClass<Input = AnyObject, Output = SSEOutput> extends AbstractXRequestClass<Input, Output> { private _asyncHandler; private timeoutHandler; private _isTimeout; private streamTimeoutHandler; private _isStreamTimeout; private abortController; private _isRequesting; private _manual; get asyncHandler(): Promise<any>; get isTimeout(): boolean; private set isTimeout(value); get isStreamTimeout(): boolean; private set isStreamTimeout(value); get isRequesting(): boolean; get manual(): boolean; constructor(baseURL: string, options?: XRequestOptions<Input, Output>); run(params?: Input): void; abort(): void; private init; private startRequest; private finishRequest; private customResponseHandler; private sseResponseHandler; private processStream; private jsonResponseHandler; } declare function XRequest<Input = AnyObject, Output = SSEOutput>(baseURL: string, options?: XRequestOptions<Input, Output>): AbstractXRequestClass<Input, Output>; export default XRequest;