Fix overwriting existing sourcesContent in sourcemaps (#4567)
This commit is contained in:
@@ -144,7 +144,9 @@ function SourceMap(options) {
|
|||||||
add(source, gen_line, gen_col, orig_line, orig_col, name);
|
add(source, gen_line, gen_col, orig_line, orig_col, name);
|
||||||
} : add,
|
} : add,
|
||||||
setSourceContent: sources_content ? function(source, content) {
|
setSourceContent: sources_content ? function(source, content) {
|
||||||
|
if (!(source in sources_content)) {
|
||||||
sources_content[source] = content;
|
sources_content[source] = content;
|
||||||
|
}
|
||||||
} : noop,
|
} : noop,
|
||||||
toString: function() {
|
toString: function() {
|
||||||
return JSON.stringify({
|
return JSON.stringify({
|
||||||
|
|||||||
@@ -244,6 +244,39 @@ describe("sourcemaps", function() {
|
|||||||
assert.strictEqual(result.code, '(function(){console.log("hello")}).call(this);');
|
assert.strictEqual(result.code, '(function(){console.log("hello")}).call(this);');
|
||||||
assert.strictEqual(result.map, '{"version":3,"sources":["main.coffee"],"names":["console","log"],"mappings":"CAAA,WAAAA,QAAQC,IAAI"}');
|
assert.strictEqual(result.map, '{"version":3,"sources":["main.coffee"],"names":["console","log"],"mappings":"CAAA,WAAAA,QAAQC,IAAI"}');
|
||||||
});
|
});
|
||||||
|
it("Should not overwrite existing sourcesContent", function() {
|
||||||
|
var result = UglifyJS.minify({
|
||||||
|
"in.js": [
|
||||||
|
'"use strict";',
|
||||||
|
"",
|
||||||
|
"var _window$foo = window.foo,",
|
||||||
|
" a = _window$foo[0],",
|
||||||
|
" b = _window$foo[1];",
|
||||||
|
].join("\n"),
|
||||||
|
}, {
|
||||||
|
compress: false,
|
||||||
|
mangle: false,
|
||||||
|
sourceMap: {
|
||||||
|
content: {
|
||||||
|
version: 3,
|
||||||
|
sources: [ "in.js" ],
|
||||||
|
names: [
|
||||||
|
"window",
|
||||||
|
"foo",
|
||||||
|
"a",
|
||||||
|
"b",
|
||||||
|
],
|
||||||
|
mappings: ";;kBAAaA,MAAM,CAACC,G;IAAfC,C;IAAGC,C",
|
||||||
|
file: "in.js",
|
||||||
|
sourcesContent: [ "let [a, b] = window.foo;\n" ],
|
||||||
|
},
|
||||||
|
includeSources: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
if (result.error) throw result.error;
|
||||||
|
assert.strictEqual(result.code, '"use strict";var _window$foo=window.foo,a=_window$foo[0],b=_window$foo[1];');
|
||||||
|
assert.strictEqual(result.map, '{"version":3,"sources":["in.js"],"sourcesContent":["let [a, b] = window.foo;\\n"],"names":["window","foo","a","b"],"mappings":"6BAAaA,OAAOC,IAAfC,E,eAAGC,E"}');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("sourceMapInline", function() {
|
describe("sourceMapInline", function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user