fumadocs-openapi 10.3.15 → 10.3.16

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.
@@ -226,6 +226,7 @@
226
226
  @source inline("duration-200");
227
227
  @source inline("dynamic");
228
228
  @source inline("e");
229
+ @source inline("each");
229
230
  @source inline("either");
230
231
  @source inline("element");
231
232
  @source inline("else");
@@ -1,7 +1,6 @@
1
1
  import { OpenAPIServer } from "./server/create.js";
2
2
  import { OutputEntry } from "./utils/pages/builder.js";
3
3
  import { SchemaToPagesOptions } from "./utils/pages/preset-auto.js";
4
- import "./server/index.js";
5
4
  import { ProcessedDocument } from "./utils/process-document.js";
6
5
  import { PagesToTextOptions } from "./utils/pages/to-text.js";
7
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"generate-file.d.ts","names":[],"sources":["../src/generate-file.ts"],"mappings":";;;;;;;;UASiB,UAAA;EACf,IAAA;EACA,OAAA;AAAA;AAAA,UAGQ,WAAA;EACR,KAAA,EAAO,SAAA,OAAgB,GAAA,EAAK,kBAAA,KAAuB,SAAA;EALnD;;AAED;EAQC,GAAA,IACM,QAAA;IAEA,OAAA;IARC;;;IAYD,UAAA;EAAA;AAAA;AAAA,UAIE,SAAA;EACR,IAAA;EACA,KAAA;EACA,WAAA;EAdA;;;;;EAqBA,IAAA;AAAA;AAAA,UAGQ,mBAAA,SAA4B,kBAAA;;;;EAIpC,KAAA,EAAO,aAAA;EAdP;;;EAmBA,MAAA;EATQ;;;EAcR,KAAA,GAAQ,WAAA;EAAA;;;EAKR,WAAA,IAAe,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,UAAA,cAAwB,OAAA;AAAA;AAAA,KAG9D,MAAA,GAAS,oBAAA,GAAuB,mBAAA;AAAA,UAElC,kBAAA;EAAA,SACC,SAAA,EAAW,MAAA,SAAe,UAAA;EAAA,SAC1B,gBAAA,EAAkB,MAAA,SAAe,WAAA;EAAA,SACjC,SAAA,EAAW,MAAA,SAAe,iBAAA;AAAA;AAAA,iBAGf,aAAA,CAAc,OAAA,EAAS,MAAA,GAAS,OAAA;AAAA,iBAehC,iBAAA,CACpB,OAAA,EAAS,oBAAA,GAAuB,IAAA,CAAK,mBAAA,cACpC,OAAA,CAAQ,UAAA"}
1
+ {"version":3,"file":"generate-file.d.ts","names":[],"sources":["../src/generate-file.ts"],"mappings":";;;;;;;UASiB,UAAA;EACf,IAAA;EACA,OAAA;AAAA;AAAA,UAGQ,WAAA;EACR,KAAA,EAAO,SAAA,OAAgB,GAAA,EAAK,kBAAA,KAAuB,SAAA;EALnD;;AAED;EAQC,GAAA,IACM,QAAA;IAEA,OAAA;IARC;;;IAYD,UAAA;EAAA;AAAA;AAAA,UAIE,SAAA;EACR,IAAA;EACA,KAAA;EACA,WAAA;EAdA;;;;;EAqBA,IAAA;AAAA;AAAA,UAGQ,mBAAA,SAA4B,kBAAA;;;;EAIpC,KAAA,EAAO,aAAA;EAdP;;;EAmBA,MAAA;EATQ;;;EAcR,KAAA,GAAQ,WAAA;EAAA;;;EAKR,WAAA,IAAe,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,UAAA,cAAwB,OAAA;AAAA;AAAA,KAG9D,MAAA,GAAS,oBAAA,GAAuB,mBAAA;AAAA,UAElC,kBAAA;EAAA,SACC,SAAA,EAAW,MAAA,SAAe,UAAA;EAAA,SAC1B,gBAAA,EAAkB,MAAA,SAAe,WAAA;EAAA,SACjC,SAAA,EAAW,MAAA,SAAe,iBAAA;AAAA;AAAA,iBAGf,aAAA,CAAc,OAAA,EAAS,MAAA,GAAS,OAAA;AAAA,iBAehC,iBAAA,CACpB,OAAA,EAAS,oBAAA,GAAuB,IAAA,CAAK,mBAAA,cACpC,OAAA,CAAQ,UAAA"}
@@ -1,5 +1,3 @@
1
- import "../requests/types.js";
2
-
3
1
  //#region src/playground/fetcher.d.ts
4
2
  interface FetchResult {
5
3
  status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.d.ts","names":[],"sources":["../../src/playground/fetcher.ts"],"mappings":";;;UAQiB,WAAA;EACf,MAAA;EACA,IAAA;EACA,IAAA;AAAA"}
1
+ {"version":3,"file":"fetcher.d.ts","names":[],"sources":["../../src/playground/fetcher.ts"],"mappings":";UAQiB,WAAA;EACf,MAAA;EACA,IAAA;EACA,IAAA;AAAA"}
@@ -1,7 +1,4 @@
1
- import "../utils/schema.js";
2
- import "../utils/schema-to-string.js";
3
1
  import { ReactNode } from "react";
4
- import "react/jsx-runtime";
5
2
  import { Ajv2020 } from "ajv/dist/2020";
6
3
  import { FieldKey } from "@fumari/stf";
7
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","names":[],"sources":["../../src/playground/schema.tsx"],"mappings":";;;;;;;;UAciB,WAAA;;;;EAIf,SAAA;;;;EAKA,QAAA;AAAA"}
1
+ {"version":3,"file":"schema.d.ts","names":[],"sources":["../../src/playground/schema.tsx"],"mappings":";;;;;UAciB,WAAA;;;;EAIf,SAAA;;;;EAKA,QAAA;AAAA"}
@@ -1,7 +1,3 @@
1
- import "../../utils/schema.js";
2
- import "../types.js";
3
- import "../../types.js";
4
-
5
1
  //#region src/requests/media/encode.d.ts
6
2
  interface EncodedParameter {
7
3
  readonly value: string;
@@ -1 +1 @@
1
- {"version":3,"file":"encode.d.ts","names":[],"sources":["../../../src/requests/media/encode.ts"],"mappings":";;;;;UAMiB,gBAAA;EAAA,SACN,KAAA;AAAA;AAAA,UAGM,wBAAA;EAAA,SACN,MAAA;AAAA"}
1
+ {"version":3,"file":"encode.d.ts","names":[],"sources":["../../../src/requests/media/encode.ts"],"mappings":";UAMiB,gBAAA;EAAA,SACN,KAAA;AAAA;AAAA,UAGM,wBAAA;EAAA,SACN,MAAA;AAAA"}
@@ -1,6 +1,4 @@
1
1
  import { CreateAPIPageOptions } from "../ui/full.js";
2
- import "../ui/index.js";
3
-
4
2
  //#region src/scalar/index.d.ts
5
3
  /**
6
4
  * Enable Scalar for API playgrounds by wrapping your options inside.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/scalar/index.tsx"],"mappings":";;;;;;;AAuBA;;iBAAgB,UAAA,CAAW,OAAA,GAAS,oBAAA,GAA4B,oBAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/scalar/index.tsx"],"mappings":";;;;;AAuBA;;iBAAgB,UAAA,CAAW,OAAA,GAAS,oBAAA,GAA4B,oBAAA"}
package/dist/types.d.ts CHANGED
@@ -3,7 +3,6 @@ import { NoReference } from "./utils/schema.js";
3
3
  import { MediaAdapter } from "./requests/media/adapter.js";
4
4
  import { InlineCodeUsageGenerator } from "./requests/generators/index.js";
5
5
  import { OpenAPIOptions } from "./server/create.js";
6
- import "./server/index.js";
7
6
  import { CreateAPIPageOptions } from "./ui/base.js";
8
7
  import { ProcessedDocument } from "./utils/process-document.js";
9
8
  import Slugger from "github-slugger";
@@ -33,7 +32,7 @@ type MethodInformation = NoReference<OperationObject> & {
33
32
  'x-exclusiveCodeSample'?: string;
34
33
  };
35
34
  type RequireKeys<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
36
- interface RenderContext extends Pick<OpenAPIOptions, 'proxyUrl'>, RequireKeys<CreateAPIPageOptions, 'generateTypeScriptDefinitions' | 'renderMarkdown'> {
35
+ interface RenderContext extends Pick<OpenAPIOptions, 'proxyUrl'>, Omit<RequireKeys<CreateAPIPageOptions, 'generateTypeScriptDefinitions' | 'renderMarkdown'>, 'renderCodeBlock' | 'renderHeading'> {
37
36
  slugger: Slugger;
38
37
  /**
39
38
  * dereferenced schema
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;;;;;;;;KAUY,QAAA,GAAW,WAAA,CAAY,QAAA;AAAA,KACvB,eAAA,GAAkB,WAAA,CAAY,eAAA;AAAA,KAC9B,eAAA,GAAkB,WAAA,CAAY,eAAA;AAAA,KAC9B,oBAAA,GAAuB,WAAA,CAAY,oBAAA;AAAA,KACnC,eAAA,GAAkB,WAAA,CAAY,eAAA;AAAA,KAC9B,cAAA,GAAiB,WAAA,CAAY,cAAA;AAAA,KAC7B,SAAA,GAAY,WAAA,CAAY,SAAA;AAAA,KACxB,YAAA,GAAe,WAAA,CAAY,YAAA;AAAA,KAC3B,cAAA,GAAiB,WAAA,CAAY,cAAA;AAAA,KAC7B,oBAAA,GAAuB,SAAA,CAAU,oBAAA;AAAA,KACjC,cAAA,GAAiB,WAAA,CAAY,cAAA;AAAA,KAC7B,oBAAA,GAAuB,WAAA,CAAY,oBAAA;AAAA,KACnC,WAAA,GAAc,WAAA,CAAY,WAAA;AAAA,KAC1B,aAAA,GAAgB,WAAA,CAAY,aAAA;AAAA,KAC5B,eAAA,GAAkB,WAAA,CAAY,eAAA;AAAA,KAC9B,iBAAA,GAAoB,WAAA,CAAY,iBAAA;AAAA,KAEhC,iBAAA,GAAoB,WAAA,CAAY,eAAA;EAC1C,MAAA;EACA,eAAA,GAAkB,wBAAA;EAClB,sBAAA;EACA,uBAAA;AAAA;AAAA,KAGG,WAAA,oBAA+B,CAAA,IAAK,IAAA,CAAK,CAAA,EAAG,CAAA,IAAK,QAAA,CAAS,IAAA,CAAK,CAAA,EAAG,CAAA;AAAA,UAEtD,aAAA,SAEb,IAAA,CAAK,cAAA,eACL,WAAA,CAAY,oBAAA;EACd,OAAA,EAAS,OAAA;;;;EAKT,MAAA,EAAQ,iBAAA;EAER,aAAA,EAAe,MAAA,SAAe,YAAA;EAE9B,aAAA,GACE,KAAA,UACA,IAAA,UACA,KAAA,GAAQ,cAAA,CAAe,kBAAA,MACpB,SAAA;EACL,eAAA,GAAkB,IAAA,UAAc,IAAA,aAAiB,SAAA;AAAA;AAAA,KAGvC,gBAAA,cAA8B,WAAA,IAAe,CAAA,mBAAoB,IAAA,CAAK,CAAA,EAAG,CAAA;AAAA,KACzE,SAAA,MAAe,CAAA,GAAI,OAAA,CAAQ,CAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;;;;;;;KAUY,QAAA,GAAW,WAAA,CAAY,QAAA;AAAA,KACvB,eAAA,GAAkB,WAAA,CAAY,eAAA;AAAA,KAC9B,eAAA,GAAkB,WAAA,CAAY,eAAA;AAAA,KAC9B,oBAAA,GAAuB,WAAA,CAAY,oBAAA;AAAA,KACnC,eAAA,GAAkB,WAAA,CAAY,eAAA;AAAA,KAC9B,cAAA,GAAiB,WAAA,CAAY,cAAA;AAAA,KAC7B,SAAA,GAAY,WAAA,CAAY,SAAA;AAAA,KACxB,YAAA,GAAe,WAAA,CAAY,YAAA;AAAA,KAC3B,cAAA,GAAiB,WAAA,CAAY,cAAA;AAAA,KAC7B,oBAAA,GAAuB,SAAA,CAAU,oBAAA;AAAA,KACjC,cAAA,GAAiB,WAAA,CAAY,cAAA;AAAA,KAC7B,oBAAA,GAAuB,WAAA,CAAY,oBAAA;AAAA,KACnC,WAAA,GAAc,WAAA,CAAY,WAAA;AAAA,KAC1B,aAAA,GAAgB,WAAA,CAAY,aAAA;AAAA,KAC5B,eAAA,GAAkB,WAAA,CAAY,eAAA;AAAA,KAC9B,iBAAA,GAAoB,WAAA,CAAY,iBAAA;AAAA,KAEhC,iBAAA,GAAoB,WAAA,CAAY,eAAA;EAC1C,MAAA;EACA,eAAA,GAAkB,wBAAA;EAClB,sBAAA;EACA,uBAAA;AAAA;AAAA,KAGG,WAAA,oBAA+B,CAAA,IAAK,IAAA,CAAK,CAAA,EAAG,CAAA,IAAK,QAAA,CAAS,IAAA,CAAK,CAAA,EAAG,CAAA;AAAA,UAEtD,aAAA,SAEb,IAAA,CAAK,cAAA,eACL,IAAA,CACE,WAAA,CAAY,oBAAA;EAGhB,OAAA,EAAS,OAAA;;;;EAKT,MAAA,EAAQ,iBAAA;EAER,aAAA,EAAe,MAAA,SAAe,YAAA;EAE9B,aAAA,GACE,KAAA,UACA,IAAA,UACA,KAAA,GAAQ,cAAA,CAAe,kBAAA,MACpB,SAAA;EACL,eAAA,GAAkB,IAAA,UAAc,IAAA,aAAiB,SAAA;AAAA;AAAA,KAGvC,gBAAA,cAA8B,WAAA,IAAe,CAAA,mBAAoB,IAAA,CAAK,CAAA,EAAG,CAAA;AAAA,KACzE,SAAA,MAAe,CAAA,GAAI,OAAA,CAAQ,CAAA"}
@@ -1,7 +1,5 @@
1
1
  import { HttpMethods } from "../types.js";
2
2
  import { ProcessedDocument } from "../utils/process-document.js";
3
- import "react/jsx-runtime";
4
-
5
3
  //#region src/ui/api-page.d.ts
6
4
  interface ApiPageProps {
7
5
  document: Promise<ProcessedDocument> | string | ProcessedDocument;
@@ -1 +1 @@
1
- {"version":3,"file":"api-page.d.ts","names":[],"sources":["../../src/ui/api-page.tsx"],"mappings":";;;;;UAMiB,YAAA;EACf,QAAA,EAAU,OAAA,CAAQ,iBAAA,aAA8B,iBAAA;EAChD,SAAA;EACA,eAAA;EAH2B;;;EAQ3B,UAAA,GAAa,aAAA;EAEb,QAAA,GAAW,WAAA;AAAA;AAAA,UAGI,WAAA;EAHO;;;EAOtB,IAAA;EACA,MAAA,EAAQ,WAAA;AAAA;AAAA,UAGO,aAAA;EAlBf;;;EAsBA,IAAA;EAfW;;;EAmBX,MAAA,EAAQ,WAAA;AAAA"}
1
+ {"version":3,"file":"api-page.d.ts","names":[],"sources":["../../src/ui/api-page.tsx"],"mappings":";;;UAMiB,YAAA;EACf,QAAA,EAAU,OAAA,CAAQ,iBAAA,aAA8B,iBAAA;EAChD,SAAA;EACA,eAAA;EAH2B;;;EAQ3B,UAAA,GAAa,aAAA;EAEb,QAAA,GAAW,WAAA;AAAA;AAAA,UAGI,WAAA;EAHO;;;EAOtB,IAAA;EACA,MAAA,EAAQ,WAAA;AAAA;AAAA,UAGO,aAAA;EAlBf;;;EAsBA,IAAA;EAfW;;;EAmBX,MAAA,EAAQ,WAAA;AAAA"}
package/dist/ui/base.d.ts CHANGED
@@ -3,13 +3,12 @@ import { MediaAdapter } from "../requests/media/adapter.js";
3
3
  import { CodeUsageGeneratorRegistry, InlineCodeUsageGenerator } from "../requests/generators/index.js";
4
4
  import { OpenAPIServer } from "../server/create.js";
5
5
  import { ApiPageProps, OperationItem, WebhookItem } from "./api-page.js";
6
- import "../server/index.js";
7
6
  import { ExampleRequestItem } from "./operation/request-tabs.js";
8
7
  import { APIPageClientOptions } from "./client/index.js";
9
8
  import { SchemaUIOptions } from "./schema/index.js";
10
9
  import { ResponseTab } from "./operation/response-tabs.js";
11
10
  import { Awaitable, DistributiveOmit, MethodInformation, RenderContext } from "../types.js";
12
- import { FC, ReactNode } from "react";
11
+ import { FC, HTMLAttributes, ReactNode } from "react";
13
12
  import { CoreHighlightOptions } from "fumadocs-core/highlight/core";
14
13
  import { ResolvedShikiConfig } from "fumadocs-core/highlight/config";
15
14
  import { JSONSchema } from "json-schema-typed";
@@ -43,11 +42,11 @@ interface CreateAPIPageOptions {
43
42
  */
44
43
  generateTypeScriptDefinitions?: (schema: JSONSchema, ctx: GenerateTypeScriptDefinitionsContext) => Awaitable<string | undefined>;
45
44
  /**
46
- * Generate example code usage for endpoints.
45
+ * Generate example code usage for all endpoints.
47
46
  */
48
47
  codeUsages?: CodeUsageGeneratorRegistry;
49
48
  /**
50
- * Generate example code usage for endpoints.
49
+ * Generate example code usage for each endpoint.
51
50
  */
52
51
  generateCodeSamples?: (method: MethodInformation) => Awaitable<InlineCodeUsageGenerator[]>;
53
52
  shiki: ResolvedShikiConfig;
@@ -145,6 +144,11 @@ interface CreateAPIPageOptions {
145
144
  ctx: RenderContext;
146
145
  }) => Awaitable<ReactNode>;
147
146
  };
147
+ renderHeading?: (props: HTMLAttributes<HTMLHeadingElement>, depth: number) => Awaitable<ReactNode>;
148
+ renderCodeBlock?: (props: {
149
+ lang: string;
150
+ code: string;
151
+ }) => Awaitable<ReactNode>;
148
152
  client?: APIPageClientOptions;
149
153
  }
150
154
  declare function createAPIPage(server: OpenAPIServer, options: CreateAPIPageOptions): FC<ApiPageProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","names":[],"sources":["../../src/ui/base.tsx"],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","names":[],"sources":["../../src/ui/base.tsx"],"mappings":"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"}
package/dist/ui/base.js CHANGED
@@ -46,8 +46,13 @@ function createAPIPage(server, options) {
46
46
  ...options.mediaAdapters
47
47
  },
48
48
  slugger,
49
- renderHeading(depth, text, props) {
49
+ async renderHeading(depth, text, props) {
50
50
  const id = slugger.slug(text);
51
+ if (options.renderHeading) return options.renderHeading({
52
+ id,
53
+ children: text,
54
+ ...props
55
+ }, depth);
51
56
  return /* @__PURE__ */ jsx(Heading, {
52
57
  id,
53
58
  as: `h${depth}`,
@@ -69,13 +74,17 @@ function createAPIPage(server, options) {
69
74
  return (await processor.process({ value: text })).result;
70
75
  },
71
76
  async renderCodeBlock(lang, code) {
77
+ if (options.renderCodeBlock) return options.renderCodeBlock({
78
+ lang,
79
+ code
80
+ });
72
81
  return /* @__PURE__ */ jsx(CodeBlock, {
73
82
  className: "my-0",
74
83
  children: await highlight(code, {
75
84
  lang,
76
85
  ...options.shikiOptions,
77
86
  config: options.shiki,
78
- components: { pre: (props) => /* @__PURE__ */ jsx(Pre, { ...props }) }
87
+ components: { pre: Pre }
79
88
  })
80
89
  });
81
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","names":[],"sources":["../../src/ui/base.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any -- rehype-react without types */\nimport Slugger from 'github-slugger';\nimport type { Awaitable, DistributiveOmit, MethodInformation, RenderContext } from '@/types';\nimport type { NoReference } from '@/utils/schema';\nimport type { ProcessedDocument } from '@/utils/process-document';\nimport { defaultAdapters, MediaAdapter } from '@/requests/media/adapter';\nimport type { FC, ReactNode } from 'react';\nimport { highlight, type CoreHighlightOptions } from 'fumadocs-core/highlight/core';\nimport type { OpenAPIServer } from '@/server';\nimport type { APIPageClientOptions } from './client';\nimport { Heading } from 'fumadocs-ui/components/heading';\nimport { createRehypeCode } from 'fumadocs-core/mdx-plugins/rehype-code.core';\nimport { remarkGfm } from 'fumadocs-core/mdx-plugins/remark-gfm';\nimport defaultMdxComponents from 'fumadocs-ui/mdx';\nimport { remark } from 'remark';\nimport remarkRehype from 'remark-rehype';\nimport { toJsxRuntime } from 'hast-util-to-jsx-runtime';\nimport * as JsxRuntime from 'react/jsx-runtime';\nimport { CodeBlock, Pre } from 'fumadocs-ui/components/codeblock';\nimport type { SchemaUIOptions } from './schema';\nimport type { ResponseTab } from './operation/response-tabs';\nimport type { ExampleRequestItem } from './operation/request-tabs';\nimport type { ResolvedShikiConfig } from 'fumadocs-core/highlight/config';\nimport { APIPage, type ApiPageProps, type OperationItem, type WebhookItem } from './api-page';\nimport type { CodeUsageGeneratorRegistry, InlineCodeUsageGenerator } from '@/requests/generators';\nimport type { JSONSchema } from 'json-schema-typed';\n\nexport interface GenerateTypeScriptDefinitionsContext extends RenderContext {\n operation: NoReference<MethodInformation>;\n readOnly: boolean;\n writeOnly: boolean;\n /** @deprecated */\n _internal_legacy?: {\n statusCode: string;\n contentType: string;\n };\n}\n\nexport interface CreateAPIPageOptions {\n /**\n * Generate TypeScript definitions from response schema.\n *\n * Pass `false` to disable it.\n *\n * @param method - the operation object\n * @param statusCode - status code\n * @deprecated use `generateTypeScriptDefinitions` instead.\n */\n generateTypeScriptSchema?:\n | ((\n method: NoReference<MethodInformation>,\n statusCode: string,\n contentType: string,\n ctx: RenderContext,\n ) => Awaitable<string | undefined>)\n | false;\n\n /**\n * Generate TypeScript definitions from JSON schema.\n *\n * Pass `false` to disable it.\n */\n generateTypeScriptDefinitions?: (\n schema: JSONSchema,\n ctx: GenerateTypeScriptDefinitionsContext,\n ) => Awaitable<string | undefined>;\n\n /**\n * Generate example code usage for endpoints.\n */\n codeUsages?: CodeUsageGeneratorRegistry;\n\n /**\n * Generate example code usage for endpoints.\n */\n generateCodeSamples?: (method: MethodInformation) => Awaitable<InlineCodeUsageGenerator[]>;\n\n shiki: ResolvedShikiConfig;\n renderMarkdown?: (md: string) => ReactNode;\n shikiOptions?: DistributiveOmit<CoreHighlightOptions, 'config' | 'lang' | 'components'>;\n\n /**\n * Show full response schema instead of only example response & Typescript definitions.\n *\n * @default true\n */\n showResponseSchema?: boolean;\n\n /**\n * Support other media types (for server-side generation).\n */\n mediaAdapters?: Record<string, MediaAdapter>;\n\n /**\n * Customise page content\n */\n content?: {\n renderResponseTabs?: (tabs: ResponseTab[], ctx: RenderContext) => Awaitable<ReactNode>;\n\n renderRequestTabs?: (\n items: ExampleRequestItem[],\n ctx: RenderContext & {\n route: string;\n operation: NoReference<MethodInformation>;\n },\n ) => Awaitable<ReactNode>;\n\n renderAPIExampleLayout?: (\n slots: {\n selector: ReactNode;\n usageTabs: ReactNode;\n responseTabs: ReactNode;\n },\n ctx: RenderContext,\n ) => Awaitable<ReactNode>;\n\n /**\n * @param generators - codegens for API example usages\n */\n renderAPIExampleUsageTabs?: (\n generators: CodeUsageGeneratorRegistry,\n ctx: RenderContext,\n ) => Awaitable<ReactNode>;\n\n /**\n * renderer of the entire page's layout (containing all operations & webhooks UI)\n */\n renderPageLayout?: (\n slots: {\n operations?: {\n item: OperationItem;\n children: ReactNode;\n }[];\n webhooks?: {\n item: WebhookItem;\n children: ReactNode;\n }[];\n },\n ctx: RenderContext,\n ) => Awaitable<ReactNode>;\n\n renderOperationLayout?: (\n slots: {\n header: ReactNode;\n description: ReactNode;\n apiExample: ReactNode;\n apiPlayground: ReactNode;\n\n authSchemes: ReactNode;\n paremeters: ReactNode;\n body: ReactNode;\n responses: ReactNode;\n callbacks: ReactNode;\n },\n ctx: RenderContext,\n method: NoReference<MethodInformation>,\n ) => Awaitable<ReactNode>;\n\n renderWebhookLayout?: (slots: {\n header: ReactNode;\n description: ReactNode;\n authSchemes: ReactNode;\n paremeters: ReactNode;\n body: ReactNode;\n requests: ReactNode;\n responses: ReactNode;\n callbacks: ReactNode;\n }) => Awaitable<ReactNode>;\n };\n\n /**\n * Info UI for JSON schemas\n */\n schemaUI?: {\n render?: (options: SchemaUIOptions, ctx: RenderContext) => Awaitable<ReactNode>;\n\n /**\n * Show examples under the generated content of JSON schemas.\n *\n * @defaultValue false\n */\n showExample?: boolean;\n };\n\n /**\n * Customise API playground\n */\n playground?: {\n /**\n * @defaultValue true\n */\n enabled?: boolean;\n /**\n * replace the server-side renderer\n */\n render?: (props: {\n path: string;\n method: MethodInformation;\n ctx: RenderContext;\n }) => Awaitable<ReactNode>;\n };\n\n client?: APIPageClientOptions;\n}\n\nexport function createAPIPage(\n server: OpenAPIServer,\n options: CreateAPIPageOptions,\n): FC<ApiPageProps> {\n let processor: ReturnType<typeof createMarkdownProcessor>;\n\n function createMarkdownProcessor() {\n function rehypeReact(this: any) {\n this.compiler = (tree: any, file: any) => {\n return toJsxRuntime(tree, {\n development: false,\n filePath: file.path,\n ...JsxRuntime,\n components: defaultMdxComponents,\n });\n };\n }\n\n return remark()\n .use(remarkGfm)\n .use(remarkRehype)\n .use(createRehypeCode(options.shiki), {\n langs: [],\n lazy: true,\n })\n .use(rehypeReact);\n }\n\n return async function APIPageWrapper({ document, ...props }) {\n let processed: ProcessedDocument;\n if (typeof document === 'string') {\n processed = await server.getSchema(document);\n } else {\n processed = await document;\n }\n\n const slugger = new Slugger();\n\n const ctx: RenderContext = {\n schema: processed,\n proxyUrl: server.options.proxyUrl,\n ...options,\n mediaAdapters: {\n ...defaultAdapters,\n ...options.mediaAdapters,\n },\n slugger,\n renderHeading(depth, text, props) {\n const id = slugger.slug(text);\n\n return (\n <Heading id={id} key={id} as={`h${depth}` as `h1`} {...props}>\n {text}\n </Heading>\n );\n },\n generateTypeScriptDefinitions(schema, ctx) {\n const { generateTypeScriptSchema, generateTypeScriptDefinitions } = options;\n if (generateTypeScriptSchema && ctx._internal_legacy) {\n const { statusCode, contentType } = ctx._internal_legacy;\n return generateTypeScriptSchema(ctx.operation, statusCode, contentType, ctx);\n }\n\n return generateTypeScriptDefinitions?.(schema, ctx);\n },\n async renderMarkdown(text) {\n if (options.renderMarkdown) return options.renderMarkdown(text);\n processor ??= createMarkdownProcessor();\n\n const out = await processor.process({\n value: text,\n });\n\n return out.result as ReactNode;\n },\n async renderCodeBlock(lang, code) {\n const rendered = await highlight(code, {\n lang,\n ...options.shikiOptions,\n config: options.shiki,\n components: {\n pre: (props) => <Pre {...props} />,\n },\n });\n\n return <CodeBlock className=\"my-0\">{rendered}</CodeBlock>;\n },\n };\n\n return <APIPage {...props} ctx={ctx} />;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA6MA,SAAgB,cACd,QACA,SACkB;CAClB,IAAI;CAEJ,SAAS,0BAA0B;EACjC,SAAS,cAAuB;AAC9B,QAAK,YAAY,MAAW,SAAc;AACxC,WAAO,aAAa,MAAM;KACxB,aAAa;KACb,UAAU,KAAK;KACf,GAAG;KACH,YAAY;KACb,CAAC;;;AAIN,SAAO,QAAQ,CACZ,IAAI,UAAU,CACd,IAAI,aAAa,CACjB,IAAI,iBAAiB,QAAQ,MAAM,EAAE;GACpC,OAAO,EAAE;GACT,MAAM;GACP,CAAC,CACD,IAAI,YAAY;;AAGrB,QAAO,eAAe,eAAe,EAAE,UAAU,GAAG,SAAS;EAC3D,IAAI;AACJ,MAAI,OAAO,aAAa,SACtB,aAAY,MAAM,OAAO,UAAU,SAAS;MAE5C,aAAY,MAAM;EAGpB,MAAM,UAAU,IAAI,SAAS;EAE7B,MAAM,MAAqB;GACzB,QAAQ;GACR,UAAU,OAAO,QAAQ;GACzB,GAAG;GACH,eAAe;IACb,GAAG;IACH,GAAG,QAAQ;IACZ;GACD;GACA,cAAc,OAAO,MAAM,OAAO;IAChC,MAAM,KAAK,QAAQ,KAAK,KAAK;AAE7B,WACE,oBAAC;KAAY;KAAa,IAAI,IAAI;KAAiB,GAAI;eACpD;OADmB,GAEZ;;GAGd,8BAA8B,QAAQ,KAAK;IACzC,MAAM,EAAE,0BAA0B,kCAAkC;AACpE,QAAI,4BAA4B,IAAI,kBAAkB;KACpD,MAAM,EAAE,YAAY,gBAAgB,IAAI;AACxC,YAAO,yBAAyB,IAAI,WAAW,YAAY,aAAa,IAAI;;AAG9E,WAAO,gCAAgC,QAAQ,IAAI;;GAErD,MAAM,eAAe,MAAM;AACzB,QAAI,QAAQ,eAAgB,QAAO,QAAQ,eAAe,KAAK;AAC/D,kBAAc,yBAAyB;AAMvC,YAJY,MAAM,UAAU,QAAQ,EAClC,OAAO,MACR,CAAC,EAES;;GAEb,MAAM,gBAAgB,MAAM,MAAM;AAUhC,WAAO,oBAAC;KAAU,WAAU;eATX,MAAM,UAAU,MAAM;MACrC;MACA,GAAG,QAAQ;MACX,QAAQ,QAAQ;MAChB,YAAY,EACV,MAAM,UAAU,oBAAC,OAAI,GAAI,QAAS,EACnC;MACF,CAAC;MAEuD;;GAE5D;AAED,SAAO,oBAAC;GAAQ,GAAI;GAAY;IAAO"}
1
+ {"version":3,"file":"base.js","names":[],"sources":["../../src/ui/base.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any -- rehype-react without types */\nimport Slugger from 'github-slugger';\nimport type { Awaitable, DistributiveOmit, MethodInformation, RenderContext } from '@/types';\nimport type { NoReference } from '@/utils/schema';\nimport type { ProcessedDocument } from '@/utils/process-document';\nimport { defaultAdapters, MediaAdapter } from '@/requests/media/adapter';\nimport type { FC, HTMLAttributes, ReactNode } from 'react';\nimport { highlight, type CoreHighlightOptions } from 'fumadocs-core/highlight/core';\nimport type { OpenAPIServer } from '@/server';\nimport type { APIPageClientOptions } from './client';\nimport { Heading } from 'fumadocs-ui/components/heading';\nimport { createRehypeCode } from 'fumadocs-core/mdx-plugins/rehype-code.core';\nimport { remarkGfm } from 'fumadocs-core/mdx-plugins/remark-gfm';\nimport defaultMdxComponents from 'fumadocs-ui/mdx';\nimport { remark } from 'remark';\nimport remarkRehype from 'remark-rehype';\nimport { toJsxRuntime } from 'hast-util-to-jsx-runtime';\nimport * as JsxRuntime from 'react/jsx-runtime';\nimport { CodeBlock, Pre } from 'fumadocs-ui/components/codeblock';\nimport type { SchemaUIOptions } from './schema';\nimport type { ResponseTab } from './operation/response-tabs';\nimport type { ExampleRequestItem } from './operation/request-tabs';\nimport type { ResolvedShikiConfig } from 'fumadocs-core/highlight/config';\nimport { APIPage, type ApiPageProps, type OperationItem, type WebhookItem } from './api-page';\nimport type { CodeUsageGeneratorRegistry, InlineCodeUsageGenerator } from '@/requests/generators';\nimport type { JSONSchema } from 'json-schema-typed';\n\nexport interface GenerateTypeScriptDefinitionsContext extends RenderContext {\n operation: NoReference<MethodInformation>;\n readOnly: boolean;\n writeOnly: boolean;\n /** @deprecated */\n _internal_legacy?: {\n statusCode: string;\n contentType: string;\n };\n}\n\nexport interface CreateAPIPageOptions {\n /**\n * Generate TypeScript definitions from response schema.\n *\n * Pass `false` to disable it.\n *\n * @param method - the operation object\n * @param statusCode - status code\n * @deprecated use `generateTypeScriptDefinitions` instead.\n */\n generateTypeScriptSchema?:\n | ((\n method: NoReference<MethodInformation>,\n statusCode: string,\n contentType: string,\n ctx: RenderContext,\n ) => Awaitable<string | undefined>)\n | false;\n\n /**\n * Generate TypeScript definitions from JSON schema.\n *\n * Pass `false` to disable it.\n */\n generateTypeScriptDefinitions?: (\n schema: JSONSchema,\n ctx: GenerateTypeScriptDefinitionsContext,\n ) => Awaitable<string | undefined>;\n\n /**\n * Generate example code usage for all endpoints.\n */\n codeUsages?: CodeUsageGeneratorRegistry;\n\n /**\n * Generate example code usage for each endpoint.\n */\n generateCodeSamples?: (method: MethodInformation) => Awaitable<InlineCodeUsageGenerator[]>;\n\n shiki: ResolvedShikiConfig;\n renderMarkdown?: (md: string) => ReactNode;\n shikiOptions?: DistributiveOmit<CoreHighlightOptions, 'config' | 'lang' | 'components'>;\n\n /**\n * Show full response schema instead of only example response & Typescript definitions.\n *\n * @default true\n */\n showResponseSchema?: boolean;\n\n /**\n * Support other media types (for server-side generation).\n */\n mediaAdapters?: Record<string, MediaAdapter>;\n\n /**\n * Customise page content\n */\n content?: {\n renderResponseTabs?: (tabs: ResponseTab[], ctx: RenderContext) => Awaitable<ReactNode>;\n\n renderRequestTabs?: (\n items: ExampleRequestItem[],\n ctx: RenderContext & {\n route: string;\n operation: NoReference<MethodInformation>;\n },\n ) => Awaitable<ReactNode>;\n\n renderAPIExampleLayout?: (\n slots: {\n selector: ReactNode;\n usageTabs: ReactNode;\n responseTabs: ReactNode;\n },\n ctx: RenderContext,\n ) => Awaitable<ReactNode>;\n\n /**\n * @param generators - codegens for API example usages\n */\n renderAPIExampleUsageTabs?: (\n generators: CodeUsageGeneratorRegistry,\n ctx: RenderContext,\n ) => Awaitable<ReactNode>;\n\n /**\n * renderer of the entire page's layout (containing all operations & webhooks UI)\n */\n renderPageLayout?: (\n slots: {\n operations?: {\n item: OperationItem;\n children: ReactNode;\n }[];\n webhooks?: {\n item: WebhookItem;\n children: ReactNode;\n }[];\n },\n ctx: RenderContext,\n ) => Awaitable<ReactNode>;\n\n renderOperationLayout?: (\n slots: {\n header: ReactNode;\n description: ReactNode;\n apiExample: ReactNode;\n apiPlayground: ReactNode;\n\n authSchemes: ReactNode;\n paremeters: ReactNode;\n body: ReactNode;\n responses: ReactNode;\n callbacks: ReactNode;\n },\n ctx: RenderContext,\n method: NoReference<MethodInformation>,\n ) => Awaitable<ReactNode>;\n\n renderWebhookLayout?: (slots: {\n header: ReactNode;\n description: ReactNode;\n authSchemes: ReactNode;\n paremeters: ReactNode;\n body: ReactNode;\n requests: ReactNode;\n responses: ReactNode;\n callbacks: ReactNode;\n }) => Awaitable<ReactNode>;\n };\n\n /**\n * Info UI for JSON schemas\n */\n schemaUI?: {\n render?: (options: SchemaUIOptions, ctx: RenderContext) => Awaitable<ReactNode>;\n\n /**\n * Show examples under the generated content of JSON schemas.\n *\n * @defaultValue false\n */\n showExample?: boolean;\n };\n\n /**\n * Customise API playground\n */\n playground?: {\n /**\n * @defaultValue true\n */\n enabled?: boolean;\n /**\n * replace the server-side renderer\n */\n render?: (props: {\n path: string;\n method: MethodInformation;\n ctx: RenderContext;\n }) => Awaitable<ReactNode>;\n };\n\n renderHeading?: (\n props: HTMLAttributes<HTMLHeadingElement>,\n depth: number,\n ) => Awaitable<ReactNode>;\n renderCodeBlock?: (props: { lang: string; code: string }) => Awaitable<ReactNode>;\n\n client?: APIPageClientOptions;\n}\n\nexport function createAPIPage(\n server: OpenAPIServer,\n options: CreateAPIPageOptions,\n): FC<ApiPageProps> {\n let processor: ReturnType<typeof createMarkdownProcessor>;\n\n function createMarkdownProcessor() {\n function rehypeReact(this: any) {\n this.compiler = (tree: any, file: any) => {\n return toJsxRuntime(tree, {\n development: false,\n filePath: file.path,\n ...JsxRuntime,\n components: defaultMdxComponents,\n });\n };\n }\n\n return remark()\n .use(remarkGfm)\n .use(remarkRehype)\n .use(createRehypeCode(options.shiki), {\n langs: [],\n lazy: true,\n })\n .use(rehypeReact);\n }\n\n return async function APIPageWrapper({ document, ...props }) {\n let processed: ProcessedDocument;\n if (typeof document === 'string') {\n processed = await server.getSchema(document);\n } else {\n processed = await document;\n }\n\n const slugger = new Slugger();\n\n const ctx: RenderContext = {\n schema: processed,\n proxyUrl: server.options.proxyUrl,\n ...options,\n mediaAdapters: {\n ...defaultAdapters,\n ...options.mediaAdapters,\n },\n slugger,\n async renderHeading(depth, text, props) {\n const id = slugger.slug(text);\n\n if (options.renderHeading) {\n return options.renderHeading({ id, children: text, ...props }, depth);\n }\n\n return (\n <Heading id={id} key={id} as={`h${depth}` as `h1`} {...props}>\n {text}\n </Heading>\n );\n },\n generateTypeScriptDefinitions(schema, ctx) {\n const { generateTypeScriptSchema, generateTypeScriptDefinitions } = options;\n if (generateTypeScriptSchema && ctx._internal_legacy) {\n const { statusCode, contentType } = ctx._internal_legacy;\n return generateTypeScriptSchema(ctx.operation, statusCode, contentType, ctx);\n }\n\n return generateTypeScriptDefinitions?.(schema, ctx);\n },\n async renderMarkdown(text) {\n if (options.renderMarkdown) return options.renderMarkdown(text);\n processor ??= createMarkdownProcessor();\n\n const out = await processor.process({\n value: text,\n });\n\n return out.result as ReactNode;\n },\n async renderCodeBlock(lang, code) {\n if (options.renderCodeBlock) {\n return options.renderCodeBlock({ lang, code });\n }\n\n const rendered = await highlight(code, {\n lang,\n ...options.shikiOptions,\n config: options.shiki,\n components: {\n pre: Pre,\n },\n });\n\n return <CodeBlock className=\"my-0\">{rendered}</CodeBlock>;\n },\n };\n\n return <APIPage {...props} ctx={ctx} />;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAmNA,SAAgB,cACd,QACA,SACkB;CAClB,IAAI;CAEJ,SAAS,0BAA0B;EACjC,SAAS,cAAuB;AAC9B,QAAK,YAAY,MAAW,SAAc;AACxC,WAAO,aAAa,MAAM;KACxB,aAAa;KACb,UAAU,KAAK;KACf,GAAG;KACH,YAAY;KACb,CAAC;;;AAIN,SAAO,QAAQ,CACZ,IAAI,UAAU,CACd,IAAI,aAAa,CACjB,IAAI,iBAAiB,QAAQ,MAAM,EAAE;GACpC,OAAO,EAAE;GACT,MAAM;GACP,CAAC,CACD,IAAI,YAAY;;AAGrB,QAAO,eAAe,eAAe,EAAE,UAAU,GAAG,SAAS;EAC3D,IAAI;AACJ,MAAI,OAAO,aAAa,SACtB,aAAY,MAAM,OAAO,UAAU,SAAS;MAE5C,aAAY,MAAM;EAGpB,MAAM,UAAU,IAAI,SAAS;EAE7B,MAAM,MAAqB;GACzB,QAAQ;GACR,UAAU,OAAO,QAAQ;GACzB,GAAG;GACH,eAAe;IACb,GAAG;IACH,GAAG,QAAQ;IACZ;GACD;GACA,MAAM,cAAc,OAAO,MAAM,OAAO;IACtC,MAAM,KAAK,QAAQ,KAAK,KAAK;AAE7B,QAAI,QAAQ,cACV,QAAO,QAAQ,cAAc;KAAE;KAAI,UAAU;KAAM,GAAG;KAAO,EAAE,MAAM;AAGvE,WACE,oBAAC;KAAY;KAAa,IAAI,IAAI;KAAiB,GAAI;eACpD;OADmB,GAEZ;;GAGd,8BAA8B,QAAQ,KAAK;IACzC,MAAM,EAAE,0BAA0B,kCAAkC;AACpE,QAAI,4BAA4B,IAAI,kBAAkB;KACpD,MAAM,EAAE,YAAY,gBAAgB,IAAI;AACxC,YAAO,yBAAyB,IAAI,WAAW,YAAY,aAAa,IAAI;;AAG9E,WAAO,gCAAgC,QAAQ,IAAI;;GAErD,MAAM,eAAe,MAAM;AACzB,QAAI,QAAQ,eAAgB,QAAO,QAAQ,eAAe,KAAK;AAC/D,kBAAc,yBAAyB;AAMvC,YAJY,MAAM,UAAU,QAAQ,EAClC,OAAO,MACR,CAAC,EAES;;GAEb,MAAM,gBAAgB,MAAM,MAAM;AAChC,QAAI,QAAQ,gBACV,QAAO,QAAQ,gBAAgB;KAAE;KAAM;KAAM,CAAC;AAYhD,WAAO,oBAAC;KAAU,WAAU;eATX,MAAM,UAAU,MAAM;MACrC;MACA,GAAG,QAAQ;MACX,QAAQ,QAAQ;MAChB,YAAY,EACV,KAAK,KACN;MACF,CAAC;MAEuD;;GAE5D;AAED,SAAO,oBAAC;GAAQ,GAAI;GAAY;IAAO"}
package/dist/ui/full.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { OpenAPIServer } from "../server/create.js";
2
2
  import { ApiPageProps } from "./api-page.js";
3
- import "../server/index.js";
4
3
  import { CreateAPIPageOptions as CreateAPIPageOptions$1 } from "./base.js";
5
4
  import * as react_jsx_runtime0 from "react/jsx-runtime";
6
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"full.d.ts","names":[],"sources":["../../src/ui/full.tsx"],"mappings":";;;;;;;KAMY,oBAAA,GAAuB,OAAA,CAAQ,sBAAA;AAAA,iBAE3B,aAAA,CAAc,MAAA,EAAQ,aAAA,EAAe,OAAA,GAAS,oBAAA,IAqBhC,KAAA,EAAO,YAAA,KAAY,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"full.d.ts","names":[],"sources":["../../src/ui/full.tsx"],"mappings":";;;;;;KAMY,oBAAA,GAAuB,OAAA,CAAQ,sBAAA;AAAA,iBAE3B,aAAA,CAAc,MAAA,EAAQ,aAAA,EAAe,OAAA,GAAS,oBAAA,IAqBhC,KAAA,EAAO,YAAA,KAAY,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,9 +1,5 @@
1
- import "../../utils/schema.js";
2
1
  import { RawRequestData, RequestData } from "../../requests/types.js";
3
- import "../../types.js";
4
2
  import { ReactNode } from "react";
5
- import "react/jsx-runtime";
6
-
7
3
  //#region src/ui/operation/request-tabs.d.ts
8
4
  interface ExampleRequestItem {
9
5
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"request-tabs.d.ts","names":[],"sources":["../../../src/ui/operation/request-tabs.tsx"],"mappings":";;;;;;;UAiBiB,kBAAA;EACf,EAAA;EACA,IAAA;EACA,WAAA;EACA,IAAA,EAAM,cAAA;EACN,OAAA,EAAS,WAAA;AAAA"}
1
+ {"version":3,"file":"request-tabs.d.ts","names":[],"sources":["../../../src/ui/operation/request-tabs.tsx"],"mappings":";;;UAiBiB,kBAAA;EACf,EAAA;EACA,IAAA;EACA,WAAA;EACA,IAAA,EAAM,cAAA;EACN,OAAA,EAAS,WAAA;AAAA"}
@@ -1,6 +1,4 @@
1
1
  import { SchemaUIGeneratedData } from "./index.js";
2
- import "react/jsx-runtime";
3
-
4
2
  //#region src/ui/schema/client.d.ts
5
3
  interface SchemaUIProps {
6
4
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/ui/schema/client.tsx"],"mappings":";;;;UA4DiB,aAAA;EACf,IAAA;EACA,QAAA;EACA,EAAA;EAEA,SAAA,EAAW,qBAAA;AAAA"}
1
+ {"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/ui/schema/client.tsx"],"mappings":";;UA4DiB,aAAA;EACf,IAAA;EACA,QAAA;EACA,EAAA;EAEA,SAAA,EAAW,qBAAA;AAAA"}
@@ -1,9 +1,6 @@
1
1
  import { ResolvedSchema } from "../../utils/schema.js";
2
2
  import { SchemaUIProps } from "./client.js";
3
- import "../../types.js";
4
3
  import { ReactNode } from "react";
5
- import "react/jsx-runtime";
6
-
7
4
  //#region src/ui/schema/index.d.ts
8
5
  interface FieldBase {
9
6
  description?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/ui/schema/index.tsx"],"mappings":";;;;;;;UAQiB,SAAA;EACf,WAAA,GAAc,SAAA;EACd,QAAA,GAAW,OAAA;EAEX,QAAA;EACA,SAAA;EAEA,UAAA;AAAA;AAAA,UAGe,OAAA;EACf,KAAA;EACA,KAAA;AAAA;AAAA,UAGe,wBAAA;EACf,IAAA;EACA,KAAA;EACA,QAAA;AAAA;AAAA,KAGU,UAAA,GAAa,SAAA;EAGjB,IAAA;AAAA;EAGA,IAAA;EACA,KAAA,EAAO,wBAAA;AAAA;EAGP,IAAA;EACA,IAAA;IACE,KAAA;EAAA;AAAA;EAIF,IAAA;EACA,KAAA;IACE,IAAA;IACA,KAAA;EAAA;AAAA;EAIF,IAAA;EACA,KAAA;IACE,IAAA;IACA,KAAA;EAAA;AAAA;AAAA,UAKO,eAAA;EACf,IAAA,EAAM,cAAA;EACN,MAAA,EAAQ,IAAA,CAAK,aAAA;EAjBP;;;EAsBN,QAAA;EAfM;;;EAmBN,SAAA;AAAA;AAAA,UAGe,qBAAA;EACf,KAAA;EACA,IAAA,EAAM,MAAA,SAAe,UAAA;AAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/ui/schema/index.tsx"],"mappings":";;;;UAQiB,SAAA;EACf,WAAA,GAAc,SAAA;EACd,QAAA,GAAW,OAAA;EAEX,QAAA;EACA,SAAA;EAEA,UAAA;AAAA;AAAA,UAGe,OAAA;EACf,KAAA;EACA,KAAA;AAAA;AAAA,UAGe,wBAAA;EACf,IAAA;EACA,KAAA;EACA,QAAA;AAAA;AAAA,KAGU,UAAA,GAAa,SAAA;EAGjB,IAAA;AAAA;EAGA,IAAA;EACA,KAAA,EAAO,wBAAA;AAAA;EAGP,IAAA;EACA,IAAA;IACE,KAAA;EAAA;AAAA;EAIF,IAAA;EACA,KAAA;IACE,IAAA;IACA,KAAA;EAAA;AAAA;EAIF,IAAA;EACA,KAAA;IACE,IAAA;IACA,KAAA;EAAA;AAAA;AAAA,UAKO,eAAA;EACf,IAAA,EAAM,cAAA;EACN,MAAA,EAAQ,IAAA,CAAK,aAAA;EAjBP;;;EAsBN,QAAA;EAfM;;;EAmBN,SAAA;AAAA;AAAA,UAGe,qBAAA;EACf,KAAA;EACA,IAAA,EAAM,MAAA,SAAe,UAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { NoReference } from "../schema.js";
2
2
  import { OpenAPIServer } from "../../server/create.js";
3
3
  import { OperationItem, WebhookItem } from "../../ui/api-page.js";
4
- import "../../server/index.js";
5
4
  import { OperationObject, PathItemObject, TagObject } from "../../types.js";
6
5
  import { ProcessedDocument } from "../process-document.js";
7
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","names":[],"sources":["../../../src/utils/pages/builder.ts"],"mappings":";;;;;;;;UAOU,SAAA;EACR,IAAA;EACA,QAAA;EACA,IAAA;IACE,KAAA;IACA,WAAA;EAAA;AAAA;AAAA,UAIa,eAAA,SAAwB,SAAA;EACvC,IAAA;EACA,IAAA,EAAM,aAAA;AAAA;AAAA,UAGS,aAAA,SAAsB,SAAA;EACrC,IAAA;EACA,IAAA,EAAM,WAAA;AAAA;AAAA,UAGS,SAAA,SAAkB,SAAA;EACjC,IAAA;EACA,GAAA;EACA,MAAA,EAAQ,SAAA;EACR,UAAA,EAAY,aAAA;EACZ,QAAA,EAAU,WAAA;AAAA;AAAA,UAGK,WAAA,SAAoB,SAAA;EACnC,IAAA;EACA,UAAA,EAAY,aAAA;EACZ,QAAA,EAAU,WAAA;AAAA;AAAA,KAGA,WAAA,GAAc,SAAA,GAAY,eAAA,GAAkB,aAAA,GAAgB,WAAA;AAAA,UAEvD,kBAAA;EACf,OAAA,GAAU,OAAA,EAAS,YAAA;AAAA;AAAA,UAGJ,YAAA;EAvBE;AAGnB;;EAwBE,EAAA;EACA,QAAA,EAAU,iBAAA;EArBE;;;;;EA2BZ,MAAA,GAAS,KAAA,EAAO,WAAA;EA9BhB;;;EAmCA,mBAAA,GAAsB,IAAA;EAhCtB;;;EAqCA,OAAA,QAAe,aAAA;EACf,oBAAA,GAAuB,IAAA,EAAM,WAAA;IAAA,IAEnB,WAAA;IACJ,QAAA,EAAU,WAAA,CAAY,cAAA;IACtB,SAAA,EAAW,WAAA,CAAY,eAAA;EAAA;EAG7B,sBAAA,GAAyB,IAAA,EAAM,aAAA;IAAA,IAErB,WAAA;IACJ,QAAA,EAAU,WAAA,CAAY,cAAA;IACtB,SAAA,EAAW,WAAA,CAAY,eAAA;EAAA;EAG7B,OAAA,GAAU,GAAA,EAAK,SAAA;IAAA,IACT,WAAA;EAAA;EAEN,WAAA,GAAc,GAAA;IAER,IAAA,EAAM,SAAA;IAAA,IACF,WAAA;EAAA;AAAA;AAAA,UAKF,aAAA;EACR,QAAA,GAAW,WAAA;IAAgB,IAAA;EAAA;EAC3B,UAAA,GAAa,aAAA;IACX,IAAA;EAAA;AAAA;AAAA,iBAIkB,UAAA,CACpB,MAAA,EAAQ,aAAA,EACR,MAAA,EAAQ,kBAAA,GACP,OAAA,CAAQ,MAAA,SAAe,WAAA;AAAA,iBAgBV,UAAA,CACd,QAAA,UACA,SAAA,EAAW,iBAAA,EACX,MAAA,EAAQ,kBAAA,GACP,WAAA"}
1
+ {"version":3,"file":"builder.d.ts","names":[],"sources":["../../../src/utils/pages/builder.ts"],"mappings":";;;;;;;UAOU,SAAA;EACR,IAAA;EACA,QAAA;EACA,IAAA;IACE,KAAA;IACA,WAAA;EAAA;AAAA;AAAA,UAIa,eAAA,SAAwB,SAAA;EACvC,IAAA;EACA,IAAA,EAAM,aAAA;AAAA;AAAA,UAGS,aAAA,SAAsB,SAAA;EACrC,IAAA;EACA,IAAA,EAAM,WAAA;AAAA;AAAA,UAGS,SAAA,SAAkB,SAAA;EACjC,IAAA;EACA,GAAA;EACA,MAAA,EAAQ,SAAA;EACR,UAAA,EAAY,aAAA;EACZ,QAAA,EAAU,WAAA;AAAA;AAAA,UAGK,WAAA,SAAoB,SAAA;EACnC,IAAA;EACA,UAAA,EAAY,aAAA;EACZ,QAAA,EAAU,WAAA;AAAA;AAAA,KAGA,WAAA,GAAc,SAAA,GAAY,eAAA,GAAkB,aAAA,GAAgB,WAAA;AAAA,UAEvD,kBAAA;EACf,OAAA,GAAU,OAAA,EAAS,YAAA;AAAA;AAAA,UAGJ,YAAA;EAvBE;AAGnB;;EAwBE,EAAA;EACA,QAAA,EAAU,iBAAA;EArBE;;;;;EA2BZ,MAAA,GAAS,KAAA,EAAO,WAAA;EA9BhB;;;EAmCA,mBAAA,GAAsB,IAAA;EAhCtB;;;EAqCA,OAAA,QAAe,aAAA;EACf,oBAAA,GAAuB,IAAA,EAAM,WAAA;IAAA,IAEnB,WAAA;IACJ,QAAA,EAAU,WAAA,CAAY,cAAA;IACtB,SAAA,EAAW,WAAA,CAAY,eAAA;EAAA;EAG7B,sBAAA,GAAyB,IAAA,EAAM,aAAA;IAAA,IAErB,WAAA;IACJ,QAAA,EAAU,WAAA,CAAY,cAAA;IACtB,SAAA,EAAW,WAAA,CAAY,eAAA;EAAA;EAG7B,OAAA,GAAU,GAAA,EAAK,SAAA;IAAA,IACT,WAAA;EAAA;EAEN,WAAA,GAAc,GAAA;IAER,IAAA,EAAM,SAAA;IAAA,IACF,WAAA;EAAA;AAAA;AAAA,UAKF,aAAA;EACR,QAAA,GAAW,WAAA;IAAgB,IAAA;EAAA;EAC3B,UAAA,GAAa,aAAA;IACX,IAAA;EAAA;AAAA;AAAA,iBAIkB,UAAA,CACpB,MAAA,EAAQ,aAAA,EACR,MAAA,EAAQ,kBAAA,GACP,OAAA,CAAQ,MAAA,SAAe,WAAA;AAAA,iBAgBV,UAAA,CACd,QAAA,UACA,SAAA,EAAW,iBAAA,EACX,MAAA,EAAQ,kBAAA,GACP,WAAA"}
@@ -1,7 +1,4 @@
1
- import "./builder.js";
2
1
  import { TagObject } from "../../types.js";
3
- import "../process-document.js";
4
-
5
2
  //#region src/utils/pages/to-text.d.ts
6
3
  interface PagesToTextOptions {
7
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"to-text.d.ts","names":[],"sources":["../../../src/utils/pages/to-text.ts"],"mappings":";;;;;UASiB,kBAAA;;AAAjB;;EAIE,OAAA;IACE,KAAA;IACA,IAAA;EAAA;EAAA;;;;;EAQF,WAAA,IACE,KAAA,UACA,WAAA,sBACA,OAAA,EAAS,eAAA,KACN,MAAA;EAAA;;;;;AAkIP;;EAzHE,kBAAA;EA4HkB;;;;;;;;EAlHlB,mBAAA;AAAA;AAAA,KA+GU,eAAA;EAEN,IAAA;EACA,GAAA,EAAK,SAAA;AAAA;EAGL,IAAA;AAAA;EAGA,IAAA;AAAA"}
1
+ {"version":3,"file":"to-text.d.ts","names":[],"sources":["../../../src/utils/pages/to-text.ts"],"mappings":";;UASiB,kBAAA;;AAAjB;;EAIE,OAAA;IACE,KAAA;IACA,IAAA;EAAA;EAAA;;;;;EAQF,WAAA,IACE,KAAA,UACA,WAAA,sBACA,OAAA,EAAS,eAAA,KACN,MAAA;EAAA;;;;;AAkIP;;EAzHE,kBAAA;EA4HkB;;;;;;;;EAlHlB,mBAAA;AAAA;AAAA,KA+GU,eAAA;EAEN,IAAA;EACA,GAAA,EAAK,SAAA;AAAA;EAGL,IAAA;AAAA;EAGA,IAAA;AAAA"}
@@ -1,2 +1 @@
1
- import "./schema.js";
2
- import "./process-document.js";
1
+ export { };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-openapi",
3
- "version": "10.3.15",
3
+ "version": "10.3.16",
4
4
  "description": "Generate MDX docs for your OpenAPI spec",
5
5
  "keywords": [
6
6
  "Docs",
@@ -47,16 +47,16 @@
47
47
  "@radix-ui/react-dialog": "^1.1.15",
48
48
  "@radix-ui/react-select": "^2.2.6",
49
49
  "@radix-ui/react-slot": "^1.2.4",
50
- "@scalar/json-magic": "^0.11.5",
51
- "@scalar/openapi-upgrader": "^0.1.9",
50
+ "@scalar/json-magic": "^0.12.0",
51
+ "@scalar/openapi-upgrader": "^0.2.0",
52
52
  "ajv": "^8.18.0",
53
53
  "class-variance-authority": "^0.7.1",
54
54
  "github-slugger": "^2.0.0",
55
55
  "hast-util-to-jsx-runtime": "^2.3.6",
56
56
  "js-yaml": "^4.1.1",
57
- "lucide-react": "^0.575.0",
57
+ "lucide-react": "^0.577.0",
58
58
  "next-themes": "^0.4.6",
59
- "openapi-sampler": "^1.7.0",
59
+ "openapi-sampler": "^1.7.1",
60
60
  "react-hook-form": "^7.71.2",
61
61
  "remark": "^15.0.1",
62
62
  "remark-rehype": "^11.1.2",
@@ -65,7 +65,7 @@
65
65
  "@fumari/stf": "1.0.3"
66
66
  },
67
67
  "devDependencies": {
68
- "@scalar/api-client-react": "^1.3.104",
68
+ "@scalar/api-client-react": "^1.4.1",
69
69
  "@types/js-yaml": "^4.0.9",
70
70
  "@types/node": "25.3.3",
71
71
  "@types/openapi-sampler": "^1.0.3",
@@ -75,10 +75,10 @@
75
75
  "tailwindcss": "^4.2.1",
76
76
  "tsdown": "0.20.3",
77
77
  "eslint-config-custom": "0.0.0",
78
- "fumadocs-core": "16.6.9",
79
- "fumadocs-ui": "16.6.9",
80
- "tsconfig": "0.0.0",
81
- "@fumadocs/tailwind": "0.0.3"
78
+ "fumadocs-core": "16.6.10",
79
+ "fumadocs-ui": "16.6.10",
80
+ "@fumadocs/tailwind": "0.0.3",
81
+ "tsconfig": "0.0.0"
82
82
  },
83
83
  "peerDependencies": {
84
84
  "@scalar/api-client-react": "*",