1 | var assign = require("lodash/assign");
|
2 | var isFunction = require("lodash/isFunction");
|
3 |
|
4 | function uglify(source, options) {
|
5 | var UglifyJS = require("uglify-es");
|
6 |
|
7 | var code = source.code;
|
8 | var existingSourceMap = source.map;
|
9 | var uglifyOptions = assign({}, options ? options.uglifyOptions : {});
|
10 |
|
11 | if (options.sourceMaps) {
|
12 | var sourceMap = uglifyOptions.sourceMap || {};
|
13 |
|
14 | if (existingSourceMap) {
|
15 | var content = getRawSourceMap(existingSourceMap);
|
16 | var filename = content.sources && content.sources[0];
|
17 |
|
18 | sourceMap.filename = filename;
|
19 | sourceMap.content = content;
|
20 | }
|
21 |
|
22 | sourceMap.includeSources = !!options.sourceMapsContent;
|
23 | uglifyOptions.sourceMap = sourceMap;
|
24 | }
|
25 |
|
26 | return UglifyJS.minify(code, uglifyOptions);
|
27 | }
|
28 |
|
29 | function getRawSourceMap(map) {
|
30 | return isFunction(map.toJSON) ? map.toJSON() : map;
|
31 | }
|
32 |
|
33 | module.exports = uglify;
|
34 | module.exports.async = function(source, options){
|
35 | return Promise.resolve().then(function() {
|
36 | return uglify(source, options);
|
37 | });
|
38 | };
|