@@ -2,14 +2,12 @@ import fsp from 'node:fs/promises'
2
2
import path from 'node:path'
3
3
import { performance } from 'node:perf_hooks'
4
4
import getEtag from 'etag'
5
- import convertSourceMap from 'convert-source-map'
6
5
import MagicString from 'magic-string'
7
6
import { init , parse as parseImports } from 'es-module-lexer'
8
7
import type { PartialResolvedId , SourceDescription , SourceMap } from 'rollup'
9
8
import colors from 'picocolors'
10
9
import type { ModuleNode , ViteDevServer } from '..'
11
10
import {
12
- blankReplacer ,
13
11
createDebugger ,
14
12
ensureWatchedFile ,
15
13
injectQuery ,
@@ -24,7 +22,11 @@ import { checkPublicFile } from '../publicDir'
24
22
import { isDepsOptimizerEnabled } from '../config'
25
23
import { getDepsOptimizer , initDevSsrDepsOptimizer } from '../optimizer'
26
24
import { cleanUrl , unwrapId } from '../../shared/utils'
27
- import { applySourcemapIgnoreList , injectSourcesContent } from './sourcemap'
25
+ import {
26
+ applySourcemapIgnoreList ,
27
+ extractSourcemapFromFile ,
28
+ injectSourcesContent ,
29
+ } from './sourcemap'
28
30
import { isFileServingAllowed } from './middlewares/static'
29
31
import { throwClosedServerError } from './pluginContainer'
30
32
@@ -263,21 +265,19 @@ async function loadAndTransform(
263
265
throw e
264
266
}
265
267
}
266
- ensureWatchedFile ( server . watcher , file , config . root )
268
+ if ( code != null ) {
269
+ ensureWatchedFile ( server . watcher , file , config . root )
270
+ }
267
271
}
268
272
if ( code ) {
269
273
try {
270
- map = (
271
- convertSourceMap . fromSource ( code ) ||
272
- ( await convertSourceMap . fromMapFileSource (
273
- code ,
274
- createConvertSourceMapReadMap ( file ) ,
275
- ) )
276
- ) ?. toObject ( )
277
-
278
- code = code . replace ( convertSourceMap . mapFileCommentRegex , blankReplacer )
274
+ const extracted = await extractSourcemapFromFile ( code , file )
275
+ if ( extracted ) {
276
+ code = extracted . code
277
+ map = extracted . map
278
+ }
279
279
} catch ( e ) {
280
- logger . warn ( `Failed to load source map for ${ url } . ` , {
280
+ logger . warn ( `Failed to load source map for ${ file } .\n ${ e } ` , {
281
281
timestamp : true ,
282
282
} )
283
283
}
@@ -406,15 +406,6 @@ async function loadAndTransform(
406
406
return result
407
407
}
408
408
409
- function createConvertSourceMapReadMap ( originalFileName : string ) {
410
- return ( filename : string ) => {
411
- return fsp . readFile (
412
- path . resolve ( path . dirname ( originalFileName ) , filename ) ,
413
- 'utf-8' ,
414
- )
415
- }
416
- }
417
-
418
409
/**
419
410
* When a module is soft-invalidated, we can preserve its previous `transformResult` and
420
411
* return similar code to before:
0 commit comments