src/format/fileSize.ts

Summary

Maintainability
A
45 mins
Test Coverage
import intWord from './intWord'
import type { TextNumber } from '~/internal/types'

/**
 * Display
 * @param {Number|String} size
 * @param {Number} kilo
 * @param {Number} decimals
 * @param {String} decPoint
 * @param {String} thousandsSeparator
 * @param {String} suffixSeparator
 * @returns {string}
 */
export default function fileSize(
  size: TextNumber,
  kilo: number = 1024,
  decimals: number = 2,
  decPoint: string = '.',
  thousandsSeparator: string = ',',
  suffixSeparator: string = ' '
): string {
  const num = +size

  if (num <= 0) {
    return '0 bytes'
  }

  if (num < kilo) {
    decimals = 0
  }

  return intWord(
    num,
    ['bytes', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb'],
    kilo,
    decimals,
    decPoint,
    thousandsSeparator,
    suffixSeparator
  )
}