mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
import { source } from "@/app/source";
|
|
import { findNeighbour } from "fumadocs-core/page-tree";
|
|
import { patchPageTree } from "@/lib/patch-pagetree";
|
|
import { NextResponse } from "next/server";
|
|
|
|
export async function GET() {
|
|
const allPages = source.getPages();
|
|
const patchedTree = patchPageTree(source.pageTree);
|
|
|
|
const pagesWithNoNeighbors: Array<{
|
|
url: string;
|
|
title: string;
|
|
slugs: string[];
|
|
}> = [];
|
|
|
|
const pagesWithOneNeighbor: Array<{
|
|
url: string;
|
|
title: string;
|
|
slugs: string[];
|
|
hasPrev: boolean;
|
|
hasNext: boolean;
|
|
prevUrl?: string;
|
|
nextUrl?: string;
|
|
}> = [];
|
|
|
|
// Check each page for neighbors
|
|
for (const page of allPages) {
|
|
const { previous, next } = findNeighbour(patchedTree, page.url);
|
|
|
|
const hasPrev = !!previous;
|
|
const hasNext = !!next;
|
|
|
|
if (!hasPrev && !hasNext) {
|
|
pagesWithNoNeighbors.push({
|
|
url: page.url,
|
|
title: page.data.title || "Untitled",
|
|
slugs: Array.isArray(page.slugs) ? page.slugs : [],
|
|
});
|
|
} else if ((hasPrev && !hasNext) || (!hasPrev && hasNext)) {
|
|
pagesWithOneNeighbor.push({
|
|
url: page.url,
|
|
title: page.data.title || "Untitled",
|
|
slugs: Array.isArray(page.slugs) ? page.slugs : [],
|
|
hasPrev,
|
|
hasNext,
|
|
prevUrl: previous?.url,
|
|
nextUrl: next?.url,
|
|
});
|
|
}
|
|
}
|
|
|
|
return NextResponse.json(
|
|
{
|
|
summary: {
|
|
totalPages: allPages.length,
|
|
pagesWithNoNeighbors: pagesWithNoNeighbors.length,
|
|
pagesWithOneNeighbor: pagesWithOneNeighbor.length,
|
|
pagesWithBothNeighbors:
|
|
allPages.length -
|
|
pagesWithNoNeighbors.length -
|
|
pagesWithOneNeighbor.length,
|
|
},
|
|
pagesWithNoNeighbors,
|
|
pagesWithOneNeighbor: pagesWithOneNeighbor.slice(0, 20), // Limit to first 20 for readability
|
|
},
|
|
{
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
},
|
|
);
|
|
}
|