forked from mswjs/msw
/
prepareStartHandler.ts
44 lines (41 loc) · 1.14 KB
/
prepareStartHandler.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { RequiredDeep } from '../../../typeUtils'
import { mergeRight } from '../../../utils/internal/mergeRight'
import {
SetupWorker,
SetupWorkerInternalContext,
StartHandler,
StartOptions,
} from '../../glossary'
export const DEFAULT_START_OPTIONS: RequiredDeep<StartOptions> = {
serviceWorker: {
url: '/mockServiceWorker.js',
options: null as any,
},
quiet: false,
waitUntilReady: true,
onUnhandledRequest: 'warn',
findWorker(scriptURL, mockServiceWorkerUrl) {
return scriptURL === mockServiceWorkerUrl
},
}
/**
* Returns resolved worker start options, merging the default options
* with the given custom options.
*/
export function resolveStartOptions(
initialOptions?: StartOptions,
): RequiredDeep<StartOptions> {
return mergeRight(
DEFAULT_START_OPTIONS,
initialOptions || {},
) as RequiredDeep<StartOptions>
}
export function prepareStartHandler(
handler: StartHandler,
context: SetupWorkerInternalContext,
): SetupWorker['start'] {
return (initialOptions) => {
context.startOptions = resolveStartOptions(initialOptions)
return handler(context.startOptions, initialOptions || {})
}
}