mirror of
https://github.com/nodejs/node.git
synced 2025-05-06 14:52:19 +00:00

PullRequest #5522 and #5500 described the change of the default encoding into UTF8 in crypto functions. This however was only changed for the non-streaming API. The streaming API still used binary as the default encoding. This commit will change the default streaming API encoding to UTF8 to make both APIs behave the same. It will also add tests to validate the behavior. Refs: https://github.com/nodejs/node/pull/5522 Refs: https://github.com/nodejs/node/pull/5500 PR-URL: https://github.com/nodejs/node/pull/8611 Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
// LazyTransform is a special type of Transform stream that is lazily loaded.
|
|
// This is used for performance with bi-API-ship: when two APIs are available
|
|
// for the stream, one conventional and one non-conventional.
|
|
'use strict';
|
|
|
|
const stream = require('stream');
|
|
const util = require('util');
|
|
const crypto = require('crypto');
|
|
|
|
module.exports = LazyTransform;
|
|
|
|
function LazyTransform(options) {
|
|
this._options = 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
|
|
});
|
|
},
|
|
configurable: true,
|
|
enumerable: true
|
|
});
|
|
});
|