UNPKG

fumadocs-core

Version:

The library for building a documentation website in any React.js framework

85 lines (83 loc) 2.12 kB
import { getTableOfContents } from "../chunk-CX7IQ5Z6.js"; import "../chunk-QMATWJ5F.js"; import { findNeighbour, findPath, flattenTree, getPageTreePeers, getPageTreeRoots } from "../chunk-2IYQ7QMS.js"; import { getGithubLastEdit } from "../chunk-HSBNG7QC.js"; import "../chunk-JSBRDJBE.js"; // src/server/metadata.ts function createMetadataImage(options) { const { filename = "image.png", imageRoute = "/docs-og" } = options; function getImageMeta(slugs) { return { alt: "Banner", url: `/${[...imageRoute.split("/"), ...slugs, filename].filter((v) => v.length > 0).join("/")}`, width: 1200, height: 630 }; } return { getImageMeta, withImage(slugs, data) { const imageData = getImageMeta(slugs); return { ...data, openGraph: { images: imageData, ...data?.openGraph }, twitter: { images: imageData, card: "summary_large_image", ...data?.twitter } }; }, generateParams() { return options.source.generateParams().map((params) => ({ ...params, slug: [...params.slug, filename] })); }, createAPI(handler) { return async (req, args) => { const params = await args.params; if (!params || !("slug" in params) || params.slug === void 0) throw new Error(`Invalid params: ${JSON.stringify(params)}`); const lang = "lang" in params && typeof params.lang === "string" ? params.lang : void 0; const input = { slug: Array.isArray(params.slug) ? params.slug : [params.slug], lang }; const page = options.source.getPage( input.slug.slice(0, -1), //remove filename lang ); if (!page) return new Response(null, { status: 404 }); return handler(page, req, { params: input }); }; } }; } export { createMetadataImage, findNeighbour, findPath, flattenTree, getGithubLastEdit, getPageTreePeers, getPageTreeRoots, getTableOfContents };