consono
TypeScript icon, indicating that this package has built-in type declarations

1.4.17 • Public • Published

Consono

🕵️ Consono 🕵️‍♀️

The most correct, informative, appealing, and configurable variable inspector for JavaScript.

📝 Consono Documentation

npm downloads stars types build lgtm


🔋 Motivation

Motivation and differences from other libraries.

  • ☀️ Light and 🌑 dark themes for terminal output.
  • 🎚️ Configurable coloring of variables.
  • Can print to terminal or 🌈 return formatted and colored string for later use.
  • 🔀 Turn on/off output colorization.
  • Configurable indent - tabs 🆚 spaces holy war 👼🏻 ⚔️ 🇻🇦.
  • Availability to set the 🕳️ depth for object inspection.
  • Configurable #️⃣ max items for array, map, object, set.
  • ✂️Limit string length when printing for better readability.
  • Inspect both string 📐 character count and 📏 string length.
  • Inspect 0️ positive zeroes and 0️ negative zeroes.
  • Inspect 🔍 items count for collection-like variables array, map, object, set.
  • Actually 🔬 can inspect arguments, set and map.
  • Can print 📛 function names or mark them as anonymous.
  • Handles 🔄 circular references.
  • Has 📘 TypeScript declaration file.
  • Avoids 🔱😈🔥 dependency hell.
  • Can 🧹 clear terminal before output.
  • Can 💥 exit Node.js process after output.
  • Import as 🆕 ECMAScript module.
  • And so on and so forth ♾️.

🧬 Examples

consono(undefined);
consono(null);

Nil

consono(true);
consono(false);

Boolean

consono(Infinity);
consono(Number.NEGATIVE_INFINITY);
consono(NaN);
consono(1);
consono(1.5);
consono(BigInt(9007199254740991));

Number

consono(new Date());

Date

consono("Hello, world 😀😁😂🤣😃😄😅😆😉😊", { stringMaxLength: 17 });
consono(Symbol("🌈"));

String

consono(/[0-9]+/);
consono(/\w+/giu);

RegExp

consono(function() {});
consono(function helloWorld() {});
consono(() => {});

Function

consono(new Promise(() => {}));
consono(async function helloWorld() {});
consono(async () => {});
consono(function* gen() { yield 1; });

Async

consono([1, 2, 3]);
consono(Int8Array.from([1, 2, 3]));

Array

consono(new ArrayBuffer(8));
consono(new SharedArrayBuffer(16));

Array Buffer

consono(new Set(["a", true, { prop: 1 }]));
consono(new Map([["first", "a"], [true, "b"]]));
consono(new WeakMap());
consono(new WeakSet());

Collection

consono({});

class MyClass {} const myClass = new MyClass(); myClass.deeper = new
MyClass(); consono(myClass);

Object

consono(new Error("Standard error"));
consono(new EvalError("Unable to run this code"));
consono(new RangeError("Must be less than 10 and greater than 0"));
consono(new ReferenceError("This is error from try/catch"));
consono(new SyntaxError("Not a source code"));
consono(new TypeError("Value is not of the expected type"));

Error

(function(a, b) { consono(arguments); })(true, false);

Arguments

consono(global || globalThis, { objectMaxProps: 3 });

Global

📦 Installation

npm -s install consono

⌨️ Include

The default is a function for printing variable.

import { consono } from "consono";

Import multiple items: function, constructor, options object, theme objects.

import {
  Consono,
  consono,
  options,
  THEME_DARK,
  THEME_LIGHT,
} from "consono";

UNPKG CDN.

Note that the web browser version has no theme support, limited color palette, and only support chromium based browsers.

<script src="https://unpkg.com/consono/dist/consono.js"></script>

⚙️ Options

import { Consono } from "consono";
const options = {
  clear: true,
  quotesEnd: `”`,
  quotesStart: `“`,
  stringMaxLength: 54,
};
const theme = "light"; // default is "dark"
const consono = new Consono(options, theme);
consono.log("Cleared before output. Different quotes. And cut to 54!");
// string • "Cleared before output. Different quotes. And cut to 54"
// (length=55, shown=54)
import { Consono } from "consono";
const theme = {
  argument: [253, 151, 31],
  boolean: [174, 129, 255],
  comment: [117, 113, 94],
  keyword: [249, 38, 114],
  name: [230, 219, 116],
  number: [174, 129, 255],
  plain: [255, 255, 255],
  property: [102, 217, 239],
  string: [166, 226, 46],
};
const consono = new Consono(null, theme);
consono.log("Themed");
import { Consono, options } from "consono";
options.colorize = false;
const consono = new Consono(options);
consono.log("Text without colorization");
import { consono } from "consono";
console.debug(
  consono("Outputs a message only at the debug log level.", false)
);

🏷️ Instance

const consono = Consono.factory(options, theme);
consono("This is log function with your own options");

🔖 Log function

import { consono } from "consono";
const map = new Map();
map.add("key", true);
consono(map);

Return string with variable description.

const variableAsString = consono({}, false);

or

const variableAsString = consono({},  { console: false });
const defaultOptions = {
  // Maximum number of elements in array to show
  arrayMaxElements: 99,
  // Assign symbol
  assignSymbol: "→",
  // Clear console before output
  clear: false,
  // Colorize the output
  colorize: true,
  // Output to console
  console: true,
  // Default depth of object
  depth: 20,
  // 'false' - do nothing. 'true' - exit status ok.
  // Number greater than zero - exit status with passed error code.
  exit: false,
  // Call console.log immediately
  immediate: false,
  // Print indentation
  indent: "ˑˑ",
  // Maximum number of entries in map to show
  mapMaxEntries: 99,
  // Maximum number of properties in object to show
  objectMaxProps: 99,
  // Quote start
  quotesEnd: `"`,
  // Quote end
  quotesStart: `"`,
  // Return inspected variable as string
  returns: true,
  // Maximum number of values in set to show
  setMaxValues: 99,
  // Call `process.stdout.write` instead of `console.log`.
  stdout: false,
  // Maximum length of string to show
  stringMaxLength: 360,
};
consono("Some variable", defaultOptions);

🔮 Shortcuts

// Exit code - 15
consonoExit("Some value", null, null, 15);
// No colorization, no description, only printing with `console.dir`
consonoJSON("Some value");
// No colorization, no description, only printing with `process.stdout.write`
consonoOut("Some value");
// No colorization
consonoPlain("Some value");
// Return only, no `console.log`
consonoReturn("Some value");

👀 Discover more

My other projects

Package Sidebar

Install

npm i consono

Weekly Downloads

15

Version

1.4.17

License

MIT

Unpacked Size

563 kB

Total Files

15

Last publish

Collaborators

  • r37r0m0d3l