mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-21 10:03:31 +00:00
Handle nullish OpenAPI mediaTypeObject (#3389)
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
'@gitbook/react-openapi': patch
|
||||||
|
'gitbook': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Handle nullish OpenAPI mediaTypeObject
|
||||||
@@ -11,14 +11,14 @@ import { parameterToProperty, resolveDescription } from './utils';
|
|||||||
*/
|
*/
|
||||||
export function OpenAPIResponse(props: {
|
export function OpenAPIResponse(props: {
|
||||||
response: OpenAPIV3.ResponseObject;
|
response: OpenAPIV3.ResponseObject;
|
||||||
mediaType: OpenAPIV3.MediaTypeObject;
|
mediaType: OpenAPIV3.MediaTypeObject | null;
|
||||||
context: OpenAPIClientContext;
|
context: OpenAPIClientContext;
|
||||||
}) {
|
}) {
|
||||||
const { response, context, mediaType } = props;
|
const { response, context, mediaType } = props;
|
||||||
const headers = Object.entries(response.headers ?? {}).map(
|
const headers = Object.entries(response.headers ?? {}).map(
|
||||||
([name, header]) => [name, header ?? {}] as const
|
([name, header]) => [name, header ?? {}] as const
|
||||||
);
|
);
|
||||||
const content = Object.entries(mediaType.schema ?? {});
|
const content = Object.entries(mediaType?.schema ?? {});
|
||||||
|
|
||||||
const description = resolveDescription(response);
|
const description = resolveDescription(response);
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ export function OpenAPIResponse(props: {
|
|||||||
/>
|
/>
|
||||||
</OpenAPIDisclosure>
|
</OpenAPIDisclosure>
|
||||||
) : null}
|
) : null}
|
||||||
{mediaType.schema && (
|
{mediaType?.schema && (
|
||||||
<div className="openapi-responsebody">
|
<div className="openapi-responsebody">
|
||||||
<OpenAPISchemaProperties
|
<OpenAPISchemaProperties
|
||||||
id={`response-${context.blockKey}`}
|
id={`response-${context.blockKey}`}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ export function OpenAPIResponseExample(props: {
|
|||||||
function OpenAPIResponse(props: {
|
function OpenAPIResponse(props: {
|
||||||
context: OpenAPIContext;
|
context: OpenAPIContext;
|
||||||
content: {
|
content: {
|
||||||
[media: string]: OpenAPIV3.MediaTypeObject;
|
[media: string]: OpenAPIV3.MediaTypeObject | null;
|
||||||
};
|
};
|
||||||
}) {
|
}) {
|
||||||
const { context, content } = props;
|
const { context, content } = props;
|
||||||
@@ -113,6 +113,15 @@ function OpenAPIResponse(props: {
|
|||||||
|
|
||||||
const tabs = entries.map((entry) => {
|
const tabs = entries.map((entry) => {
|
||||||
const [mediaType, mediaTypeObject] = entry;
|
const [mediaType, mediaTypeObject] = entry;
|
||||||
|
|
||||||
|
if (!mediaTypeObject) {
|
||||||
|
return {
|
||||||
|
key: mediaType,
|
||||||
|
label: mediaType,
|
||||||
|
body: <OpenAPIEmptyExample context={context} />,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
key: mediaType,
|
key: mediaType,
|
||||||
label: mediaType,
|
label: mediaType,
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ export function OpenAPIWebhookExample(props: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Object.entries(
|
return Object.entries(
|
||||||
operation.requestBody.content as Record<string, OpenAPIV3.MediaTypeObject>
|
operation.requestBody.content as Record<string, OpenAPIV3.MediaTypeObject | null>
|
||||||
).map(([key, value]) => {
|
).map(([key, value]) => {
|
||||||
const schema = value.schema;
|
const schema = value?.schema;
|
||||||
|
|
||||||
if (!schema) {
|
if (!schema) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user