Skip to content
File

Blob: src/worker/routes/ui.ts

typescript46 lines
1import { handleAdminPage } from "./ui/adminPage";
2import { handleOwnerOverview, handleRepoOverview } from "./ui/overview";
3import { handleTree } from "./ui/tree";
4import { handleBlob } from "./ui/blob";
5import { handleCommits, handleCommitFragments, handleCommitDiff, handleCommit } from "./ui/commits";
6import { handleRaw, handleRawPath } from "./ui/raw";
7import { handleRefsApi } from "./ui/refsApi";
8import type { AppRouter } from "./hono";
9 
10export function registerUiRoutes(router: AppRouter) {
11 // Owner repos list
12 router.get(`/:owner`, handleOwnerOverview);
13 // Repo overview page
14 router.get(`/:owner/:repo`, handleRepoOverview);
15 
16 // Tree/Blob browser using query params: ?ref=<branch|tag|oid>&path=<path>
17 router.get(`/:owner/:repo/tree`, handleTree);
18 
19 // Blob preview endpoint - renders file content with syntax highlighting and media previews
20 router.get(`/:owner/:repo/blob`, handleBlob);
21 
22 // Commit list
23 router.get(`/:owner/:repo/commits`, handleCommits);
24 
25 // Merge expansion fragment endpoint: returns JSON for side-branch commits of a merge
26 // Example: /:owner/:repo/commits/fragments/:oid?limit=20
27 router.get(`/:owner/:repo/commits/fragments/:oid`, handleCommitFragments);
28 
29 // Commit details
30 router.get(`/:owner/:repo/commit/:oid/diff`, handleCommitDiff);
31 
32 router.get(`/:owner/:repo/commit/:oid`, handleCommit);
33 
34 // Raw blob endpoint - streams file content without buffering
35 router.get(`/:owner/:repo/raw`, handleRaw);
36 
37 // Raw blob by ref+path (used for images in Markdown)
38 router.get(`/:owner/:repo/rawpath`, handleRawPath);
39 
40 // Async refs API for repo_nav dropdown
41 router.get(`/:owner/:repo/api/refs`, handleRefsApi);
42 
43 // Admin dashboard for repository management
44 router.get(`/:owner/:repo/admin`, handleAdminPage);
45}