1.1.5 β’ Published 12 months ago
cornsol v1.1.5
π½ cornsol π
Pretty, Formatted, Numbered, Customizable
JavaScript console library.
Table of contents
Installation
npm i cornsol
# or
yarn add cornsol
Cautions
cornsol
use the default naming for asynchronous.
If you want to use synchronous functions then use functions below.
function openPrintGroupSync<T>(fn?: () => T): T;
function closePrintGroupSync<T>(fn?: () => T): T;
function printStepSync<T = void>(stepName: string, stepFunction: () => T): T;
function printGroupSync<T = void>(stepFunction: () => T, open?: () => void, close?: () => void): T;
function printArraySync(fn: (msg: any, ...params: any[]) => void, messages: any[]): void;
function printBufferSync(fn: (msg: any, ...params: any[]) => void, chunk: any): void;
Usage
Register globally
const corn = require("cornsol");
corn.register();
// Unregister
corn.unregister();
Function supports
Overloads
- log
- debug
- dir
- info
- warn
- error
- group
- table
- trace
- groupCollapsed
- groupEnd
Extra features
- div
- array
- chunk
Group
Example
const corn = require("cornsol");
corn.register();
// Open and close the group manually
console.group("group start");
console.log("content");
console.groupEnd("close group");
// or
corn.openPrintGroup(console.log, "group start");
console.log("content");
corn.closePrintGroup(console.log, "close group");
Result
β€ 0000: β This is an example for print group
β€ 0001: β group start
β content
β group end
β€ 0002: β group start
β content
β close group
Array
Example
const corn = require("cornsol");
corn.register();
// Synchronous
console.array(["Item 1", "Item 2"]);
// or
corn.printArraySync(console.log, ["Item 1", "Item 2"]);
// Asynchronous
console.array.async(["Item 1", (async () => "Item 2")()]);
// or
corn.printArray(console.log, ["Item 1", (async () => "Item 2")()]);
Result
β€ 0000: β Item 1
β Item 2
Step
Example
const corn = require("cornsol");
corn.register();
// Synchronous
const result = console.step("Step title", () => {
console.log("Process 1");
console.log("Process 2");
return 1;
});
// or
const result = corn.printStepSync("Step title", () => {
// ...
});
// Asynchronous
const result = console.step.async("Step title", () => {
// ...
});
const result = corn.printStep("Step title", () => {
// ...
});
console.log(result);
Result
β€ 0000: β Step title step
β Process 1
β Process 2
β Completed in 0s
β€ 0001: β 1
Chunk
Example
const corn = require("cornsol");
const { exec } = require("child_process");
const proc = exec("ls");
corn.register();
// Synchronous
proc.stdout.on("data", console.chunk);
// or
proc.stdout.on("data", (chunk) => corn.printChunkSync(console.log, chunk));
// Asynchronous
proc.stdout.on("data", console.chunk.async);
// or
proc.stdout.on("data", (chunk) => corn.printChunk(console.log, chunk));
// It works internally like
corn.printArray(console.log, Buffer.from(chunk).toString().trim().split("\n"));
Result
β€ 0000: β dist
β LICENSE
β node_modules
β package.json
β README.md
β src
β test
β tsconfig.json
β yarn.lock
Divider
Example
console.log("message 1");
console.div("This is a divider");
console.log("message 2");
// or
const { printDivider } = require("cornsol");
console.log("message 1");
printDivider("This is a divider");
console.log("message 2");
Result
β€ 0000: β message 1
βββββββββ This is a divider
β€ 0001: β message 2
Customizations
cornsol
supports customizing.
Spinners
cornsol
use ASCII spinners on group print.
There are some presets for spinner.
// Built-in presets
export const spinners = [
/* 0 */ "β£Ύβ£½β£»β’Ώβ‘Ώβ£β£―β£·",
/* 1 */ "ββββββββ",
/* 2 */ "β β β β‘β’β β β ",
/* 3 */ "βββββββββββββ",
/* 4 */ "βββββ
ββββββ
ββββ",
/* 5 */ "ββββ",
/* 6 */ "β€ββ΄ββββ¬β",
/* 7 */ "β’β£β€β₯",
/* 8 */ "β°β³β²β±",
/* 9 */ "β΄β·βΆβ΅",
/* 10 */ "ββββ",
/* 11 */ "β‘ββ ",
/* 12 */ "bαqα",
/* 13 */ "dαpα",
/* 14 */ "d|b|",
/* 15 */ "q|p|",
/* 16 */ "αβαβ",
/* 17 */ "αβαβ",
/* 18 */ "|/β\\",
];
// Update config
const corn = require("cornsol");
corn.configure({
spinner: {
symbols: corn.spinners[4], // "βββββ
ββββββ
ββββ"
},
});
Line numbers
Example
const corn = require("cornsol");
corn.register();
corn.configure({
formatters: {
lineNumber: (context) => `${String(context.lineNo).padStart(2, "0")} [${new Date().toISOString()}]:`,
},
});
console.log(0);
console.log(1);
console.log(2);
Result
β€ 01 [2022-12-20T02:48:47.909Z]: β 0
β€ 02 [2022-12-20T02:48:47.909Z]: β 1
β€ 03 [2022-12-20T02:48:47.909Z]: β 2
Step messages
Example
const corn = require("cornsol");
corn.register();
corn.configure({
formatters: {
stepStart: (context, name) => `The cool step ${name}`,
stepEnd: (context, name, duration) => `The cool step ${name} has been completed in ${context.duration(duration)}`,
},
});
console.log(0);
console.log(1);
console.log(2);
Result
β€ 0000: β The cool step Test
β 0
β 1
β 2
β The cool step Test has been completed in 0s 1ms
Symbols
Example
const corn = require("cornsol");
corn.register();
corn.configure({
symbols: {
prefix: "$",
singleLine: "*",
newLine: "&",
groupStart: "β³",
groupLine: "β£",
groupEnd: "β",
},
});
console.log(0);
console.log(1);
console.log(2);
console.group(0);
console.log(1);
console.log(2);
console.log(3);
console.groupEnd(4);
Result (small size terminal)
$ 0000: * 0
$ 0001: * 1
$ 0002: * 2
$ 0003: β³ The cool step Test
β£ 0
β£ 1
β£ 2
β The cool step Test has been
& completed in 0s 1ms
License
1.1.5
12 months ago
1.1.4
1 year ago
1.1.3
1 year ago
1.1.2
1 year ago
1.1.1
1 year ago
1.1.0
1 year ago
1.0.10
1 year ago
1.0.10-dev.1
1 year ago
1.0.9
1 year ago
1.0.8
1 year ago
1.0.7
1 year ago
1.0.6
1 year ago
1.0.5
1 year ago
1.0.5-dev.2
1 year ago
1.0.5-dev.1
1 year ago
1.0.5-dev.0
1 year ago
1.0.4
1 year ago
1.0.3
1 year ago
1.0.2
1 year ago
1.0.1
1 year ago
1.0.0
1 year ago