From a7d57cafff310b508ee2a40b11a303876c9bcb95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Libor=20Nenad=C3=A1l?= Date: Tue, 10 Feb 2026 16:27:40 +0100 Subject: [PATCH] [typescript-angular] Fix inner enum reference in multi-map property type (#22748) * [typescript-angular] Fix inner enum reference in multi-map property type Fixes #22747 * [typescript] Fix inner enum reference in multi-map property type Fixes #20877, #22747 * test for the double-prefixed enum names This proves that following comment is not relevant: https://github.com/OpenAPITools/openapi-generator/pull/22748#discussion_r2769863543 * Implement review comment about the trailing `>` This implements comment https://github.com/OpenAPITools/openapi-generator/pull/22748#discussion_r2769863549 * fix @type for generic interfaces in TypeScript clients Type annotation in a comment should match the actual field type. --- .../AbstractTypeScriptClientCodegen.java | 160 +++++++++++++++--- .../TypeScriptFetchClientCodegen.java | 12 +- .../modelGenericInterfaces.mustache | 4 +- .../typescript/SharedTypeScriptTest.java | 150 ++++++++++++++-- .../3_0/issue_22748_inherited_inner_enum.yaml | 53 ++++++ .../builds/test-petstore/api.ts | 2 +- .../api.ts | 2 +- .../builds/default-v3.0/models/EnumArrays.ts | 4 +- .../builds/default-v3.0/models/EnumTest.ts | 8 +- .../builds/default-v3.0/models/MapTest.ts | 4 +- .../builds/default-v3.0/models/Order.ts | 2 +- .../default-v3.0/models/ParentWithNullable.ts | 2 +- .../builds/default-v3.0/models/Pet.ts | 2 +- .../builds/default/models/Order.ts | 2 +- .../builds/default/models/Pet.ts | 2 +- .../FakeEnumRequestGetInline200Response.ts | 8 +- .../builds/es6-target/src/models/Order.ts | 2 +- .../builds/es6-target/src/models/Pet.ts | 2 +- .../multiple-parameters/models/Order.ts | 2 +- .../builds/multiple-parameters/models/Pet.ts | 2 +- .../builds/oneOf/models/OptionOne.ts | 2 +- .../builds/oneOf/models/OptionTwo.ts | 2 +- .../src/models/Order.ts | 2 +- .../src/models/Pet.ts | 2 +- .../sagas-and-records/src/models/Order.ts | 2 +- .../sagas-and-records/src/models/Pet.ts | 2 +- .../src/models/ResponseMeta.ts | 2 +- .../models/EnumArrays.ts | 4 +- .../models/EnumTest.ts | 8 +- .../snakecase-discriminator/models/MapTest.ts | 4 +- .../snakecase-discriminator/models/Order.ts | 2 +- .../snakecase-discriminator/models/Pet.ts | 2 +- .../validation-attributes/models/Order.ts | 2 +- .../validation-attributes/models/Pet.ts | 2 +- .../builds/with-interfaces/models/Order.ts | 2 +- .../builds/with-interfaces/models/Pet.ts | 2 +- .../with-npm-version/src/models/Order.ts | 2 +- .../builds/with-npm-version/src/models/Pet.ts | 2 +- .../FakeEnumRequestGetInline200Response.ts | 8 +- .../src/models/index.ts | 4 +- .../builds/explode-query/models/MapTest.ts | 4 +- 41 files changed, 389 insertions(+), 98 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/issue_22748_inherited_inner_enum.yaml 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 69a5a6240a22..9f09d9c5cb14 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 @@ -17,39 +17,65 @@ package org.openapitools.codegen.languages; -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.media.Schema; -import io.swagger.v3.oas.models.parameters.Parameter; -import lombok.Getter; -import lombok.Setter; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.nullness.qual.Nullable; -import org.openapitools.codegen.*; -import org.openapitools.codegen.CodegenConstants.ENUM_PROPERTY_NAMING_TYPE; -import org.openapitools.codegen.CodegenConstants.MODEL_PROPERTY_NAMING_TYPE; -import org.openapitools.codegen.CodegenConstants.PARAM_NAMING_TYPE; -import org.openapitools.codegen.meta.features.*; -import org.openapitools.codegen.model.ModelMap; -import org.openapitools.codegen.model.ModelsMap; -import org.openapitools.codegen.utils.ModelUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static org.openapitools.codegen.languages.AbstractTypeScriptClientCodegen.ParameterExpander.ParamStyle.form; +import static org.openapitools.codegen.languages.AbstractTypeScriptClientCodegen.ParameterExpander.ParamStyle.simple; +import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; +import static org.openapitools.codegen.utils.StringUtils.camelize; +import static org.openapitools.codegen.utils.StringUtils.underscore; import java.io.File; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import java.util.function.BiPredicate; import java.util.function.Function; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.openapitools.codegen.languages.AbstractTypeScriptClientCodegen.ParameterExpander.ParamStyle.form; -import static org.openapitools.codegen.languages.AbstractTypeScriptClientCodegen.ParameterExpander.ParamStyle.simple; -import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER; -import static org.openapitools.codegen.utils.StringUtils.camelize; -import static org.openapitools.codegen.utils.StringUtils.underscore; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; +import org.checkerframework.checker.nullness.qual.Nullable; +import org.openapitools.codegen.CliOption; +import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.CodegenConstants.ENUM_PROPERTY_NAMING_TYPE; +import org.openapitools.codegen.CodegenConstants.MODEL_PROPERTY_NAMING_TYPE; +import org.openapitools.codegen.CodegenConstants.PARAM_NAMING_TYPE; +import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenParameter; +import org.openapitools.codegen.CodegenProperty; +import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.DefaultCodegen; +import org.openapitools.codegen.GeneratorLanguage; +import org.openapitools.codegen.meta.features.ClientModificationFeature; +import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.meta.features.GlobalFeature; +import org.openapitools.codegen.meta.features.SchemaSupportFeature; +import org.openapitools.codegen.meta.features.SecurityFeature; +import org.openapitools.codegen.meta.features.WireFormatFeature; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.utils.ModelUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.oas.models.parameters.Parameter; +import lombok.Getter; +import lombok.Setter; public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen implements CodegenConfig { @@ -1023,6 +1049,85 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp } } + /** + * Override to fix the inner enum naming issue for maps/arrays of enums. + *

+ * The parent implementation uses toEnumName(baseItem) which produces a generic name + * like "InnerEnum" based on the inner item's name. This override first calculates + * the correct property.enumName, then uses it in the datatypeWithEnum replacement. + *

+ * + * @param property Codegen property + */ + @Override + 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) { + // First, set the property's enumName using the property itself (not the inner item) + // This ensures the correct enum name (e.g., "OptionsEnum") is used + // instead of the generic inner item name (e.g., "InnerEnum") + property.enumName = toEnumName(property); + + // Now use property.enumName for datatypeWithEnum + property.datatypeWithEnum = property.datatypeWithEnum.replace(baseItem.baseType, property.enumName); + + // set default value for variable with inner enum + if (property.defaultValue != null) { + property.defaultValue = property.defaultValue.replace(baseItem.baseType, property.enumName); + } + + updateCodegenPropertyEnum(property); + } + } + + /** + * Override to fix the inner enum naming issue for map properties. + *

+ * The parent implementation uses {@code toEnumName(baseItem)} which produces "InnerEnum" + * for properties whose inner item has a generic name like "inner". We instead + * calculate the enumName from the property itself first, then use it in the replacement. + *

+ * + * @param property Codegen property + */ + @Override + protected void updateDataTypeWithEnumForMap(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) { + // First, set the property's enumName using the property itself (not the inner item) + property.enumName = toEnumName(property); + + // Replace only the LAST occurrence of baseType with enumName. + // In map types, the value type appears last (after the key type), + // so this approach is template-agnostic. + String datatypeWithEnum = property.datatypeWithEnum; + int lastIndex = datatypeWithEnum.lastIndexOf(baseItem.baseType); + if (lastIndex >= 0) { + property.datatypeWithEnum = datatypeWithEnum.substring(0, lastIndex) + + property.enumName + + datatypeWithEnum.substring(lastIndex + baseItem.baseType.length()); + } + LOGGER.info("Updated datatypeWithEnum for map property '{}': {}", property.name, property.datatypeWithEnum); + + // set default value for variable with inner enum + if (property.defaultValue != null) { + property.defaultValue = property.defaultValue.replace(baseItem.baseType, property.enumName); + } + + updateCodegenPropertyEnum(property); + } + } + @Override public ModelsMap postProcessModels(ModelsMap objs) { // process enum in models @@ -1030,15 +1135,18 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp for (ModelMap mo : models) { CodegenModel cm = mo.getModel(); cm.imports = new TreeSet<>(cm.imports); + // name enum with model name, e.g. StatusEnum => Pet.StatusEnum + // This applies to both direct enum properties (isEnum) and properties containing + // inner enums (isInnerEnum) like maps or arrays of enums. for (CodegenProperty var : cm.vars) { - if (Boolean.TRUE.equals(var.isEnum)) { + if (Boolean.TRUE.equals(var.isEnum) || Boolean.TRUE.equals(var.isInnerEnum)) { var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + classEnumSeparator + var.enumName); } } if (cm.parent != null) { for (CodegenProperty var : cm.allVars) { - if (Boolean.TRUE.equals(var.isEnum)) { + if (Boolean.TRUE.equals(var.isEnum) || Boolean.TRUE.equals(var.isInnerEnum)) { var.datatypeWithEnum = var.datatypeWithEnum .replace(var.enumName, cm.classname + classEnumSeparator + var.enumName); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java index af313325c949..482c286927c7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java @@ -383,6 +383,7 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege @Override public ModelsMap postProcessModels(ModelsMap objs) { + // postProcessModelsEnum applies inner enum fixes via the parent class override List models = postProcessModelsEnum(objs).getModels(); // process enum and custom properties in models @@ -800,7 +801,8 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege for (CodegenProperty cpVar : cm.allVars) { ExtendedCodegenProperty var = (ExtendedCodegenProperty) cpVar; - if (Boolean.TRUE.equals(var.isEnum)) { + // Handle both direct enum properties and inner enums (maps/arrays of enums) + if (Boolean.TRUE.equals(var.isEnum) || Boolean.TRUE.equals(var.isInnerEnum)) { var.datatypeWithEnum = var.datatypeWithEnum .replace(var.enumName, cm.classname + var.enumName); } @@ -845,7 +847,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege private boolean processCodegenProperty(ExtendedCodegenProperty var, String parentClassName, Object xEntityId) { // name enum with model name, e.g. StatusEnum => PetStatusEnum - if (Boolean.TRUE.equals(var.isEnum)) { + // This applies to both direct enum properties (isEnum) and properties containing + // inner enums (isInnerEnum) like maps or arrays of enums. + if (Boolean.TRUE.equals(var.isEnum) || Boolean.TRUE.equals(var.isInnerEnum)) { // behaviour for enum names is specific for Typescript Fetch, not using namespaces var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, parentClassName + var.enumName); @@ -1525,11 +1529,11 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege public Set oneOfPrimitives = new HashSet<>(); @Getter @Setter public CodegenDiscriminator.MappedModel selfReferencingDiscriminatorMapping; - + public boolean isEntity; // Is a model containing an "id" property marked as isUniqueId public String returnPassthrough; public boolean hasReturnPassthroughVoid; - + public boolean hasSelfReferencingDiscriminatorMapping(){ return selfReferencingDiscriminatorMapping != null; } diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGenericInterfaces.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGenericInterfaces.mustache index 68e5747598a9..a1a115440821 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGenericInterfaces.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGenericInterfaces.mustache @@ -10,13 +10,13 @@ export interface {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{ {{#vars}} /** * {{#lambda.indented_star_4}}{{{unescapedDescription}}}{{/lambda.indented_star_4}} - * @type {{=<% %>=}}{<%&datatype%>}<%={{ }}=%> + * @type {{=<% %>=}}{<%&datatypeWithEnum%>}<%={{ }}=%> * @memberof {{classname}} {{#deprecated}} * @deprecated {{/deprecated}} */ - {{#isReadOnly}}readonly {{/isReadOnly}}{{name}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}; + {{#isReadOnly}}readonly {{/isReadOnly}}{{name}}{{^required}}?{{/required}}: {{{datatypeWithEnum}}}{{#isNullable}} | null{{/isNullable}}; {{/vars}} }{{#hasEnums}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java index cfc293b36621..283b3932b5bc 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/SharedTypeScriptTest.java @@ -1,5 +1,19 @@ package org.openapitools.codegen.typescript; +import static org.openapitools.codegen.typescript.TypeScriptGroups.TYPESCRIPT; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; +import java.util.stream.Stream; + import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.ClientOptInput; @@ -12,18 +26,6 @@ import org.openapitools.codegen.languages.TypeScriptFetchClientCodegen; import org.testng.Assert; import org.testng.annotations.Test; -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.openapitools.codegen.typescript.TypeScriptGroups.TYPESCRIPT; - @Test(groups = {TYPESCRIPT}) public class SharedTypeScriptTest { @@ -67,6 +69,24 @@ public class SharedTypeScriptTest { Assert.assertEquals(StringUtils.countMatches(apiFileContent, "import { GetCustomer200Response }"), 1); } + private Path findModelDefinitionFile(Path root, Pattern modelPattern) throws IOException { + try (Stream paths = Files.walk(root)) { + return paths + .filter(Files::isRegularFile) + .filter(path -> path.toString().endsWith(".ts")) + .filter(path -> { + try { + String content = Files.readString(path); + return modelPattern.matcher(content).find(); + } catch (IOException e) { + return false; + } + }) + .findFirst() + .orElseThrow(() -> new IOException("Unable to locate model definition in " + root)); + } + } + @Test public void oldImportsStillPresentTest() throws IOException { Path output = Files.createTempDirectory("test"); @@ -184,4 +204,110 @@ public class SharedTypeScriptTest { TestUtils.assertFileNotContains(axiosApiFile.toPath(), "AxiosPromise"); } + @Test(description = "Issue #20877, #22747 - Maps/arrays of inner enums should use correct enum name") + public void givenMapWithArrayOfEnumsThenCorrectEnumNameIsUsed() throws Exception { + // This tests the fix for the issue where maps with array of enums generated + // "InnerEnum" type reference instead of the correct qualified enum name. + // The fix is in AbstractTypeScriptClientCodegen and applies to all TypeScript generators. + final String specPath = "src/test/resources/3_0/issue_19393_map_of_inner_enum.yaml"; + + List generators = Arrays.asList( + "typescript", + "typescript-angular", + "typescript-axios", + "typescript-aurelia", + "typescript-fetch", + "typescript-inversify", + "typescript-jquery", + "typescript-nestjs", + "typescript-nestjs-server", + "typescript-node", + "typescript-redux-query", + "typescript-rxjs" + ); + + // Patterns for EmployeeWithMultiMapOfEnum (map of array of enums) + Pattern multiMapModelDefinition = Pattern.compile("\\b(interface|type|class)\\s+EmployeeWithMultiMapOfEnum\\b"); + Pattern multiMapNamespacedEnumRef = Pattern.compile("projectRoles[^\\n]*ProjectRolesEnum"); + Pattern multiMapFlatEnumRef = Pattern.compile("projectRoles[^\\n]*EmployeeWithMultiMapOfEnumProjectRolesEnum"); + + // Patterns for EmployeeWithMapOfEnum (simple map of enums) + Pattern simpleMapModelDefinition = Pattern.compile("\\b(interface|type|class)\\s+EmployeeWithMapOfEnum\\b"); + Pattern simpleMapNamespacedEnumRef = Pattern.compile("projectRole[^s][^\\n]*ProjectRoleEnum"); + Pattern simpleMapFlatEnumRef = Pattern.compile("projectRole[^s][^\\n]*EmployeeWithMapOfEnumProjectRoleEnum"); + + for (String generatorName : generators) { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + + CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName(generatorName) + .setInputSpec(specPath) + .setOutputDir(output.getAbsolutePath()); + + Generator generator = new DefaultGenerator(); + generator.opts(configurator.toClientOptInput()).generate(); + + // Test EmployeeWithMultiMapOfEnum (map of array of enums) + Path multiMapModelFile = findModelDefinitionFile(output.toPath(), multiMapModelDefinition); + String multiMapFileContents = Files.readString(multiMapModelFile); + + Assert.assertFalse(multiMapFileContents.contains("InnerEnum"), + generatorName + ": Should not contain 'InnerEnum' reference in " + multiMapModelFile); + + boolean hasMultiMapEnumRef = multiMapNamespacedEnumRef.matcher(multiMapFileContents).find() + || multiMapFlatEnumRef.matcher(multiMapFileContents).find(); + Assert.assertTrue(hasMultiMapEnumRef, + generatorName + ": Expected enum reference not found in " + multiMapModelFile); + + // Test EmployeeWithMapOfEnum (simple map of enums) + Path simpleMapModelFile = findModelDefinitionFile(output.toPath(), simpleMapModelDefinition); + String simpleMapFileContents = Files.readString(simpleMapModelFile); + + Assert.assertFalse(simpleMapFileContents.contains("InnerEnum"), + generatorName + ": Should not contain 'InnerEnum' reference in " + simpleMapModelFile); + + boolean hasSimpleMapEnumRef = simpleMapNamespacedEnumRef.matcher(simpleMapFileContents).find() + || simpleMapFlatEnumRef.matcher(simpleMapFileContents).find(); + Assert.assertTrue(hasSimpleMapEnumRef, + generatorName + ": Expected enum reference for simple map not found in " + simpleMapModelFile); + } + } + + @Test(description = "Issue #22748 - Inner enums should not be double-prefixed when model has parent") + public void givenChildModelWithInheritedInnerEnumThenEnumNameIsNotDoublePrefixed() throws Exception { + // This tests that when a child model inherits from a parent that has an inner enum property, + // the enum name is not double-prefixed (e.g., Employee.Employee.ProjectRolesEnum instead of + // Employee.ProjectRolesEnum). + // + // We use typescript-angular because it sets supportsMultipleInheritance=true, + // which means cm.parent will be set for child models using allOf. + // typescript-fetch does NOT support inheritance, so cm.parent is always null there. + final String specPath = "src/test/resources/3_0/issue_22748_inherited_inner_enum.yaml"; + + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + + CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("typescript-angular") + .setInputSpec(specPath) + .setOutputDir(output.getAbsolutePath()); + + Generator generator = new DefaultGenerator(); + generator.opts(configurator.toClientOptInput()).generate(); + + // Find the Employee model file (the child model) + Pattern modelDefinition = Pattern.compile("\\b(interface|type|class)\\s+Employee\\b"); + Path modelFile = findModelDefinitionFile(output.toPath(), modelDefinition); + String fileContents = Files.readString(modelFile); + + // Should NOT contain double-prefixed enum name (typescript-angular uses "." separator) + Assert.assertFalse(fileContents.contains("Employee.Employee.ProjectRolesEnum"), + "typescript-angular: Should not contain double-prefixed 'Employee.Employee.ProjectRolesEnum' in " + modelFile); + + // Should contain correctly prefixed enum name (single prefix with "." separator) + Assert.assertTrue(fileContents.contains("Employee.ProjectRolesEnum"), + "typescript-angular: Should contain 'Employee.ProjectRolesEnum' in " + modelFile); + } + } diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_22748_inherited_inner_enum.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_22748_inherited_inner_enum.yaml new file mode 100644 index 000000000000..016088e017c4 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue_22748_inherited_inner_enum.yaml @@ -0,0 +1,53 @@ +openapi: 3.0.0 +info: + version: 1.0.0 + title: OpenAPI Test API - Inherited Inner Enum + description: Test case for inner enum in child model with inheritance + license: + name: Apache-2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0.html' +paths: + /employees: + get: + operationId: getEmployees + responses: + '200': + description: List of employees + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Employee' +components: + schemas: + # Parent model with discriminator - this is needed for cm.parent to be set + BaseEmployee: + type: object + discriminator: + propertyName: employeeType + properties: + employeeType: + type: string + name: + type: string + # Child model that has its OWN inner enum property (map of array of enums) + # This tests that when cm.parent != null, the child's own properties + # don't get double-prefixed (first in cm.vars loop, then in cm.allVars loop) + Employee: + allOf: + - $ref: '#/components/schemas/BaseEmployee' + - type: object + properties: + employeeId: + type: integer + projectRoles: + type: object + additionalProperties: + type: array + items: + type: string + enum: + - DEVELOPER + - TESTER + - OWNER diff --git a/samples/client/petstore/typescript-axios/builds/test-petstore/api.ts b/samples/client/petstore/typescript-axios/builds/test-petstore/api.ts index aefaae4e861c..ec42b08ab36f 100644 --- a/samples/client/petstore/typescript-axios/builds/test-petstore/api.ts +++ b/samples/client/petstore/typescript-axios/builds/test-petstore/api.ts @@ -329,7 +329,7 @@ export type MammalAnyofTypeEnum = typeof MammalAnyofTypeEnum[keyof typeof Mammal export interface MapTest { 'map_map_of_string'?: { [key: string]: { [key: string]: string; }; }; - 'map_of_enum_string'?: { [key: string]: string; }; + 'map_of_enum_string'?: { [key: string]: MapTestMapOfEnumStringEnum; }; 'direct_map'?: { [key: string]: boolean; }; 'indirect_map'?: { [key: string]: boolean; }; } diff --git a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts index 5e5e3763acec..5eed4da6f370 100644 --- a/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts +++ b/samples/client/petstore/typescript-axios/builds/with-fake-endpoints-models-for-testing-with-http-signature/api.ts @@ -227,7 +227,7 @@ export type Mammal = { className: 'whale' } & Whale | { className: 'zebra' } & Z export interface MapTest { 'map_map_of_string'?: { [key: string]: { [key: string]: string; }; }; - 'map_of_enum_string'?: { [key: string]: string; }; + 'map_of_enum_string'?: { [key: string]: MapTestMapOfEnumStringEnum; }; 'direct_map'?: { [key: string]: boolean; }; 'indirect_map'?: { [key: string]: boolean; }; } diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/EnumArrays.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/EnumArrays.ts index b30860b8e8bb..b56bf8dc1baa 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/EnumArrays.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/EnumArrays.ts @@ -21,13 +21,13 @@ import { mapValues } from '../runtime'; export interface EnumArrays { /** * - * @type {string} + * @type {EnumArraysJustSymbolEnum} * @memberof EnumArrays */ justSymbol?: EnumArraysJustSymbolEnum; /** * - * @type {Array} + * @type {Array} * @memberof EnumArrays */ arrayEnum?: Array; diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/EnumTest.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/EnumTest.ts index 0097912a9561..a5eecc180343 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/EnumTest.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/EnumTest.ts @@ -50,25 +50,25 @@ import { export interface EnumTest { /** * - * @type {string} + * @type {EnumTestEnumStringEnum} * @memberof EnumTest */ enumString?: EnumTestEnumStringEnum; /** * - * @type {string} + * @type {EnumTestEnumStringRequiredEnum} * @memberof EnumTest */ enumStringRequired: EnumTestEnumStringRequiredEnum; /** * - * @type {number} + * @type {EnumTestEnumIntegerEnum} * @memberof EnumTest */ enumInteger?: EnumTestEnumIntegerEnum; /** * - * @type {number} + * @type {EnumTestEnumNumberEnum} * @memberof EnumTest */ enumNumber?: EnumTestEnumNumberEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/MapTest.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/MapTest.ts index 753c30a6cf93..c968578beb33 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/MapTest.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/MapTest.ts @@ -27,10 +27,10 @@ export interface MapTest { mapMapOfString?: { [key: string]: { [key: string]: string; }; }; /** * - * @type {{ [key: string]: string; }} + * @type {{ [key: string]: MapTestMapOfEnumStringEnum; }} * @memberof MapTest */ - mapOfEnumString?: { [key: string]: string; }; + mapOfEnumString?: { [key: string]: MapTestMapOfEnumStringEnum; }; /** * * @type {{ [key: string]: boolean; }} diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Order.ts index 9444d5346722..e4e905c98d1c 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/ParentWithNullable.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/ParentWithNullable.ts index fc3b7e90825e..b642ba20f314 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/ParentWithNullable.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/ParentWithNullable.ts @@ -22,7 +22,7 @@ import { type ChildWithNullable, ChildWithNullableFromJSONTyped, ChildWithNullab export interface ParentWithNullable { /** * - * @type {string} + * @type {ParentWithNullableTypeEnum} * @memberof ParentWithNullable */ type?: ParentWithNullableTypeEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Pet.ts index d45f8d2b64bc..e998ec0c4069 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/default/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/default/models/Order.ts index 42f520745eb0..7055ef2ef79a 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/default/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/default/models/Pet.ts index 981d00a85076..5d9a7ccf0d2f 100644 --- a/samples/client/petstore/typescript-fetch/builds/default/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/default/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/enum/models/FakeEnumRequestGetInline200Response.ts b/samples/client/petstore/typescript-fetch/builds/enum/models/FakeEnumRequestGetInline200Response.ts index 23aca822ea66..c0bba4a7139f 100644 --- a/samples/client/petstore/typescript-fetch/builds/enum/models/FakeEnumRequestGetInline200Response.ts +++ b/samples/client/petstore/typescript-fetch/builds/enum/models/FakeEnumRequestGetInline200Response.ts @@ -21,25 +21,25 @@ import { mapValues } from '../runtime'; export interface FakeEnumRequestGetInline200Response { /** * - * @type {string} + * @type {FakeEnumRequestGetInline200ResponseStringEnumEnum} * @memberof FakeEnumRequestGetInline200Response */ stringEnum?: FakeEnumRequestGetInline200ResponseStringEnumEnum; /** * - * @type {string} + * @type {FakeEnumRequestGetInline200ResponseNullableStringEnumEnum} * @memberof FakeEnumRequestGetInline200Response */ nullableStringEnum?: FakeEnumRequestGetInline200ResponseNullableStringEnumEnum; /** * - * @type {number} + * @type {FakeEnumRequestGetInline200ResponseNumberEnumEnum} * @memberof FakeEnumRequestGetInline200Response */ numberEnum?: FakeEnumRequestGetInline200ResponseNumberEnumEnum; /** * - * @type {number} + * @type {FakeEnumRequestGetInline200ResponseNullableNumberEnumEnum} * @memberof FakeEnumRequestGetInline200Response */ nullableNumberEnum?: FakeEnumRequestGetInline200ResponseNullableNumberEnumEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Order.ts index 42f520745eb0..7055ef2ef79a 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Pet.ts index 981d00a85076..5d9a7ccf0d2f 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/models/Order.ts index 42f520745eb0..7055ef2ef79a 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/models/Pet.ts index 981d00a85076..5d9a7ccf0d2f 100644 --- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionOne.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionOne.ts index 3c0c832ab9ca..11203f329df9 100644 --- a/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionOne.ts +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionOne.ts @@ -21,7 +21,7 @@ import { mapValues } from '../runtime'; export interface OptionOne { /** * - * @type {string} + * @type {OptionOneDiscriminatorFieldEnum} * @memberof OptionOne */ discriminatorField: OptionOneDiscriminatorFieldEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionTwo.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionTwo.ts index a6cafacf2ada..67fb9241746f 100644 --- a/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionTwo.ts +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionTwo.ts @@ -21,7 +21,7 @@ import { mapValues } from '../runtime'; export interface OptionTwo { /** * - * @type {string} + * @type {OptionTwoDiscriminatorFieldEnum} * @memberof OptionTwo */ discriminatorField: OptionTwoDiscriminatorFieldEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Order.ts index 42f520745eb0..7055ef2ef79a 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Pet.ts index 981d00a85076..5d9a7ccf0d2f 100644 --- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Order.ts index 42f520745eb0..7055ef2ef79a 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts index bdc19f7dd1df..b3b2336edc4a 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/Pet.ts @@ -164,7 +164,7 @@ export interface Pet { optionalTags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMeta.ts b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMeta.ts index 97b93cb70d1e..80a3a03ce3f4 100644 --- a/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMeta.ts +++ b/samples/client/petstore/typescript-fetch/builds/sagas-and-records/src/models/ResponseMeta.ts @@ -29,7 +29,7 @@ import { export interface ResponseMeta { /** * Code returned by the function - * @type {string} + * @type {ResponseMetaCodeEnum} * @memberof ResponseMeta */ code: ResponseMetaCodeEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/EnumArrays.ts b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/EnumArrays.ts index b30860b8e8bb..b56bf8dc1baa 100644 --- a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/EnumArrays.ts +++ b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/EnumArrays.ts @@ -21,13 +21,13 @@ import { mapValues } from '../runtime'; export interface EnumArrays { /** * - * @type {string} + * @type {EnumArraysJustSymbolEnum} * @memberof EnumArrays */ justSymbol?: EnumArraysJustSymbolEnum; /** * - * @type {Array} + * @type {Array} * @memberof EnumArrays */ arrayEnum?: Array; diff --git a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/EnumTest.ts b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/EnumTest.ts index 0097912a9561..a5eecc180343 100644 --- a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/EnumTest.ts +++ b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/EnumTest.ts @@ -50,25 +50,25 @@ import { export interface EnumTest { /** * - * @type {string} + * @type {EnumTestEnumStringEnum} * @memberof EnumTest */ enumString?: EnumTestEnumStringEnum; /** * - * @type {string} + * @type {EnumTestEnumStringRequiredEnum} * @memberof EnumTest */ enumStringRequired: EnumTestEnumStringRequiredEnum; /** * - * @type {number} + * @type {EnumTestEnumIntegerEnum} * @memberof EnumTest */ enumInteger?: EnumTestEnumIntegerEnum; /** * - * @type {number} + * @type {EnumTestEnumNumberEnum} * @memberof EnumTest */ enumNumber?: EnumTestEnumNumberEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/MapTest.ts b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/MapTest.ts index 753c30a6cf93..c968578beb33 100644 --- a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/MapTest.ts +++ b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/MapTest.ts @@ -27,10 +27,10 @@ export interface MapTest { mapMapOfString?: { [key: string]: { [key: string]: string; }; }; /** * - * @type {{ [key: string]: string; }} + * @type {{ [key: string]: MapTestMapOfEnumStringEnum; }} * @memberof MapTest */ - mapOfEnumString?: { [key: string]: string; }; + mapOfEnumString?: { [key: string]: MapTestMapOfEnumStringEnum; }; /** * * @type {{ [key: string]: boolean; }} diff --git a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Order.ts index 9444d5346722..e4e905c98d1c 100644 --- a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Pet.ts index d45f8d2b64bc..e998ec0c4069 100644 --- a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/validation-attributes/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/validation-attributes/models/Order.ts index 097b74d85c79..d0d6bb018ae9 100644 --- a/samples/client/petstore/typescript-fetch/builds/validation-attributes/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/validation-attributes/models/Order.ts @@ -46,7 +46,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/validation-attributes/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/validation-attributes/models/Pet.ts index 0af0ffab39d1..ec7832cc4856 100644 --- a/samples/client/petstore/typescript-fetch/builds/validation-attributes/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/validation-attributes/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet * @deprecated */ diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Order.ts index 42f520745eb0..7055ef2ef79a 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Pet.ts index 981d00a85076..5d9a7ccf0d2f 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Order.ts index 42f520745eb0..7055ef2ef79a 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Order.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Order.ts @@ -45,7 +45,7 @@ export interface Order { shipDate?: Date; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Pet.ts index 981d00a85076..5d9a7ccf0d2f 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Pet.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Pet.ts @@ -66,7 +66,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/with-string-enums/models/FakeEnumRequestGetInline200Response.ts b/samples/client/petstore/typescript-fetch/builds/with-string-enums/models/FakeEnumRequestGetInline200Response.ts index aef815c9e004..e9ea2aa522ef 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-string-enums/models/FakeEnumRequestGetInline200Response.ts +++ b/samples/client/petstore/typescript-fetch/builds/with-string-enums/models/FakeEnumRequestGetInline200Response.ts @@ -21,25 +21,25 @@ import { mapValues } from '../runtime'; export interface FakeEnumRequestGetInline200Response { /** * - * @type {string} + * @type {FakeEnumRequestGetInline200ResponseStringEnumEnum} * @memberof FakeEnumRequestGetInline200Response */ stringEnum?: FakeEnumRequestGetInline200ResponseStringEnumEnum; /** * - * @type {string} + * @type {FakeEnumRequestGetInline200ResponseNullableStringEnumEnum} * @memberof FakeEnumRequestGetInline200Response */ nullableStringEnum?: FakeEnumRequestGetInline200ResponseNullableStringEnumEnum; /** * - * @type {number} + * @type {FakeEnumRequestGetInline200ResponseNumberEnumEnum} * @memberof FakeEnumRequestGetInline200Response */ numberEnum?: FakeEnumRequestGetInline200ResponseNumberEnumEnum; /** * - * @type {number} + * @type {FakeEnumRequestGetInline200ResponseNullableNumberEnumEnum} * @memberof FakeEnumRequestGetInline200Response */ nullableNumberEnum?: FakeEnumRequestGetInline200ResponseNullableNumberEnumEnum; diff --git a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/index.ts b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/index.ts index ab1529f795f4..806093189e76 100644 --- a/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/index.ts +++ b/samples/client/petstore/typescript-fetch/builds/without-runtime-checks/src/models/index.ts @@ -76,7 +76,7 @@ export interface Order { shipDate?: string; /** * Order Status - * @type {string} + * @type {OrderStatusEnum} * @memberof Order */ status?: OrderStatusEnum; @@ -137,7 +137,7 @@ export interface Pet { tags?: Array; /** * pet status in the store - * @type {string} + * @type {PetStatusEnum} * @memberof Pet */ status?: PetStatusEnum; diff --git a/samples/openapi3/client/petstore/typescript/builds/explode-query/models/MapTest.ts b/samples/openapi3/client/petstore/typescript/builds/explode-query/models/MapTest.ts index 512fae304c86..d48fa6f05cca 100644 --- a/samples/openapi3/client/petstore/typescript/builds/explode-query/models/MapTest.ts +++ b/samples/openapi3/client/petstore/typescript/builds/explode-query/models/MapTest.ts @@ -14,7 +14,7 @@ import { HttpFile } from '../http/http'; export class MapTest { 'mapMapOfString'?: { [key: string]: { [key: string]: string; }; }; - 'mapOfEnumString'?: { [key: string]: string; }; + 'mapOfEnumString'?: { [key: string]: MapTestMapOfEnumStringEnum; }; 'directMap'?: { [key: string]: boolean; }; 'indirectMap'?: { [key: string]: boolean; }; @@ -32,7 +32,7 @@ export class MapTest { { "name": "mapOfEnumString", "baseName": "map_of_enum_string", - "type": "{ [key: string]: string; }", + "type": "{ [key: string]: MapTestMapOfEnumStringEnum; }", "format": "" }, {