ant-design-x-vue-next
Version:
Ant Design X for Vue — community continuation aligned with @ant-design/x
74 lines (73 loc) • 3.36 kB
TypeScript
import type { AnyObject } from '../_util/type';
import type { SSEOutput, XStreamOptions } from '../x-stream';
import type { XFetchMiddlewares, XFetchOptions } from './x-fetch';
type SimpleType = string | number | boolean | object;
/**
* SDK-style callbacks (aligned with @ant-design/x-sdk).
* Headers are optional for backward-friendly hosts.
*/
export interface ManualXRequestCallbacks<Output, ChatMessage extends SimpleType = any> {
onSuccess: (chunks: Output[], responseHeaders: Headers, chatMessage?: any) => void;
onError: (error: Error, errorInfo?: any, responseHeaders?: Headers, fallbackMsg?: any) => void | number;
onUpdate?: (chunk: Output, responseHeaders: Headers, chatMessage?: any) => void;
}
export interface ManualXRequestOptions<Input = AnyObject, Output = SSEOutput, ChatMessage extends SimpleType = any> {
callbacks?: ManualXRequestCallbacks<Output, ChatMessage>;
params?: Partial<Input>;
headers?: Record<string, string>;
timeout?: number;
streamTimeout?: number;
fetch?: XFetchOptions['fetch'];
middlewares?: XFetchMiddlewares;
transformStream?: XStreamOptions<Output>['transformStream'];
streamSeparator?: string;
partSeparator?: string;
kvSeparator?: string;
/** Must be true for provider-owned requests */
manual?: boolean;
retryInterval?: number;
retryTimes?: number;
model?: string;
dangerouslyApiKey?: string;
}
export declare abstract class AbstractXRequestClass<Input = AnyObject, Output = SSEOutput, ChatMessage extends SimpleType = any> {
baseURL: string;
options: ManualXRequestOptions<Input, Output, ChatMessage>;
constructor(baseURL: string, options?: ManualXRequestOptions<Input, Output, ChatMessage>);
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): boolean;
abstract abort(): void;
}
/**
* Manual XRequest instance for AbstractChatProvider (aligned with @ant-design/x-sdk XRequest(baseURL, { manual: true })).
* Reuses the legacy Vue XRequest.create engine under the hood.
*/
export declare class ManualXRequestClass<Input = AnyObject, Output = SSEOutput, ChatMessage extends SimpleType = any> extends AbstractXRequestClass<Input, Output, ChatMessage> {
private _asyncHandler;
private _manual;
private lastHeaders;
private legacy;
constructor(baseURL: string, options?: ManualXRequestOptions<Input, Output, ChatMessage>);
get asyncHandler(): Promise<any>;
get isTimeout(): boolean;
get isStreamTimeout(): boolean;
get isRequesting(): boolean;
get manual(): boolean;
run(params?: Input): boolean;
abort(): void;
}
/**
* Create a manual SDK-style XRequest (use with AbstractChatProvider).
*
* @example
* ```ts
* const request = createManualXRequest('/api/chat', { manual: true, params: { model: 'gpt-4o-mini' } });
* const provider = new OpenAIChatProvider({ request });
* ```
*/
export declare function createManualXRequest<Input = AnyObject, Output = SSEOutput, ChatMessage extends SimpleType = any>(baseURL: string, options?: ManualXRequestOptions<Input, Output, ChatMessage>): AbstractXRequestClass<Input, Output, ChatMessage>;
export default createManualXRequest;