From fb1c92de1242d777c5bef21947b7594c7b494a34 Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 21 Nov 2023 20:17:51 +0800 Subject: [PATCH] fix: safari can not in --- web/global.d.ts | 4 +--- web/package.json | 1 - web/service/base.ts | 8 +------- web/utils/stream.ts | 21 --------------------- 4 files changed, 2 insertions(+), 32 deletions(-) delete mode 100644 web/utils/stream.ts diff --git a/web/global.d.ts b/web/global.d.ts index f5e596c752e7f8..b81cdddc77b562 100644 --- a/web/global.d.ts +++ b/web/global.d.ts @@ -1,5 +1,3 @@ declare module 'lamejs'; declare module 'react-18-input-autosize'; -declare module 'fetch-readablestream' { - export default function fetchReadableStream(url: string, options?: RequestInit): Promise -} + diff --git a/web/package.json b/web/package.json index 432d6313688e96..f6c33231d99e8d 100644 --- a/web/package.json +++ b/web/package.json @@ -36,7 +36,6 @@ "echarts": "^5.4.1", "echarts-for-react": "^3.0.2", "emoji-mart": "^5.5.2", - "fetch-readablestream": "^0.2.0", "i18next": "^22.4.13", "i18next-resources-to-backend": "^1.1.3", "immer": "^9.0.19", diff --git a/web/service/base.ts b/web/service/base.ts index 26fbf8c42a0b40..0c07602cb934af 100644 --- a/web/service/base.ts +++ b/web/service/base.ts @@ -1,11 +1,8 @@ -import fetchStream from 'fetch-readablestream' import { API_PREFIX, IS_CE_EDITION, PUBLIC_API_PREFIX } from '@/config' import Toast from '@/app/components/base/toast' import type { MessageEnd, MessageReplace, ThoughtItem } from '@/app/components/app/chat/type' -import { isSupportNativeFetchStream } from '@/utils/stream' const TIME_OUT = 100000 -const supportNativeFetchStream = isSupportNativeFetchStream() const ContentType = { json: 'application/json', @@ -223,9 +220,6 @@ const baseFetch = ( if (body && bodyStringify) options.body = JSON.stringify(body) - // for those do not support native fetch stream, we use fetch-readablestream as polyfill - const doFetch = supportNativeFetchStream ? globalThis.fetch : fetchStream - // Handle timeout return Promise.race([ new Promise((resolve, reject) => { @@ -234,7 +228,7 @@ const baseFetch = ( }, TIME_OUT) }), new Promise((resolve, reject) => { - doFetch(urlWithPrefix, options as RequestInit) + globalThis.fetch(urlWithPrefix, options as RequestInit) .then((res) => { const resClone = res.clone() // Error handler diff --git a/web/utils/stream.ts b/web/utils/stream.ts deleted file mode 100644 index c6bd2a30624790..00000000000000 --- a/web/utils/stream.ts +++ /dev/null @@ -1,21 +0,0 @@ -// https://developer.chrome.com/articles/fetch-streaming-requests/#feature-detection -export const isSupportNativeFetchStream = () => { - const supportsRequestStreams = (() => { - let duplexAccessed = false - - const params = { - body: new ReadableStream(), - method: 'POST', - get duplex() { - duplexAccessed = true - return 'half' - }, - } - - const hasContentType = new Request('', params).headers.has('Content-Type') - - return duplexAccessed && !hasContentType - })() - - return supportsRequestStreams -}