import { Rank } from '../utils' import { filterNotEmpty } from '../utils/filter' export type Stats = { avatar: string commits: string contributions: string issues: string name: string prs: string rank: Rank['level'] stars: string } export type TemplateOptions = { color: string background: string hiddenStatsKeys: string[] includeAllCommits: boolean backgroundImage?: string backgroundSize?: string backgroundRepeat?: string } export const defaultTemplateOptions = { color: 'white', background: '#434343' } export const CARD_SIZE = { BIG: { CARD_WIDTH: 1226, CARD_HEIGHT: 430 }, SMALL: { CARD_WIDTH: 1226, CARD_HEIGHT: 350 } } export const AVATAR_SIZE = { AVATAR_WIDTH: 280, AVATAR_HEIGHT: 280 } const mainStatsItems = ['stars', 'commits', 'issues', 'prs', 'contributions'] const getVisibleMainStatsCount = (hiddenStatsKeys: string[]) => mainStatsItems.filter((stat) => !hiddenStatsKeys.includes(stat)).length export function makeGithubStats(stats: Stats, options: TemplateOptions) { const { avatar, commits, contributions, issues, name, prs, rank, stars } = stats const { hiddenStatsKeys, includeAllCommits, color, background, backgroundRepeat, backgroundSize, backgroundImage } = options const date = new Date() const year = date.getFullYear() const isVisible = (key: string) => !hiddenStatsKeys.includes(key) const visibleMainStatsCount = getVisibleMainStatsCount(hiddenStatsKeys) const isShowSeparator = isVisible('rank') && visibleMainStatsCount > 0 return (