UNPKG

2.58 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4
5var _keys = require("babel-runtime/core-js/object/keys");
6
7var _keys2 = _interopRequireDefault(_keys);
8
9var _typeof2 = require("babel-runtime/helpers/typeof");
10
11var _typeof3 = _interopRequireDefault(_typeof2);
12
13var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
14
15var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
16
17var _sourceMap = require("source-map");
18
19var _sourceMap2 = _interopRequireDefault(_sourceMap);
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23var SourceMap = function () {
24 function SourceMap(opts, code) {
25 (0, _classCallCheck3.default)(this, SourceMap);
26
27 this._cachedMap = null;
28 this._code = code;
29 this._opts = opts;
30 this._rawMappings = [];
31 }
32
33 SourceMap.prototype.get = function get() {
34 if (!this._cachedMap) {
35 var map = this._cachedMap = new _sourceMap2.default.SourceMapGenerator({
36 file: this._opts.sourceMapTarget,
37 sourceRoot: this._opts.sourceRoot
38 });
39
40 var code = this._code;
41 if (typeof code === "string") {
42 map.setSourceContent(this._opts.sourceFileName, code);
43 } else if ((typeof code === "undefined" ? "undefined" : (0, _typeof3.default)(code)) === "object") {
44 (0, _keys2.default)(code).forEach(function (sourceFileName) {
45 map.setSourceContent(sourceFileName, code[sourceFileName]);
46 });
47 }
48
49 this._rawMappings.forEach(map.addMapping, map);
50 }
51
52 return this._cachedMap.toJSON();
53 };
54
55 SourceMap.prototype.getRawMappings = function getRawMappings() {
56 return this._rawMappings.slice();
57 };
58
59 SourceMap.prototype.mark = function mark(generatedLine, generatedColumn, line, column, identifierName, filename) {
60 if (this._lastGenLine !== generatedLine && line === null) return;
61
62 if (this._lastGenLine === generatedLine && this._lastSourceLine === line && this._lastSourceColumn === column) {
63 return;
64 }
65
66 this._cachedMap = null;
67 this._lastGenLine = generatedLine;
68 this._lastSourceLine = line;
69 this._lastSourceColumn = column;
70
71 this._rawMappings.push({
72 name: identifierName || undefined,
73 generated: {
74 line: generatedLine,
75 column: generatedColumn
76 },
77 source: line == null ? undefined : filename || this._opts.sourceFileName,
78 original: line == null ? undefined : {
79 line: line,
80 column: column
81 }
82 });
83 };
84
85 return SourceMap;
86}();
87
88exports.default = SourceMap;
89module.exports = exports["default"];
\No newline at end of file