@seeessence/unit
Version:
```bash npm install seeessence/unit ```
67 lines (53 loc) • 2.21 kB
JavaScript
var stream = require('stream');
var util = require('util');
var names = {};
var callers = {};
module.exports = function (source, destination, name) {
if (source instanceof Function || typeof source === 'function') {
var transform = new stream.PassThrough({
objectMode: true,
transform: function(object, encoding, callback) {
source(object, callback.bind(null, null));
}
});
}
transform.pipe = (function (pipe) {
return function () {
for (var argument in arguments)
if (arguments.hasOwnProperty(argument))
pipe.call(this, arguments[argument]);
};
})(transform.pipe);
if (!process.env.npm_package_config_debug)
return transform;
if (!name) {
var caller = arguments.callee.caller.toString();
callers[caller] = (callers[caller] || caller).replace(
/([^\s]+)\s*\=\s*stream\s*\(/,
function () { name = arguments[1]; }
);
}
name = name + (++names[name] || !(names[name] = 1) || '');
for (var event in exports.events)
transform.on(event, exports.events[event]);
return transform;
};
module.exports.regexp = /([^\s\(\+\;]+)\s*\=\s*(stream)\s*\(/;
module.exports.events = {
end: console.log.bind(console, this.name + ' ended'),
close: console.log.bind(console, this.name + ' closed'),
pause: console.log.bind(console, this.name + ' paused'),
drain: console.log.bind(console, this.name + ' drained'),
resume: console.log.bind(console, this.name + ' resumed'),
finish: console.log.bind(console, this.name + ' finished'),
readable: console.log.bind(console, this.name + ' is readable'),
unpipe: function (destination) {
console.log(this.name + ' unpiped from ' + destination.name);
},
data: function (data) {
console.log(this.name + ' data is ' + util.inspect(data));
},
pipe: function (destination) {
console.log(destination.name + ' piped to ' + this.name);
}
};