summaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/node_modules/npm-audit-report/lib/utils.js
blob: 3b521a5f3bd96face17a9e00d9a4c1bc91340117 (plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
'use strict'

exports.severityLabel = severityLabel
exports.color = color
exports.totalVulnCount = totalVulnCount
exports.severities = severities

const ccs = require('console-control-strings')

const severityColors = {
  critical: {
    color: 'brightMagenta',
    label: 'Critical'
  },
  high: {
    color: 'brightRed',
    label: 'High'
  },
  moderate: {
    color: 'brightYellow',
    label: 'Moderate'
  },
  low: {
    color: 'bold',
    label: 'Low'
  },
  info: {
    color: '',
    label: 'Info'
  }
}

function color (value, colorName, withColor) {
  return (colorName && withColor) ? ccs.color(colorName) + value + ccs.color('reset') : value
}

function severityLabel (sev, withColor, bold) {
  if (!(sev in severityColors)) return sev.charAt(0).toUpperCase() + sev.substr(1).toLowerCase()
  let colorName = severityColors[sev].color
  if (bold) colorName = [colorName, 'bold']
  return color(severityColors[sev].label, colorName, withColor)
}

function totalVulnCount (vulns) {
  return Object.keys(vulns).reduce((accumulator, key) => {
    const vulnCount = vulns[key]
    accumulator += vulnCount

    return accumulator
  }, 0)
}

function severities (vulns) {
  return Object.keys(vulns).reduce((accumulator, severity) => {
    const vulnCount = vulns[severity]
    if (vulnCount > 0) accumulator.push([severity, vulnCount])

    return accumulator
  }, [])
}