From e57f4dcfb1c76afa5d2f0999a4d082864d1fe2f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CSebastian?= <64795732+slegarraga@users.noreply.github.com> Date: Sun, 7 Jun 2026 14:18:16 -0400 Subject: [PATCH] Fix empty string enum member output --- packages/openapi-typescript/src/lib/ts.ts | 6 ++++-- packages/openapi-typescript/test/lib/ts.test.ts | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/openapi-typescript/src/lib/ts.ts b/packages/openapi-typescript/src/lib/ts.ts index d1f41eb88..3bfb63764 100644 --- a/packages/openapi-typescript/src/lib/ts.ts +++ b/packages/openapi-typescript/src/lib/ts.ts @@ -406,8 +406,10 @@ function sanitizeMemberName(name: string) { /** Sanitize TS enum member expression */ 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)) { + let name: string | ts.StringLiteral = metadata.name ?? String(value); + if (name === "") { + name = ts.factory.createStringLiteral(name); + } else if (!JS_PROPERTY_INDEX_RE.test(name)) { if (Number(name[0]) >= 0) { name = `Value${name}`.replace(".", "_"); // don't forged decimals; } else if (name[0] === "-") { diff --git a/packages/openapi-typescript/test/lib/ts.test.ts b/packages/openapi-typescript/test/lib/ts.test.ts index 79e5b4571..9e0e2869c 100644 --- a/packages/openapi-typescript/test/lib/ts.test.ts +++ b/packages/openapi-typescript/test/lib/ts.test.ts @@ -187,6 +187,14 @@ describe("tsEnum", () => { }`); }); + test("empty string member", () => { + expect(astToString(tsEnum("/my/enum/", ["", "foo", "bar"])).trim()).toBe(`enum MyEnum { + "" = "", + foo = "foo", + bar = "bar" +}`); + }); + test("with setting: export", () => { expect( astToString(