fix: skip merging large input sourcemaps (#10890)
This commit is contained in:
parent
80e95d0c83
commit
e85c9b9ec8
@ -178,7 +178,7 @@ declare module "convert-source-map" {
|
||||
SourceMap: SourceMap,
|
||||
Converter: Converter,
|
||||
fromObject(obj: SourceMap | SourceMapGenerator): Converter,
|
||||
fromJSON(str: string): Converter,
|
||||
fromJSON(str: string | Buffer): Converter,
|
||||
fromBase64(str: string): Converter,
|
||||
fromComment(str: string): Converter,
|
||||
fromMapFileComment(str: string, dir: string): Converter,
|
||||
|
||||
@ -13,6 +13,7 @@ import File from "./file/file";
|
||||
import generateMissingPluginMessage from "./util/missing-plugin-helper";
|
||||
|
||||
const debug = buildDebug("babel:transform:file");
|
||||
const LARGE_INPUT_SOURCEMAP_THRESHOLD = 1_000_000;
|
||||
|
||||
export type NormalizedFile = {
|
||||
code: string,
|
||||
@ -65,14 +66,18 @@ export default function normalizeFile(
|
||||
const lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast);
|
||||
if (typeof options.filename === "string" && lastComment) {
|
||||
try {
|
||||
const match = EXTERNAL_SOURCEMAP_REGEX.exec(lastComment);
|
||||
if (!match) throw new Error("Invalid source map comment format.");
|
||||
inputMap = convertSourceMap.fromJSON(
|
||||
fs.readFileSync(
|
||||
// when `lastComment` is non-null, EXTERNAL_SOURCEMAP_REGEX must have matches
|
||||
const match: [string, string] = (EXTERNAL_SOURCEMAP_REGEX.exec(
|
||||
lastComment,
|
||||
): any);
|
||||
const inputMapContent: Buffer = fs.readFileSync(
|
||||
path.resolve(path.dirname(options.filename), match[1]),
|
||||
"utf8",
|
||||
),
|
||||
);
|
||||
if (inputMapContent.length > LARGE_INPUT_SOURCEMAP_THRESHOLD) {
|
||||
debug("skip merging input map > 1 MB");
|
||||
} else {
|
||||
inputMap = convertSourceMap.fromJSON(inputMapContent);
|
||||
}
|
||||
} catch (err) {
|
||||
debug("discarding unknown file input sourcemap", err);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user