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 1/2] 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( From 975b6d961a51993e74db8c6bc6a611fdc28b5214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CSebastian?= <64795732+slegarraga@users.noreply.github.com> Date: Thu, 11 Jun 2026 02:34:39 -0400 Subject: [PATCH 2/2] Add changeset for empty string enum fix --- .changeset/empty-enums-smile.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/empty-enums-smile.md diff --git a/.changeset/empty-enums-smile.md b/.changeset/empty-enums-smile.md new file mode 100644 index 000000000..699c609b6 --- /dev/null +++ b/.changeset/empty-enums-smile.md @@ -0,0 +1,5 @@ +--- +"openapi-typescript": patch +--- + +Fix `--enum` output for schemas that include an empty string enum value by emitting a valid string-literal enum member name.