fumadocs-openapi 6.0.10 → 6.0.11

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 +1 @@
1
- {"version":3,"file":"api-example.d.ts","sourceRoot":"","sources":["../../../src/render/operation/api-example.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA2BrD,UAAU,cAAc;IACtB,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAcD,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC3C,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;CACpB,oDA2FA"}
1
+ {"version":3,"file":"api-example.d.ts","sourceRoot":"","sources":["../../../src/render/operation/api-example.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA2BrD,UAAU,cAAc;IACtB,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAcD,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,GAAG,GACJ,EAAE;IACD,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC3C,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,aAAa,CAAC;CACpB,oDAyFA"}
@@ -5,6 +5,7 @@ import * as Go from '../../requests/go.js';
5
5
  import * as Python from '../../requests/python.js';
6
6
  import { Markdown } from '../../render/markdown.js';
7
7
  import { getTypescriptSchema } from '../../utils/get-typescript-schema.js';
8
+ import { CodeBlock } from '../../render/codeblock.js';
8
9
  const defaultSamples = [
9
10
  {
10
11
  label: 'cURL',
@@ -62,12 +63,12 @@ export async function APIExample({ method, endpoint, ctx, }) {
62
63
  function renderRequest(sample) {
63
64
  return (_jsx(renderer.Requests, { items: sample.samples.map((s) => s.label), children: sample.samples.map((s) => (_jsx(renderer.Request, { name: s.label, code: s.source, language: s.lang }, s.label))) }));
64
65
  }
66
+ const exclusiveCodeSamples = method['x-exclusiveCodeSample'];
65
67
  if ((samples.size === 1 && samples.has('_default')) ||
66
- (method['x-exclusiveCodeSample'] &&
67
- samples.has(method['x-exclusiveCodeSample']))) {
68
+ (exclusiveCodeSamples && samples.has(exclusiveCodeSamples))) {
68
69
  // if exclusiveSampleKey is present, we don't use tabs
69
70
  // if only the fallback or non described openapi legacy example is present, we don't use tabs
70
- children = renderRequest(samples.get(method['x-exclusiveCodeSample'] ?? '_default'));
71
+ children = renderRequest(samples.get(exclusiveCodeSamples ?? '_default'));
71
72
  }
72
73
  else if (samples.size > 0) {
73
74
  const entries = Array.from(samples.entries());
@@ -75,7 +76,7 @@ export async function APIExample({ method, endpoint, ctx, }) {
75
76
  title: sample.title,
76
77
  description: sample.description ? (_jsx(Markdown, { text: sample.description })) : null,
77
78
  value: key,
78
- })), defaultValue: method['x-selectedCodeSample'], children: entries.map(([key, sample]) => (_jsx(renderer.Sample, { value: key, children: renderRequest(sample) }, key))) }));
79
+ })), defaultValue: exclusiveCodeSamples, children: entries.map(([key, sample]) => (_jsx(renderer.Sample, { value: key, children: renderRequest(sample) }, key))) }));
79
80
  }
80
81
  return (_jsxs(renderer.APIExample, { children: [children, _jsx(ResponseTabs, { operation: method, ctx: ctx, endpoint: endpoint })] }));
81
82
  }
@@ -97,17 +98,10 @@ function ResponseTabs({ endpoint, operation, ctx: { renderer, generateTypeScript
97
98
  if (!operation.responses)
98
99
  return null;
99
100
  async function renderResponse(code) {
100
- const types = [];
101
- let description = operation.responses?.[code].description;
102
- if (!description && code in endpoint.responses)
103
- description = endpoint.responses[code].schema.description ?? '';
104
- if (code in endpoint.responses) {
105
- types.push({
106
- lang: 'json',
107
- label: 'Response',
108
- code: JSON.stringify(endpoint.responses[code].sample, null, 2),
109
- });
110
- }
101
+ const response = code in endpoint.responses ? endpoint.responses[code] : null;
102
+ const description = operation.responses?.[code].description ??
103
+ response?.schema.description ??
104
+ '';
111
105
  let ts;
112
106
  if (generateTypeScriptSchema) {
113
107
  ts = await generateTypeScriptSchema(endpoint, code);
@@ -115,14 +109,20 @@ function ResponseTabs({ endpoint, operation, ctx: { renderer, generateTypeScript
115
109
  else if (generateTypeScriptSchema === undefined) {
116
110
  ts = await getTypescriptSchema(endpoint, code, schema.dereferenceMap);
117
111
  }
118
- if (ts) {
119
- types.push({
120
- code: ts,
121
- lang: 'ts',
122
- label: 'TypeScript',
112
+ const values = [];
113
+ let exampleSlot;
114
+ if (response?.samples._default) {
115
+ values.push('Response');
116
+ exampleSlot = (_jsx(renderer.ResponseType, { label: "Response", children: _jsx(CodeBlock, { lang: "json", code: JSON.stringify(endpoint.responses[code].samples._default, null, 2) }) }));
117
+ }
118
+ else if (response) {
119
+ exampleSlot = Object.entries(response.samples).map(([key, sample], i) => {
120
+ const title = sample?.summary ?? `Example ${i + 1}`;
121
+ values.push(title);
122
+ return (_jsxs(renderer.ResponseType, { label: title, children: [sample?.description ? (_jsx(Markdown, { text: sample.description })) : null, _jsx(CodeBlock, { lang: "json", code: JSON.stringify(sample, null, 2) })] }, key));
123
123
  });
124
124
  }
125
- return (_jsxs(renderer.Response, { value: code, children: [description ? _jsx(Markdown, { text: description }) : null, types.length > 0 ? (_jsx(renderer.ResponseTypes, { children: types.map((type) => (_jsx(renderer.ResponseType, { ...type }, type.lang))) })) : null] }));
125
+ return (_jsxs(renderer.Response, { value: code, children: [description ? _jsx(Markdown, { text: description }) : null, response && (_jsxs(renderer.ResponseTypes, { defaultValue: values[0], children: [exampleSlot, ts ? (_jsx(renderer.ResponseType, { label: "TypeScript", children: _jsx(CodeBlock, { code: ts, lang: "ts" }) })) : null] }))] }));
126
126
  }
127
127
  const codes = Object.keys(operation.responses);
128
128
  if (codes.length === 0)
@@ -44,9 +44,8 @@ export interface SamplesProps {
44
44
  defaultValue?: string;
45
45
  }
46
46
  export interface ResponseTypeProps {
47
- lang: string;
48
- code: string;
49
47
  label: string;
48
+ children: ReactNode;
50
49
  }
51
50
  export interface RootProps {
52
51
  baseUrl?: string;
@@ -73,6 +72,7 @@ export interface Renderer {
73
72
  }>;
74
73
  Request: ComponentType<RequestProps>;
75
74
  ResponseTypes: ComponentType<{
75
+ defaultValue?: string;
76
76
  children: ReactNode;
77
77
  }>;
78
78
  ResponseType: ComponentType<ResponseTypeProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/render/renderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/render/renderer.tsx"],"names":[],"mappings":"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"}
@@ -13,8 +13,8 @@ export function createRenders(shikiOptions) {
13
13
  APIExample,
14
14
  Responses: Tabs,
15
15
  Response: Tab,
16
- ResponseTypes: (props) => (_jsx(Accordions, { type: "single", className: "!-m-4 border-none pt-2", defaultValue: "Response", children: props.children })),
17
- ResponseType: (props) => (_jsx(Accordion, { title: props.label, children: _jsx(CodeBlock, { code: props.code, lang: props.lang, options: shikiOptions }) })),
16
+ ResponseTypes: (props) => (_jsx(Accordions, { type: "single", className: "!-m-4 border-none pt-2", defaultValue: props.defaultValue, children: props.children })),
17
+ ResponseType: (props) => (_jsx(Accordion, { title: props.label, children: props.children })),
18
18
  Property,
19
19
  ObjectCollapsible,
20
20
  Requests: (props) => (_jsx(Tabs, { groupId: "fumadocs_openapi_requests", ...props })),
@@ -6,7 +6,7 @@ export function Samples({ items, defaultValue = items[0].value, children, }) {
6
6
  const [value, setValue] = useState('');
7
7
  const active = value === '' ? defaultValue : value;
8
8
  const defaultItem = items.find((item) => item.value === defaultValue);
9
- return (_jsxs(_Fragment, { children: [_jsxs(Select, { value: value, onValueChange: setValue, children: [_jsx(SelectTrigger, { className: "not-prose", children: _jsx(SelectValue, { placeholder: defaultItem ? _jsx(SelectDisplay, { ...defaultItem }) : null }) }), _jsx(SelectContent, { children: items.map((item) => (_jsx(SelectItem, { value: item.value, children: _jsx(SelectDisplay, { ...item }) }, item.value))) })] }), _jsx(ActiveSampleContext, { value: active, children: children })] }));
9
+ return (_jsxs(_Fragment, { children: [_jsxs(Select, { value: value, onValueChange: setValue, children: [_jsx(SelectTrigger, { className: "not-prose mb-2", children: _jsx(SelectValue, { placeholder: defaultItem ? _jsx(SelectDisplay, { ...defaultItem }) : null }) }), _jsx(SelectContent, { children: items.map((item) => (_jsx(SelectItem, { value: item.value, children: _jsx(SelectDisplay, { ...item }) }, item.value))) })] }), _jsx(ActiveSampleContext, { value: active, children: children })] }));
10
10
  }
11
11
  function SelectDisplay(item) {
12
12
  return (_jsxs(_Fragment, { children: [_jsx("span", { className: "font-medium text-sm", children: item.title }), _jsx("span", { className: "text-fd-muted-foreground", children: item.description })] }));
@@ -1,14 +1,14 @@
1
1
  import type { MethodInformation, RenderContext } from '../types.js';
2
2
  import { type ParsedSchema, type NoReference } from '../utils/schema.js';
3
3
  import type { OpenAPIV3_1 } from 'openapi-types';
4
- export interface Samples {
5
- [key: string]: {
4
+ export type Samples = {
5
+ [key in '_default' | (string & {})]?: {
6
6
  value?: unknown;
7
7
  description?: string;
8
8
  summary?: string;
9
9
  externalValue?: string;
10
10
  };
11
- }
11
+ };
12
12
  /**
13
13
  * Sample info of endpoint
14
14
  */
@@ -28,7 +28,7 @@ export interface EndpointSample {
28
28
  }
29
29
  interface ResponseSample {
30
30
  mediaType: string;
31
- sample: unknown;
31
+ samples: Samples;
32
32
  schema: ParsedSchema;
33
33
  }
34
34
  interface ParameterSample extends NoReference<OpenAPIV3_1.ParameterObject> {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-sample.d.ts","sourceRoot":"","sources":["../../src/utils/generate-sample.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,OAAO;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AACD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,YAAY,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,UAAU,eAAgB,SAAQ,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,GAC/C,cAAc,CAsHhB"}
1
+ {"version":3,"file":"generate-sample.d.ts","sourceRoot":"","sources":["../../src/utils/generate-sample.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,OAAO,GAAG;KACnB,GAAG,IAAI,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;QACpC,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,YAAY,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,UAAU,eAAgB,SAAQ,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,EACzB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,GAC/C,cAAc,CA0HhB"}
@@ -71,10 +71,15 @@ export function generateSample(path, method, { baseUrl, schema: { document } })
71
71
  const responseSchema = content[mediaType].schema;
72
72
  if (!responseSchema)
73
73
  continue;
74
+ const examples = content[mediaType].examples ?? content.examples;
75
+ const example = content[mediaType].example ?? content.example;
74
76
  responses[code] = {
75
77
  mediaType,
76
- sample: content[mediaType].example ??
77
- generateBody(method.method, responseSchema),
78
+ samples: examples
79
+ ? examples
80
+ : {
81
+ _default: example ?? generateBody(method.method, responseSchema),
82
+ },
78
83
  schema: responseSchema,
79
84
  };
80
85
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-openapi",
3
- "version": "6.0.10",
3
+ "version": "6.0.11",
4
4
  "description": "Generate MDX docs for your OpenAPI spec",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -42,7 +42,7 @@
42
42
  "@fumari/json-schema-to-typescript": "^1.1.2",
43
43
  "@radix-ui/react-select": "^2.1.6",
44
44
  "@radix-ui/react-slot": "^1.1.2",
45
- "@scalar/openapi-parser": "0.10.6",
45
+ "@scalar/openapi-parser": "0.10.7",
46
46
  "ajv-draft-04": "^1.0.0",
47
47
  "class-variance-authority": "^0.7.1",
48
48
  "fast-glob": "^3.3.3",
@@ -55,23 +55,23 @@
55
55
  "react-hook-form": "^7.54.2",
56
56
  "remark": "^15.0.1",
57
57
  "remark-rehype": "^11.1.1",
58
- "shiki": "^2.4.1",
58
+ "shiki": "^3.0.0",
59
59
  "xml-js": "^1.6.11",
60
- "fumadocs-core": "15.0.9",
61
- "fumadocs-ui": "15.0.9"
60
+ "fumadocs-core": "15.0.10",
61
+ "fumadocs-ui": "15.0.10"
62
62
  },
63
63
  "devDependencies": {
64
- "@scalar/api-client-react": "^1.1.27",
64
+ "@scalar/api-client-react": "^1.1.28",
65
65
  "@types/js-yaml": "^4.0.9",
66
66
  "@types/node": "22.13.4",
67
67
  "@types/openapi-sampler": "^1.0.3",
68
- "@types/react": "^19.0.9",
68
+ "@types/react": "^19.0.10",
69
69
  "next": "15.1.7",
70
70
  "openapi-types": "^12.1.3",
71
71
  "tailwindcss": "^4.0.6",
72
72
  "tsc-alias": "^1.8.10",
73
- "eslint-config-custom": "0.0.0",
74
- "tsconfig": "0.0.0"
73
+ "tsconfig": "0.0.0",
74
+ "eslint-config-custom": "0.0.0"
75
75
  },
76
76
  "peerDependencies": {
77
77
  "@scalar/api-client-react": "*",