From 9336037e87439a4fc12819aa5d6cf5e6e4b8a07b Mon Sep 17 00:00:00 2001 From: rk Date: Thu, 5 Nov 2026 01:21:18 +0500 Subject: [PATCH] fix(typescript): keep non-latin letters in enum keys --- .../languages/AbstractTypeScriptClientCodegen.java | 8 ++++++-- .../TypeScriptAngularClientCodegenTest.java | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index f487fa72482f..a723d5478e72 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -982,8 +982,12 @@ public String toEnumVarName(String name, String datatype) { varName = varName.replaceAll("\\+", "_plus_"); varName = varName.replaceAll("_+", "_"); } - varName = sanitizeName(varName); - varName = varName.replaceFirst("^_", ""); + String sanitizedName = sanitizeName(varName); + if (sanitizedName.replace("_", "").isEmpty()) { + // nothing is left of non-latin values like "Москва", keep their letters as TypeScript allows them + sanitizedName = sanitizeName(varName, "(?U)\\W"); + } + varName = sanitizedName.replaceFirst("^_", ""); varName = varName.replaceFirst("_$", ""); varName = getNameUsingEnumPropertyNaming(varName); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java index dbece37188b2..237b4581b0f7 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java @@ -79,6 +79,15 @@ public void toEnumVarName() { Assert.assertEquals(codegen.toEnumVarName("Illegal-Id+", "string"), "illegal_id"); } + @Test + public void toEnumVarNameWithoutLatinCharacters() { + TypeScriptAngularClientCodegen codegen = new TypeScriptAngularClientCodegen(); + codegen.processOpts(); + Assert.assertEquals(codegen.toEnumVarName("À", "string"), "À"); + Assert.assertEquals(codegen.toEnumVarName("Москва", "string"), "Москва"); + Assert.assertEquals(codegen.toEnumVarName("Нур-Султан", "string"), "НурСултан"); + } + @Test public void testModelSuffix() { TypeScriptAngularClientCodegen codegen = new TypeScriptAngularClientCodegen();