stdout-monkey

who said bananas? was it you?

Usage no npm install needed!

<script type="module">
  import stdoutMonkey from 'https://cdn.skypack.dev/stdout-monkey';
</script>

README

stdout-monkey progressed.io

build NPM version

Monkeypatch for stdout with knobs. For testing purposes, or other things.

install

npm install stdout-monkey

example

var stdout = require('stdout-monkey');

var monkey = stdout(function(str, enc, cb){
  this.log('I want more bananas!');
})

console.log('Hey, stop it!');
// -> I want more bananas!

why

You don't want to spam stdout for testing. You want to batch data or you want to transform data before it reaches stdout.

api

Below when I write stdout I really want to write process.stdout.write.

var monkey = require('stdout-monkey')([callback])

Calling the module with a function returns a monkeypatched stdout disabled by default. Instead the arguments are passed to the given callback.

Note: that is not really accurate since the object is not a writable stream.

monkey.patch([callback])

Default method returned from the module. Patch stdout and disable it. Use the given callback instead. Returns the monkey instance.

monkey.restore([data], [enc], [cb])

Restore stdout. Optionaly write something.

monkey.listen([callback])

Patch stdout but only to include the callback. stdout will work as normal, you can spy but not modify what is written.

monkey.write(data, [enc], [cb])

Use the original process.stdout.write even if it was patched.

monkey.log([arguments])

Use console.log even if stdout was patched.


All above methods are chainable.

properties

The monkey has a state property indicating if process.stdout.write was patched or if he used the restore or listen methods.

NOTE: the state is not changed when calling the log or write methods.

test

npm test

inspirated and based on

todo

  • make the monkey a through stream.

license

LICENSE