UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

129 lines (128 loc) 4.34 kB
import type { RequestParams, Success, Fail } from './types'; /** * 解析 H5 环境下的 SSE 数据流 * @param {Object} params - 参数对象 * @param {Function} params.success - 成功回调函数 * @param {Function} params.fail - 失败回调函数 * @param {Function} params.complete - 完成回调函数 * @param {Response} params.response - 响应对象 * @returns {Promise} 返回一个 Promise,处理 SSE 数据流 */ export declare const parseSSEChunkInH5: ({ success, fail, complete, response, }: { success: RequestParams['success']; fail: RequestParams['fail']; complete: RequestParams['complete']; response: Response; }) => Promise<void>; /** * 在 H5 环境下发起 SSE 请求的核心函数 * @param {Object} params - 参数对象 * @param {string} params.url - 请求 URL * @param {any} params.data - 请求数据 * @param {Function} params.success - 成功回调函数 * @param {Function} params.fail - 失败回调函数 * @param {Function} params.complete - 完成回调函数 * @returns {Promise} 返回一个 Promise,包含响应对象 */ export declare function fetchSSECoreInH5({ url, data, success, fail, complete, }: Pick<RequestParams, 'url' | 'data' | 'success' | 'fail' | 'complete'>): Promise<unknown>; /** * 解析 MP 环境下的 SSE 数据块 * @param {Object} params - 参数对象 * @param {string} params.chunk - 数据块 * @param {Fail} [params.fail] - 失败回调函数 * @param {Success} [params.success] - 成功回调函数 */ export declare const parseSSEChunkInMP: ({ chunk, fail, success, }: { chunk: string; fail?: Fail | undefined; success?: Success | undefined; }) => void; /** * 在 MP 环境下发起 SSE 请求的核心函数 * @param {RequestParams} params - 请求参数 * @returns {Promise} 返回一个 Promise,包含请求任务对象 */ export declare function fetchSSECoreInMP({ url, data, success, fail, complete, isTestEnv, }: RequestParams): Promise<unknown>; /** * 发起 SSE 请求的核心函数,根据环境自动选择 H5 或 MP 实现 * @param {RequestParams} params - 请求参数 * @param {string} params.url - 请求地址 * @param {Object} params.data - 请求数据 * @param {Function} params.success - 成功回调 * @param {Function} params.fail - 失败回调 * @param {Function} params.complete - 完成回调 * @returns {Promise} 返回一个 Promise,包含请求任务或响应对象 * @example * ```ts * import { isTestEnv } from '@tencent/pmd-tools/lib/env'; * import { cookie } from '@tencent/pmd-tools/lib/storage'; * import { safeJsonParse } from 't-comm/es/json'; * * import { fetchSSECore, type RequestParams } from 't-comm/es/sse'; * * // 检查是否结束,业务自定义 * function checkFinish(str) { * const data: any = safeJsonParse(str); * return data?.status === 3; * } * * // 业务二次封装,把自己的请求数据、自定义的处理数据的逻辑放进去 * export function sendChatMessage({ * input, * sessionId, * extraInfo, * expectedOp, * * success, * fail, * complete, * }: { * input: string; * sessionId?: string; * extraInfo?: string; * expectedOp?: Record<string, any>; * * success?: (data: any) => void; * fail?: RequestParams['fail']; * complete?: RequestParams['complete']; * }) { * const origin = isTestEnv() ? 'https://xx.com' : 'https://xx.com'; * const url = `${origin}/xx.xx.xx.xx/xx?g_app_tk=${cookie.get('tip_token')}&tstamp=${Date.now()}`; * const reqData = { * input, * session_id: sessionId, * extra_info: extraInfo, * expected_op: expectedOp, * }; * * const parsedSuccess = (str, fullStr) => { * const data: any = safeJsonParse(str); * const fullData: any = safeJsonParse(fullStr); * * if (checkFinish(str)) { * complete?.(str); * return; * } * * // 检查是否失败,业务自定义 * if (fullData?.err_msg) { * fail?.(data); * return; * } * * success?.(data); * }; * * return fetchSSECore({ * url, * data: reqData, * success: parsedSuccess, * fail, * complete, * isTestEnv, * }); * } * * ``` */ export declare function fetchSSECore({ url, data, success, fail, complete, isTestEnv, }: RequestParams): Promise<unknown>;