UNPKG

@ant-design/x-sdk

Version:

placeholder for @ant-design/x-sdk

44 lines (43 loc) 1.99 kB
import { AnyObject } from '../../_util/type'; import { AbstractXRequestClass, XRequestOptions } from '../../x-request'; import { MessageStatus } from '..'; export interface ChatProviderConfig<Input, Output> extends AnyObject { request: AbstractXRequestClass<Input, Output> | (() => AbstractXRequestClass<Input, Output>); } export interface TransformMessage<ChatMessage, Output> { originMessage?: ChatMessage; chunk: Output; chunks: Output[]; status: MessageStatus; responseHeaders: Headers; } export default abstract class AbstractChatProvider<ChatMessage, Input, Output> { private _request; private _getMessagesFn; private _originalCallbacks?; get request(): AbstractXRequestClass<Input, Output>; constructor(config: ChatProviderConfig<Input, Output>); /** * 转换onRequest传入的参数,你可以和Provider实例化时request配置中的params进行合并或者额外处理 * @param requestParams 请求参数 * @param options 请求配置,从Provider实例化时request配置中来 */ abstract transformParams(requestParams: Partial<Input>, options: XRequestOptions<Input, Output>): Input; /** * 将onRequest传入的参数转换为本地(用户发送)的ChatMessage,用于消息渲染 * @param requestParams onRequest传入的参数 */ abstract transformLocalMessage(requestParams: Partial<Input>): ChatMessage | ChatMessage[]; /** * 可在更新返回数据时对messages做转换,同时会更新到messages * @param info */ abstract transformMessage(info: TransformMessage<ChatMessage, Output>): ChatMessage; getMessages(): ChatMessage[]; injectGetMessages(getMessages: () => ChatMessage[]): void; injectRequest({ onUpdate, onSuccess, onError, }: { onUpdate: (data: Output, responseHeaders: Headers) => void; onSuccess: (data: Output[], responseHeaders: Headers) => void; onError: (error: any) => void; }): void; }