diff --git a/.changeset/social-cycles-rescue.md b/.changeset/social-cycles-rescue.md new file mode 100644 index 0000000..0ee3d47 --- /dev/null +++ b/.changeset/social-cycles-rescue.md @@ -0,0 +1,6 @@ +--- +"@open-rpc/markdown-generator": patch +"@open-rpc/docusaurus-plugin": patch +--- + +Change adds support for some index frontmatter customization diff --git a/packages/docusaurus-plugin/src/lib.ts b/packages/docusaurus-plugin/src/lib.ts index 7bff319..10866af 100644 --- a/packages/docusaurus-plugin/src/lib.ts +++ b/packages/docusaurus-plugin/src/lib.ts @@ -85,7 +85,12 @@ export async function generateDocs( } // NOTE a little hacky, but good for now - const indexContent = renderIndex(doc, "mdx"); + const additionalFrontmatter: Record = {}; + if (options.indexSlug) { + additionalFrontmatter["slug"] = options.indexSlug; + } + + const indexContent = renderIndex(doc, "mdx", additionalFrontmatter); const finalIndex = options.showPoweredBy === true ? `${indexContent}\n---\n\n*Powered by [OpenRPC](https://open-rpc.org)*\n` diff --git a/packages/docusaurus-plugin/src/options.ts b/packages/docusaurus-plugin/src/options.ts index 4641a4b..f0f6405 100644 --- a/packages/docusaurus-plugin/src/options.ts +++ b/packages/docusaurus-plugin/src/options.ts @@ -5,6 +5,7 @@ export type Options = { openRPCSpecPath: string; docOutputPath: string; showPoweredBy: boolean; + indexSlug: string | undefined; }; /** @@ -23,5 +24,6 @@ export function normalizeOptions(options: Options): PluginOptions { docOutputPath: options.docOutputPath || "./api-reference", showPoweredBy: options.showPoweredBy === undefined ? true : options.showPoweredBy, + indexSlug: options.indexSlug === undefined ? undefined : options.indexSlug, }; } diff --git a/packages/example-site/docs/api-reference/index.md b/packages/example-site/docs/api-reference/index.md index 9146fbe..a039b85 100644 --- a/packages/example-site/docs/api-reference/index.md +++ b/packages/example-site/docs/api-reference/index.md @@ -2,6 +2,7 @@ # GENERATED DOCUMENTATION - DO NOT EDIT THIS FILE title: "Ethereum JSON-RPC Specification" description: "A specification of the standard interface for Ethereum clients." +slug: /api-reference --- diff --git a/packages/example-site/docusaurus.config.ts b/packages/example-site/docusaurus.config.ts index 89f1afe..2ca590a 100644 --- a/packages/example-site/docusaurus.config.ts +++ b/packages/example-site/docusaurus.config.ts @@ -39,7 +39,7 @@ const config: Config = { openRPCSpecPath: `./error-group-openrpc.json`, docOutputPath: `./docs/api-reference`, showPoweredBy: true, - + indexSlug: '/api-reference', }]], presets: [ [ diff --git a/packages/markdown-generator/src/lib.ts b/packages/markdown-generator/src/lib.ts index afc9f6c..d1c0053 100644 --- a/packages/markdown-generator/src/lib.ts +++ b/packages/markdown-generator/src/lib.ts @@ -106,6 +106,7 @@ export async function renderDocumentToMarkdownFiles( export function renderIndex( doc: DereffedOpenrpcDocument, markdownType: "mdx" | "md", + additionalFrontmatter: Record = {}, ): string { const title = doc.info?.title || "API"; const version = doc.info?.version || ""; @@ -139,10 +140,15 @@ export function renderIndex( ) .join("\n"); + const frontmatter = Object.entries(additionalFrontmatter) + .map(([key, value]) => `${key}: ${value}`) + .join("\n"); + return `--- # GENERATED DOCUMENTATION - DO NOT EDIT THIS FILE title: "${title}" description: "${escapeYaml(desc)}" +${frontmatter} ${tagsList} ---