docs: serve markdown to agents (#13915)
This commit is contained in:
1 parent
66bbe39a8e
commit
b1b6960147
11 files changed
+173
-75
No files matched your search
+16
-2
@@ -1,5 +1,5 @@
|
|||||||
import { getCleanMd } from "docs-utils"
|
import { getCleanMd } from "docs-utils"
|
||||||
import { existsSync } from "fs"
|
import { existsSync, readFileSync } from "fs"
|
||||||
import { unstable_cache } from "next/cache"
|
import { unstable_cache } from "next/cache"
|
||||||
import { notFound } from "next/navigation"
|
import { notFound } from "next/navigation"
|
||||||
import { NextRequest, NextResponse } from "next/server"
|
import { NextRequest, NextResponse } from "next/server"
|
||||||
@@ -16,7 +16,21 @@ type Params = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function GET(req: NextRequest, { params }: Params) {
|
export async function GET(req: NextRequest, { params }: Params) {
|
||||||
const { slug } = await params
|
const { slug = ["/"] } = await params
|
||||||
|
|
||||||
|
if (slug[0] === "/") {
|
||||||
|
const llmsFile = readFileSync(
|
||||||
|
path.join(process.cwd(), "public", "llms.txt"),
|
||||||
|
"utf-8"
|
||||||
|
)
|
||||||
|
|
||||||
|
return new NextResponse(llmsFile, {
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "text/markdown",
|
||||||
|
},
|
||||||
|
status: 200,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// keep this so that Vercel keeps the files in deployment
|
// keep this so that Vercel keeps the files in deployment
|
||||||
const basePath = path.join(process.cwd(), "app")
|
const basePath = path.join(process.cwd(), "app")
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import { NextResponse } from "next/server"
|
|
||||||
import type { NextRequest } from "next/server"
|
|
||||||
|
|
||||||
export function middleware(request: NextRequest) {
|
|
||||||
const path = request.nextUrl.pathname.replace("/index.html.md", "")
|
|
||||||
return NextResponse.rewrite(
|
|
||||||
new URL(`/md-content${path.replace("/index.html.md", "")}`, request.url)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const config = {
|
|
||||||
matcher: "/((?!resources|api|ui|user-guide|cloud).*)index.html.md",
|
|
||||||
}
|
|
||||||
@@ -115,6 +115,35 @@ const nextConfig = {
|
|||||||
transpilePackages: ["docs-ui"],
|
transpilePackages: ["docs-ui"],
|
||||||
async rewrites() {
|
async rewrites() {
|
||||||
return {
|
return {
|
||||||
|
beforeFiles: [
|
||||||
|
{
|
||||||
|
source:
|
||||||
|
"/:path((?!resources|api|ui|user-guide|cloud).*)index.html.md",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "Accept",
|
||||||
|
value: "text/markdown",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "Accept",
|
||||||
|
value: "text/plain",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
],
|
||||||
fallback: [
|
fallback: [
|
||||||
{
|
{
|
||||||
source: "/resources",
|
source: "/resources",
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import { NextResponse } from "next/server"
|
|
||||||
import type { NextRequest } from "next/server"
|
|
||||||
|
|
||||||
export function middleware(request: NextRequest) {
|
|
||||||
return NextResponse.rewrite(
|
|
||||||
new URL(
|
|
||||||
`${request.nextUrl.basePath}/md-content${request.nextUrl.pathname.replace("/index.html.md", "")}`,
|
|
||||||
request.url
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const config = {
|
|
||||||
matcher: "/:path*/index.html.md",
|
|
||||||
}
|
|
||||||
@@ -152,6 +152,38 @@ const nextConfig = {
|
|||||||
permanent: true,
|
permanent: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
rewrites: async () => {
|
||||||
|
return {
|
||||||
|
beforeFiles: [
|
||||||
|
{
|
||||||
|
source: "/:path*/index.html.md",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "accept",
|
||||||
|
value: "text/markdown",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "accept",
|
||||||
|
value: "text/plain",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const withBundleAnalyzer = bundleAnalyzer({
|
const withBundleAnalyzer = bundleAnalyzer({
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import { NextResponse } from "next/server"
|
|
||||||
import type { NextRequest } from "next/server"
|
|
||||||
|
|
||||||
export function middleware(request: NextRequest) {
|
|
||||||
return NextResponse.rewrite(
|
|
||||||
new URL(
|
|
||||||
`${request.nextUrl.basePath}/md-content${request.nextUrl.pathname.replace("/index.html.md", "")}`,
|
|
||||||
request.url
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const config = {
|
|
||||||
matcher: "/:path*/index.html.md",
|
|
||||||
}
|
|
||||||
@@ -286,6 +286,38 @@ const nextConfig = {
|
|||||||
experimental: {
|
experimental: {
|
||||||
optimizePackageImports: ["@medusajs/icons", "@medusajs/ui", "elkjs"],
|
optimizePackageImports: ["@medusajs/icons", "@medusajs/ui", "elkjs"],
|
||||||
},
|
},
|
||||||
|
rewrites: async () => {
|
||||||
|
return {
|
||||||
|
beforeFiles: [
|
||||||
|
{
|
||||||
|
source: "/:path*/index.html.md",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "accept",
|
||||||
|
value: "text/markdown",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "accept",
|
||||||
|
value: "text/plain",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const withBundleAnalyzer = bundleAnalyzer({
|
const withBundleAnalyzer = bundleAnalyzer({
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import { NextResponse } from "next/server"
|
|
||||||
import type { NextRequest } from "next/server"
|
|
||||||
|
|
||||||
export function middleware(request: NextRequest) {
|
|
||||||
return NextResponse.rewrite(
|
|
||||||
new URL(
|
|
||||||
`${request.nextUrl.basePath}/md-content${request.nextUrl.pathname.replace("/index.html.md", "")}`,
|
|
||||||
request.url
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const config = {
|
|
||||||
matcher: "/:path*/index.html.md",
|
|
||||||
}
|
|
||||||
@@ -141,6 +141,38 @@ const nextConfig = {
|
|||||||
experimental: {
|
experimental: {
|
||||||
optimizePackageImports: ["@medusajs/icons", "@medusajs/ui"],
|
optimizePackageImports: ["@medusajs/icons", "@medusajs/ui"],
|
||||||
},
|
},
|
||||||
|
rewrites: async () => {
|
||||||
|
return {
|
||||||
|
beforeFiles: [
|
||||||
|
{
|
||||||
|
source: "/:path*/index.html.md",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "accept",
|
||||||
|
value: "text/markdown",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "accept",
|
||||||
|
value: "text/plain",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const withBundleAnalyzer = bundleAnalyzer({
|
const withBundleAnalyzer = bundleAnalyzer({
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import { NextResponse } from "next/server"
|
|
||||||
import type { NextRequest } from "next/server"
|
|
||||||
|
|
||||||
export function middleware(request: NextRequest) {
|
|
||||||
return NextResponse.rewrite(
|
|
||||||
new URL(
|
|
||||||
`${request.nextUrl.basePath}/md-content${request.nextUrl.pathname.replace("/index.html.md", "")}`,
|
|
||||||
request.url
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export const config = {
|
|
||||||
matcher: "/:path*/index.html.md",
|
|
||||||
}
|
|
||||||
@@ -129,6 +129,38 @@ const nextConfig = {
|
|||||||
experimental: {
|
experimental: {
|
||||||
optimizePackageImports: ["@medusajs/icons", "@medusajs/ui"],
|
optimizePackageImports: ["@medusajs/icons", "@medusajs/ui"],
|
||||||
},
|
},
|
||||||
|
rewrites: async () => {
|
||||||
|
return {
|
||||||
|
beforeFiles: [
|
||||||
|
{
|
||||||
|
source: "/:path*/index.html.md",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "accept",
|
||||||
|
value: "text/markdown",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/:path*",
|
||||||
|
destination: "/md-content/:path*",
|
||||||
|
has: [
|
||||||
|
{
|
||||||
|
type: "header",
|
||||||
|
key: "accept",
|
||||||
|
value: "text/plain",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const withBundleAnalyzer = bundleAnalyzer({
|
const withBundleAnalyzer = bundleAnalyzer({
|
||||||
|
|||||||
Reference in new issue
Block a user