Skip to content

Commit 530d2c8

Browse files
committed
ensure correct eval of required properties with allOf (#771)
1 parent 5877a91 commit 530d2c8

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

packages/docusaurus-plugin-openapi-docs/src/markdown/createSchema.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ export function mergeAllOf(allOf: SchemaObject[]) {
4444
ignoreAdditionalProperties: true,
4545
});
4646

47-
const required = allOf.reduce((acc, cur) => {
47+
const mergedRequired = allOf.reduce((acc, cur) => {
4848
if (Array.isArray(cur.required)) {
4949
const next = [...acc, ...cur.required];
5050
return next;
5151
}
5252
return acc;
5353
}, [] as any);
5454

55-
return { mergedSchemas, required };
55+
return { mergedSchemas, mergedRequired };
5656
}
5757

5858
/**
@@ -260,9 +260,8 @@ function createItems(schema: SchemaObject) {
260260
// TODO: figure out if and how we should pass merged required array
261261
const {
262262
mergedSchemas,
263-
}: { mergedSchemas: SchemaObject; required: string[] } = mergeAllOf(
264-
schema.items?.allOf
265-
);
263+
}: { mergedSchemas: SchemaObject; mergedRequired: string[] | boolean } =
264+
mergeAllOf(schema.items?.allOf);
266265

267266
// Handles combo anyOf/oneOf + properties
268267
if (
@@ -596,7 +595,6 @@ function createEdges({
596595
discriminator,
597596
}: EdgeProps): any {
598597
const schemaName = getSchemaName(schema);
599-
600598
if (discriminator !== undefined && discriminator.propertyName === name) {
601599
return createPropertyDiscriminator(
602600
name,
@@ -618,11 +616,9 @@ function createEdges({
618616
}
619617

620618
if (schema.allOf !== undefined) {
621-
const {
622-
mergedSchemas,
623-
required,
624-
}: { mergedSchemas: SchemaObject; required: string[] | boolean } =
625-
mergeAllOf(schema.allOf);
619+
const { mergedSchemas }: { mergedSchemas: SchemaObject } = mergeAllOf(
620+
schema.allOf
621+
);
626622
const mergedSchemaName = getSchemaName(mergedSchemas);
627623
if (
628624
mergedSchemas.oneOf !== undefined ||

0 commit comments

Comments
 (0)