conventional-changelog-action/node_modules/add-stream/index.js

57 lines
1.1 KiB
JavaScript

'use strict';
var PassThrough = require('stream').PassThrough;
var Writable = require('stream').Writable;
var util = require('util');
util.inherits(Appendee, PassThrough);
util.inherits(Appender, Writable);
function Appendee(factory, opts) {
PassThrough.call(this, opts);
this.factory = factory;
this.opts = opts;
}
//noinspection JSUnusedGlobalSymbols
Appendee.prototype._flush = function (end) {
var stream = this.factory();
stream.pipe(new Appender(this, this.opts))
.on('finish', end);
stream.resume();
};
function Appender(target, opts) {
Writable.call(this, opts);
this.target = target;
}
//noinspection JSUnusedGlobalSymbols
Appender.prototype._write = function (chunk, enc, cb) {
this.target.push(chunk);
cb();
};
function addStream(stream, opts) {
opts = opts || {};
var factory;
if (typeof stream === 'function') {
factory = stream;
}
else {
stream.pause();
factory = function () {
return stream;
};
}
return new Appendee(factory, opts);
}
addStream.obj = function (stream, opts) {
opts = opts || {};
opts.objectMode = true;
return addStream(stream, opts);
};
module.exports = addStream;