# merge-source-map [![npm-version](https://img.shields.io/npm/v/merge-source-map.svg?style=flat-square)](https://npmjs.org/package/merge-source-map) [![downloads](http://img.shields.io/npm/dm/merge-source-map.svg?style=flat-square)](https://npmjs.org/package/merge-source-map) [![travis-ci](https://img.shields.io/travis/keik/merge-source-map.svg?style=flat-square)](https://travis-ci.org/keik/merge-source-map) [![Coverage Status](https://img.shields.io/coveralls/keik/merge-source-map.svg?style=flat-square)](https://coveralls.io/github/keik/merge-source-map) Merge old source map and new source map in multi-transform flow # API ```javascript var merge = require('merge-source-map') ``` ## `merge(oldMap, newMap)` 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.
oldMap : object|undefined
old source map object
newmap : object|undefined
new source map object
# Example ```javascript var esprima = require('esprima'), estraverse = require('estraverse'), escodegen = require('escodegen'), convert = require('convert-source-map'), merge = require('merge-source-map') const CODE = 'a = 1', FILEPATH = 'a.js' // create AST of original code var ast = esprima.parse(CODE, {sourceType: 'module', loc: true}) // transform AST of original code estraverse.replace(ast, { enter: function(node, parent) { /* change AST */ }, leave: function(node, parent) { /* change AST */ } }) // generate code and source map from transformed AST var gen = escodegen.generate(ast, { sourceMap: FILEPATH, sourceMapWithCode: true, sourceContent: CODE }) // merge old source map and new source map var oldMap = convert.fromSource(CODE) && convert.fromSource(CODE).toObject(), newMap = JSON.parse(gen.map.toString()), mergedMap = merge(oldMap, newMap), mapComment = convert.fromObject(mergedMap).toComment() // attach merge source map to transformed code var transformed = gen.code + '\n' + mapComment console.log(transformed); ``` # Test ``` % npm install % npm test ``` # License MIT (c) keik