Skip to content

feat(routing): discover static HTTP and Nuxt routes - #1737

Open
bompus wants to merge 1 commit into
colbymchenry:mainfrom
bompus:codex/upstream-http-routing
Open

feat(routing): discover static HTTP and Nuxt routes#1737
bompus wants to merge 1 commit into
colbymchenry:mainfrom
bompus:codex/upstream-http-routing

Conversation

@bompus

@bompus bompus commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Literal routes in several JavaScript HTTP frameworks currently lack accurate endpoint and handler links. Add discovery for Hono, Elysia, Fastify, Hyper-Express, Koa routers, H3, Bun, Effect v4 and option-free Vixeny builders, including references to named handlers and calls from inline handlers. Correct Nuxt 4 default page groups and server route method suffixes.

For example, app.get('/users', listUsers) on an imported Hono instance produces a GET /users endpoint linked to listUsers. Recognition follows verified imports and supported immutable bindings; unrelated .get() calls, shadowed bindings and computed paths do not become routes. Cross-file mounts and custom Nuxt routing conventions remain unsupported.

The import-aware HTTP extractor is the main review starting point. Express duplicate suppression and Nuxt's default filename handling are included alongside the coverage documentation and regression tests. No dependencies or schema changes are introduced.

Validation on this branch, based on upstream b9ca4b7: TypeScript compilation and the full build passed; 116 tests passed across HTTP routing, Nuxt routing, Next.js and Vue Router. Validation ran on Windows with the native kernel built from upstream source. This branch's standalone full test suite has not been run; these results do not claim a green full suite or cross-platform validation.

Planned follow-up contributions

We have 13 additional routing contributions prepared in our fork and plan to submit them incrementally, rebasing and validating each for upstream review. The links below are fork PRs, not submitted upstream PRs. They provide visibility into the work available; this PR can be reviewed on its own, and no review of the entire stack is requested here.

The prepared branches are currently stacked. That branch order does not establish that every feature technically depends on this PR; independent changes can be separated where practical. Feedback on preferred scope or submission order is welcome.

Prepared follow-ups (13 fork PRs)
Contribution Fork PR
React Router framework-mode pages bompus/codegraph#3
TanStack Start server endpoints bompus/codegraph#4
Remix and React Router file routes bompus/codegraph#5
Astro pages, endpoints and navigation bompus/codegraph#6
RedwoodSDK routes and handlers bompus/codegraph#7
Angular router components bompus/codegraph#8
Analog file pages bompus/codegraph#9
Solid Router pages bompus/codegraph#10
SolidStart pages and endpoints bompus/codegraph#11
Qwik City pages and endpoints bompus/codegraph#12
Vike pages and route overrides bompus/codegraph#13
Waku filesystem pages bompus/codegraph#14
Waku programmatic pages bompus/codegraph#15

Waku programmatic support also requires the import-resolution fix proposed in #1706.

@bompus
bompus force-pushed the codex/upstream-http-routing branch from a6539c1 to 51b3807 Compare September 8, 2026 09:31
@bompus

bompus commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto cd4e65b (current main) — new head 51b3807. The only conflict was CHANGELOG.md; resolved as a union with the AGENTS.md entry from #1742. No source conflict.

Checks on the rebased branch: tsc --noEmit clean; __tests__/http-routing.test.ts, __tests__/nuxt-routes.test.ts and __tests__/framework-routes.test.ts all pass.

@bompus
bompus force-pushed the codex/upstream-http-routing branch from 51b3807 to d256fd0 Compare September 8, 2026 15:02
@bompus

bompus commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Force-pushed a rebase onto 43271f3 — new head d256fd0.

The CHANGELOG entry is intentionally omitted this time. CHANGELOG.md was the only file that ever conflicted on this branch, and re-resolving it each rebase just re-arms the same collision, so the entry is dropped rather than carried. Nothing else changed: the diff is the same 9 source and docs files. Happy to supply the changelog line separately in whatever form is easiest to land.

Checks on the rebased branch, run under Node on Windows:

  • tsc --noEmit — clean, exit 0.
  • __tests__/http-routing.test.ts and __tests__/nuxt-routes.test.ts59/59 passed.

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.

1 participant