-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
index.ts
34 lines (27 loc) · 1.05 KB
/
index.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
import type { CoverageOptions } from '../../types'
import type { BaseCoverageProvider } from './base'
import { C8CoverageProvider } from './c8'
import { IstanbulCoverageProvider } from './istanbul'
import { NullCoverageProvider } from './NullCoverageProvider'
const CoverageProviderMap: Record<
NonNullable<CoverageOptions['provider']>,
{ new(): BaseCoverageProvider; getCoverage(): any }
> = {
c8: C8CoverageProvider,
istanbul: IstanbulCoverageProvider,
}
export function getCoverageProvider(options?: CoverageOptions): BaseCoverageProvider {
if (options?.enabled && options?.provider) {
const CoverageProvider = CoverageProviderMap[options.provider]
return new CoverageProvider()
}
if (options?.enabled && options?.provider === 'istanbul')
return new IstanbulCoverageProvider()
return new NullCoverageProvider()
}
export function getCoverageInsideWorker(options: CoverageOptions) {
if (options.enabled && options.provider) {
const CoverageProvider = CoverageProviderMap[options.provider]
return CoverageProvider.getCoverage()
}
}