diff --git a/lib/third-party-libs.js.flow b/lib/third-party-libs.js.flow index 9ce36c6dc427..c45b2d68c220 100644 --- a/lib/third-party-libs.js.flow +++ b/lib/third-party-libs.js.flow @@ -63,83 +63,9 @@ declare module "source-map" { }; declare module.exports: { - SourceMapConsumer: typeof SourceMapConsumer, SourceMapGenerator: typeof SourceMapGenerator, } - declare class SourceMapConsumer { - static GENERATED_ORDER: 1; - static ORIGINAL_ORDER: 2; - - file: string | null; - sourceRoot: string | null; - sources: Array; - - constructor(?SourceMap): this; - - computeColumnSpans(): string; - originalPositionFor({ - line: number, - column: number, - }): {| - source: string, - line: number, - column: number, - name: string | null - |} | {| - source: null, - line: null, - column: null, - name: null - |}; - - generatedPositionFor({ - source: string, - line: number, - column: number, - }): {| - line: number, - column: number, - lastColumn: number | null | void, - |} | {| - line: null, - column: null, - lastColumn: null | void, - |}; - - allGeneratedPositionsFor({ - source: string, - line: number, - column: number, - }): Array<{| - line: number, - column: number, - lastColumn: number, - |}>; - - sourceContentFor(string, boolean | void): string | null; - - eachMapping( - ({| - generatedLine: number, - generatedColumn: number, - source: string, - originalLine: number, - originalColumn: number, - name: string | null, - |} | {| - generatedLine: number, - generatedColumn: number, - source: null, - originalLine: null, - originalColumn: null, - name: null, - |}) => mixed, - context: mixed, - order: ?(1 | 2), - ): void; - } - declare class SourceMapGenerator { constructor(?{ file?: string | null, diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index b503acb9bf98..dbfdcb708ca8 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -24,6 +24,7 @@ "compiler" ], "dependencies": { + "@jridgewell/trace-mapping": "^0.3.4", "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", diff --git a/packages/babel-cli/src/babel/file.ts b/packages/babel-cli/src/babel/file.ts index 24f6a77f7951..ac80c9caba42 100644 --- a/packages/babel-cli/src/babel/file.ts +++ b/packages/babel-cli/src/babel/file.ts @@ -1,4 +1,5 @@ import convertSourceMap from "convert-source-map"; +import { TraceMap, eachMapping } from "@jridgewell/trace-mapping"; import sourceMap from "source-map"; import slash from "slash"; import path from "path"; @@ -35,12 +36,9 @@ export default async function ({ code += result.code + "\n"; if (result.map) { - const consumer = new sourceMap.SourceMapConsumer(result.map); - const sources = new Set(); - - consumer.eachMapping(function (mapping) { - if (mapping.source != null) sources.add(mapping.source); + const consumer = new TraceMap(result.map); + eachMapping(consumer, mapping => { map.addMapping({ generated: { line: mapping.generatedLine + offset, @@ -57,11 +55,10 @@ export default async function ({ }); }); - sources.forEach(source => { - const content = consumer.sourceContentFor(source, true); - if (content !== null) { - map.setSourceContent(source, content); - } + const { resolvedSources, sourcesContent } = consumer; + sourcesContent?.forEach((content, i) => { + if (content === null) return; + map.setSourceContent(resolvedSources[i], content); }); offset = code.split("\n").length - 1; diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index c47dd20ceef8..2e98ea5eefef 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -67,12 +67,11 @@ "devDependencies": { "@babel/helper-transform-fixture-test-runner": "workspace:^", "@babel/plugin-transform-modules-commonjs": "workspace:^", + "@jridgewell/trace-mapping": "^0.3.4", "@types/convert-source-map": "^1.5.1", "@types/debug": "^4.1.0", "@types/resolve": "^1.3.2", - "@types/semver": "^5.4.0", - "@types/source-map": "^0.5.0", - "source-map": "0.6.1" + "@types/semver": "^5.4.0" }, "conditions": { "BABEL_8_BREAKING": [ diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index 1b21b376d88e..d1da2a93052b 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -1,5 +1,5 @@ import babel from "../lib/index.js"; -import sourceMap from "source-map"; +import { TraceMap, originalPositionFor } from "@jridgewell/trace-mapping"; import path from "path"; import generator from "@babel/generator"; import { fileURLToPath } from "url"; @@ -532,10 +532,10 @@ describe("api", function () { ].join("\n"), ).toBe(result.code); - const consumer = new sourceMap.SourceMapConsumer(result.map); + const consumer = new TraceMap(result.map); expect( - consumer.originalPositionFor({ + originalPositionFor(consumer, { line: 7, column: 4, }), diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json index 67d38aac439f..60efa1d58f70 100644 --- a/packages/babel-generator/package.json +++ b/packages/babel-generator/package.json @@ -26,6 +26,7 @@ "devDependencies": { "@babel/helper-fixtures": "workspace:^", "@babel/parser": "workspace:^", + "@jridgewell/trace-mapping": "^0.3.4", "@types/jsesc": "^2.5.0", "@types/source-map": "^0.5.0", "charcodes": "^0.2.0" diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index c7cdd19235ba..1708f951eee8 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -3,7 +3,7 @@ import * as t from "@babel/types"; import fs from "fs"; import path from "path"; import fixtures from "@babel/helper-fixtures"; -import sourcemap from "source-map"; +import { TraceMap, originalPositionFor } from "@jridgewell/trace-mapping"; import { fileURLToPath } from "url"; import _Printer from "../lib/printer.js"; @@ -295,8 +295,8 @@ describe("generation", function () { code, ); - const consumer = new sourcemap.SourceMapConsumer(generated.map); - const loc = consumer.originalPositionFor({ line: 2, column: 1 }); + const consumer = new TraceMap(generated.map); + const loc = originalPositionFor(consumer, { line: 2, column: 1 }); expect(loc).toMatchObject({ column: 0, line: 2, @@ -316,8 +316,8 @@ describe("generation", function () { code, ); - const consumer = new sourcemap.SourceMapConsumer(generated.map); - const loc = consumer.originalPositionFor({ line: 2, column: 1 }); + const consumer = new TraceMap(generated.map); + const loc = originalPositionFor(consumer, { line: 2, column: 1 }); expect(loc).toMatchObject({ column: 0, line: 2, diff --git a/packages/babel-helper-transform-fixture-test-runner/package.json b/packages/babel-helper-transform-fixture-test-runner/package.json index 632fc79d9dfa..598855254d93 100644 --- a/packages/babel-helper-transform-fixture-test-runner/package.json +++ b/packages/babel-helper-transform-fixture-test-runner/package.json @@ -18,10 +18,10 @@ "@babel/code-frame": "workspace:^", "@babel/core": "workspace:^", "@babel/helper-fixtures": "workspace:^", + "@jridgewell/trace-mapping": "^0.3.4", "babel-check-duplicated-nodes": "^1.0.0", "quick-lru": "5.1.0", - "regenerator-runtime": "^0.13.7", - "source-map": "^0.5.0" + "regenerator-runtime": "^0.13.7" }, "devDependencies": { "@types/jest": "^25.2.2" diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.ts b/packages/babel-helper-transform-fixture-test-runner/src/index.ts index 33c2c235994b..739649767703 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.ts +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.ts @@ -5,8 +5,8 @@ import { default as getFixtures, resolveOptionPluginOrPreset, } from "@babel/helper-fixtures"; -import sourceMap from "source-map"; import { codeFrameColumns } from "@babel/code-frame"; +import { TraceMap, originalPositionFor } from "@jridgewell/trace-mapping"; import * as helpers from "./helpers"; import assert from "assert"; import fs from "fs"; @@ -346,12 +346,12 @@ function run(task) { } if (task.sourceMappings) { - const consumer = new sourceMap.SourceMapConsumer(result.map); + const consumer = new TraceMap(result.map); task.sourceMappings.forEach(function (mapping) { const actual = mapping.original; - const expected = consumer.originalPositionFor(mapping.generated); + const expected = originalPositionFor(consumer, mapping.generated); expect({ line: expected.line, column: expected.column }).toEqual(actual); }); } diff --git a/yarn.lock b/yarn.lock index 462cd873a908..052c90de41da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -202,6 +202,7 @@ __metadata: dependencies: "@babel/core": "workspace:^" "@babel/helper-fixtures": "workspace:^" + "@jridgewell/trace-mapping": ^0.3.4 "@nicolo-ribaudo/chokidar-2": "condition:BABEL_8_BREAKING ? : 2.1.8-no-fsevents.3" chokidar: ^3.4.0 commander: ^4.0.1 @@ -334,17 +335,16 @@ __metadata: "@babel/template": "workspace:^" "@babel/traverse": "workspace:^" "@babel/types": "workspace:^" + "@jridgewell/trace-mapping": ^0.3.4 "@types/convert-source-map": ^1.5.1 "@types/debug": ^4.1.0 "@types/resolve": ^1.3.2 "@types/semver": ^5.4.0 - "@types/source-map": ^0.5.0 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.1.2 semver: "condition:BABEL_8_BREAKING ? ^7.3.4 : ^6.3.0" - source-map: 0.6.1 languageName: unknown linkType: soft @@ -457,6 +457,7 @@ __metadata: "@babel/helper-fixtures": "workspace:^" "@babel/parser": "workspace:^" "@babel/types": "workspace:^" + "@jridgewell/trace-mapping": ^0.3.4 "@types/jsesc": ^2.5.0 "@types/source-map": ^0.5.0 charcodes: ^0.2.0 @@ -955,11 +956,11 @@ __metadata: "@babel/code-frame": "workspace:^" "@babel/core": "workspace:^" "@babel/helper-fixtures": "workspace:^" + "@jridgewell/trace-mapping": ^0.3.4 "@types/jest": ^25.2.2 babel-check-duplicated-nodes: ^1.0.0 quick-lru: 5.1.0 regenerator-runtime: ^0.13.7 - source-map: ^0.5.0 languageName: unknown linkType: soft @@ -4097,13 +4098,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.0": - version: 0.3.2 - resolution: "@jridgewell/trace-mapping@npm:0.3.2" +"@jridgewell/trace-mapping@npm:^0.3.0, @jridgewell/trace-mapping@npm:^0.3.4": + version: 0.3.4 + resolution: "@jridgewell/trace-mapping@npm:0.3.4" dependencies: "@jridgewell/resolve-uri": ^3.0.3 "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: b58be6b4133cbcb20bfd28c9ca843b8db9efa0bf1d7e0e9e26b2228dace94ad53161c996ab1d762d7c3955dfc398a7734e7b84a2493ae36b451f232234fbb257 + checksum: ab8bce84bbbc8c34f3ba8325ed926f8f2d3098983c10442a80c55764c4eb6e47d5b92d8ff20a0dd868c3e76a3535651fd8a0138182c290dbfc8396195685c37b languageName: node linkType: hard @@ -14153,13 +14154,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - "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": version: 0.5.7 resolution: "source-map@npm:0.5.7" @@ -14167,6 +14161,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 + languageName: node + linkType: hard + "source-map@npm:^0.7.3, source-map@npm:~0.7.2": version: 0.7.3 resolution: "source-map@npm:0.7.3"