aboutsummaryrefslogtreecommitdiff
path: root/node_modules/merge-source-map/index.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-28 00:38:50 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-28 00:40:43 +0200
commit7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch)
tree6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/merge-source-map/index.js
parent963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff)
add linting (and some initial fixes)
Diffstat (limited to 'node_modules/merge-source-map/index.js')
-rw-r--r--node_modules/merge-source-map/index.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/node_modules/merge-source-map/index.js b/node_modules/merge-source-map/index.js
new file mode 100644
index 000000000..d15871c1d
--- /dev/null
+++ b/node_modules/merge-source-map/index.js
@@ -0,0 +1,58 @@
+var sourceMap = require('source-map'),
+ SourceMapConsumer = sourceMap.SourceMapConsumer,
+ SourceMapGenerator = sourceMap.SourceMapGenerator
+
+module.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|undefined} oldMap old source map object
+ * @param {object|undefined} 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),
+ newMapConsumer = new SourceMapConsumer(newMap),
+ 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: m.source,
+ name: m.name
+ })
+ })
+
+ var mergedMap = JSON.parse(mergedMapGenerator.toString())
+ mergedMap.sources = oldMap.sources
+ mergedMap.sourcesContent = oldMap.sourcesContent
+ mergedMap.sourceRoot = oldMap.sourceRoot
+
+ return mergedMap
+}