const chalk = require('chalk')
const prettyBytes = require('pretty-bytes')
const { table } = require('table')

module.exports = function displayMemoryUsageFromNode(initialMemoryUsage) {
  const finalMemoryUsage = process.memoryUsage()
  const titles = Object.keys(initialMemoryUsage).map((k) =>
    chalk.whiteBright(k),
  )
  const tableData = [titles]
  const diffColumn = []
  for (const [key, value] of Object.entries(initialMemoryUsage)) {
    const diff = finalMemoryUsage[key] - value
    const prettyDiff = prettyBytes(diff, { signed: true })
    if (diff > 0) {
      diffColumn.push(chalk.red(prettyDiff))
    } else if (diff < 0) {
      diffColumn.push(chalk.green(prettyDiff))
    } else {
      diffColumn.push(chalk.grey(prettyDiff))
    }
  }
  tableData.push(diffColumn)
  console.info(table(tableData))
}