diff --git a/www/utils/packages/docs-generator/src/classes/kinds/oas.ts b/www/utils/packages/docs-generator/src/classes/kinds/oas.ts index 278f485a61..1e76ac9a77 100644 --- a/www/utils/packages/docs-generator/src/classes/kinds/oas.ts +++ b/www/utils/packages/docs-generator/src/classes/kinds/oas.ts @@ -1259,18 +1259,30 @@ class OasKindGenerator extends FunctionKindGenerator { 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) { - case itemType.flags === ts.TypeFlags.Enum: + case isEnum || isEnumParent: const enumMembers: string[] = [] - symbol?.members?.forEach((enumMember) => { - if ((enumMember.valueDeclaration as ts.EnumMember).initializer) { - enumMembers.push( - ( - enumMember.valueDeclaration as ts.EnumMember - ).initializer!.getText() - ) - } - }) + if (isEnum) { + symbol?.members?.forEach((enumMember) => { + if ((enumMember.valueDeclaration as ts.EnumMember).initializer) { + enumMembers.push( + ( + 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 { type: "string", description, @@ -1610,8 +1622,9 @@ class OasKindGenerator extends FunctionKindGenerator { break } + const expressionName = (expression.name as ts.Identifier).getText() isRequired = - (expression.name as ts.Identifier).getText() !== "optional" + expressionName !== "optional" && expressionName !== "nullish" break case ts.SyntaxKind.QuestionToken: isRequired = false