Skip to content

refactor(github): isolate GitHub domain into dedicated layer#42

Merged
evirunurm merged 1 commit into
mainfrom
refactor/isolate-github-domain
Mar 20, 2026
Merged

refactor(github): isolate GitHub domain into dedicated layer#42
evirunurm merged 1 commit into
mainfrom
refactor/isolate-github-domain

Conversation

@evirunurm
Copy link
Copy Markdown
Owner

@evirunurm evirunurm commented Mar 20, 2026

Closes #38.

Summary

  • Created scripts/github/ domain folder with a ports-and-adapters structure
  • Extracted shared HTTP adapter to githubApiClient.ts (makeGraphQLRequest, buffer-based response handling, 30s timeout)
  • Extracted GraphQL query strings to queries.ts
  • Moved fetchUserDatafetchUserStats and fetchLanguages#fetchUserDatafetchUserLanguages (fixing the export name mismatch)
  • Deleted scripts/fetchers/ directory
  • Updated imports in api/stats.ts and api/languages.ts

Test plan

  • npm run typecheck passes
  • npm test passes
  • /api/stats?username=<user> returns a valid SVG card
  • /api/languages?username=<user> returns a valid SVG card

🤖 Generated with Claude Code

Extract all GitHub API concerns into scripts/github/ following a
ports-and-adapters approach: shared HTTP client in githubApiClient.ts,
GraphQL queries in queries.ts, and renamed fetchers (fetchUserStats,
fetchUserLanguages) fixing the fetchUserData export name mismatch.
Also fix Object.values() misuse on arrays and add request timeout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@evirunurm evirunurm self-assigned this Mar 20, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 20, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
github-stats-uvqq Ready Ready Preview, Comment Mar 20, 2026 0:19am

@evirunurm evirunurm merged commit 82af45f into main Mar 20, 2026
3 checks passed
@evirunurm evirunurm deleted the refactor/isolate-github-domain branch March 20, 2026 00:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Phase 3: Isolate GitHub domain into a dedicated layer

1 participant