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 b85ed5ae83c..c27f1414b82 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 @@ -964,6 +964,40 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp return objs; } + /** + * Update datatypeWithEnum for array container + * + * @param property Codegen property + */ + protected void updateDataTypeWithEnumForArray(CodegenProperty property) { + CodegenProperty baseItem = property.items; + while (baseItem != null && (Boolean.TRUE.equals(baseItem.isMap) + || Boolean.TRUE.equals(baseItem.isArray))) { + baseItem = baseItem.items; + } + if (baseItem != null) { + /* + * Note: There are cases where we have datatypeWithEnum == Array<{ [key: string]: string} + * In these cases, we then have Array <{ [key: EnumName]: EnumName}> - which is invalid typescript + * To protect agains this we first replace [key: string] with a special/reserved placeholder (i.e. *[key]* ) + */ + property.datatypeWithEnum = property.datatypeWithEnum.replace("[key: string]", "*PLACEHOLDER*") + .replace(baseItem.baseType, toEnumName(baseItem)) + .replace("*PLACEHOLDER*", "[key: string]"); + + // naming the enum with respect to the language enum naming convention + // e.g. remove [], {} from array/map of enum + property.enumName = toEnumName(property); + + // set default value for variable with inner enum + if (property.defaultValue != null) { + property.defaultValue = property.defaultValue.replace(baseItem.baseType, toEnumName(baseItem)); + } + + updateCodegenPropertyEnum(property); + } + } + @Override public Map postProcessAllModels(Map objs) { Map result = super.postProcessAllModels(objs); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index a8d6c392721..d52a98007e5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -293,40 +293,6 @@ public class TypeScriptClientCodegen extends AbstractTypeScriptClientCodegen imp } } - /** - * Update datatypeWithEnum for array container - * - * @param property Codegen property - */ - protected void updateDataTypeWithEnumForArray(CodegenProperty property) { - CodegenProperty baseItem = property.items; - while (baseItem != null && (Boolean.TRUE.equals(baseItem.isMap) - || Boolean.TRUE.equals(baseItem.isArray))) { - baseItem = baseItem.items; - } - if (baseItem != null) { - /* - * Note: There are cases where we have datatypeWithEnum == Array<{ [key: string]: string} - * In these cases, we then have Array <{ [key: EnumName]: EnumName}> - which is invalid typescript - * To protect agains this we first replace [key: string] with a special/reserved placeholder (i.e. *[key]* ) - */ - property.datatypeWithEnum = property.datatypeWithEnum.replace("[key: string]", "*key*") - .replace(baseItem.baseType, toEnumName(baseItem)) - .replace("*key*", "[key: string]"); - - // naming the enum with respect to the language enum naming convention - // e.g. remove [], {} from array/map of enum - property.enumName = toEnumName(property); - - // set default value for variable with inner enum - if (property.defaultValue != null) { - property.defaultValue = property.defaultValue.replace(baseItem.baseType, toEnumName(baseItem)); - } - - updateCodegenPropertyEnum(property); - } - } - @Override public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models