Skip to content

Commit 1adcc2f

Browse files
committed
feat(llm-docs): add .md shorthand redirects
1 parent 48dc0da commit 1adcc2f

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

server/middleware/canonical-redirects.global.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export default defineEventHandler(async event => {
5858
// /@org/pkg or /pkg → /package/org/pkg or /package/pkg
5959
// Also handles trailing /llms.txt or /llms_full.txt suffixes
6060
let pkgMatch = path.match(
61-
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)(?<suffix>\/(?:llms\.txt|llms_full\.txt))?$/,
61+
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+?)(?<suffix>\.md|\/(?:llms\.txt|llms_full\.txt))?$/,
6262
)
6363
if (pkgMatch?.groups) {
6464
const args = [pkgMatch.groups.org, pkgMatch.groups.name].filter(Boolean).join('/')
@@ -72,10 +72,10 @@ export default defineEventHandler(async event => {
7272
// Also handles trailing /llms.txt or /llms_full.txt suffixes
7373
const pkgVersionMatch =
7474
path.match(
75-
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)\/v\/(?<version>[^/]+)(?<suffix>\/(?:llms\.txt|llms_full\.txt))?$/,
75+
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)\/v\/(?<version>[^/]+?)(?<suffix>\.md|\/(?:llms\.txt|llms_full\.txt))?$/,
7676
) ||
7777
path.match(
78-
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)@(?<version>[^/]+)(?<suffix>\/(?:llms\.txt|llms_full\.txt))?$/,
78+
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)@(?<version>[^/]+?)(?<suffix>\.md|\/(?:llms\.txt|llms_full\.txt))?$/,
7979
)
8080

8181
if (pkgVersionMatch?.groups) {

server/middleware/llm-docs.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
const CACHE_HEADER = 's-maxage=3600, stale-while-revalidate=86400'
1212

1313
/**
14-
* Middleware to handle ALL llms.txt / llms_full.txt routes.
14+
* Middleware to handle ALL llms.txt / llms_full.txt / .md routes.
1515
*
1616
* All llms.txt handling lives here rather than in file-based routes because
1717
* Vercel's ISR route rules with glob patterns (e.g. `/package/ ** /llms.txt`)
@@ -20,6 +20,10 @@ const CACHE_HEADER = 's-maxage=3600, stale-while-revalidate=86400'
2020
*
2121
* Handles:
2222
* - /llms.txt (root discovery page)
23+
* - /package/:name.md (unscoped, latest, raw README)
24+
* - /package/@:org/:name.md (scoped, latest, raw README)
25+
* - /package/:name/v/:version.md (unscoped, versioned, raw README)
26+
* - /package/@:org/:name/v/:version.md (scoped, versioned, raw README)
2327
* - /package/@:org/llms.txt (org package listing)
2428
* - /package/:name/llms.txt (unscoped, latest)
2529
* - /package/:name/llms_full.txt (unscoped, latest, full)

0 commit comments

Comments
 (0)