Skip to content

Commit dfd166f

Browse files
committed
Breaking: Avoid mutating options when defaulted (closes #16)
1 parent 8992ffd commit dfd166f

File tree

4 files changed

+37
-10
lines changed

4 files changed

+37
-10
lines changed

index.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
22

33
var File = require('vinyl');
4+
var defaults = require('object.defaults');
45

56
var helpers = require('./lib/helpers');
67

@@ -77,14 +78,11 @@ function write(file, options, callback) {
7778
return callback(null, file);
7879
}
7980

80-
// TODO: don't mutate - needs test too
81-
// set defaults for options if unset
82-
if (options.includeContent === undefined) {
83-
options.includeContent = true;
84-
}
85-
if (options.addComment === undefined) {
86-
options.addComment = true;
87-
}
81+
// Set defaults for options if unset
82+
var opts = defaults({}, options, {
83+
includeContent: true,
84+
addComment: true,
85+
});
8886

8987
var sourceMap = file.sourceMap;
9088

@@ -113,12 +111,12 @@ function write(file, options, callback) {
113111
}
114112

115113
var state = {
116-
destPath: options.path,
114+
destPath: opts.path,
117115
sourceMap: sourceMap,
118116
sourceMapFile: null,
119117
};
120118

121-
helpers.writeSourceMaps(file, state, options, callback);
119+
helpers.writeSourceMaps(file, state, opts, callback);
122120
}
123121

124122
module.exports = {

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"css": "^2.2.1",
2929
"detect-newline": "^2.1.0",
3030
"graceful-fs": "^4.1.6",
31+
"object.defaults": "^1.0.0",
3132
"source-map": "^0.5.6",
3233
"strip-bom": "^2.0.0",
3334
"through2": "^2.0.1",

test/add.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,19 @@ describe('add', function() {
8181

8282
describe('ensures options argument', function() {
8383

84+
// Currently no options are defaulted
85+
// TODO: Enable test if any options are defaulted
86+
it.skip('is not mutated', function(done) {
87+
var defaultedOpts = {};
88+
89+
var opts = {};
90+
91+
var file = makeFile();
92+
sourcemaps.add(file, opts, function(err) {
93+
expect(opts).toNotEqual(defaultedOpts);
94+
done(err);
95+
});
96+
});
8497

8598
it('is defaulted if undefined', function(done) {
8699
var file = makeFile();

test/write.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,21 @@ describe('write', function() {
9292

9393
describe('ensures options argument', function() {
9494

95+
it('is not mutated', function(done) {
96+
var defaultedOpts = {
97+
includeContent: true,
98+
addComment: true,
99+
};
100+
101+
var opts = {};
102+
103+
var file = makeFile();
104+
sourcemaps.write(file, opts, function(err) {
105+
expect(opts).toNotEqual(defaultedOpts);
106+
done(err);
107+
});
108+
});
109+
95110
it('is defaulted if undefined', function(done) {
96111
var file = makeFile();
97112
sourcemaps.write(file, undefined, function(err) {

0 commit comments

Comments
 (0)