@artmate/chat
Version:
**开箱即用的AI组件库(基于 Vue3 + ElementPlus)**
69 lines (68 loc) • 2.81 kB
TypeScript
export interface UseSendProps {
onAbort?: () => void;
sendHandler?: (...args: any[]) => void;
abortHandler?: () => void;
finishHandler?: () => void;
}
type OnError = (eventSource: EventSource, event: Event) => void;
type BaseFetchOptions = Omit<RequestInit, 'headers' | 'signal'> & {
headers?: HeadersInit | Headers;
};
type Transformer<T> = (message: string) => T;
interface BaseSSEProps<T = string> {
baseURL?: string;
type?: SSEType;
onFinish?: (data: T[]) => void;
onAbort?: (data: T[]) => void;
transformer?: Transformer<T>;
onMessage?: (message: T) => void;
}
interface SSEWithFetchProps {
baseOptions?: BaseFetchOptions;
onError?: (e: unknown) => void;
}
interface SSEWithSSEProps {
baseOptions?: EventSourceInit;
onError?: OnError;
onOpen?: () => void;
}
type SSEType = 'fetch' | 'sse' | 'sip';
export type SSEProps<T> = BaseSSEProps<T> & (SSEWithSSEProps | SSEWithFetchProps);
export declare class XRequest<T> {
#private;
constructor({ baseURL, onAbort, onMessage, onError, baseOptions, transformer, type, onFinish, ...props }?: SSEProps<T>);
send(url: string, options?: EventSourceInit | BaseFetchOptions): this;
abort(): void;
}
/**
* @description 一个用于处理发送操作管理请求状态的实用函数,支持可选的中止功能,同时支持 Promise 和 SSE(服务端事件)。
*
* @type {@link WithAbortProps}
* @property {(signal: AbortSignal) => Promise<any>} promise - 一个返回 Promise 的函数,接受一个用于取消的 `AbortSignal`。
*
* @type {@link WithSSEProps}
* @property {EventSource} eventSource - 用于处理服务器发送事件的“EventSource”实例。
*
* @type {@link UseSendProps}
* @property {WithAbortProps | WithSSEProps} props - "WithAbortProps" 或 "WithSSEProps",具体取决于使用情况。
* @property {() => void} [onAbort] - 可选的回调函数,在操作被中止时触发。
* @property {(...args: any[]) => void} [sendHandler] - 可选的处理函数,在发送开始前调用。
*
* @param {UseSendProps} props - `useSend` 函数的配置选项。
*
* @returns 返回一个包含实用方法和状态的对象。
*
* @property {Ref<boolean>} loading - 一个响应式引用,指示是否正在执行发送操作。
*
*
* @property {() => void} abort - 一个用于中止当前操作的函数,可以中止 Promise 或关闭 EventSource。
*
* @property {(...args: any[]) => void} send - 一个用于启动发送操作的函数,如果提供了 `sendHandler` 则会调用。
*/
export declare function useSend({ onAbort, sendHandler, abortHandler }?: UseSendProps): {
loading: import('vue').Ref<boolean, boolean>;
abort: () => void;
send: (...args: any[]) => void;
finish: () => void;
};
export {};