| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- "use strict";
- exports.__esModule = true;
- var _from = require("babel-runtime/core-js/array/from");
- var _from2 = _interopRequireDefault(_from);
- var _extends2 = require("babel-runtime/helpers/extends");
- var _extends3 = _interopRequireDefault(_extends2);
- var _stringify = require("babel-runtime/core-js/json/stringify");
- var _stringify2 = _interopRequireDefault(_stringify);
- var _getIterator2 = require("babel-runtime/core-js/get-iterator");
- var _getIterator3 = _interopRequireDefault(_getIterator2);
- var _map = require("babel-runtime/core-js/map");
- var _map2 = _interopRequireDefault(_map);
- exports.default = mergeSourceMap;
- var _sourceMap = require("source-map");
- var _sourceMap2 = _interopRequireDefault(_sourceMap);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function mergeSourceMap(inputMap, map) {
- var input = buildMappingData(inputMap);
- var output = buildMappingData(map);
- var mergedGenerator = new _sourceMap2.default.SourceMapGenerator();
- for (var _iterator = input.sources, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
- var _ref2;
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref2 = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref2 = _i.value;
- }
- var _ref4 = _ref2;
- var _source = _ref4.source;
- if (typeof _source.content === "string") {
- mergedGenerator.setSourceContent(_source.path, _source.content);
- }
- }
- if (output.sources.length === 1) {
- var defaultSource = output.sources[0];
- var insertedMappings = new _map2.default();
- eachInputGeneratedRange(input, function (generated, original, source) {
- eachOverlappingGeneratedOutputRange(defaultSource, generated, function (item) {
- var key = makeMappingKey(item);
- if (insertedMappings.has(key)) return;
- insertedMappings.set(key, item);
- mergedGenerator.addMapping({
- source: source.path,
- original: {
- line: original.line,
- column: original.columnStart
- },
- generated: {
- line: item.line,
- column: item.columnStart
- },
- name: original.name
- });
- });
- });
- for (var _iterator2 = insertedMappings.values(), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
- var _ref3;
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref3 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref3 = _i2.value;
- }
- var item = _ref3;
- if (item.columnEnd === Infinity) {
- continue;
- }
- var clearItem = {
- line: item.line,
- columnStart: item.columnEnd
- };
- var key = makeMappingKey(clearItem);
- if (insertedMappings.has(key)) {
- continue;
- }
- mergedGenerator.addMapping({
- generated: {
- line: clearItem.line,
- column: clearItem.columnStart
- }
- });
- }
- }
- var result = mergedGenerator.toJSON();
- if (typeof input.sourceRoot === "string") {
- result.sourceRoot = input.sourceRoot;
- }
- return result;
- }
- function makeMappingKey(item) {
- return (0, _stringify2.default)([item.line, item.columnStart]);
- }
- function eachOverlappingGeneratedOutputRange(outputFile, inputGeneratedRange, callback) {
- var overlappingOriginal = filterApplicableOriginalRanges(outputFile, inputGeneratedRange);
- for (var _iterator3 = overlappingOriginal, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {
- var _ref6;
- if (_isArray3) {
- if (_i3 >= _iterator3.length) break;
- _ref6 = _iterator3[_i3++];
- } else {
- _i3 = _iterator3.next();
- if (_i3.done) break;
- _ref6 = _i3.value;
- }
- var _ref7 = _ref6;
- var _generated = _ref7.generated;
- for (var _iterator4 = _generated, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, _getIterator3.default)(_iterator4);;) {
- var _ref8;
- if (_isArray4) {
- if (_i4 >= _iterator4.length) break;
- _ref8 = _iterator4[_i4++];
- } else {
- _i4 = _iterator4.next();
- if (_i4.done) break;
- _ref8 = _i4.value;
- }
- var item = _ref8;
- callback(item);
- }
- }
- }
- function filterApplicableOriginalRanges(_ref9, _ref10) {
- var mappings = _ref9.mappings;
- var line = _ref10.line,
- columnStart = _ref10.columnStart,
- columnEnd = _ref10.columnEnd;
- return filterSortedArray(mappings, function (_ref11) {
- var outOriginal = _ref11.original;
- if (line > outOriginal.line) return -1;
- if (line < outOriginal.line) return 1;
- if (columnStart >= outOriginal.columnEnd) return -1;
- if (columnEnd <= outOriginal.columnStart) return 1;
- return 0;
- });
- }
- function eachInputGeneratedRange(map, callback) {
- for (var _iterator5 = map.sources, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : (0, _getIterator3.default)(_iterator5);;) {
- var _ref13;
- if (_isArray5) {
- if (_i5 >= _iterator5.length) break;
- _ref13 = _iterator5[_i5++];
- } else {
- _i5 = _iterator5.next();
- if (_i5.done) break;
- _ref13 = _i5.value;
- }
- var _ref14 = _ref13;
- var _source2 = _ref14.source,
- _mappings = _ref14.mappings;
- for (var _iterator6 = _mappings, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : (0, _getIterator3.default)(_iterator6);;) {
- var _ref16;
- if (_isArray6) {
- if (_i6 >= _iterator6.length) break;
- _ref16 = _iterator6[_i6++];
- } else {
- _i6 = _iterator6.next();
- if (_i6.done) break;
- _ref16 = _i6.value;
- }
- var _ref17 = _ref16;
- var _original = _ref17.original,
- _generated2 = _ref17.generated;
- for (var _iterator7 = _generated2, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : (0, _getIterator3.default)(_iterator7);;) {
- var _ref18;
- if (_isArray7) {
- if (_i7 >= _iterator7.length) break;
- _ref18 = _iterator7[_i7++];
- } else {
- _i7 = _iterator7.next();
- if (_i7.done) break;
- _ref18 = _i7.value;
- }
- var item = _ref18;
- callback(item, _original, _source2);
- }
- }
- }
- }
- function buildMappingData(map) {
- var consumer = new _sourceMap2.default.SourceMapConsumer((0, _extends3.default)({}, map, {
- sourceRoot: null
- }));
- var sources = new _map2.default();
- var mappings = new _map2.default();
- var last = null;
- consumer.computeColumnSpans();
- consumer.eachMapping(function (m) {
- if (m.originalLine === null) return;
- var source = sources.get(m.source);
- if (!source) {
- source = {
- path: m.source,
- content: consumer.sourceContentFor(m.source, true)
- };
- sources.set(m.source, source);
- }
- var sourceData = mappings.get(source);
- if (!sourceData) {
- sourceData = {
- source: source,
- mappings: []
- };
- mappings.set(source, sourceData);
- }
- var obj = {
- line: m.originalLine,
- columnStart: m.originalColumn,
- columnEnd: Infinity,
- name: m.name
- };
- if (last && last.source === source && last.mapping.line === m.originalLine) {
- last.mapping.columnEnd = m.originalColumn;
- }
- last = {
- source: source,
- mapping: obj
- };
- sourceData.mappings.push({
- original: obj,
- generated: consumer.allGeneratedPositionsFor({
- source: m.source,
- line: m.originalLine,
- column: m.originalColumn
- }).map(function (item) {
- return {
- line: item.line,
- columnStart: item.column,
- columnEnd: item.lastColumn + 1
- };
- })
- });
- }, null, _sourceMap2.default.SourceMapConsumer.ORIGINAL_ORDER);
- return {
- file: map.file,
- sourceRoot: map.sourceRoot,
- sources: (0, _from2.default)(mappings.values())
- };
- }
- function findInsertionLocation(array, callback) {
- var left = 0;
- var right = array.length;
- while (left < right) {
- var mid = Math.floor((left + right) / 2);
- var item = array[mid];
- var result = callback(item);
- if (result === 0) {
- left = mid;
- break;
- }
- if (result >= 0) {
- right = mid;
- } else {
- left = mid + 1;
- }
- }
- var i = left;
- if (i < array.length) {
- while (i > 0 && callback(array[i]) >= 0) {
- i--;
- }
- return i + 1;
- }
- return i;
- }
- function filterSortedArray(array, callback) {
- var start = findInsertionLocation(array, callback);
- var results = [];
- for (var i = start; i < array.length && callback(array[i]) === 0; i++) {
- results.push(array[i]);
- }
- return results;
- }
- module.exports = exports["default"];
|