@@ -2,6 +2,16 @@ import { WorkerEntrypoint } from "cloudflare:workers";
22import { generateRedirectsEvaluator } from "redirects-in-workers" ;
33import redirectsFileContents from "../dist/__redirects" ;
44
5+ import { parse } from "node-html-parser" ;
6+ import { process } from "../src/util/rehype" ;
7+
8+ import rehypeParse from "rehype-parse" ;
9+ import rehypeBaseUrl from "../src/plugins/rehype/base-url" ;
10+ import rehypeFilterElements from "../src/plugins/rehype/filter-elements" ;
11+ import remarkGfm from "remark-gfm" ;
12+ import rehypeRemark from "rehype-remark" ;
13+ import remarkStringify from "remark-stringify" ;
14+
515const redirectsEvaluator = generateRedirectsEvaluator ( redirectsFileContents , {
616 maxLineLength : 10_000 , // Usually 2_000
717 maxStaticRules : 10_000 , // Usually 2_000
@@ -10,6 +20,45 @@ const redirectsEvaluator = generateRedirectsEvaluator(redirectsFileContents, {
1020
1121export default class extends WorkerEntrypoint < Env > {
1222 override async fetch ( request : Request ) {
23+ if ( request . url . endsWith ( "/index.md" ) ) {
24+ const res = await this . env . ASSETS . fetch (
25+ request . url . replace ( "index.md" , "" ) ,
26+ request ,
27+ ) ;
28+
29+ if ( res . status === 404 ) {
30+ return res ;
31+ }
32+
33+ if (
34+ res . status === 200 &&
35+ res . headers . get ( "content-type" ) ?. startsWith ( "text/html" )
36+ ) {
37+ const html = await res . text ( ) ;
38+
39+ const content = parse ( html ) . querySelector ( ".sl-markdown-content" ) ;
40+
41+ if ( ! content ) {
42+ return new Response ( "Not Found" , { status : 404 } ) ;
43+ }
44+
45+ const markdown = await process ( content . toString ( ) , [
46+ rehypeParse ,
47+ rehypeBaseUrl ,
48+ rehypeFilterElements ,
49+ remarkGfm ,
50+ rehypeRemark ,
51+ remarkStringify ,
52+ ] ) ;
53+
54+ return new Response ( markdown , {
55+ headers : {
56+ "content-type" : "text/markdown; charset=utf-8" ,
57+ } ,
58+ } ) ;
59+ }
60+ }
61+
1362 try {
1463 try {
1564 const redirect = await redirectsEvaluator ( request , this . env . ASSETS ) ;
0 commit comments