保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
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
var SourceMapConsumer = require('source-map').SourceMapConsumer;
 
function inputSourceMapTracker() {
  var maps = {};
 
  return {
    all: all.bind(null, maps),
    isTracking: isTracking.bind(null, maps),
    originalPositionFor: originalPositionFor.bind(null, maps),
    track: track.bind(null, maps)
  };
}
 
function all(maps) {
  return maps;
}
 
function isTracking(maps, source) {
  return source in maps;
}
 
function originalPositionFor(maps, metadata, range, selectorFallbacks) {
  var line = metadata[0];
  var column = metadata[1];
  var source = metadata[2];
  var position = {
    line: line,
    column: column + range
  };
  var originalPosition;
 
  while (!originalPosition && position.column > column) {
    position.column--;
    originalPosition = maps[source].originalPositionFor(position);
  }
 
  if (!originalPosition || originalPosition.column < 0) {
    return metadata;
  }
 
  if (originalPosition.line === null && line > 1 && selectorFallbacks > 0) {
    return originalPositionFor(maps, [line - 1, column, source], range, selectorFallbacks - 1);
  }
 
  return originalPosition.line !== null ?
    toMetadata(originalPosition) :
    metadata;
}
 
function toMetadata(asHash) {
  return [asHash.line, asHash.column, asHash.source];
}
 
function track(maps, source, data) {
  maps[source] = new SourceMapConsumer(data);
}
 
module.exports = inputSourceMapTracker;