@@ -2,14 +2,12 @@ import fsp from 'node:fs/promises'
22import path from 'node:path'
33import { performance } from 'node:perf_hooks'
44import getEtag from 'etag'
5- import convertSourceMap from 'convert-source-map'
65import MagicString from 'magic-string'
76import { init , parse as parseImports } from 'es-module-lexer'
87import type { PartialResolvedId , SourceDescription , SourceMap } from 'rollup'
98import colors from 'picocolors'
109import type { ModuleNode , ViteDevServer } from '..'
1110import {
12- blankReplacer ,
1311 createDebugger ,
1412 ensureWatchedFile ,
1513 injectQuery ,
@@ -24,7 +22,11 @@ import { checkPublicFile } from '../publicDir'
2422import { isDepsOptimizerEnabled } from '../config'
2523import { getDepsOptimizer , initDevSsrDepsOptimizer } from '../optimizer'
2624import { cleanUrl , unwrapId } from '../../shared/utils'
27- import { applySourcemapIgnoreList , injectSourcesContent } from './sourcemap'
25+ import {
26+ applySourcemapIgnoreList ,
27+ extractSourcemapFromFile ,
28+ injectSourcesContent ,
29+ } from './sourcemap'
2830import { isFileServingAllowed } from './middlewares/static'
2931import { throwClosedServerError } from './pluginContainer'
3032
@@ -263,21 +265,19 @@ async function loadAndTransform(
263265 throw e
264266 }
265267 }
266- ensureWatchedFile ( server . watcher , file , config . root )
268+ if ( code != null ) {
269+ ensureWatchedFile ( server . watcher , file , config . root )
270+ }
267271 }
268272 if ( code ) {
269273 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+ }
279279 } catch ( e ) {
280- logger . warn ( `Failed to load source map for ${ url } . ` , {
280+ logger . warn ( `Failed to load source map for ${ file } .\n ${ e } ` , {
281281 timestamp : true ,
282282 } )
283283 }
@@ -406,15 +406,6 @@ async function loadAndTransform(
406406 return result
407407}
408408
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-
418409/**
419410 * When a module is soft-invalidated, we can preserve its previous `transformResult` and
420411 * return similar code to before:
0 commit comments