import { NextSeo } from "next-seo"; import { GetStaticProps, InferGetStaticPropsType, NextPage } from "next"; import axios from "axios"; import Intro from "@components/Intro"; import Layout from "@components/Layout"; import RecentRepositories from "@components/RecentRepositories"; import BestRepository from "@components/BestRepository"; import { GithubAPIRepository } from "@interfaces/repository"; import createConfigCatClient from "@utils/createConfigCatClient"; export const getStaticProps: GetStaticProps = async () => { const { data } = await axios.get( `https://api.github.com/users/${process.env.NEXT_PUBLIC_GITHUB_USERNAME}/repos` ); const configCatClient = createConfigCatClient(); const isAvailable: boolean = (await configCatClient?.getValueAsync("amiavailable", true)) ?? true; const bestRepository = data.sort( (a, b) => b.stargazers_count - a.stargazers_count )[0]; return { props: { isAvailable, repositories: data .sort( (a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime() ) .map(({ name, description, html_url, stargazers_count, homepage }) => ({ name, url: html_url, stargazers_count, homepage, description })) .slice(0, 3), bestRepository: { name: bestRepository.name, description: bestRepository.description, url: bestRepository.html_url, homepage: bestRepository.homepage, stargazers_count: bestRepository.stargazers_count, forks_count: bestRepository.forks_count, language: bestRepository.language, open_issues_count: bestRepository.open_issues_count, pushed_at: bestRepository.pushed_at } }, revalidate: 60 * 5 }; }; const Index: NextPage = ({ repositories, isAvailable, bestRepository }: InferGetStaticPropsType) => ( ); export default Index;