aboutsummaryrefslogtreecommitdiff
path: root/node_modules/merge-source-map
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/merge-source-map')
-rw-r--r--node_modules/merge-source-map/LICENSE21
-rw-r--r--node_modules/merge-source-map/README.md91
-rw-r--r--node_modules/merge-source-map/index.js65
-rw-r--r--node_modules/merge-source-map/package.json42
4 files changed, 219 insertions, 0 deletions
diff --git a/node_modules/merge-source-map/LICENSE b/node_modules/merge-source-map/LICENSE
new file mode 100644
index 00000000..39bac631
--- /dev/null
+++ b/node_modules/merge-source-map/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) keik <k4t0.kei@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/merge-source-map/README.md b/node_modules/merge-source-map/README.md
new file mode 100644
index 00000000..a8fa8022
--- /dev/null
+++ b/node_modules/merge-source-map/README.md
@@ -0,0 +1,91 @@
+# 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.
+
+<dl>
+ <dt>
+ <code>oldMap</code> : <code>object|undefined</code>
+ </dt>
+ <dd>
+ old source map object
+ </dd>
+
+ <dt>
+ <code>newmap</code> : <code>object|undefined</code>
+ </dt>
+ <dd>
+ new source map object
+ </dd>
+</dl>
+
+
+# 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
diff --git a/node_modules/merge-source-map/index.js b/node_modules/merge-source-map/index.js
new file mode 100644
index 00000000..2867fb7f
--- /dev/null
+++ b/node_modules/merge-source-map/index.js
@@ -0,0 +1,65 @@
+var sourceMap = require('source-map')
+var SourceMapConsumer = sourceMap.SourceMapConsumer
+var 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|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())
+}
diff --git a/node_modules/merge-source-map/package.json b/node_modules/merge-source-map/package.json
new file mode 100644
index 00000000..16715055
--- /dev/null
+++ b/node_modules/merge-source-map/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "merge-source-map",
+ "version": "1.1.0",
+ "description": "Merge old source map and new source map in multi-transform flow",
+ "main": "index.js",
+ "scripts": {
+ "test": "nyc tape test/*.js",
+ "lint": "eslint index.js 'test/**/*.js'",
+ "version": "npm run lint && npm run test"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/keik/merge-source-map.git"
+ },
+ "author": "keik <k4t0.kei@gmail.com>",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/keik/merge-source-map/issues"
+ },
+ "keywords": [
+ "sourcemap",
+ "source-map"
+ ],
+ "dependencies": {
+ "source-map": "^0.6.1"
+ },
+ "devDependencies": {
+ "babel-core": "^6.25.0",
+ "babel-plugin-syntax-object-rest-spread": "^6.13.0",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-spread": "^6.22.0",
+ "coffee-script": "^1.12.6",
+ "convert-source-map": "^1.5.0",
+ "escodegen": "^1.8.1",
+ "eslint": "^3.19.0",
+ "esprima": "^3.1.3",
+ "estraverse": "^4.2.0",
+ "nyc": "^8.4.0",
+ "tape": "^4.6.3"
+ },
+ "files": []
+}