“use strict”; var sourceMap = require(“source-map”); var Generator = sourceMap.SourceMapGenerator; var Consumer = sourceMap.SourceMapConsumer; /**
* return re-mapped rawSourceMap string * @param {object} mappingObject * @param {string} mappingObject.fromSourceMap * @param {string} mappingObject.toSourceMap * @returns {string} */
function transfer(mappingObject) {
var fromSourceMap = mappingObject.fromSourceMap; var toSourceMap = mappingObject.toSourceMap; var fromSMC = new Consumer(fromSourceMap); var toSMC = new Consumer(toSourceMap); var resultMap = new Generator(); fromSMC.eachMapping(function (mapping) { var generatedPosition = { line: mapping.generatedLine, column: mapping.generatedColumn }; var fromOriginalPosition = { line: mapping.originalLine, column: mapping.originalColumn }; // from's generated position -> to's original position var originalPosition = toSMC.originalPositionFor(fromOriginalPosition); if (originalPosition.source !== null) { resultMap.addMapping({ source: originalPosition.source, name : originalPosition.name, generated: generatedPosition, original: originalPosition }); } }); return resultMap.toString();
}
module.exports = transfer;