Projekt

Obecné

Profil

Stáhnout (8.9 KB) Statistiky
| Větev: | Revize:
1
"use strict";
2

    
3
exports.__esModule = true;
4

    
5
var _from = require("babel-runtime/core-js/array/from");
6

    
7
var _from2 = _interopRequireDefault(_from);
8

    
9
var _extends2 = require("babel-runtime/helpers/extends");
10

    
11
var _extends3 = _interopRequireDefault(_extends2);
12

    
13
var _stringify = require("babel-runtime/core-js/json/stringify");
14

    
15
var _stringify2 = _interopRequireDefault(_stringify);
16

    
17
var _getIterator2 = require("babel-runtime/core-js/get-iterator");
18

    
19
var _getIterator3 = _interopRequireDefault(_getIterator2);
20

    
21
var _map = require("babel-runtime/core-js/map");
22

    
23
var _map2 = _interopRequireDefault(_map);
24

    
25
exports.default = mergeSourceMap;
26

    
27
var _sourceMap = require("source-map");
28

    
29
var _sourceMap2 = _interopRequireDefault(_sourceMap);
30

    
31
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32

    
33
function mergeSourceMap(inputMap, map) {
34
  var input = buildMappingData(inputMap);
35
  var output = buildMappingData(map);
36

    
37
  var mergedGenerator = new _sourceMap2.default.SourceMapGenerator();
38
  for (var _iterator = input.sources, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
39
    var _ref2;
40

    
41
    if (_isArray) {
42
      if (_i >= _iterator.length) break;
43
      _ref2 = _iterator[_i++];
44
    } else {
45
      _i = _iterator.next();
46
      if (_i.done) break;
47
      _ref2 = _i.value;
48
    }
49

    
50
    var _ref4 = _ref2;
51
    var _source = _ref4.source;
52

    
53
    if (typeof _source.content === "string") {
54
      mergedGenerator.setSourceContent(_source.path, _source.content);
55
    }
56
  }
57

    
58
  if (output.sources.length === 1) {
59
    var defaultSource = output.sources[0];
60
    var insertedMappings = new _map2.default();
61

    
62
    eachInputGeneratedRange(input, function (generated, original, source) {
63
      eachOverlappingGeneratedOutputRange(defaultSource, generated, function (item) {
64
        var key = makeMappingKey(item);
65
        if (insertedMappings.has(key)) return;
66
        insertedMappings.set(key, item);
67

    
68
        mergedGenerator.addMapping({
69
          source: source.path,
70
          original: {
71
            line: original.line,
72
            column: original.columnStart
73
          },
74
          generated: {
75
            line: item.line,
76
            column: item.columnStart
77
          },
78
          name: original.name
79
        });
80
      });
81
    });
82

    
83
    for (var _iterator2 = insertedMappings.values(), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
84
      var _ref3;
85

    
86
      if (_isArray2) {
87
        if (_i2 >= _iterator2.length) break;
88
        _ref3 = _iterator2[_i2++];
89
      } else {
90
        _i2 = _iterator2.next();
91
        if (_i2.done) break;
92
        _ref3 = _i2.value;
93
      }
94

    
95
      var item = _ref3;
96

    
97
      if (item.columnEnd === Infinity) {
98
        continue;
99
      }
100

    
101
      var clearItem = {
102
        line: item.line,
103
        columnStart: item.columnEnd
104
      };
105

    
106
      var key = makeMappingKey(clearItem);
107
      if (insertedMappings.has(key)) {
108
        continue;
109
      }
110

    
111
      mergedGenerator.addMapping({
112
        generated: {
113
          line: clearItem.line,
114
          column: clearItem.columnStart
115
        }
116
      });
117
    }
118
  }
119

    
120
  var result = mergedGenerator.toJSON();
121

    
122
  if (typeof input.sourceRoot === "string") {
123
    result.sourceRoot = input.sourceRoot;
124
  }
125
  return result;
126
}
127

    
128
function makeMappingKey(item) {
129
  return (0, _stringify2.default)([item.line, item.columnStart]);
130
}
131

    
132
function eachOverlappingGeneratedOutputRange(outputFile, inputGeneratedRange, callback) {
133
  var overlappingOriginal = filterApplicableOriginalRanges(outputFile, inputGeneratedRange);
134

    
135
  for (var _iterator3 = overlappingOriginal, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {
136
    var _ref6;
137

    
138
    if (_isArray3) {
139
      if (_i3 >= _iterator3.length) break;
140
      _ref6 = _iterator3[_i3++];
141
    } else {
142
      _i3 = _iterator3.next();
143
      if (_i3.done) break;
144
      _ref6 = _i3.value;
145
    }
146

    
147
    var _ref7 = _ref6;
148
    var _generated = _ref7.generated;
149

    
150
    for (var _iterator4 = _generated, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, _getIterator3.default)(_iterator4);;) {
151
      var _ref8;
152

    
153
      if (_isArray4) {
154
        if (_i4 >= _iterator4.length) break;
155
        _ref8 = _iterator4[_i4++];
156
      } else {
157
        _i4 = _iterator4.next();
158
        if (_i4.done) break;
159
        _ref8 = _i4.value;
160
      }
161

    
162
      var item = _ref8;
163

    
164
      callback(item);
165
    }
166
  }
167
}
168

    
169
function filterApplicableOriginalRanges(_ref9, _ref10) {
170
  var mappings = _ref9.mappings;
171
  var line = _ref10.line,
172
      columnStart = _ref10.columnStart,
173
      columnEnd = _ref10.columnEnd;
174

    
175
  return filterSortedArray(mappings, function (_ref11) {
176
    var outOriginal = _ref11.original;
177

    
178
    if (line > outOriginal.line) return -1;
179
    if (line < outOriginal.line) return 1;
180

    
181
    if (columnStart >= outOriginal.columnEnd) return -1;
182
    if (columnEnd <= outOriginal.columnStart) return 1;
183

    
184
    return 0;
185
  });
186
}
187

    
188
function eachInputGeneratedRange(map, callback) {
189
  for (var _iterator5 = map.sources, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, _getIterator3.default)(_iterator5);;) {
190
    var _ref13;
191

    
192
    if (_isArray5) {
193
      if (_i5 >= _iterator5.length) break;
194
      _ref13 = _iterator5[_i5++];
195
    } else {
196
      _i5 = _iterator5.next();
197
      if (_i5.done) break;
198
      _ref13 = _i5.value;
199
    }
200

    
201
    var _ref14 = _ref13;
202
    var _source2 = _ref14.source,
203
        _mappings = _ref14.mappings;
204

    
205
    for (var _iterator6 = _mappings, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, _getIterator3.default)(_iterator6);;) {
206
      var _ref16;
207

    
208
      if (_isArray6) {
209
        if (_i6 >= _iterator6.length) break;
210
        _ref16 = _iterator6[_i6++];
211
      } else {
212
        _i6 = _iterator6.next();
213
        if (_i6.done) break;
214
        _ref16 = _i6.value;
215
      }
216

    
217
      var _ref17 = _ref16;
218
      var _original = _ref17.original,
219
          _generated2 = _ref17.generated;
220

    
221
      for (var _iterator7 = _generated2, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, _getIterator3.default)(_iterator7);;) {
222
        var _ref18;
223

    
224
        if (_isArray7) {
225
          if (_i7 >= _iterator7.length) break;
226
          _ref18 = _iterator7[_i7++];
227
        } else {
228
          _i7 = _iterator7.next();
229
          if (_i7.done) break;
230
          _ref18 = _i7.value;
231
        }
232

    
233
        var item = _ref18;
234

    
235
        callback(item, _original, _source2);
236
      }
237
    }
238
  }
239
}
240

    
241
function buildMappingData(map) {
242
  var consumer = new _sourceMap2.default.SourceMapConsumer((0, _extends3.default)({}, map, {
243
    sourceRoot: null
244
  }));
245

    
246
  var sources = new _map2.default();
247
  var mappings = new _map2.default();
248

    
249
  var last = null;
250

    
251
  consumer.computeColumnSpans();
252

    
253
  consumer.eachMapping(function (m) {
254
    if (m.originalLine === null) return;
255

    
256
    var source = sources.get(m.source);
257
    if (!source) {
258
      source = {
259
        path: m.source,
260
        content: consumer.sourceContentFor(m.source, true)
261
      };
262
      sources.set(m.source, source);
263
    }
264

    
265
    var sourceData = mappings.get(source);
266
    if (!sourceData) {
267
      sourceData = {
268
        source: source,
269
        mappings: []
270
      };
271
      mappings.set(source, sourceData);
272
    }
273

    
274
    var obj = {
275
      line: m.originalLine,
276
      columnStart: m.originalColumn,
277
      columnEnd: Infinity,
278
      name: m.name
279
    };
280

    
281
    if (last && last.source === source && last.mapping.line === m.originalLine) {
282
      last.mapping.columnEnd = m.originalColumn;
283
    }
284

    
285
    last = {
286
      source: source,
287
      mapping: obj
288
    };
289

    
290
    sourceData.mappings.push({
291
      original: obj,
292
      generated: consumer.allGeneratedPositionsFor({
293
        source: m.source,
294
        line: m.originalLine,
295
        column: m.originalColumn
296
      }).map(function (item) {
297
        return {
298
          line: item.line,
299
          columnStart: item.column,
300

    
301
          columnEnd: item.lastColumn + 1
302
        };
303
      })
304
    });
305
  }, null, _sourceMap2.default.SourceMapConsumer.ORIGINAL_ORDER);
306

    
307
  return {
308
    file: map.file,
309
    sourceRoot: map.sourceRoot,
310
    sources: (0, _from2.default)(mappings.values())
311
  };
312
}
313

    
314
function findInsertionLocation(array, callback) {
315
  var left = 0;
316
  var right = array.length;
317
  while (left < right) {
318
    var mid = Math.floor((left + right) / 2);
319
    var item = array[mid];
320

    
321
    var result = callback(item);
322
    if (result === 0) {
323
      left = mid;
324
      break;
325
    }
326
    if (result >= 0) {
327
      right = mid;
328
    } else {
329
      left = mid + 1;
330
    }
331
  }
332

    
333
  var i = left;
334
  if (i < array.length) {
335
    while (i > 0 && callback(array[i]) >= 0) {
336
      i--;
337
    }
338
    return i + 1;
339
  }
340

    
341
  return i;
342
}
343

    
344
function filterSortedArray(array, callback) {
345
  var start = findInsertionLocation(array, callback);
346

    
347
  var results = [];
348
  for (var i = start; i < array.length && callback(array[i]) === 0; i++) {
349
    results.push(array[i]);
350
  }
351

    
352
  return results;
353
}
354
module.exports = exports["default"];
(3-3/4)