diff --git a/.changeset/silent-donuts-love.md b/.changeset/silent-donuts-love.md new file mode 100644 index 000000000..8f145edc0 --- /dev/null +++ b/.changeset/silent-donuts-love.md @@ -0,0 +1,5 @@ +--- +'@gitbook/react-openapi': patch +--- + +Fix crash when `example` is undefined for a response diff --git a/packages/react-openapi/src/OpenAPICodeSample.tsx b/packages/react-openapi/src/OpenAPICodeSample.tsx index d26a6f3b8..62628671e 100644 --- a/packages/react-openapi/src/OpenAPICodeSample.tsx +++ b/packages/react-openapi/src/OpenAPICodeSample.tsx @@ -69,11 +69,19 @@ export function OpenAPICodeSample(props: { (['x-custom-examples', 'x-code-samples', 'x-codeSamples'] as const).forEach((key) => { const customSamples = data.operation[key]; if (customSamples && Array.isArray(customSamples)) { - customCodeSamples = customSamples.map((sample) => ({ - key: `redocly-${sample.lang}`, - label: sample.label, - body: , - })); + customCodeSamples = customSamples + .filter((sample) => { + return ( + typeof sample.label === 'string' && + typeof sample.source === 'string' && + typeof sample.lang === 'string' + ); + }) + .map((sample) => ({ + key: `redocly-${sample.lang}`, + label: sample.label, + body: , + })); } }); diff --git a/packages/react-openapi/src/OpenAPIResponseExample.tsx b/packages/react-openapi/src/OpenAPIResponseExample.tsx index 9aa5a2690..e88434d4f 100644 --- a/packages/react-openapi/src/OpenAPIResponseExample.tsx +++ b/packages/react-openapi/src/OpenAPIResponseExample.tsx @@ -53,6 +53,10 @@ export function OpenAPIResponseExample(props: { } const example = generateSchemaExample(schema); + if (example === undefined) { + return null; + } + return { key: `${response[0]}`, label: `${response[0]}`,