README
conso1e ( conso[one]e ) is a fully functional console
wrapper with additional features. Since it wraps every console
method, you can simply replace console
with it.
Features
- Supports method-chaining
- It's stateful
- Logs can be suppressed & bufferable
- Provides a global & singleton instance which is accessible across modules
- Labels
- Subcontexts
Getting Started
Install it with NPM:
npm i conso1e
require()
it and create()
an instance:
const console = require('conso1e').create();
console.log('Hello');
If you want to replace console
with conso1e entirely, overwrite the global console
variable:
console = require('conso1e').create(); // Overwriting the builtin console object
console.log('Hello');
// You can still access the original console
// via .core property
console.core.log('Hello');
* Beware that overwriting console
affects the entire application
Instead of creating a local instance, you can also use global()
to access the global instance:
const console = require('conso1e').global();
global()
always returns the same instance. In other words, it returns singleton.
The global instance persists across different modules.
ES module loading is also supported:
import Conso1e from 'conso1e';
const console = Conso1e.create(); // Local instance
const console = Conso1e.global(); // Global instance
Methods & Properties
.suppress ( buffer = false )
Starts suppression. During suppression, any method calls don't output to the console.
Suppression can be bypassed by prefixing methods with underscore (ex. console.log()
→ console._log()
).
- @param <boolean> buffer
- If true, suppressed calls will be buffered
- @return
- Returns
this
- Returns
.unsuppress ( flush = true )
Ends suppression.
- @param <boolean> flush
- If true, all the buffered calls are sent to the console at once
- @return
- Returns
this
- Returns
.flush ( )
Outputs and clears the current buffers
.clearBuffers ( )
Clears the current buffers without output
.option ( name[, value] )
Sets or returns an option value by name
- @param <string> name
- Name of the option
- @param <any> value
- New value to set to the option
- @return
- Returns
this
ifvalue
is provided. Otherwise, returns the option value
- Returns
Available Options:
name | type | description |
---|---|---|
label |
string | If any string is set, it appears preceding every console output. |
forceOutput |
boolean | If it is true , suppression is completely ignored. |
// Example
let console = require('conso1e').create();
console.option('label', '[LABEL]');
console.log('ABC'); // '[LABEL] ABC'
console.log('DEF'); // '[LABEL] DEF'
.subcontext ( )
Creates and returns a subcontext. Subcontext is a child conso1e instance that inherits the current state and the core from the parent.
A subcontext defaults to the parent's current state and the option values. However you can override these individually.
// Example
let parent = require('conso1e').create();
let child = parent.subcontext();
parent.option('label', '[LABEL]');
parent.log('ABC'); // '[LABEL] ABC'
child.log('123'); // '[LABEL] 123' // label is inherited
child.option('label', '[SUB_LABEL]');
parent.log('ABC'); // '[LABEL] ABC'
child.log('123'); // '[SUB_LABEL] 123' // label is overriden
- @return
- Returns a new subcontext instance
.core
The real console
object that is wrapped
@type object *(read only)
.parent
The parent conso1e instance. It is null
if this
is not a subcontext
@type object <conso1e> *(read only)
.isSuppressed
Whether suppression is currently active, or not
@type boolean *(read only)
.isBuffering
Whether buffering is currently active, or not
@type boolean *(read only)
.hasBuffer
Whether the console has any buffered call
@type boolean *(read only)
Advanced Usage
Custom Console
create()
function has the exact same parameters as the constructor of the built-in Console class.
const debugLog = fs.createWriteStream('./debug.log');
const errorLog = fs.createWriteStream('./error.log');
const console = require('conso1e').create(debugLog, errorLog);
You can also pass a console
object to wrap()
:
const myConsole = new console.Console(debugLog, errorLog);
const console = require('conso1e').wrap(myConsole);
© 2020 amekusa