Blame view

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