From 14da52ec70c12d547646d70eecdb70a0a2317b59 Mon Sep 17 00:00:00 2001 From: Cees van Egmond Date: Fri, 24 Jul 2026 14:33:42 +0200 Subject: [PATCH 1/2] feat: add support for translating @ to at_ in variable names for TypeScript clients --- .../languages/AbstractTypeScriptClientCodegen.java | 4 ++++ .../fetch/TypeScriptFetchClientCodegenTest.java | 12 ++++++++++++ .../TypeScriptAngularClientCodegenTest.java | 12 ++++++++++++ 3 files changed, 28 insertions(+) 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 c026b838db4a..631b597fe155 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 @@ -588,6 +588,10 @@ public String toVarName(String name) { return nameMapping.get(name); } + // translate @ for properties (like @type) to at_. + // Otherwise an additional "type" property will leed to duplcates + name = name.replaceAll("^@", "at_"); + name = sanitizeName(name, "[^\\w$]"); if ("_".equals(name)) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java index b8e2e2eb7a8f..d590def020d3 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java @@ -128,6 +128,18 @@ public void toVarName() { codegen.processOpts(); Assert.assertEquals(codegen.toVarName("valid_var"), "valid_var"); } + + @Test + public void toVarNameWithAtSign() { + TypeScriptFetchClientCodegen codegen = new TypeScriptFetchClientCodegen(); + codegen.processOpts(); + Assert.assertEquals(codegen.toVarName("@id"), "atId"); + + codegen = new TypeScriptFetchClientCodegen(); + codegen.additionalProperties().put(CodegenConstants.MODEL_PROPERTY_NAMING, "original"); + codegen.processOpts(); + Assert.assertEquals(codegen.toVarName("@id"), "at_id"); + } @Test public void toEnumVarName() { 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 e3acfc556211..f7a88faf8346 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 @@ -39,6 +39,18 @@ public void toVarName() { Assert.assertEquals(codegen.toVarName("valid_var"), "validVar"); } + @Test + public void toVarNameWithAtSign() { + TypeScriptAngularClientCodegen codegen = new TypeScriptAngularClientCodegen(); + codegen.processOpts(); + Assert.assertEquals(codegen.toVarName("@id"), "at_id"); + + codegen = new TypeScriptAngularClientCodegen(); + codegen.additionalProperties().put(CodegenConstants.MODEL_PROPERTY_NAMING, "camelCase"); + codegen.processOpts(); + Assert.assertEquals(codegen.toVarName("@id"), "atId"); + } + @Test public void toEnumVarName() { TypeScriptAngularClientCodegen codegen = new TypeScriptAngularClientCodegen(); From c8f02db53a76cb59f14badc7d3f604f8c0bab4d8 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 25 Jul 2026 11:21:54 +0800 Subject: [PATCH 2/2] Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --- .../codegen/languages/AbstractTypeScriptClientCodegen.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 631b597fe155..aa34f1e6b446 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 @@ -589,7 +589,7 @@ public String toVarName(String name) { } // translate @ for properties (like @type) to at_. - // Otherwise an additional "type" property will leed to duplcates + // Otherwise an additional "type" property will lead to duplicates name = name.replaceAll("^@", "at_"); name = sanitizeName(name, "[^\\w$]");