diff --git a/web/global.d.ts b/web/global.d.ts index f5e596c752..b81cdddc77 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 432d631368..f6c33231d9 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 26fbf8c42a..0c07602cb9 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 c6bd2a3062..0000000000 --- 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 -}