Skip to content
Permalink
Browse files

lib: avoid using forEach in LazyTransform

PR-URL: #11582
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  • Loading branch information...
jasnell committed Feb 27, 2017
1 parent a993beb commit 4d090855c6199cb1308ed88afbdfbf691533c758
Showing with 41 additions and 25 deletions.
  1. +41 −25 lib/internal/streams/lazy_transform.js
@@ -14,31 +14,47 @@ function LazyTransform(options) {
}
util.inherits(LazyTransform, stream.Transform);

[
'_readableState',
'_writableState',
'_transformState'
].forEach(function(prop, i, props) {
Object.defineProperty(LazyTransform.prototype, prop, {
get: function() {
stream.Transform.call(this, this._options);
this._writableState.decodeStrings = false;

if (!this._options || !this._options.defaultEncoding) {
this._writableState.defaultEncoding = crypto.DEFAULT_ENCODING;
}

return this[prop];
},
set: function(val) {
Object.defineProperty(this, prop, {
value: val,
enumerable: true,
configurable: true,
writable: true
});
},
function makeGetter(name) {
return function() {
stream.Transform.call(this, this._options);
this._writableState.decodeStrings = false;

if (!this._options || !this._options.defaultEncoding) {
this._writableState.defaultEncoding = crypto.DEFAULT_ENCODING;
}

return this[name];
};
}

function makeSetter(name) {
return function(val) {
Object.defineProperty(this, name, {
value: val,
enumerable: true,
configurable: true,
writable: true
});
};
}

Object.defineProperties(LazyTransform.prototype, {
_readableState: {
get: makeGetter('_readableState'),
set: makeSetter('_readableState'),
configurable: true,
enumerable: true
},
_writableState: {
get: makeGetter('_writableState'),
set: makeSetter('_writableState'),
configurable: true,
enumerable: true
},
_transformState: {
get: makeGetter('_transformState'),
set: makeSetter('_transformState'),
configurable: true,
enumerable: true
});
}
});

0 comments on commit 4d09085

Please sign in to comment.
You can’t perform that action at this time.