From 87f31ed488955cece84bd4f96a116fa9e7fce8b5 Mon Sep 17 00:00:00 2001 From: Arnavion Date: Tue, 4 Aug 2015 10:59:14 -0700 Subject: [PATCH] Added support for multiple input source maps to SourceMap object. The addInput method on the object can be used to add sourcemaps for individual input files. --- lib/sourcemap.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/sourcemap.js b/lib/sourcemap.js index a67011f0..bfffe8f8 100644 --- a/lib/sourcemap.js +++ b/lib/sourcemap.js @@ -53,19 +53,26 @@ function SourceMap(options) { orig_line_diff : 0, dest_line_diff : 0, }); + var orig_maps = Object.create(null); var orig_map = options.orig && new MOZ_SourceMap.SourceMapConsumer(options.orig); var generator; if (orig_map) { - generator = MOZ_SourceMap.SourceMapGenerator.fromSourceMap(orig_map); + generator = MOZ_SourceMap.SourceMapGenerator.fromSourceMap(orig_map); } else { generator = new MOZ_SourceMap.SourceMapGenerator({ file : options.file, sourceRoot : options.root }); } + function addInput(rawSourceMap) { + var consumer = new MOZ_SourceMap.SourceMapConsumer(rawSourceMap); + orig_maps[consumer.file] = consumer; + } function add(source, gen_line, gen_col, orig_line, orig_col, name) { - if (orig_map) { - var info = orig_map.originalPositionFor({ + var originalMap = orig_maps[source] || orig_map; + + if (originalMap) { + var info = originalMap.originalPositionFor({ line: orig_line, column: orig_col }); @@ -77,6 +84,7 @@ function SourceMap(options) { orig_col = info.column; name = info.name || name; } + generator.addMapping({ generated : { line: gen_line + options.dest_line_diff, column: gen_col }, original : { line: orig_line + options.orig_line_diff, column: orig_col }, @@ -85,6 +93,7 @@ function SourceMap(options) { }); } return { + addInput : addInput, add : add, get : function() { return generator }, toString : function() { return JSON.stringify(generator.toJSON()); }