@@ -3,6 +3,8 @@ import type { ProxifiedModule } from 'magicast'
33import type { Profiler } from 'node:inspector'
44import type { CoverageProvider , ReportContext , TestProject , Vite , Vitest } from 'vitest/node'
55import { existsSync , promises as fs } from 'node:fs'
6+ import { stripTypeScriptTypes } from 'node:module'
7+ import { extname } from 'node:path'
68import { fileURLToPath } from 'node:url'
79// @ts -expect-error -- untyped
810import { mergeProcessCovs } from '@bcoe/v8-coverage'
@@ -333,6 +335,7 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
333335 url : string ,
334336 onTransform : ( filepath : string ) => Promise < Vite . TransformResult | undefined | null > ,
335337 functions : Profiler . FunctionCoverage [ ] = [ ] ,
338+ context = { transformed : true } ,
336339 ) : Promise < {
337340 code : string
338341 map ?: Vite . Rollup . SourceMap
@@ -347,16 +350,20 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
347350 const map = transformResult ?. map as Vite . Rollup . SourceMap | undefined
348351 const code = transformResult ?. code
349352
350- if ( code == null ) {
353+ if ( code == null || ! context . transformed ) {
351354 const filePath = normalize ( fileURLToPath ( url ) )
352355
353- const original = await fs . readFile ( filePath , 'utf-8' ) . catch ( ( ) => {
356+ let original = await fs . readFile ( filePath , 'utf-8' ) . catch ( ( ) => {
354357 // If file does not exist construct a dummy source for it.
355358 // These can be files that were generated dynamically during the test run and were removed after it.
356359 const length = findLongestFunctionLength ( functions )
357360 return '/' . repeat ( length )
358361 } )
359362
363+ if ( extname ( filepath . split ( '?' ) [ 0 ] ) === '.ts' ) {
364+ original = stripTypeScriptTypes ( original )
365+ }
366+
360367 return { code : original }
361368 }
362369
@@ -436,6 +443,7 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
436443 url ,
437444 onTransform ,
438445 functions ,
446+ { transformed : startOffset !== 0 } ,
439447 )
440448
441449 coverageMap . merge ( await this . remapCoverage (
0 commit comments