Skip to content

Commit d610f83

Browse files
authored
Convert all SourceMapConsumers to TraceMaps (#14253)
* Switch to @jridgewell/trace-mapping in fixture-test-runner This accomplishes 2 goals: - Gets us off the ancient `source-map` v0.5.7 - Speeds up construction and tracing by ~10x. * Convert other packages * Convert all SourceMapConsumers to TraceMaps * Update trace-mapping to fix eachMapping's originalLine offset * Remove unneeded @types
1 parent 76dd491 commit d610f83

10 files changed

Lines changed: 39 additions & 114 deletions

File tree

lib/third-party-libs.js.flow

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -63,83 +63,9 @@ declare module "source-map" {
6363
};
6464

6565
declare module.exports: {
66-
SourceMapConsumer: typeof SourceMapConsumer,
6766
SourceMapGenerator: typeof SourceMapGenerator,
6867
}
6968

70-
declare class SourceMapConsumer {
71-
static GENERATED_ORDER: 1;
72-
static ORIGINAL_ORDER: 2;
73-
74-
file: string | null;
75-
sourceRoot: string | null;
76-
sources: Array<string>;
77-
78-
constructor(?SourceMap): this;
79-
80-
computeColumnSpans(): string;
81-
originalPositionFor({
82-
line: number,
83-
column: number,
84-
}): {|
85-
source: string,
86-
line: number,
87-
column: number,
88-
name: string | null
89-
|} | {|
90-
source: null,
91-
line: null,
92-
column: null,
93-
name: null
94-
|};
95-
96-
generatedPositionFor({
97-
source: string,
98-
line: number,
99-
column: number,
100-
}): {|
101-
line: number,
102-
column: number,
103-
lastColumn: number | null | void,
104-
|} | {|
105-
line: null,
106-
column: null,
107-
lastColumn: null | void,
108-
|};
109-
110-
allGeneratedPositionsFor({
111-
source: string,
112-
line: number,
113-
column: number,
114-
}): Array<{|
115-
line: number,
116-
column: number,
117-
lastColumn: number,
118-
|}>;
119-
120-
sourceContentFor(string, boolean | void): string | null;
121-
122-
eachMapping(
123-
({|
124-
generatedLine: number,
125-
generatedColumn: number,
126-
source: string,
127-
originalLine: number,
128-
originalColumn: number,
129-
name: string | null,
130-
|} | {|
131-
generatedLine: number,
132-
generatedColumn: number,
133-
source: null,
134-
originalLine: null,
135-
originalColumn: null,
136-
name: null,
137-
|}) => mixed,
138-
context: mixed,
139-
order: ?(1 | 2),
140-
): void;
141-
}
142-
14369
declare class SourceMapGenerator {
14470
constructor(?{
14571
file?: string | null,

packages/babel-cli/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"compiler"
2525
],
2626
"dependencies": {
27+
"@jridgewell/trace-mapping": "^0.3.4",
2728
"commander": "^4.0.1",
2829
"convert-source-map": "^1.1.0",
2930
"fs-readdir-recursive": "^1.1.0",

packages/babel-cli/src/babel/file.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import convertSourceMap from "convert-source-map";
2+
import { TraceMap, eachMapping } from "@jridgewell/trace-mapping";
23
import sourceMap from "source-map";
34
import slash from "slash";
45
import path from "path";
@@ -35,12 +36,9 @@ export default async function ({
3536
code += result.code + "\n";
3637

3738
if (result.map) {
38-
const consumer = new sourceMap.SourceMapConsumer(result.map);
39-
const sources = new Set<string>();
40-
41-
consumer.eachMapping(function (mapping) {
42-
if (mapping.source != null) sources.add(mapping.source);
39+
const consumer = new TraceMap(result.map);
4340

41+
eachMapping(consumer, mapping => {
4442
map.addMapping({
4543
generated: {
4644
line: mapping.generatedLine + offset,
@@ -57,11 +55,10 @@ export default async function ({
5755
});
5856
});
5957

60-
sources.forEach(source => {
61-
const content = consumer.sourceContentFor(source, true);
62-
if (content !== null) {
63-
map.setSourceContent(source, content);
64-
}
58+
const { resolvedSources, sourcesContent } = consumer;
59+
sourcesContent?.forEach((content, i) => {
60+
if (content === null) return;
61+
map.setSourceContent(resolvedSources[i], content);
6562
});
6663

6764
offset = code.split("\n").length - 1;

packages/babel-core/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,11 @@
6767
"devDependencies": {
6868
"@babel/helper-transform-fixture-test-runner": "workspace:^",
6969
"@babel/plugin-transform-modules-commonjs": "workspace:^",
70+
"@jridgewell/trace-mapping": "^0.3.4",
7071
"@types/convert-source-map": "^1.5.1",
7172
"@types/debug": "^4.1.0",
7273
"@types/resolve": "^1.3.2",
73-
"@types/semver": "^5.4.0",
74-
"@types/source-map": "^0.5.0",
75-
"source-map": "0.6.1"
74+
"@types/semver": "^5.4.0"
7675
},
7776
"conditions": {
7877
"BABEL_8_BREAKING": [

packages/babel-core/test/api.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import babel from "../lib/index.js";
2-
import sourceMap from "source-map";
2+
import { TraceMap, originalPositionFor } from "@jridgewell/trace-mapping";
33
import path from "path";
44
import generator from "@babel/generator";
55
import { fileURLToPath } from "url";
@@ -532,10 +532,10 @@ describe("api", function () {
532532
].join("\n"),
533533
).toBe(result.code);
534534

535-
const consumer = new sourceMap.SourceMapConsumer(result.map);
535+
const consumer = new TraceMap(result.map);
536536

537537
expect(
538-
consumer.originalPositionFor({
538+
originalPositionFor(consumer, {
539539
line: 7,
540540
column: 4,
541541
}),

packages/babel-generator/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"devDependencies": {
2727
"@babel/helper-fixtures": "workspace:^",
2828
"@babel/parser": "workspace:^",
29+
"@jridgewell/trace-mapping": "^0.3.4",
2930
"@types/jsesc": "^2.5.0",
3031
"@types/source-map": "^0.5.0",
3132
"charcodes": "^0.2.0"

packages/babel-generator/test/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as t from "@babel/types";
33
import fs from "fs";
44
import path from "path";
55
import fixtures from "@babel/helper-fixtures";
6-
import sourcemap from "source-map";
6+
import { TraceMap, originalPositionFor } from "@jridgewell/trace-mapping";
77
import { fileURLToPath } from "url";
88

99
import _Printer from "../lib/printer.js";
@@ -295,8 +295,8 @@ describe("generation", function () {
295295
code,
296296
);
297297

298-
const consumer = new sourcemap.SourceMapConsumer(generated.map);
299-
const loc = consumer.originalPositionFor({ line: 2, column: 1 });
298+
const consumer = new TraceMap(generated.map);
299+
const loc = originalPositionFor(consumer, { line: 2, column: 1 });
300300
expect(loc).toMatchObject({
301301
column: 0,
302302
line: 2,
@@ -316,8 +316,8 @@ describe("generation", function () {
316316
code,
317317
);
318318

319-
const consumer = new sourcemap.SourceMapConsumer(generated.map);
320-
const loc = consumer.originalPositionFor({ line: 2, column: 1 });
319+
const consumer = new TraceMap(generated.map);
320+
const loc = originalPositionFor(consumer, { line: 2, column: 1 });
321321
expect(loc).toMatchObject({
322322
column: 0,
323323
line: 2,

packages/babel-helper-transform-fixture-test-runner/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
"@babel/code-frame": "workspace:^",
1919
"@babel/core": "workspace:^",
2020
"@babel/helper-fixtures": "workspace:^",
21+
"@jridgewell/trace-mapping": "^0.3.4",
2122
"babel-check-duplicated-nodes": "^1.0.0",
2223
"quick-lru": "5.1.0",
23-
"regenerator-runtime": "^0.13.7",
24-
"source-map": "^0.5.0"
24+
"regenerator-runtime": "^0.13.7"
2525
},
2626
"devDependencies": {
2727
"@types/jest": "^25.2.2"

packages/babel-helper-transform-fixture-test-runner/src/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import {
55
default as getFixtures,
66
resolveOptionPluginOrPreset,
77
} from "@babel/helper-fixtures";
8-
import sourceMap from "source-map";
98
import { codeFrameColumns } from "@babel/code-frame";
9+
import { TraceMap, originalPositionFor } from "@jridgewell/trace-mapping";
1010
import * as helpers from "./helpers";
1111
import assert from "assert";
1212
import fs from "fs";
@@ -346,12 +346,12 @@ function run(task) {
346346
}
347347

348348
if (task.sourceMappings) {
349-
const consumer = new sourceMap.SourceMapConsumer(result.map);
349+
const consumer = new TraceMap(result.map);
350350

351351
task.sourceMappings.forEach(function (mapping) {
352352
const actual = mapping.original;
353353

354-
const expected = consumer.originalPositionFor(mapping.generated);
354+
const expected = originalPositionFor(consumer, mapping.generated);
355355
expect({ line: expected.line, column: expected.column }).toEqual(actual);
356356
});
357357
}

yarn.lock

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ __metadata:
202202
dependencies:
203203
"@babel/core": "workspace:^"
204204
"@babel/helper-fixtures": "workspace:^"
205+
"@jridgewell/trace-mapping": ^0.3.4
205206
"@nicolo-ribaudo/chokidar-2": "condition:BABEL_8_BREAKING ? : 2.1.8-no-fsevents.3"
206207
chokidar: ^3.4.0
207208
commander: ^4.0.1
@@ -334,17 +335,16 @@ __metadata:
334335
"@babel/template": "workspace:^"
335336
"@babel/traverse": "workspace:^"
336337
"@babel/types": "workspace:^"
338+
"@jridgewell/trace-mapping": ^0.3.4
337339
"@types/convert-source-map": ^1.5.1
338340
"@types/debug": ^4.1.0
339341
"@types/resolve": ^1.3.2
340342
"@types/semver": ^5.4.0
341-
"@types/source-map": ^0.5.0
342343
convert-source-map: ^1.7.0
343344
debug: ^4.1.0
344345
gensync: ^1.0.0-beta.2
345346
json5: ^2.1.2
346347
semver: "condition:BABEL_8_BREAKING ? ^7.3.4 : ^6.3.0"
347-
source-map: 0.6.1
348348
languageName: unknown
349349
linkType: soft
350350

@@ -457,6 +457,7 @@ __metadata:
457457
"@babel/helper-fixtures": "workspace:^"
458458
"@babel/parser": "workspace:^"
459459
"@babel/types": "workspace:^"
460+
"@jridgewell/trace-mapping": ^0.3.4
460461
"@types/jsesc": ^2.5.0
461462
"@types/source-map": ^0.5.0
462463
charcodes: ^0.2.0
@@ -955,11 +956,11 @@ __metadata:
955956
"@babel/code-frame": "workspace:^"
956957
"@babel/core": "workspace:^"
957958
"@babel/helper-fixtures": "workspace:^"
959+
"@jridgewell/trace-mapping": ^0.3.4
958960
"@types/jest": ^25.2.2
959961
babel-check-duplicated-nodes: ^1.0.0
960962
quick-lru: 5.1.0
961963
regenerator-runtime: ^0.13.7
962-
source-map: ^0.5.0
963964
languageName: unknown
964965
linkType: soft
965966

@@ -4097,13 +4098,13 @@ __metadata:
40974098
languageName: node
40984099
linkType: hard
40994100

4100-
"@jridgewell/trace-mapping@npm:^0.3.0":
4101-
version: 0.3.2
4102-
resolution: "@jridgewell/trace-mapping@npm:0.3.2"
4101+
"@jridgewell/trace-mapping@npm:^0.3.0, @jridgewell/trace-mapping@npm:^0.3.4":
4102+
version: 0.3.4
4103+
resolution: "@jridgewell/trace-mapping@npm:0.3.4"
41034104
dependencies:
41044105
"@jridgewell/resolve-uri": ^3.0.3
41054106
"@jridgewell/sourcemap-codec": ^1.4.10
4106-
checksum: b58be6b4133cbcb20bfd28c9ca843b8db9efa0bf1d7e0e9e26b2228dace94ad53161c996ab1d762d7c3955dfc398a7734e7b84a2493ae36b451f232234fbb257
4107+
checksum: ab8bce84bbbc8c34f3ba8325ed926f8f2d3098983c10442a80c55764c4eb6e47d5b92d8ff20a0dd868c3e76a3535651fd8a0138182c290dbfc8396195685c37b
41074108
languageName: node
41084109
linkType: hard
41094110

@@ -14153,20 +14154,20 @@ fsevents@^1.2.7:
1415314154
languageName: node
1415414155
linkType: hard
1415514156

14156-
"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1":
14157-
version: 0.6.1
14158-
resolution: "source-map@npm:0.6.1"
14159-
checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2
14160-
languageName: node
14161-
linkType: hard
14162-
1416314157
"source-map@npm:^0.5.0, source-map@npm:^0.5.3, source-map@npm:^0.5.6, source-map@npm:~0.5.1, source-map@npm:~0.5.3":
1416414158
version: 0.5.7
1416514159
resolution: "source-map@npm:0.5.7"
1416614160
checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d
1416714161
languageName: node
1416814162
linkType: hard
1416914163

14164+
"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1":
14165+
version: 0.6.1
14166+
resolution: "source-map@npm:0.6.1"
14167+
checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2
14168+
languageName: node
14169+
linkType: hard
14170+
1417014171
"source-map@npm:^0.7.3, source-map@npm:~0.7.2":
1417114172
version: 0.7.3
1417214173
resolution: "source-map@npm:0.7.3"

0 commit comments

Comments
 (0)