@@ -20,6 +20,9 @@ import { version } from '../package.json' with { type: 'json' }
2020
2121export interface ScriptCoverageWithOffset extends Profiler . ScriptCoverage {
2222 startOffset : number
23+
24+ /** Whether script ran outside Vite, e.g. in sub-processes or worker threads */
25+ isExtendedContext ?: boolean
2326}
2427
2528interface RawCoverage { result : ScriptCoverageWithOffset [ ] }
@@ -331,8 +334,9 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
331334
332335 private async getSources (
333336 url : string ,
334- onTransform : ( filepath : string ) => Promise < Vite . TransformResult | undefined | null > ,
337+ onTransform : ( filepath : string , isExtendedContext ?: ScriptCoverageWithOffset [ 'isExtendedContext' ] ) => Promise < Vite . TransformResult | undefined | null > ,
335338 functions : Profiler . FunctionCoverage [ ] = [ ] ,
339+ isExtendedContext : ScriptCoverageWithOffset [ 'isExtendedContext' ] = false ,
336340 ) : Promise < {
337341 code : string
338342 map ?: Vite . Rollup . SourceMap
@@ -342,7 +346,7 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
342346 ? url . slice ( 8 )
343347 : removeStartsWith ( url , FILE_PROTOCOL )
344348 // TODO: do we still need to "catch" here? why would it fail?
345- const transformResult = await onTransform ( filepath ) . catch ( ( ) => null )
349+ const transformResult = await onTransform ( filepath , isExtendedContext ) . catch ( ( ) => null )
346350
347351 const map = transformResult ?. map as Vite . Rollup . SourceMap | undefined
348352 const code = transformResult ?. code
@@ -385,8 +389,8 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
385389 throw new Error ( `Cannot access browser module graph because it was torn down.` )
386390 }
387391
388- const onTransform = async ( filepath : string ) => {
389- const result = await this . transformFile ( filepath , project , environment )
392+ const onTransform = async ( filepath : string , isExtendedContext : ScriptCoverageWithOffset [ 'isExtendedContext' ] = false ) => {
393+ const result = await this . transformFile ( filepath , project , environment , ! isExtendedContext )
390394 if ( result && environment === '__browser__' && project . browser ) {
391395 return { ...result , code : `${ result . code } // <inline-source-map>` }
392396 }
@@ -423,7 +427,7 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
423427 }
424428
425429 await Promise . all (
426- chunk . map ( async ( { url, functions, startOffset } ) => {
430+ chunk . map ( async ( { url, functions, startOffset, isExtendedContext } ) => {
427431 let timeout : ReturnType < typeof setTimeout > | undefined
428432 let start : number | undefined
429433
@@ -436,6 +440,7 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
436440 url ,
437441 onTransform ,
438442 functions ,
443+ isExtendedContext ,
439444 )
440445
441446 coverageMap . merge ( await this . remapCoverage (
0 commit comments