From abf0f7da4f3c5f2255676ca03ae479e8ffd0fa78 Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Thu, 19 Apr 2018 13:57:00 -0700 Subject: [PATCH] Add type definitions for source-map library. --- lib/third-party-libs.js.flow | 106 +++++++++++++++++- .../src/transformation/file/merge-map.js | 9 +- 2 files changed, 111 insertions(+), 4 deletions(-) diff --git a/lib/third-party-libs.js.flow b/lib/third-party-libs.js.flow index df59f5032f16..1b6ef25940eb 100644 --- a/lib/third-party-libs.js.flow +++ b/lib/third-party-libs.js.flow @@ -26,22 +26,124 @@ declare module "lodash/defaults" { declare module "lodash/clone" { declare export default (obj: T) => T; - } +} declare module "lodash/merge" { declare export default (T, Object) => T; } -declare module "convert-source-map" { +declare module "source-map" { declare export type SourceMap = { version: 3, file: ?string, + sourceRoot: ?string, sources: [?string], sourcesContent: [?string], names: [?string], mappings: string, }; + 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, + sourceRoot?: string | null, + skipValidation?: boolean | null, + }): this; + + addMapping({ + generated: { + line: number, + column: number, + } + }): void; + + setSourceContent(string, string): void; + + toJSON(): SourceMap; + } +} + +declare module "convert-source-map" { + import type { SourceMap } from "source-map"; + declare class Converter { toJSON(): string; toBase64(): string; diff --git a/packages/babel-core/src/transformation/file/merge-map.js b/packages/babel-core/src/transformation/file/merge-map.js index 47f2025c0866..9c0e551b30cd 100644 --- a/packages/babel-core/src/transformation/file/merge-map.js +++ b/packages/babel-core/src/transformation/file/merge-map.js @@ -25,7 +25,12 @@ export default function mergeSourceMap( column: mapping.generatedColumn, source: source, }); - if (generatedPosition.column != null) { + if (generatedPosition.line != null && generatedPosition.column != null) { + const generated = { + line: generatedPosition.line, + column: generatedPosition.column, + }; + mergedGenerator.addMapping({ source: mapping.source, @@ -37,7 +42,7 @@ export default function mergeSourceMap( column: mapping.originalColumn, }, - generated: generatedPosition, + generated, name: mapping.name, });