Source: services/contributor-count.js

/**
 * Common functions and utilities for tasks related to contributor count.
 *
 * @module
 */

import { metric } from './text-formatters.js'

/**
 * Determines the color used for a badge based on the contributor count.
 * The color varies from red to bright green as the contributor count increases.
 *
 * @param {number} contributorCount Contributor count
 * @returns {string} Badge color
 */
function contributorColor(contributorCount) {
  if (contributorCount > 2) {
    return 'brightgreen'
  } else if (contributorCount === 2) {
    return 'yellow'
  } else {
    return 'red'
  }
}

/**
 * Handles rendering concerns of badges that display contributor count.
 * Determines the message and color of the badge according to the contributor count.
 *
 * @param {object} attrs Refer to individual attributes
 * @param {string} [attrs.label] If provided then badge label is set to this value
 * @param {number} attrs.contributorCount Contributor count
 * @returns {object} Badge with label, message and color properties
 */
function renderContributorBadge({ label, contributorCount }) {
  return {
    label,
    message: metric(contributorCount),
    color: contributorColor(contributorCount),
  }
}

export { contributorColor, renderContributorBadge }