Skip to content

Commit 79a8c85

Browse files
authored
chore(plugin-vue): replace source-map with gen/trace-mapping (#8155)
1 parent a3fa1a3 commit 79a8c85

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

packages/plugin-vue/package.json

+2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
"vue": "^3.2.25"
4040
},
4141
"devDependencies": {
42+
"@jridgewell/gen-mapping": "^0.3.1",
43+
"@jridgewell/trace-mapping": "^0.3.10",
4244
"debug": "^4.3.4",
4345
"rollup": "^2.72.1",
4446
"slash": "^4.0.0",

packages/plugin-vue/src/main.ts

+21-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ import type { SFCBlock, SFCDescriptor } from 'vue/compiler-sfc'
33
import type { PluginContext, SourceMap, TransformPluginContext } from 'rollup'
44
import { normalizePath } from '@rollup/pluginutils'
55
import type { RawSourceMap } from 'source-map'
6-
import { SourceMapConsumer, SourceMapGenerator } from 'source-map'
6+
import type { EncodedSourceMap as TraceEncodedSourceMap } from '@jridgewell/trace-mapping'
7+
import { TraceMap, eachMapping } from '@jridgewell/trace-mapping'
8+
import type { EncodedSourceMap as GenEncodedSourceMap } from '@jridgewell/gen-mapping'
9+
import { addMapping, fromMap, toEncodedMap } from '@jridgewell/gen-mapping'
710
import { transformWithEsbuild } from 'vite'
811
import {
912
createDescriptor,
@@ -158,13 +161,19 @@ export async function transformMain(
158161
// of templateMap, we need to concatenate the two source maps.
159162
let resolvedMap = options.sourceMap ? map : undefined
160163
if (resolvedMap && templateMap) {
161-
const generator = SourceMapGenerator.fromSourceMap(
162-
new SourceMapConsumer(map)
164+
const gen = fromMap(
165+
// version property of result.map is declared as string
166+
// but actually it is `3`
167+
map as Omit<RawSourceMap, 'version'> as TraceEncodedSourceMap
168+
)
169+
const tracer = new TraceMap(
170+
// same above
171+
templateMap as Omit<RawSourceMap, 'version'> as TraceEncodedSourceMap
163172
)
164173
const offset = (scriptCode.match(/\r?\n/g)?.length ?? 0) + 1
165-
const templateMapConsumer = new SourceMapConsumer(templateMap)
166-
templateMapConsumer.eachMapping((m) => {
167-
generator.addMapping({
174+
eachMapping(tracer, (m) => {
175+
if (m.source == null) return
176+
addMapping(gen, {
168177
source: m.source,
169178
original: { line: m.originalLine, column: m.originalColumn },
170179
generated: {
@@ -173,7 +182,12 @@ export async function transformMain(
173182
}
174183
})
175184
})
176-
resolvedMap = (generator as any).toJSON() as RawSourceMap
185+
186+
// same above
187+
resolvedMap = toEncodedMap(gen) as Omit<
188+
GenEncodedSourceMap,
189+
'version'
190+
> as RawSourceMap
177191
// if this is a template only update, we will be reusing a cached version
178192
// of the main module compile result, which has outdated sourcesContent.
179193
resolvedMap.sourcesContent = templateMap.sourcesContent

pnpm-lock.yaml

+13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)