From 0853c45b2527d23c909ff716ea35cbfaeda08e88 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 10 Sep 2026 01:12:56 +0530 Subject: [PATCH 1/2] Fix GitHub API crashes on non-array responses (#225) --- src/services/github.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/services/github.js b/src/services/github.js index a4180fa..8fbd037 100644 --- a/src/services/github.js +++ b/src/services/github.js @@ -92,6 +92,7 @@ export async function fetchRepos(org, repoCount, pat) { for (let page = 1; page <= maxPages; page++) { const url = `https://api.github.com/orgs/${org}/repos?per_page=100&page=${page}&sort=updated` const data = await fetchWithCache(url, pat) + if (!Array.isArray(data)) break all.push(...data) if (data.length < 100) break } @@ -104,6 +105,7 @@ export async function fetchContributors(org, repo, pat) { for(let page = 1; page<=maxPages ; page++) { const url = `https://api.github.com/repos/${org}/${repo}/contributors?per_page=100&page=${page}` const data = await fetchWithCache(url, pat) + if (!Array.isArray(data)) break all.push(...data) if(data.length < 100) break } @@ -116,6 +118,7 @@ export async function fetchIssues(org, repo, pat) { for(let page = 1; page<=maxPages ; page++) { const url = `https://api.github.com/repos/${org}/${repo}/issues?state=all&per_page=100&page=${page}` const data = await fetchWithCache(url, pat) + if (!Array.isArray(data)) break all.push(...data) if(data.length < 100) break } @@ -128,6 +131,7 @@ export async function fetchPulls(org, repo, pat) { for(let page = 1; page<=maxPages ; page++) { const url = `https://api.github.com/repos/${org}/${repo}/pulls?state=all&per_page=100&page=${page}` const data = await fetchWithCache(url, pat) + if (!Array.isArray(data)) break all.push(...data) if(data.length < 100) break } From f5fb3b331c191b034d43a8cda31d94dbcbb15744 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 10 Sep 2026 01:19:03 +0530 Subject: [PATCH 2/2] Handle 204 and 202 status codes in fetchWithCache to prevent JSON parse errors --- src/services/github.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/services/github.js b/src/services/github.js index 8fbd037..cc33cf0 100644 --- a/src/services/github.js +++ b/src/services/github.js @@ -75,6 +75,7 @@ async function fetchWithCache(url, pat) { if (res.status === 403) throw new Error('RATE_LIMIT') if (res.status === 404) throw new Error('NOT_FOUND') + if (res.status === 204 || res.status === 202) return [] if (!res.ok) throw new Error(`HTTP_${res.status}`) const data = await res.json()