docs-util: fix to enum type + optional (#8950)

- Fix to some enum types (with one member) not being extracted properly.
- Consider `nullish` Zod types as optional.
This commit is contained in:
Shahed Nasser
2024-09-04 21:36:58 +03:00
committed by GitHub
parent c615f4014c
commit beaa851302

View File

@@ -1259,18 +1259,30 @@ class OasKindGenerator extends FunctionKindGenerator {
return schemaFromFactory return schemaFromFactory
} }
const isEnum = itemType.flags === ts.TypeFlags.Enum
const isEnumParent =
itemType.symbol &&
"parent" in itemType.symbol &&
(itemType.symbol.parent as ts.Symbol)?.valueDeclaration?.kind ===
ts.SyntaxKind.EnumDeclaration
switch (true) { switch (true) {
case itemType.flags === ts.TypeFlags.Enum: case isEnum || isEnumParent:
const enumMembers: string[] = [] const enumMembers: string[] = []
symbol?.members?.forEach((enumMember) => { if (isEnum) {
if ((enumMember.valueDeclaration as ts.EnumMember).initializer) { symbol?.members?.forEach((enumMember) => {
enumMembers.push( if ((enumMember.valueDeclaration as ts.EnumMember).initializer) {
( enumMembers.push(
enumMember.valueDeclaration as ts.EnumMember (
).initializer!.getText() enumMember.valueDeclaration as ts.EnumMember
) ).initializer!.getText()
} )
}) }
})
} else {
// the item itself is the enum member so add it to the array
enumMembers.push(itemType.symbol.getName())
}
return { return {
type: "string", type: "string",
description, description,
@@ -1610,8 +1622,9 @@ class OasKindGenerator extends FunctionKindGenerator {
break break
} }
const expressionName = (expression.name as ts.Identifier).getText()
isRequired = isRequired =
(expression.name as ts.Identifier).getText() !== "optional" expressionName !== "optional" && expressionName !== "nullish"
break break
case ts.SyntaxKind.QuestionToken: case ts.SyntaxKind.QuestionToken:
isRequired = false isRequired = false