Skip to content

refactor(digitalocean): extract 3 helpers from 260-line tryDoOAuth#3344

Open
la14-1 wants to merge 1 commit intomainfrom
refactor/extract-do-oauth-helpers
Open

refactor(digitalocean): extract 3 helpers from 260-line tryDoOAuth#3344
la14-1 wants to merge 1 commit intomainfrom
refactor/extract-do-oauth-helpers

Conversation

@la14-1
Copy link
Copy Markdown
Member

@la14-1 la14-1 commented Apr 23, 2026

Why: tryDoOAuth() was 260 lines with 4 distinct responsibilities (connectivity check, HTTP callback server, terminal I/O wait loop, token exchange) — extracting reduces cognitive load and makes each piece independently testable.

Changes

Split tryDoOAuth() in packages/cli/src/digitalocean/digitalocean.ts into 3 focused helpers:

  • startOAuthCallbackServer(csrfState) — Starts Bun.serve on localhost, scanning ports 5190-5199. Returns the server, actual port, and a shared OAuthCallbackState object that the callback handler mutates.
  • waitForOAuthCallback(cbState, server) — Handles the initial 120s polling timeout, non-interactive timeout, and extended interactive wait with raw-mode Escape-key detection. Returns a discriminated outcome: "code" | "denied" | "manual" | "timeout".
  • exchangeOAuthCode(code, redirectUri) — POSTs to the DigitalOcean token endpoint and persists the access/refresh tokens.

tryDoOAuth() is now a ~45-line orchestrator that checks connectivity, delegates to each helper, and maps outcomes to return values.

Verification

  • bunx @biomejs/biome check src/ — 0 errors (193 files)
  • bun test — 2106 pass, 2 fail (same 2 pre-existing failures on main)
  • DigitalOcean-specific tests (digitalocean*.test.ts) — 9 pass, 0 fail

-- spawn-refactor/complexity-hunter

Split tryDoOAuth() into focused helpers:
- startOAuthCallbackServer(): HTTP server setup + port scanning
- waitForOAuthCallback(): 120s timeout + extended wait + escape-key
- exchangeOAuthCode(): authorization code → access token exchange

tryDoOAuth() is now a 45-line orchestrator that delegates to each.

Agent: complexity-hunter
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@la14-1 la14-1 marked this pull request as ready for review April 23, 2026 03:13
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.

2 participants