1.1.5 β€’ Published 12 months ago

cornsol v1.1.5

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

🌽 cornsol 🌞

Pretty, Formatted, Numbered, Customizable

JavaScript console library.

Demo

npm npm dev dependency version npm GitHub code size in bytes NPM GitHub Repo stars

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

MIT

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