aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2020-04-15 10:25:58 +0100
committerGitHub <noreply@github.com>2020-04-15 17:25:58 +0800
commit6e9afdc94fd51a827e9d9db51d650e15681866d3 (patch)
treeae59f88dc3900c24fa47b2a86fb34e097eaa95c3
parentc4d28e3b2a2d82c7e5e3b398513755b507a75e76 (diff)
downloadtracifyjs-6e9afdc94fd51a827e9d9db51d650e15681866d3.tar.gz
tracifyjs-6e9afdc94fd51a827e9d9db51d650e15681866d3.zip
prevent input source map mutation (#3781)
fixes #3780
-rw-r--r--lib/sourcemap.js16
-rw-r--r--test/mocha/sourcemaps.js6
2 files changed, 16 insertions, 6 deletions
diff --git a/lib/sourcemap.js b/lib/sourcemap.js
index 232cfabd..25fbe3bf 100644
--- a/lib/sourcemap.js
+++ b/lib/sourcemap.js
@@ -103,12 +103,16 @@ function SourceMap(options) {
if (options.orig) Object.keys(options.orig).forEach(function(name) {
var map = options.orig[name];
var indices = [ 0, 0, 1, 0, 0 ];
- map.mappings = map.mappings.split(/;/).map(function(line) {
- indices[0] = 0;
- return line.split(/,/).map(function(segment) {
- return indices.slice(0, vlq_decode(indices, segment));
- });
- });
+ options.orig[name] = {
+ names: map.names,
+ mappings: map.mappings.split(/;/).map(function(line) {
+ indices[0] = 0;
+ return line.split(/,/).map(function(segment) {
+ return indices.slice(0, vlq_decode(indices, segment));
+ });
+ }),
+ sources: map.sources,
+ };
if (!sources_content || !map.sourcesContent) return;
for (var i = 0; i < map.sources.length; i++) {
var content = map.sourcesContent[i];
diff --git a/test/mocha/sourcemaps.js b/test/mocha/sourcemaps.js
index f8e399ce..23698c57 100644
--- a/test/mocha/sourcemaps.js
+++ b/test/mocha/sourcemaps.js
@@ -277,6 +277,12 @@ describe("sourcemaps", function() {
});
describe("input sourcemaps", function() {
+ it("Should not modify input source map", function() {
+ var orig = get_map();
+ var original = JSON.stringify(orig);
+ var map = prepare_map(orig);
+ assert.strictEqual(JSON.stringify(orig), original);
+ });
it("Should copy over original sourcesContent", function() {
var orig = get_map();
var map = prepare_map(orig);