UNPKG

@ant-design/pro-chat

Version:
152 lines (151 loc) 5.65 kB
import _typeof from "@babel/runtime/helpers/esm/typeof"; import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime"; import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; export var getMessageError = /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(response) { var chatMessageError; return _regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: chatMessageError = { message: "response error, status: ".concat(response.statusText), type: response.status }; return _context.abrupt("return", chatMessageError); case 2: case "end": return _context.stop(); } }, _callee); })); return function getMessageError(_x) { return _ref.apply(this, arguments); }; }(); /** * 使用流式方法获取数据 * @param fetchFn * @param options */ export var fetchSSE = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(fetchFn) { var options, response, _options$onCancel, returnRes, realResponse, _options$onErrorHandl, chatMessageError, data, reader, decoder, done, _options$signal, _options$onFinish, _yield$reader$read, value, doneReading, _options$onMessageHan, chunkValue, _options$onFinish2, _options$onErrorHandl2, _args2 = arguments; return _regeneratorRuntime().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: options = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {}; _context2.next = 3; return fetchFn(); case 3: response = _context2.sent; if (response) { _context2.next = 7; break; } (_options$onCancel = options.onCancel) === null || _options$onCancel === void 0 || _options$onCancel.call(options); return _context2.abrupt("return"); case 7: returnRes = null; realResponse = null; if (_typeof(response) === 'object' && 'content' in response) { returnRes = response === null || response === void 0 ? void 0 : response.content.clone(); realResponse = response === null || response === void 0 ? void 0 : response.content; } else if (typeof response === 'string') { returnRes = new Response(response); realResponse = returnRes; } else { returnRes = response === null || response === void 0 ? void 0 : response.clone(); realResponse = response; } // 如果不 ok 说明有请求错误 if (realResponse.ok) { _context2.next = 16; break; } _context2.next = 13; return getMessageError(realResponse); case 13: chatMessageError = _context2.sent; (_options$onErrorHandl = options.onErrorHandle) === null || _options$onErrorHandl === void 0 || _options$onErrorHandl.call(options, chatMessageError); return _context2.abrupt("return"); case 16: data = realResponse.body; if (data) { _context2.next = 19; break; } return _context2.abrupt("return"); case 19: reader = data.getReader(); decoder = new TextDecoder(); done = false; _context2.prev = 22; case 23: if (done) { _context2.next = 37; break; } if (!((_options$signal = options.signal) !== null && _options$signal !== void 0 && _options$signal.aborted)) { _context2.next = 27; break; } (_options$onFinish = options.onFinish) === null || _options$onFinish === void 0 || _options$onFinish.call(options, 'abort'); return _context2.abrupt("break", 37); case 27: _context2.next = 29; return reader.read(); case 29: _yield$reader$read = _context2.sent; value = _yield$reader$read.value; doneReading = _yield$reader$read.done; done = doneReading; if (value) { chunkValue = decoder.decode(value, { stream: !doneReading }); (_options$onMessageHan = options.onMessageHandle) === null || _options$onMessageHan === void 0 || _options$onMessageHan.call(options, chunkValue, response); } if (done) { (_options$onFinish2 = options.onFinish) === null || _options$onFinish2 === void 0 || _options$onFinish2.call(options, 'done'); // Call onFinish when all data is read. } _context2.next = 23; break; case 37: _context2.next = 42; break; case 39: _context2.prev = 39; _context2.t0 = _context2["catch"](22); (_options$onErrorHandl2 = options.onErrorHandle) === null || _options$onErrorHandl2 === void 0 || _options$onErrorHandl2.call(options, _context2.t0); // Handle errors that occur during the reading process. case 42: return _context2.abrupt("return", returnRes); case 43: case "end": return _context2.stop(); } }, _callee2, null, [[22, 39]]); })); return function fetchSSE(_x2) { return _ref2.apply(this, arguments); }; }();