| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | var sourceMap = require('source-map')var SourceMapConsumer = sourceMap.SourceMapConsumervar SourceMapGenerator = sourceMap.SourceMapGeneratormodule.exports = merge/** * Merge old source map and new source map and return merged. * If old or new source map value is falsy, return another one as it is. * * @param {object|string} [oldMap] old source map object * @param {object|string} [newmap] new source map object * @return {object|undefined} merged source map object, or undefined when both old and new source map are undefined */function merge(oldMap, newMap) {  if (!oldMap) return newMap  if (!newMap) return oldMap  var oldMapConsumer = new SourceMapConsumer(oldMap)  var newMapConsumer = new SourceMapConsumer(newMap)  var mergedMapGenerator = new SourceMapGenerator()  // iterate on new map and overwrite original position of new map with one of old map  newMapConsumer.eachMapping(function(m) {    // pass when `originalLine` is null.    // It occurs in case that the node does not have origin in original code.    if (m.originalLine == null) return    var origPosInOldMap = oldMapConsumer.originalPositionFor({      line: m.originalLine,      column: m.originalColumn    })    if (origPosInOldMap.source == null) return    mergedMapGenerator.addMapping({      original: {        line: origPosInOldMap.line,        column: origPosInOldMap.column      },      generated: {        line: m.generatedLine,        column: m.generatedColumn      },      source: origPosInOldMap.source,      name: origPosInOldMap.name    })  })  var consumers = [oldMapConsumer, newMapConsumer]  consumers.forEach(function(consumer) {    consumer.sources.forEach(function(sourceFile) {      mergedMapGenerator._sources.add(sourceFile)      var sourceContent = consumer.sourceContentFor(sourceFile)      if (sourceContent != null) {        mergedMapGenerator.setSourceContent(sourceFile, sourceContent)      }    })  })  mergedMapGenerator._sourceRoot = oldMap.sourceRoot  mergedMapGenerator._file = oldMap.file  return JSON.parse(mergedMapGenerator.toString())}
 |