@tsailab/xai
Version:
The loto-xai is an openai nodejs sdk compatible extension library.
106 lines (105 loc) • 2.95 kB
TypeScript
import { SseMessageChunkData } from '../../chat/sse-types';
import { SseCallbackFn, SseEventType, StreamablePrepareCallback, XaiStreamableOptions, XaiStreamableRequestData } from './streamable.types';
/**
*
*/
export declare class XaiSseFetch {
private checkAuth;
protected debug: boolean;
protected eventDataParsed: boolean;
private method;
protected controller?: AbortController;
private apiPrefix;
private readonly apiPath;
protected headers: {
[k: string]: any;
};
private fetchInprogress;
private reqCached;
private eventListeners;
private sseCaches;
constructor(apiPath: string, options: XaiStreamableOptions);
get url(): string;
/**
* request id
*/
get reqid(): string;
get msgid(): string;
get inprogress(): boolean;
get error(): string | undefined;
get result(): string;
protected log(data: any, type?: 'error' | 'warn' | 'log', prefix?: string): void;
/**
* @public
* launch fetch request
* @param data request data
* @param cb prepare request parametes callback
* @returns XaiStreamFetch instance
*/
connect<D extends XaiStreamableRequestData = XaiStreamableRequestData>(data: D, cb?: StreamablePrepareCallback): Promise<XaiSseFetch>;
/**
* disconnect
*/
disconnect(): void;
cancel(): void;
protected dispatchEvent<T = any>(eventName: SseEventType, data: T): void;
/**
* when abort on completed will emit close
* @param _ev
*/
protected abortEventHandler(_ev: Event): void;
/**
* regist event
* @param eventName
* @param handler
*/
addListener(eventName: SseEventType, handler: SseCallbackFn): this;
/**
*
* @param eventName
* @param handler
* @returns
*/
removeListener(eventName: SseEventType, handler: SseCallbackFn): XaiSseFetch;
/**
* @private
* init request cache & put reqid into header
*
* @param data
* front request Data if reqid or msgid is null
* will auto created and fill to data
*/
private createRequestCache;
/**
* before call sse reset repsonse cache
*/
private resetPrepareCaches;
private updateSomeSseCahces;
/**
* merge headers and check Authorization token
* @param requestHeaders
* @returns headers
*/
private prepareHeaders;
private setHeaderReqid;
/**
*
* @param some
*/
private updateSomeRequestCache;
private resetReqCache;
/**
*
* @param options
*/
private _registListeners;
private pushMessageCache;
private appendResult;
private setQuestion;
/**
* @private
*
* @returns function onLine(arr:Uint8Array,fieldLength:number)=>void
*/
protected _parseChunkMessage<C extends SseMessageChunkData = SseMessageChunkData>(): (line: Uint8Array, fieldLength: number) => void;
}