Skip to content

Commit d5ef5f5

Browse files
committed
feat(llm-docs): add .md shorthand redirects
1 parent a481b82 commit d5ef5f5

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
@@ -54,7 +54,7 @@ export default defineEventHandler(async event => {
5454
// /@org/pkg or /pkg → /package/org/pkg or /package/pkg
5555
// Also handles trailing /llms.txt or /llms_full.txt suffixes
5656
let pkgMatch = path.match(
57-
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)(?<suffix>\/(?:llms\.txt|llms_full\.txt))?$/,
57+
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+?)(?<suffix>\.md|\/(?:llms\.txt|llms_full\.txt))?$/,
5858
)
5959
if (pkgMatch?.groups) {
6060
const args = [pkgMatch.groups.org, pkgMatch.groups.name].filter(Boolean).join('/')
@@ -68,10 +68,10 @@ export default defineEventHandler(async event => {
6868
// Also handles trailing /llms.txt or /llms_full.txt suffixes
6969
const pkgVersionMatch =
7070
path.match(
71-
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)\/v\/(?<version>[^/]+)(?<suffix>\/(?:llms\.txt|llms_full\.txt))?$/,
71+
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)\/v\/(?<version>[^/]+?)(?<suffix>\.md|\/(?:llms\.txt|llms_full\.txt))?$/,
7272
) ||
7373
path.match(
74-
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)@(?<version>[^/]+)(?<suffix>\/(?:llms\.txt|llms_full\.txt))?$/,
74+
/^\/(?:(?<org>@[^/]+)\/)?(?<name>[^/@]+)@(?<version>[^/]+?)(?<suffix>\.md|\/(?:llms\.txt|llms_full\.txt))?$/,
7575
)
7676

7777
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)