Skip to content

`util.inspect` with additional type information

License

Notifications You must be signed in to change notification settings

shinnn/inspect-with-kind

Repository files navigation

inspect-with-kind

npm version Build Status Coverage Status

util.inspect with additional type information

const {inspect} = require('util');
const inspectWithKind = require('inspect-with-kind');

inspect([1, 2, 3]); //=> '[ 1, 2, 3 ]'
inspectWithKind([1, 2, 3]); //=> '[ 1, 2, 3 ] (array)'

Installation

Use npm.

npm install inspect-with-kind

API

const inspectWithKind = require('inspect-with-kind');

inspectWithKind(value [, options])

value: any type
options: Object (util.inspect options)
Return: string

Almost the same as util.inspect, but:

  • It appends a type information to the string if the first argument is one of boolean, string, number, bigint, Array, RegExp, Date, arguments or a plain Object.
  • Error stack trace is omitted.
  • breakLength option defaults to Infinity.
  • maxArrayLength option defaults to 10.
const util = require('util');
const inspectWithKind = require('inspect-with-kind');

// appends type info
util.inspect(1); //=> '1'
inspectWithKind(1); //=> '1 (number)'
util.inspect('1'); //=> '\'1\''
inspectWithKind('1'); //=> '\'1\' (string)'

// doesn't appends type info, because <Buffer ...> clearly expresses what it is
util.inspect(Buffer.from('1')); //=> '<Buffer 31>'
inspectWithKind(Buffer.from('1')); //=> '<Buffer 31>'

// omits stack trace
util.inspect(new Error('error!')); //=> 'Error: error!\n    at repl:1:14\n    at ContextifyScript ...'
inspectWithKind(new Error('error!')); //=> 'Error: error!'

Example

This module is useful for making TypeError error messages in your Node.js library.

const inspectWithKind = require('inspect-with-kind');

module.exports = function reverse(v) {
  if (typeof v !== 'boolean') {
    throw new TypeError(`Expected a Boolean value, but got ${inspectWithKind(v)}.`);
  }

  return !v;
};
const reverse = require('./reverse.js');

reverse(/true/); // TypeError: Expected a Boolean value, but got /true/ (regexp).

License

ISC License © 2017 Shinnosuke Watanabe