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.
This commit is contained in:
Arnavion 2015-08-04 10:59:14 -07:00
parent ab15d676d7
commit 87f31ed488

View File

@ -53,19 +53,26 @@ function SourceMap(options) {
orig_line_diff : 0, orig_line_diff : 0,
dest_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 orig_map = options.orig && new MOZ_SourceMap.SourceMapConsumer(options.orig);
var generator; var generator;
if (orig_map) { if (orig_map) {
generator = MOZ_SourceMap.SourceMapGenerator.fromSourceMap(orig_map); generator = MOZ_SourceMap.SourceMapGenerator.fromSourceMap(orig_map);
} else { } else {
generator = new MOZ_SourceMap.SourceMapGenerator({ generator = new MOZ_SourceMap.SourceMapGenerator({
file : options.file, file : options.file,
sourceRoot : options.root 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) { function add(source, gen_line, gen_col, orig_line, orig_col, name) {
if (orig_map) { var originalMap = orig_maps[source] || orig_map;
var info = orig_map.originalPositionFor({
if (originalMap) {
var info = originalMap.originalPositionFor({
line: orig_line, line: orig_line,
column: orig_col column: orig_col
}); });
@ -77,6 +84,7 @@ function SourceMap(options) {
orig_col = info.column; orig_col = info.column;
name = info.name || name; name = info.name || name;
} }
generator.addMapping({ generator.addMapping({
generated : { line: gen_line + options.dest_line_diff, column: gen_col }, generated : { line: gen_line + options.dest_line_diff, column: gen_col },
original : { line: orig_line + options.orig_line_diff, column: orig_col }, original : { line: orig_line + options.orig_line_diff, column: orig_col },
@ -85,6 +93,7 @@ function SourceMap(options) {
}); });
} }
return { return {
addInput : addInput,
add : add, add : add,
get : function() { return generator }, get : function() { return generator },
toString : function() { return JSON.stringify(generator.toJSON()); } toString : function() { return JSON.stringify(generator.toJSON()); }