diff --git a/.gitignore b/.gitignore
index d616f5e2..ac730bfb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,9 @@ node_modules
.next
.meta
.env
+.env*.local
+.env.*
+next-env.d.ts
# Sentry
.sentryclirc
diff --git a/next-env.d.ts b/next-env.d.ts
deleted file mode 100644
index 19709046..00000000
--- a/next-env.d.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-///
-///
-import "./.next/types/routes.d.ts";
-
-// NOTE: This file should not be edited
-// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.
diff --git a/pages/api/github.ts b/pages/api/github.ts
index e7bdb7a0..806162fa 100644
--- a/pages/api/github.ts
+++ b/pages/api/github.ts
@@ -48,6 +48,7 @@ export default createBadgenHandler({
'/github/last-commit/micromatch/micromatch/4.0.1': 'last commit (tag ref)',
'/github/assets-dl/electron/electron': 'assets downloads for latest release',
'/github/assets-dl/electron/electron/v7.0.0': 'assets downloads for a tag',
+ '/github/assets-dl/electron/electron/total': 'total assets downloads (recent releases)',
'/github/dependents-repo/micromatch/micromatch': 'repository dependents',
'/github/dependents-pkg/micromatch/micromatch': 'package dependents',
'/github/dependabot/ubuntu/yaru': 'dependabot status',
@@ -193,6 +194,31 @@ async function meta ({ owner, repo }: PathArgs): Promise {
}
async function downloads ({ owner, repo, tag }: PathArgs) {
+ if (tag === 'total' || tag === 'all') {
+ const releases = await restGithub(`repos/${owner}/${repo}/releases`, {
+ per_page: '30'
+ })
+
+ if (!releases || !Array.isArray(releases) || !releases.length) {
+ return {
+ subject: 'downloads',
+ status: 'no releases',
+ color: 'grey'
+ }
+ }
+
+ const totalDownloads = releases.reduce((acc, release) => {
+ if (!release.assets || !release.assets.length) return acc
+ return acc + release.assets.reduce((sum: number, asset: any) => sum + (asset.download_count || 0), 0)
+ }, 0)
+
+ return {
+ subject: 'downloads',
+ status: millify(totalDownloads),
+ color: 'green'
+ }
+ }
+
const releaseSelection = tag ? `tags/${tag}` : 'latest'
const release = await restGithub(`repos/${owner}/${repo}/releases/${releaseSelection}`)
@@ -204,8 +230,7 @@ async function downloads ({ owner, repo, tag }: PathArgs) {
}
}
-
- const downloadCount = release.assets.reduce((result, { download_count }) => {
+ const downloadCount = release.assets.reduce((result: number, { download_count }: any) => {
return result + download_count
}, 0)
diff --git a/public/badges.md b/public/badges.md
index dda3df41..2caa3b03 100644
--- a/public/badges.md
+++ b/public/badges.md
@@ -55,6 +55,7 @@
- [last commit (tag ref)](https://badgen.net/github/last-commit/micromatch/micromatch/4.0.1)
- [assets downloads for latest release](https://badgen.net/github/assets-dl/electron/electron)
- [assets downloads for a tag](https://badgen.net/github/assets-dl/electron/electron/v7.0.0)
+- [total assets downloads (recent releases)](https://badgen.net/github/assets-dl/electron/electron/total)
- [repository dependents](https://badgen.net/github/dependents-repo/micromatch/micromatch)
- [package dependents](https://badgen.net/github/dependents-pkg/micromatch/micromatch)
- [dependabot status](https://badgen.net/github/dependabot/ubuntu/yaru)