feat: fetch stream compatibility enhance (#1551)
parent
31195975f5
commit
657334a5fd
@ -1,2 +1,5 @@
|
|||||||
declare module 'lamejs';
|
declare module 'lamejs';
|
||||||
declare module 'react-18-input-autosize';
|
declare module 'react-18-input-autosize';
|
||||||
|
declare module 'fetch-readablestream' {
|
||||||
|
export default function fetchReadableStream(url: string, options?: RequestInit): Promise<Response>
|
||||||
|
}
|
||||||
|
|||||||
@ -0,0 +1,21 @@
|
|||||||
|
// 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
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue