333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
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
'use strict';
 
var SourceMapConsumer = require('source-map').SourceMapConsumer;
var extend = require('xtend');
 
function isEmptyMapping (pos) {
    return ['source', 'line', 'column', 'name'].every(function (prop) {
        return pos[prop] === null;
    });
}
 
function PositionDetector (sourceMap) {
    if (sourceMap) {
        this.sourceMapConsumer = new SourceMapConsumer(sourceMap);
    }
}
PositionDetector.prototype.positionFor = function (currentNode) {
    var currentPosition = {
        source: currentNode.loc.source,
        line: currentNode.loc.start.line,
        column: currentNode.loc.start.column
    };
    if (this.sourceMapConsumer) {
        var found = this.sourceMapConsumer.originalPositionFor(currentPosition);
        if (found && !isEmptyMapping(found)) {
            return extend({ mapped: true }, found);
        }
    }
    return extend({ mapped: false }, currentPosition);
};
 
module.exports = PositionDetector;