website

#astro#js#html#css

git clone https://git.pyrossh.dev/website

木 Personal website of pyrossh. Built with astrojs, shiki, vite.


db7aea1pyrossh 2026-07-07T12:00:29+05:30
feat: add repo readme worker
packages/workers/repos/readme/package.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "@pyrossh/repos-readme",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "main": "src/index.tsx",
7
+ "types": "src/index.tsx",
8
+ "dependencies": {
9
+ "@pyrossh/config": "workspace:*",
10
+ "@pyrossh/core": "workspace:*",
11
+ "@pyrossh/types": "workspace:*",
12
+ "@pyrossh/ui": "workspace:*"
13
+ }
14
+ }
packages/workers/repos/readme/src/index.tsx ADDED
@@ -0,0 +1,29 @@
1
+ import { RepoLayout } from "@pyrossh/ui";
2
+ import { getRepo, getRepoReadme, renderMarkdown } from "@pyrossh/core";
3
+ import type { Env } from "@pyrossh/types";
4
+
5
+ export default {
6
+ async fetch(request: Request, env: Env): Promise<Response> {
7
+ const url = new URL(request.url);
8
+ const repoId = url.pathname.replace("/repos/", "").replace(/\/$/, "");
9
+ const repo = getRepo(repoId);
10
+ if (!repo) return Response.redirect(`${url.origin}/404`, 302);
11
+
12
+ const readmeRaw = await getRepoReadme(env.REPOS, repo.id);
13
+ const readmeHtml = readmeRaw ? await renderMarkdown(readmeRaw) : "";
14
+
15
+ return new Response(
16
+ <RepoLayout repo={repo} request={request} currentTab="Readme">
17
+ <article>
18
+ <div dangerouslySetInnerHTML={{ __html: readmeHtml }} />
19
+ </article>
20
+ </RepoLayout>,
21
+ {
22
+ headers: {
23
+ "content-type": "text/html",
24
+ "Cache-Control": "public, max-age=300, s-maxage=3600",
25
+ },
26
+ },
27
+ );
28
+ },
29
+ };
packages/workers/repos/readme/tsconfig.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "../../../../tsconfig.base.json",
3
+ "include": ["src"]
4
+ }
packages/workers/repos/readme/wrangler.jsonc ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "pyrossh-repos-readme",
3
+ "main": "src/index.tsx",
4
+ "compatibility_date": "2026-07-07",
5
+ "compatibility_flags": ["nodejs_compat"],
6
+ "workers_dev": false,
7
+ "routes": [{ "pattern": "pyrossh.dev/repos/*", "custom_domain": true }],
8
+ "r2_buckets": [{ "binding": "REPOS", "bucket_name": "pyrossh-repos-prd" }],
9
+ }