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 89ac30bb52d8..c27f1414b82f 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 @@ -610,6 +610,7 @@ public String getTypeDeclaration(Schema p) { } else if (ModelUtils.isBinarySchema(p)) { return "ArrayBuffer"; } + return super.getTypeDeclaration(p); } @@ -885,7 +886,8 @@ public String toEnumVarName(String name, String datatype) { public String toEnumName(CodegenProperty property) { String enumName = property.name; enumName = addSuffix(enumName, enumSuffix); - return toTypescriptTypeName(enumName, "_"); + String tsName = toTypescriptTypeName(enumName, "_"); + return tsName; } protected void setEnumPropertyNaming(String naming) { @@ -962,6 +964,40 @@ public ModelsMap postProcessModels(ModelsMap objs) { 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 62887e2cf617..d52a98007e55 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 @@ -303,13 +303,15 @@ public ModelsMap postProcessModels(ModelsMap objs) { // name enum with model name, e.g. StatusEnum => Pet.StatusEnum for (CodegenProperty var : cm.vars) { if (Boolean.TRUE.equals(var.isEnum)) { + String replaceName = var.isInnerEnum ? "Inner" + super.enumSuffix : var.enumName; + var.datatypeWithEnum = var.datatypeWithEnum.replace(replaceName, var.enumName); var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + var.enumName); } } if (cm.parent != null) { for (CodegenProperty var : cm.allVars) { if (Boolean.TRUE.equals(var.isEnum)) { - var.datatypeWithEnum = var.datatypeWithEnum + var.datatypeWithEnum = var.datatypeWithEnum .replace(var.enumName, cm.classname + var.enumName); } } @@ -422,8 +424,8 @@ public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { inner = ((ArraySchema) p).getItems(); return this.getSchemaType(p) + "<" + this.getTypeDeclaration(unaliasSchema(inner)) + ">"; - } else if (ModelUtils.isMapSchema(p)) { - inner = getSchemaAdditionalProperties(p); + } else if (ModelUtils.isMapSchema(p)) { // it is an object schema + inner = getSchemaAdditionalProperties(p); // additional properties? String postfix = ""; if (Boolean.TRUE.equals(inner.getNullable())) { postfix = " | null"; diff --git a/modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache b/modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache index 25367e89994c..2a996ed8a8b1 100644 --- a/modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache @@ -79,7 +79,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/modules/openapi-generator/src/main/resources/typescript/model/model.mustache b/modules/openapi-generator/src/main/resources/typescript/model/model.mustache index 20782a320a04..5c42a024183c 100644 --- a/modules/openapi-generator/src/main/resources/typescript/model/model.mustache +++ b/modules/openapi-generator/src/main/resources/typescript/model/model.mustache @@ -24,6 +24,11 @@ export class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{ {{#discriminator}} static readonly discriminator: string | undefined = "{{discriminatorName}}"; + static readonly discriminatorTypeMap = { + {{#mappedModels}} + "{{mappingName}}": "{{modelName}}"{{^-last}},{{/-last}} + {{/mappedModels}} + } {{/discriminator}} {{^discriminator}} static readonly discriminator: string | undefined = undefined; @@ -35,7 +40,7 @@ export class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{ { "name": "{{name}}", "baseName": "{{baseName}}", - "type": "{{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}", + "type": "{{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}} | null{{/isNullable}}", "format": "{{dataFormat}}" }{{^-last}}, {{/-last}} @@ -61,9 +66,14 @@ export class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{ this.{{name}} = "{{discriminatorValue}}"; {{/discriminatorValue}} {{/allVars}} - {{#discriminatorName}} + + {{#discriminator}} + {{^hasDiscriminatorWithNonEmptyMapping}} + {{#discriminatorName}} this.{{discriminatorName}} = "{{classname}}"; - {{/discriminatorName}} + {{/discriminatorName}} + {{/hasDiscriminatorWithNonEmptyMapping}} + {{/discriminator}} } } diff --git a/samples/client/others/typescript/builds/with-unique-items/models/ObjectSerializer.ts b/samples/client/others/typescript/builds/with-unique-items/models/ObjectSerializer.ts index f10b52732140..ee369be5c2e0 100644 --- a/samples/client/others/typescript/builds/with-unique-items/models/ObjectSerializer.ts +++ b/samples/client/others/typescript/builds/with-unique-items/models/ObjectSerializer.ts @@ -51,7 +51,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/samples/client/others/typescript/builds/with-unique-items/models/Response.ts b/samples/client/others/typescript/builds/with-unique-items/models/Response.ts index 6a53fbd9f9d0..463f3f6ae6d3 100644 --- a/samples/client/others/typescript/builds/with-unique-items/models/Response.ts +++ b/samples/client/others/typescript/builds/with-unique-items/models/Response.ts @@ -37,6 +37,7 @@ export class Response { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/browser/models/ApiResponse.ts b/samples/openapi3/client/petstore/typescript/builds/browser/models/ApiResponse.ts index f4b2d010fb71..7d9ec27b6296 100644 --- a/samples/openapi3/client/petstore/typescript/builds/browser/models/ApiResponse.ts +++ b/samples/openapi3/client/petstore/typescript/builds/browser/models/ApiResponse.ts @@ -47,6 +47,7 @@ export class ApiResponse { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/browser/models/Category.ts b/samples/openapi3/client/petstore/typescript/builds/browser/models/Category.ts index 5d63fc87a998..bd30cfaf7a4f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/browser/models/Category.ts +++ b/samples/openapi3/client/petstore/typescript/builds/browser/models/Category.ts @@ -40,6 +40,7 @@ export class Category { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/browser/models/ObjectSerializer.ts b/samples/openapi3/client/petstore/typescript/builds/browser/models/ObjectSerializer.ts index dfbb605553b0..5ab4695bcd53 100644 --- a/samples/openapi3/client/petstore/typescript/builds/browser/models/ObjectSerializer.ts +++ b/samples/openapi3/client/petstore/typescript/builds/browser/models/ObjectSerializer.ts @@ -68,7 +68,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/samples/openapi3/client/petstore/typescript/builds/browser/models/Order.ts b/samples/openapi3/client/petstore/typescript/builds/browser/models/Order.ts index a2f84555ff1e..c23fd802963c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/browser/models/Order.ts +++ b/samples/openapi3/client/petstore/typescript/builds/browser/models/Order.ts @@ -71,6 +71,7 @@ export class Order { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/browser/models/Pet.ts b/samples/openapi3/client/petstore/typescript/builds/browser/models/Pet.ts index b3a7ddb9f719..00b19ee6beb1 100644 --- a/samples/openapi3/client/petstore/typescript/builds/browser/models/Pet.ts +++ b/samples/openapi3/client/petstore/typescript/builds/browser/models/Pet.ts @@ -73,6 +73,7 @@ export class Pet { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/browser/models/Tag.ts b/samples/openapi3/client/petstore/typescript/builds/browser/models/Tag.ts index 8c4f6967b9a1..a534e7af0470 100644 --- a/samples/openapi3/client/petstore/typescript/builds/browser/models/Tag.ts +++ b/samples/openapi3/client/petstore/typescript/builds/browser/models/Tag.ts @@ -40,6 +40,7 @@ export class Tag { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/browser/models/User.ts b/samples/openapi3/client/petstore/typescript/builds/browser/models/User.ts index 68528ad3c9e0..61ce3dfddf14 100644 --- a/samples/openapi3/client/petstore/typescript/builds/browser/models/User.ts +++ b/samples/openapi3/client/petstore/typescript/builds/browser/models/User.ts @@ -85,6 +85,7 @@ export class User { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/Cat.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/Cat.ts index 2790b653b556..128b9896a07f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/Cat.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/Cat.ts @@ -37,6 +37,7 @@ export class Cat { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/CatAllOf.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/CatAllOf.ts index 049c937cadbc..98217152ec94 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/CatAllOf.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/CatAllOf.ts @@ -37,6 +37,7 @@ export class CatAllOf { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/Dog.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/Dog.ts index dd2380572f68..338344dc9d81 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/Dog.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/Dog.ts @@ -37,6 +37,7 @@ export class Dog { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/DogAllOf.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/DogAllOf.ts index 5bc68d788891..8e2d4e61e7e0 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/DogAllOf.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/DogAllOf.ts @@ -37,6 +37,7 @@ export class DogAllOf { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/FilePostRequest.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/FilePostRequest.ts index ddd7a052d56a..c7ae2946fd37 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/FilePostRequest.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/FilePostRequest.ts @@ -30,6 +30,7 @@ export class FilePostRequest { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/ObjectSerializer.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/ObjectSerializer.ts index e726b1bbdc33..54af3ae7ea59 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/ObjectSerializer.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/ObjectSerializer.ts @@ -80,7 +80,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetByAge.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetByAge.ts index 6c7e3c20f0f4..aae1e8f9c93d 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetByAge.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetByAge.ts @@ -37,6 +37,7 @@ export class PetByAge { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetByType.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetByType.ts index aef39d9d6018..e392109b479b 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetByType.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetByType.ts @@ -37,6 +37,7 @@ export class PetByType { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetsFilteredPatchRequest.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetsFilteredPatchRequest.ts index 12ae18d6b74e..e339dd763e5f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetsFilteredPatchRequest.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetsFilteredPatchRequest.ts @@ -53,6 +53,7 @@ export class PetsFilteredPatchRequest { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetsPatchRequest.ts b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetsPatchRequest.ts index c68b69a32965..0dc083f81354 100644 --- a/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetsPatchRequest.ts +++ b/samples/openapi3/client/petstore/typescript/builds/composed-schemas/models/PetsPatchRequest.ts @@ -21,6 +21,8 @@ export class PetsPatchRequest { 'breed'?: PetsPatchRequestBreedEnum; static readonly discriminator: string | undefined = "petType"; + static readonly discriminatorTypeMap = { + } static readonly attributeTypeMap: Array<{name: string, baseName: string, type: string, format: string}> = [ { @@ -53,6 +55,7 @@ export class PetsPatchRequest { } public constructor() { + this.petType = "PetsPatchRequest"; } } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/models/ApiResponse.ts b/samples/openapi3/client/petstore/typescript/builds/default/models/ApiResponse.ts index f4b2d010fb71..7d9ec27b6296 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/models/ApiResponse.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/models/ApiResponse.ts @@ -47,6 +47,7 @@ export class ApiResponse { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/models/Category.ts b/samples/openapi3/client/petstore/typescript/builds/default/models/Category.ts index 5d63fc87a998..bd30cfaf7a4f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/models/Category.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/models/Category.ts @@ -40,6 +40,7 @@ export class Category { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/models/ObjectSerializer.ts b/samples/openapi3/client/petstore/typescript/builds/default/models/ObjectSerializer.ts index dfbb605553b0..5ab4695bcd53 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/models/ObjectSerializer.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/models/ObjectSerializer.ts @@ -68,7 +68,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/samples/openapi3/client/petstore/typescript/builds/default/models/Order.ts b/samples/openapi3/client/petstore/typescript/builds/default/models/Order.ts index a2f84555ff1e..c23fd802963c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/models/Order.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/models/Order.ts @@ -71,6 +71,7 @@ export class Order { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/models/Pet.ts b/samples/openapi3/client/petstore/typescript/builds/default/models/Pet.ts index b3a7ddb9f719..00b19ee6beb1 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/models/Pet.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/models/Pet.ts @@ -73,6 +73,7 @@ export class Pet { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/models/Tag.ts b/samples/openapi3/client/petstore/typescript/builds/default/models/Tag.ts index 8c4f6967b9a1..a534e7af0470 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/models/Tag.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/models/Tag.ts @@ -40,6 +40,7 @@ export class Tag { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/default/models/User.ts b/samples/openapi3/client/petstore/typescript/builds/default/models/User.ts index 68528ad3c9e0..61ce3dfddf14 100644 --- a/samples/openapi3/client/petstore/typescript/builds/default/models/User.ts +++ b/samples/openapi3/client/petstore/typescript/builds/default/models/User.ts @@ -85,6 +85,7 @@ export class User { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/models/ApiResponse.ts b/samples/openapi3/client/petstore/typescript/builds/deno/models/ApiResponse.ts index b5cfa4948a07..da7d8aefb6c6 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/models/ApiResponse.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/models/ApiResponse.ts @@ -47,6 +47,7 @@ export class ApiResponse { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/models/Category.ts b/samples/openapi3/client/petstore/typescript/builds/deno/models/Category.ts index 9c1bdd236145..db70f05c1e56 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/models/Category.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/models/Category.ts @@ -40,6 +40,7 @@ export class Category { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/models/ObjectSerializer.ts b/samples/openapi3/client/petstore/typescript/builds/deno/models/ObjectSerializer.ts index 0da0325edc80..8aebaab0575f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/models/ObjectSerializer.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/models/ObjectSerializer.ts @@ -68,7 +68,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/models/Order.ts b/samples/openapi3/client/petstore/typescript/builds/deno/models/Order.ts index 644657299f36..e2ca32a363e7 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/models/Order.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/models/Order.ts @@ -71,6 +71,7 @@ export class Order { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/models/Pet.ts b/samples/openapi3/client/petstore/typescript/builds/deno/models/Pet.ts index 229681feacde..1f6207cbf1e3 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/models/Pet.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/models/Pet.ts @@ -73,6 +73,7 @@ export class Pet { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/models/Tag.ts b/samples/openapi3/client/petstore/typescript/builds/deno/models/Tag.ts index dc2c98212c34..32abb751d6fa 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/models/Tag.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/models/Tag.ts @@ -40,6 +40,7 @@ export class Tag { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/deno/models/User.ts b/samples/openapi3/client/petstore/typescript/builds/deno/models/User.ts index 76c6a9ae8692..ae43307df210 100644 --- a/samples/openapi3/client/petstore/typescript/builds/deno/models/User.ts +++ b/samples/openapi3/client/petstore/typescript/builds/deno/models/User.ts @@ -85,6 +85,7 @@ export class User { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/models/ApiResponse.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/models/ApiResponse.ts index f4b2d010fb71..7d9ec27b6296 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/models/ApiResponse.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/models/ApiResponse.ts @@ -47,6 +47,7 @@ export class ApiResponse { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/models/Category.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/models/Category.ts index 5d63fc87a998..bd30cfaf7a4f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/models/Category.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/models/Category.ts @@ -40,6 +40,7 @@ export class Category { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/models/ObjectSerializer.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/models/ObjectSerializer.ts index dfbb605553b0..5ab4695bcd53 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/models/ObjectSerializer.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/models/ObjectSerializer.ts @@ -68,7 +68,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/models/Order.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/models/Order.ts index a2f84555ff1e..c23fd802963c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/models/Order.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/models/Order.ts @@ -71,6 +71,7 @@ export class Order { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/models/Pet.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/models/Pet.ts index b3a7ddb9f719..00b19ee6beb1 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/models/Pet.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/models/Pet.ts @@ -73,6 +73,7 @@ export class Pet { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/models/Tag.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/models/Tag.ts index 8c4f6967b9a1..a534e7af0470 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/models/Tag.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/models/Tag.ts @@ -40,6 +40,7 @@ export class Tag { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/inversify/models/User.ts b/samples/openapi3/client/petstore/typescript/builds/inversify/models/User.ts index 68528ad3c9e0..61ce3dfddf14 100644 --- a/samples/openapi3/client/petstore/typescript/builds/inversify/models/User.ts +++ b/samples/openapi3/client/petstore/typescript/builds/inversify/models/User.ts @@ -85,6 +85,7 @@ export class User { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/models/ApiResponse.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/models/ApiResponse.ts index f4b2d010fb71..7d9ec27b6296 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/models/ApiResponse.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/models/ApiResponse.ts @@ -47,6 +47,7 @@ export class ApiResponse { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/models/Category.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/models/Category.ts index 5d63fc87a998..bd30cfaf7a4f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/models/Category.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/models/Category.ts @@ -40,6 +40,7 @@ export class Category { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/models/ObjectSerializer.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/models/ObjectSerializer.ts index dfbb605553b0..5ab4695bcd53 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/models/ObjectSerializer.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/models/ObjectSerializer.ts @@ -68,7 +68,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/models/Order.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/models/Order.ts index a2f84555ff1e..c23fd802963c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/models/Order.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/models/Order.ts @@ -71,6 +71,7 @@ export class Order { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/models/Pet.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/models/Pet.ts index b3a7ddb9f719..00b19ee6beb1 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/models/Pet.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/models/Pet.ts @@ -73,6 +73,7 @@ export class Pet { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/models/Tag.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/models/Tag.ts index 8c4f6967b9a1..a534e7af0470 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/models/Tag.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/models/Tag.ts @@ -40,6 +40,7 @@ export class Tag { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/jquery/models/User.ts b/samples/openapi3/client/petstore/typescript/builds/jquery/models/User.ts index 68528ad3c9e0..61ce3dfddf14 100644 --- a/samples/openapi3/client/petstore/typescript/builds/jquery/models/User.ts +++ b/samples/openapi3/client/petstore/typescript/builds/jquery/models/User.ts @@ -85,6 +85,7 @@ export class User { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/models/ApiResponse.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/models/ApiResponse.ts index f4b2d010fb71..7d9ec27b6296 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/models/ApiResponse.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/models/ApiResponse.ts @@ -47,6 +47,7 @@ export class ApiResponse { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/models/Category.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/models/Category.ts index 5d63fc87a998..bd30cfaf7a4f 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/models/Category.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/models/Category.ts @@ -40,6 +40,7 @@ export class Category { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/models/ObjectSerializer.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/models/ObjectSerializer.ts index dfbb605553b0..5ab4695bcd53 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/models/ObjectSerializer.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/models/ObjectSerializer.ts @@ -68,7 +68,9 @@ export class ObjectSerializer { return expectedType; // the type does not have a discriminator. use it. } else { if (data[discriminatorProperty]) { - var discriminatorType = data[discriminatorProperty]; + var discriminatorValue = data[discriminatorProperty]; + // if it has a mapping we need to map from discriminatorvalue to the actual type name + var discriminatorType = data.discriminatorTypeMap[discriminatorValue] || discriminatorValue; if(typeMap[discriminatorType]){ return discriminatorType; // use the type given in the discriminator } else { diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/models/Order.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/models/Order.ts index a2f84555ff1e..c23fd802963c 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/models/Order.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/models/Order.ts @@ -71,6 +71,7 @@ export class Order { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/models/Pet.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/models/Pet.ts index b3a7ddb9f719..00b19ee6beb1 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/models/Pet.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/models/Pet.ts @@ -73,6 +73,7 @@ export class Pet { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/models/Tag.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/models/Tag.ts index 8c4f6967b9a1..a534e7af0470 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/models/Tag.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/models/Tag.ts @@ -40,6 +40,7 @@ export class Tag { } public constructor() { + } } diff --git a/samples/openapi3/client/petstore/typescript/builds/object_params/models/User.ts b/samples/openapi3/client/petstore/typescript/builds/object_params/models/User.ts index 68528ad3c9e0..61ce3dfddf14 100644 --- a/samples/openapi3/client/petstore/typescript/builds/object_params/models/User.ts +++ b/samples/openapi3/client/petstore/typescript/builds/object_params/models/User.ts @@ -85,6 +85,7 @@ export class User { } public constructor() { + } }