1 | 'use strict';
|
2 |
|
3 | var _loaderUtils = require('loader-utils');
|
4 |
|
5 | var _loaderUtils2 = _interopRequireDefault(_loaderUtils);
|
6 |
|
7 | var _path = require('path');
|
8 |
|
9 | var _path2 = _interopRequireDefault(_path);
|
10 |
|
11 | var _sourceMap = require('source-map');
|
12 |
|
13 | var _sourceMap2 = _interopRequireDefault(_sourceMap);
|
14 |
|
15 | var _TraverseImport = require('./TraverseImport');
|
16 |
|
17 | var _TraverseImport2 = _interopRequireDefault(_TraverseImport);
|
18 |
|
19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | function mergeSourceMap(map, inputMap) {
|
41 | if (inputMap) {
|
42 | var inputMapConsumer = new _sourceMap2.default.SourceMapConsumer(inputMap);
|
43 | var outputMapConsumer = new _sourceMap2.default.SourceMapConsumer(map);
|
44 |
|
45 | var mergedGenerator = new _sourceMap2.default.SourceMapGenerator({
|
46 | file: inputMapConsumer.file,
|
47 | sourceRoot: inputMapConsumer.sourceRoot
|
48 | });
|
49 |
|
50 |
|
51 |
|
52 | var source = outputMapConsumer.sources[0];
|
53 |
|
54 | inputMapConsumer.eachMapping(function (mapping) {
|
55 | var generatedPosition = outputMapConsumer.generatedPositionFor({
|
56 | line: mapping.generatedLine,
|
57 | column: mapping.generatedColumn,
|
58 | source: source
|
59 | });
|
60 | if (generatedPosition.column != null) {
|
61 | mergedGenerator.addMapping({
|
62 | source: mapping.source,
|
63 |
|
64 | original: mapping.source == null ? null : {
|
65 | line: mapping.originalLine,
|
66 | column: mapping.originalColumn
|
67 | },
|
68 |
|
69 | generated: generatedPosition
|
70 | });
|
71 | }
|
72 | });
|
73 |
|
74 | var mergedMap = mergedGenerator.toJSON();
|
75 | inputMap.mappings = mergedMap.mappings;
|
76 | return inputMap;
|
77 | } else {
|
78 | return map;
|
79 | }
|
80 | }
|
81 |
|
82 | module.exports = function (inputSource, inputSourceMap) {
|
83 | this.cacheable();
|
84 | var callback = this.async();
|
85 |
|
86 | var loaderOptions = _loaderUtils2.default.parseQuery(this.query);
|
87 | var resourcePath = this.resourcePath;
|
88 | var sourceMapTarget = _path2.default.basename(resourcePath);
|
89 |
|
90 | var options = Object.assign({ name: 'universal-env' }, loaderOptions);
|
91 |
|
92 | if (!Array.isArray(options.name)) {
|
93 | options.name = [options.name];
|
94 | }
|
95 |
|
96 | var _traverseImport = (0, _TraverseImport2.default)(options, inputSource, {
|
97 | sourceMaps: true,
|
98 | sourceMapTarget: sourceMapTarget,
|
99 | sourceFileName: resourcePath
|
100 | }),
|
101 | code = _traverseImport.code,
|
102 | map = _traverseImport.map;
|
103 |
|
104 | callback(null, code, mergeSourceMap(map, inputSourceMap));
|
105 | }; |
\ | No newline at end of file |