All files / packages/logger/src/format/plugins pretty-print.ts

0% Statements 0/11
0% Branches 0/1
0% Functions 0/1
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40                                                                               
import { inspect } from 'node:util'
import { LEVEL, MESSAGE, SPLAT } from '../../triple-beam'
import format from '../format'
 
export interface PrettyPrintOptions {
  /**
   * A `number` that specifies the maximum depth of the `info` object being stringified by
   * `util.inspect`. Defaults to `2`.
   */
  depth?: number
  /**
   * Colorizes the message if set to `true`. Defaults to `false`.
   */
  colorize?: boolean
}
 
/*
 * function prettyPrint (info)
 * Returns a new instance of the prettyPrint Format that "prettyPrint"
 * serializes `info` objects. This was previously exposed as
 * { prettyPrint: true } to transports in `winston < 3.0.0`.
 */
export default format<PrettyPrintOptions>((info, opts = {}) => {
  //
  // info[{LEVEL, MESSAGE, SPLAT}] are enumerable here. Since they
  // are internal, we remove them before util.inspect so they
  // are not printed.
  //
  const stripped = { ...info }
 
  // Remark (indexzero): update this technique in April 2019
  // when node@6 is EOL
  delete stripped[LEVEL]
  delete stripped[MESSAGE]
  delete stripped[SPLAT]
 
  info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize)
  return info
})