1.7.0 • Published 1 year ago

@jumpcutking/console v1.7.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@jumpcutking/console

@jumpcutking/console is a sophisticated console reporting system designed to provide developers with enhanced feedback, including line traces of events, multi-object reporting, event listening, and consistent logging. This module modifies the Node.js global console to deliver a seamless and informative debugging experience with unlimited object depth.

Although currently optimized for server-side Node.js, future updates may include support for web browsers. For comprehensive documentation, please visit the docs.

This open-source project originates from a console module used in @jumpcutking/threads and is a key component of The Universe platform.

Features

  • Enhanced Feedback: Provides line traces of events, multi-object reporting, and event listening.
  • Consistent Logging: Modifies the global console for a uniform logging experience.
  • Unlimited Depth: Allows unlimited object depth for detailed inspection.
  • Error Handling: Improved handling of undefined objects and safe error generation.

What's New

v1.7.0

  • Added improved undefined object handling when passing objects to console.function("String", $obj).

v1.6.0

  • Additional bug fixes.
  • Introduced jckConsole.TruncateTopLevel for reporting top-level object properties, useful for large objects without removing nested arrays and attached objects.

v1.5.0

  • jckConsole now provides generateSafeError for automatically generating safe, communicable error objects.
  • Added a string variable to match the original stack trace item for easier debugging in VSCode.

Installation

Install the module using NPM:

```bash npm install @jumpcutking/console ```

Usage

Integrating @jumpcutking/console is straightforward. Add the following code at the top of your script:

```javascript const jckConsole = require('@jumpcutking/console'); jckConsole.startup({ ...options }); ```

@jumpcutking/console will not override the global console object until `startup()` is called with the specified options.

Options

NameTypeDescription
reportToConsolebooleanAutomatically report to the terminal and console.
generateStacktracebooleanGenerate a stacktrace object for each log message.
storeLogsbooleanStore logs in memory.
depthnumberDepth to inspect objects (0 for unlimited).

Adding a Callback or Listening to an Event

@jumpcutking/console supports two types of callbacks: one for all console calls and another for specific console functions.

Example

```javascript jckConsole.on('entry', (type, message, args, stack, from) => { // Your code here... });

// or

console.on('entry', (type, message, args, stack, from) => { // Your code here... }); ```

```javascript jckConsole.on('warn', (message, args, stack, from) => { // Your code here... });

// or

console.on('warn', (message, args, stack, from) => { // Your code here... }); ```

Supported Methods

NameTypeDescription
logfunctionThe log function.
infofunctionThe info function.
warnfunctionThe warn function.
errorfunctionThe error function.
debugfunctionThe debug function.

Logging Entries

@jumpcutking/console can store logs in memory for later retrieval, each stamped with DateTime and, if enabled, a stacktrace object.

Example

```javascript const entries = jckConsole.getEntries(); console.getEntries();

// Clear entries jckConsole.clearEntries(); console.clearEntries(); ```

Log Entry Object

NameTypeDescription
typestringThe type of console message.
messagestringThe message provided to the console object.
args*Additional arguments provided.
stackArrayStacktrace object array.
whenDateTimeEntry creation time.
fromobjectStacktrace object for the original caller.

Building Documentation

To build the documentation, run the following command:

```bash npm run docs ```

Ensure you have the `jsdoc-to-markdown` module installed:

```bash npm install jsdoc-to-markdown ```

Using Node's Console Object

You can still use the original console object by creating a new instance after overriding the global console object.

```javascript const { Console } = require('node:console'); const myConsole = new Console({ stdout: process.stdout, stderr: process.stderr }); ```

Code Overview

This module replaces Node's built-in console with one that supports event listeners, enabling child threads to communicate using console.log syntax. It is designed for server-side use and has not been tested for client-side applications.

For detailed implementation, refer to the source code and examples provided in the repository.

Notes from the Project Creator

Rewritten: I've asked ChatGPT 4o to help me rewrite the README.md file for the @jumpcutking/console module. It's based on the one I've written and provides a deep indepth view of the code. If you have any questions, or prefer the older style, please let me know. Thank you!