diff --git a/.changeset/fluffy-pumas-run.md b/.changeset/fluffy-pumas-run.md new file mode 100644 index 000000000..5db2be20c --- /dev/null +++ b/.changeset/fluffy-pumas-run.md @@ -0,0 +1,5 @@ +--- +"openapi-typescript": patch +--- + +Now checking for null & empty string when generating enum description diff --git a/packages/openapi-typescript/src/lib/ts.ts b/packages/openapi-typescript/src/lib/ts.ts index e9e3b2f46..fabf29580 100644 --- a/packages/openapi-typescript/src/lib/ts.ts +++ b/packages/openapi-typescript/src/lib/ts.ts @@ -268,7 +268,7 @@ export const enumCache = new Map(); export function tsEnum( name: string, members: (string | number)[], - metadata?: { name?: string; description?: string }[], + metadata?: { name?: string; description?: string | null }[], options?: { export?: boolean; shouldCache?: boolean }, ) { let enumName = sanitizeMemberName(name); @@ -352,7 +352,7 @@ function sanitizeMemberName(name: string) { } /** Sanitize TS enum member expression */ -export function tsEnumMember(value: string | number, metadata: { name?: string; description?: string } = {}) { +export function tsEnumMember(value: string | number, metadata: { name?: string; description?: string | null } = {}) { let name = metadata.name ?? String(value); if (!JS_PROPERTY_INDEX_RE.test(name)) { if (Number(name[0]) >= 0) { @@ -388,16 +388,12 @@ export function tsEnumMember(value: string | number, metadata: { name?: string; member = ts.factory.createEnumMember(name, ts.factory.createStringLiteral(value)); } - if (metadata.description === undefined) { + const trimmedDescription = metadata.description?.trim(); + if (trimmedDescription === undefined || trimmedDescription === null || trimmedDescription === "") { return member; } - return ts.addSyntheticLeadingComment( - member, - ts.SyntaxKind.SingleLineCommentTrivia, - " ".concat(metadata.description.trim()), - true, - ); + return ts.addSyntheticLeadingComment(member, ts.SyntaxKind.SingleLineCommentTrivia, ` ${trimmedDescription}`, true); } /** Create an intersection type */ diff --git a/packages/openapi-typescript/test/lib/ts.test.ts b/packages/openapi-typescript/test/lib/ts.test.ts index 6dfcb2563..705e3e64f 100644 --- a/packages/openapi-typescript/test/lib/ts.test.ts +++ b/packages/openapi-typescript/test/lib/ts.test.ts @@ -278,7 +278,11 @@ describe("tsEnum", () => { tsEnum( ".Error.code.", [100, 101, 102], - [{ name: "Unauthorized", description: "User is unauthorized" }, { name: "NotFound" }], + [ + { name: "Unauthorized", description: "User is unauthorized" }, + { name: "NotFound", description: "" }, + { name: "Value102", description: null }, + ], ), ).trim(), ).toBe(`enum ErrorCode {