{"version":3,"file":"sseRequest.mjs","sources":["../../src/chat/sseRequest.ts"],"sourcesContent":["import { MessagePlugin } from 'tdesign-vue-next';\nimport { FetchSSEOptions, SSEEvent } from './type';\n\ninterface RequestParams {\n  url: string;\n  data: any;\n  success: (res: any) => void;\n  fail?: () => void;\n  complete?: (isOk: Boolean, msg?: String, requestid?: String) => void;\n  cancel?: (res: any) => void;\n  abort?: () => void;\n}\n/**\n * Sends a Server-Sent Events (SSE) request to the specified URL with the given data and callback function.\n * @param url - The URL to send the SSE request to.\n * @param data - The data to send with the SSE request.\n * @param callback - The function to call when the SSE response is received.\n * @returns void\n */\nexport async function sseRequest(params: RequestParams, apiKey?: string) {\n  const { url, data, complete, cancel, abort } = params;\n  const controller = new AbortController();\n  const { signal } = controller;\n  cancel?.(controller);\n  const tokenHeaders: any = {\n    'Content-Type': 'application/json',\n  };\n  tokenHeaders.Authorization = `Bearer${apiKey ? ` ${apiKey}` : ''}`;\n  const responsePromise = fetch(url, {\n    method: 'POST',\n    headers: tokenHeaders,\n    body: JSON.stringify(data),\n    signal: controller.signal,\n  }).catch((err) => {\n    // 捕获接口异常\n    const msg = err.toString() || '流式接口异常';\n    complete?.(false, msg);\n    return Promise.reject(err); // 确保错误能够被后续的.catch()捕获\n  });\n  fetchSSE(() => responsePromise, params);\n  signal.addEventListener('abort', () => {\n    try {\n      abort && abort();\n    } catch {}\n  });\n}\n\nexport const fetchSSE = async (fetchFn: () => Promise<Response>, options: FetchSSEOptions = {}) => {\n  const { success, fail, complete } = options;\n  const responsePromise = fetchFn().catch((e) => {\n    const msg = e.toString() || '流式接口异常';\n    complete?.(false, msg);\n    return Promise.reject(e); // 确保错误能够被后续的.catch()捕获\n  });\n\n  responsePromise\n    .then((response) => {\n      // 后端需要上报和告警接口的错误，把程序错误的http状态码定义为了500\n      if (response.status === 200 || response.status === 500) {\n        // ReadableStream解码为文本\n        const reader = response?.body?.getReader();\n        const decoder = new TextDecoder();\n        if (!reader) throw new Error('No reader available');\n        const bufferArr: string[] = [];\n        let dataText = ''; // 记录数据\n        const event: SSEEvent = { type: null, data: null };\n\n        async function processText({ done, value }: ReadableStreamReadResult<Uint8Array>): Promise<void> {\n          if (done) {\n            // 正常的返回\n            complete?.(true, '');\n            return Promise.resolve();\n          }\n          const chunk = decoder.decode(value, { stream: true });\n          const buffers = chunk.toString().split(/\\r?\\n/);\n          bufferArr.push(...buffers);\n          const i = 0;\n          while (i < bufferArr.length) {\n            const line = bufferArr[i];\n            if (line) {\n              dataText = dataText + line;\n              if (line.startsWith('event:')) {\n                // 是事件\n                event.type = dataText.slice(6).trim();\n                dataText = '';\n              } else if (\n                line.endsWith('\"finished\": false}') ||\n                line.endsWith('\"delta\": \"[EOS]\"}') ||\n                line.endsWith('\"finished\": true}') ||\n                line.endsWith('\"finished\":true}')\n              ) {\n                event.data = JSON.parse(dataText.slice(5).trim());\n                dataText = '';\n              }\n            }\n            if (event.type && event.data) {\n              const jsonData = JSON.parse(JSON.stringify(event));\n              success(jsonData);\n              if (response.status === 500) {\n                const { retmsg } = JSON.parse(jsonData.data.response);\n                MessagePlugin.error(retmsg);\n              }\n              event.type = null;\n              event.data = null;\n            }\n            bufferArr.splice(i, 1);\n          }\n          return reader.read().then(processText);\n        }\n        return reader.read().then(processText);\n      }\n      // 传入错误信息排查\n      complete?.(false, response.statusText || `暂无内容返回`);\n    })\n    .catch(() => {\n      // 处理整个链式调用过程中发生的任何错误\n      fail?.();\n    });\n};\n"],"names":["sseRequest","_x","_x2","_sseRequest","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee3","params","apiKey","url","data","complete","cancel","abort","controller","signal","tokenHeaders","responsePromise","wrap","_callee3$","_context3","prev","next","AbortController","Authorization","concat","fetch","method","headers","body","JSON","stringify","err","msg","toString","Promise","reject","fetchSSE","addEventListener","_unused","stop","_ref","_callee2","fetchFn","options","success","fail","_args2","_callee2$","_context2","length","undefined","e","then","response","status","_response$body","processText","_ref3","_callee","_ref2","done","value","chunk","buffers","i","line","jsonData","_JSON$parse","retmsg","_callee$","_context","abrupt","resolve","decoder","decode","stream","split","bufferArr","push","_toConsumableArray","dataText","startsWith","event","type","slice","trim","endsWith","parse","MessagePlugin","error","splice","reader","read","_x4","getReader","TextDecoder","Error","statusText","_x3"],"mappings":"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"}