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 = ;console;
If you want to replace console
with conso1e entirely, overwrite the global console
variable:
console = ; // Overwriting the builtin console objectconsole; // You can still access the original console// via .core propertyconsolecore;
* 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 = ;
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:
;const console = Conso1e; // Local instanceconst console = Conso1e; // 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. |
// Examplelet console = ;console;console; // '[LABEL] ABC'console; // '[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.
// Examplelet parent = ;let child = parent; parent;parent; // '[LABEL] ABC'child; // '[LABEL] 123' // label is inherited child;parent; // '[LABEL] ABC'child; // '[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;const errorLog = fs;const console = ;
You can also pass a console
object to wrap()
:
const myConsole = debugLog errorLog;const console = ;
© 2020 amekusa