UNPKG

2.21 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4// istanbul ignore next
5
6function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
7
8// istanbul ignore next
9
10function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
12// istanbul ignore next
13
14function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15
16var _sourceMap = require("source-map");
17
18var _sourceMap2 = _interopRequireDefault(_sourceMap);
19
20var _types = require("../types");
21
22var t = _interopRequireWildcard(_types);
23
24/**
25 * Build a sourcemap.
26 */
27
28var SourceMap = (function () {
29 function SourceMap(position, opts, code) {
30 _classCallCheck(this, SourceMap);
31
32 this.position = position;
33 this.opts = opts;
34
35 if (opts.sourceMaps) {
36 this.map = new _sourceMap2["default"].SourceMapGenerator({
37 file: opts.sourceMapTarget,
38 sourceRoot: opts.sourceRoot
39 });
40
41 this.map.setSourceContent(opts.sourceFileName, code);
42 } else {
43 this.map = null;
44 }
45 }
46
47 /**
48 * Get the sourcemap.
49 */
50
51 SourceMap.prototype.get = function get() {
52 var map = this.map;
53 if (map) {
54 return map.toJSON();
55 } else {
56 return map;
57 }
58 };
59
60 /**
61 * Mark a node's generated position, and add it to the sourcemap.
62 */
63
64 SourceMap.prototype.mark = function mark(node, type) {
65 var loc = node.loc;
66 if (!loc) return; // no location info
67
68 var map = this.map;
69 if (!map) return; // no source map
70
71 if (t.isProgram(node) || t.isFile(node)) return; // illegal mapping nodes
72
73 var position = this.position;
74
75 var generated = {
76 line: position.line,
77 column: position.column
78 };
79
80 var original = loc[type];
81
82 map.addMapping({
83 source: this.opts.sourceFileName,
84 generated: generated,
85 original: original
86 });
87 };
88
89 return SourceMap;
90})();
91
92exports["default"] = SourceMap;
93module.exports = exports["default"];
\No newline at end of file