Skip to content

Commit

Permalink
chore(setupWorker): detect readable stream support once
Browse files Browse the repository at this point in the history
  • Loading branch information
kettanaito committed Oct 15, 2023
1 parent 92c7ecc commit d54ad52
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/browser/setupWorker/glossary.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,9 @@ export interface SetupWorkerInternalContext {
>
}
useFallbackMode: boolean
supports: {
readableStreamTransfer: boolean
}
fallbackInterceptor?: Interceptor<HttpRequestEventMap>
}

Expand Down
4 changes: 4 additions & 0 deletions src/browser/setupWorker/setupWorker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { SetupApi } from '~/core/SetupApi'
import { mergeRight } from '~/core/utils/internal/mergeRight'
import { LifeCycleEventsMap } from '~/core/sharedOptions'
import { SetupWorker } from './glossary'
import { supportsReadableStreamTransfer } from '../utils/supportsReadableStreamTransfer'

interface Listener {
target: EventTarget
Expand Down Expand Up @@ -144,6 +145,9 @@ export class SetupWorkerApi
},
useFallbackMode:
!('serviceWorker' in navigator) || location.protocol === 'file:',
supports: {
readableStreamTransfer: supportsReadableStreamTransfer(),
},
}

/**
Expand Down
3 changes: 1 addition & 2 deletions src/browser/setupWorker/start/createRequestListener.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { handleRequest } from '~/core/utils/handleRequest'
import { RequiredDeep } from '~/core/typeUtils'
import { devUtils } from '~/core/utils/internal/devUtils'
import { toResponseInit } from '~/core/utils/toResponseInit'
import { supportsReadableStreamTransfer } from '../../utils/supportsReadableStreamTransfer'

export const createRequestListener = (
context: SetupWorkerInternalContext,
Expand Down Expand Up @@ -53,7 +52,7 @@ export const createRequestListener = (
* @note Safari doesn't support transferring a "ReadableStream".
* Check that the browser supports that before sending it to the worker.
*/
if (supportsReadableStreamTransfer()) {
if (context.supports.readableStreamTransfer) {
const responseStream = response.body
messageChannel.postMessage(
'MOCK_RESPONSE',
Expand Down

0 comments on commit d54ad52

Please sign in to comment.