docs: merge allOf in OAS to show all object types (#8453)

* docs: merge allOf in OAS to show all object types

* add case for non objects
This commit is contained in:
Shahed Nasser
2024-08-06 09:57:09 +03:00
committed by GitHub
parent 8700896ce6
commit 041019b319
2 changed files with 37 additions and 1 deletions
@@ -0,0 +1,33 @@
import type { PropertiesObject, SchemaObject } from "@/types/openapi"
export default function mergeAllOfTypes(
allOfSchema: SchemaObject
): SchemaObject {
if (!allOfSchema.allOf) {
// return whatever the schema is
return allOfSchema
}
// merge objects' properties in this var
let properties: PropertiesObject = {}
let foundObjects = false
allOfSchema.allOf.forEach((item) => {
if (item.type !== "object") {
return
}
properties = Object.assign(properties, item.properties)
foundObjects = true
})
if (!foundObjects && allOfSchema.allOf.length) {
// return the first item in the union.
// allOf should always include an object but just in case
return allOfSchema.allOf[0]
}
return {
type: "object",
properties,
}
}