@ant-design/x-sdk
Version:
placeholder for @ant-design/x-sdk
104 lines (103 loc) • 4.06 kB
TypeScript
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;