UNPKG

@seeessence/unit

Version:

```bash npm install seeessence/unit ```

67 lines (53 loc) 2.21 kB
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); } };