@farming-labs/next 0.2.119 → 0.2.120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { FumadocsApiReferenceRendererOptions, fumadocsRenderer } from "./fumadocs-renderer.mjs";
1
2
  import { DocsConfig } from "@farming-labs/docs";
2
3
  import { resolveApiReferenceConfig } from "@farming-labs/docs/runtime";
3
4
  import * as react_jsx_runtime0 from "react/jsx-runtime";
@@ -43,4 +44,4 @@ declare function createNextApiReferenceLayout(config: DocsConfig): (props: {
43
44
  declare function getNextApiReferenceSourceState(config: DocsConfig, versionId?: string): Promise<NextApiReferenceSourceState>;
44
45
  declare function getNextApiReferenceMode(config: DocsConfig): "farming-labs" | "fumadocs" | "scalar";
45
46
  //#endregion
46
- export { NextApiReferenceSourceState, buildNextOpenApiDocument, createNextApiReference, createNextApiReferenceLayout, createNextApiReferencePage, flattenApiReferencePageTreeForSidebar, getNextApiReferenceMode, getNextApiReferenceSourceState, resolveApiReferenceConfig, withNextApiReferenceBanner };
47
+ export { type FumadocsApiReferenceRendererOptions, NextApiReferenceSourceState, buildNextOpenApiDocument, createNextApiReference, createNextApiReferenceLayout, createNextApiReferencePage, flattenApiReferencePageTreeForSidebar, fumadocsRenderer, getNextApiReferenceMode, getNextApiReferenceSourceState, resolveApiReferenceConfig, withNextApiReferenceBanner };
@@ -1,5 +1,6 @@
1
1
  import DocsClientCallbacks from "./client-callbacks.mjs";
2
2
  import FumadocsOpenAPIPage from "./fumadocs-api-page.mjs";
3
+ import { fumadocsRenderer } from "./fumadocs-renderer.mjs";
3
4
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
4
5
  import { join, relative } from "node:path";
5
6
  import { resolveDocsMetadataBaseUrl } from "@farming-labs/docs";
@@ -766,7 +767,12 @@ async function getNextApiReferenceSourceState(config, versionId) {
766
767
  baseUrl,
767
768
  version: version?.id
768
769
  });
769
- const server = createOpenAPI({ input: { main: document } });
770
+ const fumadocsOptions = apiReference.renderer === "fumadocs" ? apiReference.rendererOptions : void 0;
771
+ const server = createOpenAPI({
772
+ input: { main: document },
773
+ disableCache: typeof fumadocsOptions?.disableCache === "boolean" ? fumadocsOptions.disableCache : void 0,
774
+ proxyUrl: typeof fumadocsOptions?.proxyUrl === "string" ? fumadocsOptions.proxyUrl : void 0
775
+ });
770
776
  const info = getOpenApiInfo(document);
771
777
  const source = loader(await openapiSource(server, {
772
778
  per: "operation",
@@ -795,4 +801,4 @@ function getNextApiReferenceMode(config) {
795
801
  }
796
802
 
797
803
  //#endregion
798
- export { buildNextOpenApiDocument, createNextApiReference, createNextApiReferenceLayout, createNextApiReferencePage, flattenApiReferencePageTreeForSidebar, getNextApiReferenceMode, getNextApiReferenceSourceState, resolveApiReferenceConfig, withNextApiReferenceBanner };
804
+ export { buildNextOpenApiDocument, createNextApiReference, createNextApiReferenceLayout, createNextApiReferencePage, flattenApiReferencePageTreeForSidebar, fumadocsRenderer, getNextApiReferenceMode, getNextApiReferenceSourceState, resolveApiReferenceConfig, withNextApiReferenceBanner };
package/dist/config.mjs CHANGED
@@ -731,11 +731,13 @@ function readApiReferenceConfig(root) {
731
731
  const enabledMatch = block.match(/enabled\s*:\s*(true|false)/);
732
732
  const pathMatch = block.match(/path\s*:\s*["']([^"']+)["']/);
733
733
  const rendererMatch = block.match(/renderer\s*:\s*["'](farming-labs|fumadocs|scalar)["']/);
734
+ const rendererConfigNameMatch = extractObjectLiteral(block, "renderer")?.match(/name\s*:\s*["'](farming-labs|fumadocs|scalar)["']/);
735
+ const usesFumadocsRendererHelper = /renderer\s*:\s*fumadocsRenderer\s*\(/.test(block);
734
736
  const routeRootMatch = block.match(/routeRoot\s*:\s*["']([^"']+)["']/);
735
737
  return {
736
738
  enabled: enabledMatch ? enabledMatch[1] !== "false" : true,
737
739
  path: pathMatch?.[1]?.replace(/^\/+|\/+$/g, "") || "api-reference",
738
- renderer: rendererMatch?.[1] ?? "farming-labs",
740
+ renderer: rendererMatch?.[1] ?? rendererConfigNameMatch?.[1] ?? (usesFumadocsRendererHelper ? "fumadocs" : void 0) ?? "farming-labs",
739
741
  routeRoot: routeRootMatch?.[1]?.replace(/^\/+|\/+$/g, "") || "api"
740
742
  };
741
743
  } catch {
@@ -1,8 +1,11 @@
1
+ import { DocsConfig } from "@farming-labs/docs";
1
2
  import * as react from "react";
2
3
  import * as fumadocs_openapi_ui0 from "fumadocs-openapi/ui";
4
+ import { CreateOpenAPIPageOptions } from "fumadocs-openapi/ui";
3
5
 
4
6
  //#region src/fumadocs-api-page.d.ts
7
+ declare function resolveFumadocsOpenAPIPageOptions(config: DocsConfig): CreateOpenAPIPageOptions;
5
8
  /** Client boundary for Fumadocs OpenAPI's interactive renderer. */
6
9
  declare const FumadocsOpenAPIPage: react.FC<fumadocs_openapi_ui0.OpenAPIPageProps>;
7
10
  //#endregion
8
- export { FumadocsOpenAPIPage as default };
11
+ export { FumadocsOpenAPIPage as default, resolveFumadocsOpenAPIPageOptions };
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
 
3
+ import docsConfig from "@farming-labs/next-internal-docs-config";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  import { createOpenAPIPage } from "fumadocs-openapi/ui";
5
6
 
@@ -28,8 +29,21 @@ function renderApiReferenceOperationLayout(slots) {
28
29
  }) : null]
29
30
  });
30
31
  }
32
+ function resolveFumadocsOpenAPIPageOptions(config) {
33
+ const renderer = config.apiReference && typeof config.apiReference === "object" ? config.apiReference.renderer : void 0;
34
+ const pageOptions = { ...renderer && typeof renderer === "object" && renderer.name === "fumadocs" ? renderer.options : void 0 };
35
+ delete pageOptions.disableCache;
36
+ delete pageOptions.proxyUrl;
37
+ return {
38
+ ...pageOptions,
39
+ content: {
40
+ renderOperationLayout: renderApiReferenceOperationLayout,
41
+ ...pageOptions.content
42
+ }
43
+ };
44
+ }
31
45
  /** Client boundary for Fumadocs OpenAPI's interactive renderer. */
32
- const FumadocsOpenAPIPage = createOpenAPIPage({ content: { renderOperationLayout: renderApiReferenceOperationLayout } });
46
+ const FumadocsOpenAPIPage = createOpenAPIPage(resolveFumadocsOpenAPIPageOptions(docsConfig));
33
47
 
34
48
  //#endregion
35
- export { FumadocsOpenAPIPage as default };
49
+ export { FumadocsOpenAPIPage as default, resolveFumadocsOpenAPIPageOptions };
@@ -0,0 +1,13 @@
1
+ import { ApiReferenceRendererConfig } from "@farming-labs/docs";
2
+ import { CreateOpenAPIPageOptions } from "fumadocs-openapi/ui";
3
+ import { OpenAPIOptions } from "fumadocs-openapi/server";
4
+
5
+ //#region src/fumadocs-renderer.d.ts
6
+ /** Options supported by the bundled Fumadocs OpenAPI renderer. */
7
+ type FumadocsApiReferenceRendererOptions = CreateOpenAPIPageOptions & Pick<OpenAPIOptions, "disableCache" | "proxyUrl">;
8
+ /**
9
+ * Configure the bundled Fumadocs OpenAPI renderer with fully typed upstream options.
10
+ */
11
+ declare function fumadocsRenderer(options?: FumadocsApiReferenceRendererOptions): ApiReferenceRendererConfig;
12
+ //#endregion
13
+ export { FumadocsApiReferenceRendererOptions, fumadocsRenderer };
@@ -0,0 +1,13 @@
1
+ //#region src/fumadocs-renderer.ts
2
+ /**
3
+ * Configure the bundled Fumadocs OpenAPI renderer with fully typed upstream options.
4
+ */
5
+ function fumadocsRenderer(options = {}) {
6
+ return {
7
+ name: "fumadocs",
8
+ options: { ...options }
9
+ };
10
+ }
11
+
12
+ //#endregion
13
+ export { fumadocsRenderer };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/next",
3
- "version": "0.2.119",
3
+ "version": "0.2.120",
4
4
  "description": "Next.js adapter for @farming-labs/docs — MDX config wrapper",
5
5
  "keywords": [
6
6
  "docs",
@@ -29,6 +29,11 @@
29
29
  "default": "./dist/api-reference.mjs"
30
30
  },
31
31
  "./api-reference.css": "./styles/api-reference.css",
32
+ "./fumadocs-renderer": {
33
+ "types": "./dist/fumadocs-renderer.d.mts",
34
+ "import": "./dist/fumadocs-renderer.mjs",
35
+ "default": "./dist/fumadocs-renderer.mjs"
36
+ },
32
37
  "./api": {
33
38
  "types": "./dist/api.d.mts",
34
39
  "import": "./dist/api.mjs",
@@ -109,8 +114,8 @@
109
114
  "tsdown": "^0.20.3",
110
115
  "typescript": "^5.9.3",
111
116
  "vitest": "^4.1.8",
112
- "@farming-labs/docs": "0.2.119",
113
- "@farming-labs/theme": "0.2.119"
117
+ "@farming-labs/docs": "0.2.120",
118
+ "@farming-labs/theme": "0.2.120"
114
119
  },
115
120
  "peerDependencies": {
116
121
  "@farming-labs/docs": ">=0.2.73",