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 e66f40d55342..cef79bf56abd 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 @@ -1382,6 +1382,7 @@ public ExtendedCodegenProperty(CodegenProperty cp) { this.xmlName = cp.xmlName; this.xmlNamespace = cp.xmlNamespace; this.isXmlWrapped = cp.isXmlWrapped; + this.setHasSanitizedName(cp.getHasSanitizedName()); } @Override diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache index 76de06732fd3..cfebd1f9d40a 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache @@ -25,7 +25,28 @@ import { type {{modelName}}, {{modelName}}FromJSONTyped, {{modelName}}ToJSON, {{ export function instanceOf{{classname}}(value: object): value is {{classname}} { {{#vars}} {{#required}} + {{#hasSanitizedName}} + if ((!('{{name}}' in value) && !('{{baseName}}' in value)) || (value['{{name}}'] === undefined && value['{{baseName}}'] === undefined)) return false; + {{/hasSanitizedName}} + {{^hasSanitizedName}} if (!('{{name}}' in value) || value['{{name}}'] === undefined) return false; + {{/hasSanitizedName}} + {{#isEnum}} + {{#allowableValues}} + {{#values}} + {{#-first}} + {{#-last}} + {{#hasSanitizedName}} + if (value['{{name}}'] !== '{{.}}' && value['{{baseName}}'] !== '{{.}}') return false; + {{/hasSanitizedName}} + {{^hasSanitizedName}} + if (value['{{name}}'] !== '{{.}}') return false; + {{/hasSanitizedName}} + {{/-last}} + {{/-first}} + {{/values}} + {{/allowableValues}} + {{/isEnum}} {{/required}} {{/vars}} return true; 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 da183535f3ad..4c6965d97b6a 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 @@ -445,6 +445,48 @@ public void testOneOfModelsImportNonPrimitiveTypes() throws IOException { TestUtils.assertFileContains(testResponse, "import type { OptionThree } from './OptionThree'"); } + @Test(description = "Verify instanceOf checks discriminator value for single-value enums") + public void testInstanceOfChecksDiscriminatorValue() throws IOException { + File output = generate(Collections.emptyMap(), "src/test/resources/3_0/typescript-fetch/oneOf.yaml"); + + // OptionOne should check discriminator value + Path optionOne = Paths.get(output + "/models/OptionOne.ts"); + TestUtils.assertFileExists(optionOne); + TestUtils.assertFileContains(optionOne, "value['discriminatorField'] !== 'optionOne'"); + + // OptionTwo should check discriminator value + Path optionTwo = Paths.get(output + "/models/OptionTwo.ts"); + TestUtils.assertFileExists(optionTwo); + TestUtils.assertFileContains(optionTwo, "value['discriminatorField'] !== 'optionTwo'"); + + // TestA should NOT have a value check (foo is a plain string, not a single-value enum) + Path testA = Paths.get(output + "/models/TestA.ts"); + TestUtils.assertFileExists(testA); + TestUtils.assertFileNotContains(testA, "value['foo'] !=="); + + // SnakeOptionOne: discriminator_field (snake_case baseName) vs discriminatorField (camelCase name) + // instanceOf should check both casings for field presence and discriminator value + Path snakeOptionOne = Paths.get(output + "/models/SnakeOptionOne.ts"); + TestUtils.assertFileExists(snakeOptionOne); + TestUtils.assertFileContains(snakeOptionOne, "'discriminatorField' in value"); + TestUtils.assertFileContains(snakeOptionOne, "'discriminator_field' in value"); + TestUtils.assertFileContains(snakeOptionOne, "value['discriminatorField'] !== 'snakeOptionOne'"); + TestUtils.assertFileContains(snakeOptionOne, "value['discriminator_field'] !== 'snakeOptionOne'"); + // Also verify the non-enum required field checks both casings + TestUtils.assertFileContains(snakeOptionOne, "'someProperty' in value"); + TestUtils.assertFileContains(snakeOptionOne, "'some_property' in value"); + + // DashedOptionOne: discriminator-field (dashed baseName) vs discriminatorField (camelCase name) + Path dashedOptionOne = Paths.get(output + "/models/DashedOptionOne.ts"); + TestUtils.assertFileExists(dashedOptionOne); + TestUtils.assertFileContains(dashedOptionOne, "'discriminatorField' in value"); + TestUtils.assertFileContains(dashedOptionOne, "'discriminator-field' in value"); + TestUtils.assertFileContains(dashedOptionOne, "value['discriminatorField'] !== 'dashedOptionOne'"); + TestUtils.assertFileContains(dashedOptionOne, "value['discriminator-field'] !== 'dashedOptionOne'"); + TestUtils.assertFileContains(dashedOptionOne, "'someProperty' in value"); + TestUtils.assertFileContains(dashedOptionOne, "'some-property' in value"); + } + @Test(description = "Verify validationAttributes works with withoutRuntimeChecks=true") public void testValidationAttributesWithWithoutRuntimeChecks() throws IOException { Map properties = new HashMap<>(); diff --git a/modules/openapi-generator/src/test/resources/3_0/typescript-fetch/oneOf.yaml b/modules/openapi-generator/src/test/resources/3_0/typescript-fetch/oneOf.yaml index 958b601804dc..4bc0acc424eb 100644 --- a/modules/openapi-generator/src/test/resources/3_0/typescript-fetch/oneOf.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/typescript-fetch/oneOf.yaml @@ -35,6 +35,26 @@ paths: application/json: schema: $ref: '#/components/schemas/TestDiscriminatorResponse' + /test-snake-case-discriminator: + get: + operationId: testSnakeCaseDiscriminator + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TestSnakeCaseDiscriminatorResponse' + /test-dashed-discriminator: + get: + operationId: testDashedDiscriminator + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TestDashedDiscriminatorResponse' components: schemas: TestArrayResponse: @@ -93,4 +113,70 @@ components: - "optionTwo" type: string required: - - discriminatorField \ No newline at end of file + - discriminatorField + TestSnakeCaseDiscriminatorResponse: + discriminator: + propertyName: discriminator_field + mapping: + snakeOptionOne: "#/components/schemas/SnakeOptionOne" + snakeOptionTwo: "#/components/schemas/SnakeOptionTwo" + oneOf: + - $ref: "#/components/schemas/SnakeOptionOne" + - $ref: "#/components/schemas/SnakeOptionTwo" + SnakeOptionOne: + type: object + properties: + discriminator_field: + enum: + - "snakeOptionOne" + type: string + some_property: + type: string + required: + - discriminator_field + - some_property + SnakeOptionTwo: + type: object + properties: + discriminator_field: + enum: + - "snakeOptionTwo" + type: string + some_property: + type: string + required: + - discriminator_field + - some_property + TestDashedDiscriminatorResponse: + discriminator: + propertyName: discriminator-field + mapping: + dashedOptionOne: "#/components/schemas/DashedOptionOne" + dashedOptionTwo: "#/components/schemas/DashedOptionTwo" + oneOf: + - $ref: "#/components/schemas/DashedOptionOne" + - $ref: "#/components/schemas/DashedOptionTwo" + DashedOptionOne: + type: object + properties: + discriminator-field: + enum: + - "dashedOptionOne" + type: string + some-property: + type: string + required: + - discriminator-field + - some-property + DashedOptionTwo: + type: object + properties: + discriminator-field: + enum: + - "dashedOptionTwo" + type: string + some-property: + type: string + required: + - discriminator-field + - some-property \ No newline at end of file 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 a5eecc180343..6890904e62b9 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 @@ -142,7 +142,7 @@ export type EnumTestEnumNumberEnum = typeof EnumTestEnumNumberEnum[keyof typeof * Check if a given object implements the EnumTest interface. */ export function instanceOfEnumTest(value: object): value is EnumTest { - if (!('enumStringRequired' in value) || value['enumStringRequired'] === undefined) return false; + if ((!('enumStringRequired' in value) && !('enum_string_required' in value)) || (value['enumStringRequired'] === undefined && value['enum_string_required'] === undefined)) return false; return true; } diff --git a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/FormatTest.ts b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/FormatTest.ts index f695e974f39d..822bb60636fb 100644 --- a/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/FormatTest.ts +++ b/samples/client/petstore/typescript-fetch/builds/default-v3.0/models/FormatTest.ts @@ -122,7 +122,7 @@ export interface FormatTest { */ export function instanceOfFormatTest(value: object): value is FormatTest { if (!('number' in value) || value['number'] === undefined) return false; - if (!('_byte' in value) || value['_byte'] === undefined) return false; + if ((!('_byte' in value) && !('byte' in value)) || (value['_byte'] === undefined && value['byte'] === undefined)) return false; if (!('date' in value) || value['date'] === undefined) return false; if (!('password' in value) || value['password'] === undefined) return false; return true; diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/.openapi-generator/FILES b/samples/client/petstore/typescript-fetch/builds/oneOf/.openapi-generator/FILES index 20834d7a9398..33963b08ced9 100644 --- a/samples/client/petstore/typescript-fetch/builds/oneOf/.openapi-generator/FILES +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/.openapi-generator/FILES @@ -1,20 +1,32 @@ apis/DefaultApi.ts apis/index.ts +docs/DashedOptionOne.md +docs/DashedOptionTwo.md docs/DefaultApi.md docs/OptionOne.md docs/OptionTwo.md +docs/SnakeOptionOne.md +docs/SnakeOptionTwo.md docs/TestA.md docs/TestArrayResponse.md docs/TestB.md +docs/TestDashedDiscriminatorResponse.md docs/TestDiscriminatorResponse.md docs/TestResponse.md +docs/TestSnakeCaseDiscriminatorResponse.md index.ts +models/DashedOptionOne.ts +models/DashedOptionTwo.ts models/OptionOne.ts models/OptionTwo.ts +models/SnakeOptionOne.ts +models/SnakeOptionTwo.ts models/TestA.ts models/TestArrayResponse.ts models/TestB.ts +models/TestDashedDiscriminatorResponse.ts models/TestDiscriminatorResponse.ts models/TestResponse.ts +models/TestSnakeCaseDiscriminatorResponse.ts models/index.ts runtime.ts diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/apis/DefaultApi.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/apis/DefaultApi.ts index 725866801ae3..45e25fa7df26 100644 --- a/samples/client/petstore/typescript-fetch/builds/oneOf/apis/DefaultApi.ts +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/apis/DefaultApi.ts @@ -16,16 +16,22 @@ import * as runtime from '../runtime'; import type { TestArrayResponse, + TestDashedDiscriminatorResponse, TestDiscriminatorResponse, TestResponse, + TestSnakeCaseDiscriminatorResponse, } from '../models/index'; import { TestArrayResponseFromJSON, TestArrayResponseToJSON, + TestDashedDiscriminatorResponseFromJSON, + TestDashedDiscriminatorResponseToJSON, TestDiscriminatorResponseFromJSON, TestDiscriminatorResponseToJSON, TestResponseFromJSON, TestResponseToJSON, + TestSnakeCaseDiscriminatorResponseFromJSON, + TestSnakeCaseDiscriminatorResponseToJSON, } from '../models/index'; /** @@ -103,6 +109,41 @@ export class DefaultApi extends runtime.BaseAPI { return await response.value(); } + /** + * Creates request options for testDashedDiscriminator without sending the request + */ + async testDashedDiscriminatorRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + + let urlPath = `/test-dashed-discriminator`; + + return { + path: urlPath, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async testDashedDiscriminatorRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const requestOptions = await this.testDashedDiscriminatorRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TestDashedDiscriminatorResponseFromJSON(jsonValue)); + } + + /** + */ + async testDashedDiscriminator(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.testDashedDiscriminatorRaw(initOverrides); + return await response.value(); + } + /** * Creates request options for testDiscriminator without sending the request */ @@ -138,4 +179,39 @@ export class DefaultApi extends runtime.BaseAPI { return await response.value(); } + /** + * Creates request options for testSnakeCaseDiscriminator without sending the request + */ + async testSnakeCaseDiscriminatorRequestOpts(): Promise { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + + let urlPath = `/test-snake-case-discriminator`; + + return { + path: urlPath, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }; + } + + /** + */ + async testSnakeCaseDiscriminatorRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const requestOptions = await this.testSnakeCaseDiscriminatorRequestOpts(); + const response = await this.request(requestOptions, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => TestSnakeCaseDiscriminatorResponseFromJSON(jsonValue)); + } + + /** + */ + async testSnakeCaseDiscriminator(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.testSnakeCaseDiscriminatorRaw(initOverrides); + return await response.value(); + } + } diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DashedOptionOne.md b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DashedOptionOne.md new file mode 100644 index 000000000000..cd9035c6f5f2 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DashedOptionOne.md @@ -0,0 +1,36 @@ + +# DashedOptionOne + + +## Properties + +Name | Type +------------ | ------------- +`discriminatorField` | string +`someProperty` | string + +## Example + +```typescript +import type { DashedOptionOne } from '' + +// TODO: Update the object below with actual values +const example = { + "discriminatorField": null, + "someProperty": null, +} satisfies DashedOptionOne + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DashedOptionOne +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DashedOptionTwo.md b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DashedOptionTwo.md new file mode 100644 index 000000000000..521205205876 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DashedOptionTwo.md @@ -0,0 +1,36 @@ + +# DashedOptionTwo + + +## Properties + +Name | Type +------------ | ------------- +`discriminatorField` | string +`someProperty` | string + +## Example + +```typescript +import type { DashedOptionTwo } from '' + +// TODO: Update the object below with actual values +const example = { + "discriminatorField": null, + "someProperty": null, +} satisfies DashedOptionTwo + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as DashedOptionTwo +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DefaultApi.md b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DefaultApi.md index 270369707540..9be5ff63ba97 100644 --- a/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DefaultApi.md +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/DefaultApi.md @@ -6,7 +6,9 @@ All URIs are relative to *http://localhost:3000* |------------- | ------------- | -------------| | [**test**](DefaultApi.md#test) | **GET** /test | | | [**testArray**](DefaultApi.md#testarray) | **GET** /test-array | | +| [**testDashedDiscriminator**](DefaultApi.md#testdasheddiscriminator) | **GET** /test-dashed-discriminator | | | [**testDiscriminator**](DefaultApi.md#testdiscriminator) | **GET** /test-discriminator | | +| [**testSnakeCaseDiscriminator**](DefaultApi.md#testsnakecasediscriminator) | **GET** /test-snake-case-discriminator | | @@ -124,6 +126,63 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) +## testDashedDiscriminator + +> TestDashedDiscriminatorResponse testDashedDiscriminator() + + + +### Example + +```ts +import { + Configuration, + DefaultApi, +} from ''; +import type { TestDashedDiscriminatorRequest } from ''; + +async function example() { + console.log("🚀 Testing SDK..."); + const api = new DefaultApi(); + + try { + const data = await api.testDashedDiscriminator(); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**TestDashedDiscriminatorResponse**](TestDashedDiscriminatorResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + + ## testDiscriminator > TestDiscriminatorResponse testDiscriminator() @@ -180,3 +239,60 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +## testSnakeCaseDiscriminator + +> TestSnakeCaseDiscriminatorResponse testSnakeCaseDiscriminator() + + + +### Example + +```ts +import { + Configuration, + DefaultApi, +} from ''; +import type { TestSnakeCaseDiscriminatorRequest } from ''; + +async function example() { + console.log("🚀 Testing SDK..."); + const api = new DefaultApi(); + + try { + const data = await api.testSnakeCaseDiscriminator(); + console.log(data); + } catch (error) { + console.error(error); + } +} + +// Run the test +example().catch(console.error); +``` + +### Parameters + +This endpoint does not need any parameter. + +### Return type + +[**TestSnakeCaseDiscriminatorResponse**](TestSnakeCaseDiscriminatorResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + +- **Content-Type**: Not defined +- **Accept**: `application/json` + + +### HTTP response details +| Status code | Description | Response headers | +|-------------|-------------|------------------| +| **200** | OK | - | + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/docs/SnakeOptionOne.md b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/SnakeOptionOne.md new file mode 100644 index 000000000000..c8d5af7be800 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/SnakeOptionOne.md @@ -0,0 +1,36 @@ + +# SnakeOptionOne + + +## Properties + +Name | Type +------------ | ------------- +`discriminatorField` | string +`someProperty` | string + +## Example + +```typescript +import type { SnakeOptionOne } from '' + +// TODO: Update the object below with actual values +const example = { + "discriminatorField": null, + "someProperty": null, +} satisfies SnakeOptionOne + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as SnakeOptionOne +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/docs/SnakeOptionTwo.md b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/SnakeOptionTwo.md new file mode 100644 index 000000000000..0eed7ae3be8d --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/SnakeOptionTwo.md @@ -0,0 +1,36 @@ + +# SnakeOptionTwo + + +## Properties + +Name | Type +------------ | ------------- +`discriminatorField` | string +`someProperty` | string + +## Example + +```typescript +import type { SnakeOptionTwo } from '' + +// TODO: Update the object below with actual values +const example = { + "discriminatorField": null, + "someProperty": null, +} satisfies SnakeOptionTwo + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as SnakeOptionTwo +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/docs/TestDashedDiscriminatorResponse.md b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/TestDashedDiscriminatorResponse.md new file mode 100644 index 000000000000..fb4ff7140908 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/TestDashedDiscriminatorResponse.md @@ -0,0 +1,36 @@ + +# TestDashedDiscriminatorResponse + + +## Properties + +Name | Type +------------ | ------------- +`discriminatorField` | string +`someProperty` | string + +## Example + +```typescript +import type { TestDashedDiscriminatorResponse } from '' + +// TODO: Update the object below with actual values +const example = { + "discriminatorField": null, + "someProperty": null, +} satisfies TestDashedDiscriminatorResponse + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as TestDashedDiscriminatorResponse +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/docs/TestSnakeCaseDiscriminatorResponse.md b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/TestSnakeCaseDiscriminatorResponse.md new file mode 100644 index 000000000000..162301502100 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/docs/TestSnakeCaseDiscriminatorResponse.md @@ -0,0 +1,36 @@ + +# TestSnakeCaseDiscriminatorResponse + + +## Properties + +Name | Type +------------ | ------------- +`discriminatorField` | string +`someProperty` | string + +## Example + +```typescript +import type { TestSnakeCaseDiscriminatorResponse } from '' + +// TODO: Update the object below with actual values +const example = { + "discriminatorField": null, + "someProperty": null, +} satisfies TestSnakeCaseDiscriminatorResponse + +console.log(example) + +// Convert the instance to a JSON string +const exampleJSON: string = JSON.stringify(example) +console.log(exampleJSON) + +// Parse the JSON string back to an object +const exampleParsed = JSON.parse(exampleJSON) as TestSnakeCaseDiscriminatorResponse +console.log(exampleParsed) +``` + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/DashedOptionOne.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/DashedOptionOne.ts new file mode 100644 index 000000000000..b68f211af9b0 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/DashedOptionOne.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * testing oneOf without discriminator + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface DashedOptionOne + */ +export interface DashedOptionOne { + /** + * + * @type {DashedOptionOneDiscriminatorFieldEnum} + * @memberof DashedOptionOne + */ + discriminatorField: DashedOptionOneDiscriminatorFieldEnum; + /** + * + * @type {string} + * @memberof DashedOptionOne + */ + someProperty: string; +} + + +/** + * @export + */ +export const DashedOptionOneDiscriminatorFieldEnum = { + DashedOptionOne: 'dashedOptionOne' +} as const; +export type DashedOptionOneDiscriminatorFieldEnum = typeof DashedOptionOneDiscriminatorFieldEnum[keyof typeof DashedOptionOneDiscriminatorFieldEnum]; + + +/** + * Check if a given object implements the DashedOptionOne interface. + */ +export function instanceOfDashedOptionOne(value: object): value is DashedOptionOne { + if ((!('discriminatorField' in value) && !('discriminator-field' in value)) || (value['discriminatorField'] === undefined && value['discriminator-field'] === undefined)) return false; + if (value['discriminatorField'] !== 'dashedOptionOne' && value['discriminator-field'] !== 'dashedOptionOne') return false; + if ((!('someProperty' in value) && !('some-property' in value)) || (value['someProperty'] === undefined && value['some-property'] === undefined)) return false; + return true; +} + +export function DashedOptionOneFromJSON(json: any): DashedOptionOne { + return DashedOptionOneFromJSONTyped(json, false); +} + +export function DashedOptionOneFromJSONTyped(json: any, ignoreDiscriminator: boolean): DashedOptionOne { + if (json == null) { + return json; + } + return { + + 'discriminatorField': json['discriminator-field'], + 'someProperty': json['some-property'], + }; +} + +export function DashedOptionOneToJSON(json: any): DashedOptionOne { + return DashedOptionOneToJSONTyped(json, false); +} + +export function DashedOptionOneToJSONTyped(value?: DashedOptionOne | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'discriminator-field': value['discriminatorField'], + 'some-property': value['someProperty'], + }; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/DashedOptionTwo.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/DashedOptionTwo.ts new file mode 100644 index 000000000000..82b85c106023 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/DashedOptionTwo.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * testing oneOf without discriminator + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface DashedOptionTwo + */ +export interface DashedOptionTwo { + /** + * + * @type {DashedOptionTwoDiscriminatorFieldEnum} + * @memberof DashedOptionTwo + */ + discriminatorField: DashedOptionTwoDiscriminatorFieldEnum; + /** + * + * @type {string} + * @memberof DashedOptionTwo + */ + someProperty: string; +} + + +/** + * @export + */ +export const DashedOptionTwoDiscriminatorFieldEnum = { + DashedOptionTwo: 'dashedOptionTwo' +} as const; +export type DashedOptionTwoDiscriminatorFieldEnum = typeof DashedOptionTwoDiscriminatorFieldEnum[keyof typeof DashedOptionTwoDiscriminatorFieldEnum]; + + +/** + * Check if a given object implements the DashedOptionTwo interface. + */ +export function instanceOfDashedOptionTwo(value: object): value is DashedOptionTwo { + if ((!('discriminatorField' in value) && !('discriminator-field' in value)) || (value['discriminatorField'] === undefined && value['discriminator-field'] === undefined)) return false; + if (value['discriminatorField'] !== 'dashedOptionTwo' && value['discriminator-field'] !== 'dashedOptionTwo') return false; + if ((!('someProperty' in value) && !('some-property' in value)) || (value['someProperty'] === undefined && value['some-property'] === undefined)) return false; + return true; +} + +export function DashedOptionTwoFromJSON(json: any): DashedOptionTwo { + return DashedOptionTwoFromJSONTyped(json, false); +} + +export function DashedOptionTwoFromJSONTyped(json: any, ignoreDiscriminator: boolean): DashedOptionTwo { + if (json == null) { + return json; + } + return { + + 'discriminatorField': json['discriminator-field'], + 'someProperty': json['some-property'], + }; +} + +export function DashedOptionTwoToJSON(json: any): DashedOptionTwo { + return DashedOptionTwoToJSONTyped(json, false); +} + +export function DashedOptionTwoToJSONTyped(value?: DashedOptionTwo | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'discriminator-field': value['discriminatorField'], + 'some-property': value['someProperty'], + }; +} + 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 11203f329df9..6f706c9d3592 100644 --- a/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionOne.ts +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionOne.ts @@ -42,6 +42,7 @@ export type OptionOneDiscriminatorFieldEnum = typeof OptionOneDiscriminatorField */ export function instanceOfOptionOne(value: object): value is OptionOne { if (!('discriminatorField' in value) || value['discriminatorField'] === undefined) return false; + if (value['discriminatorField'] !== 'optionOne') return false; return true; } 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 67fb9241746f..67df352e4660 100644 --- a/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionTwo.ts +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/OptionTwo.ts @@ -42,6 +42,7 @@ export type OptionTwoDiscriminatorFieldEnum = typeof OptionTwoDiscriminatorField */ export function instanceOfOptionTwo(value: object): value is OptionTwo { if (!('discriminatorField' in value) || value['discriminatorField'] === undefined) return false; + if (value['discriminatorField'] !== 'optionTwo') return false; return true; } diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/SnakeOptionOne.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/SnakeOptionOne.ts new file mode 100644 index 000000000000..389d711fc4aa --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/SnakeOptionOne.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * testing oneOf without discriminator + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface SnakeOptionOne + */ +export interface SnakeOptionOne { + /** + * + * @type {SnakeOptionOneDiscriminatorFieldEnum} + * @memberof SnakeOptionOne + */ + discriminatorField: SnakeOptionOneDiscriminatorFieldEnum; + /** + * + * @type {string} + * @memberof SnakeOptionOne + */ + someProperty: string; +} + + +/** + * @export + */ +export const SnakeOptionOneDiscriminatorFieldEnum = { + SnakeOptionOne: 'snakeOptionOne' +} as const; +export type SnakeOptionOneDiscriminatorFieldEnum = typeof SnakeOptionOneDiscriminatorFieldEnum[keyof typeof SnakeOptionOneDiscriminatorFieldEnum]; + + +/** + * Check if a given object implements the SnakeOptionOne interface. + */ +export function instanceOfSnakeOptionOne(value: object): value is SnakeOptionOne { + if ((!('discriminatorField' in value) && !('discriminator_field' in value)) || (value['discriminatorField'] === undefined && value['discriminator_field'] === undefined)) return false; + if (value['discriminatorField'] !== 'snakeOptionOne' && value['discriminator_field'] !== 'snakeOptionOne') return false; + if ((!('someProperty' in value) && !('some_property' in value)) || (value['someProperty'] === undefined && value['some_property'] === undefined)) return false; + return true; +} + +export function SnakeOptionOneFromJSON(json: any): SnakeOptionOne { + return SnakeOptionOneFromJSONTyped(json, false); +} + +export function SnakeOptionOneFromJSONTyped(json: any, ignoreDiscriminator: boolean): SnakeOptionOne { + if (json == null) { + return json; + } + return { + + 'discriminatorField': json['discriminator_field'], + 'someProperty': json['some_property'], + }; +} + +export function SnakeOptionOneToJSON(json: any): SnakeOptionOne { + return SnakeOptionOneToJSONTyped(json, false); +} + +export function SnakeOptionOneToJSONTyped(value?: SnakeOptionOne | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'discriminator_field': value['discriminatorField'], + 'some_property': value['someProperty'], + }; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/SnakeOptionTwo.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/SnakeOptionTwo.ts new file mode 100644 index 000000000000..10a96d3698d6 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/SnakeOptionTwo.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * testing oneOf without discriminator + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface SnakeOptionTwo + */ +export interface SnakeOptionTwo { + /** + * + * @type {SnakeOptionTwoDiscriminatorFieldEnum} + * @memberof SnakeOptionTwo + */ + discriminatorField: SnakeOptionTwoDiscriminatorFieldEnum; + /** + * + * @type {string} + * @memberof SnakeOptionTwo + */ + someProperty: string; +} + + +/** + * @export + */ +export const SnakeOptionTwoDiscriminatorFieldEnum = { + SnakeOptionTwo: 'snakeOptionTwo' +} as const; +export type SnakeOptionTwoDiscriminatorFieldEnum = typeof SnakeOptionTwoDiscriminatorFieldEnum[keyof typeof SnakeOptionTwoDiscriminatorFieldEnum]; + + +/** + * Check if a given object implements the SnakeOptionTwo interface. + */ +export function instanceOfSnakeOptionTwo(value: object): value is SnakeOptionTwo { + if ((!('discriminatorField' in value) && !('discriminator_field' in value)) || (value['discriminatorField'] === undefined && value['discriminator_field'] === undefined)) return false; + if (value['discriminatorField'] !== 'snakeOptionTwo' && value['discriminator_field'] !== 'snakeOptionTwo') return false; + if ((!('someProperty' in value) && !('some_property' in value)) || (value['someProperty'] === undefined && value['some_property'] === undefined)) return false; + return true; +} + +export function SnakeOptionTwoFromJSON(json: any): SnakeOptionTwo { + return SnakeOptionTwoFromJSONTyped(json, false); +} + +export function SnakeOptionTwoFromJSONTyped(json: any, ignoreDiscriminator: boolean): SnakeOptionTwo { + if (json == null) { + return json; + } + return { + + 'discriminatorField': json['discriminator_field'], + 'someProperty': json['some_property'], + }; +} + +export function SnakeOptionTwoToJSON(json: any): SnakeOptionTwo { + return SnakeOptionTwoToJSONTyped(json, false); +} + +export function SnakeOptionTwoToJSONTyped(value?: SnakeOptionTwo | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'discriminator_field': value['discriminatorField'], + 'some_property': value['someProperty'], + }; +} + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/TestDashedDiscriminatorResponse.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/TestDashedDiscriminatorResponse.ts new file mode 100644 index 000000000000..dc5d587d0429 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/TestDashedDiscriminatorResponse.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * testing oneOf without discriminator + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { DashedOptionOne } from './DashedOptionOne'; +import { + instanceOfDashedOptionOne, + DashedOptionOneFromJSON, + DashedOptionOneFromJSONTyped, + DashedOptionOneToJSON, +} from './DashedOptionOne'; +import type { DashedOptionTwo } from './DashedOptionTwo'; +import { + instanceOfDashedOptionTwo, + DashedOptionTwoFromJSON, + DashedOptionTwoFromJSONTyped, + DashedOptionTwoToJSON, +} from './DashedOptionTwo'; + +/** + * @type TestDashedDiscriminatorResponse + * + * @export + */ +export type TestDashedDiscriminatorResponse = { discriminatorField: 'dashedOptionOne' } & DashedOptionOne | { discriminatorField: 'dashedOptionTwo' } & DashedOptionTwo; + +export function TestDashedDiscriminatorResponseFromJSON(json: any): TestDashedDiscriminatorResponse { + return TestDashedDiscriminatorResponseFromJSONTyped(json, false); +} + +export function TestDashedDiscriminatorResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TestDashedDiscriminatorResponse { + if (json == null) { + return json; + } + switch (json['discriminator-field']) { + case 'dashedOptionOne': + return Object.assign({}, DashedOptionOneFromJSONTyped(json, true), { discriminatorField: 'dashedOptionOne' } as const); + case 'dashedOptionTwo': + return Object.assign({}, DashedOptionTwoFromJSONTyped(json, true), { discriminatorField: 'dashedOptionTwo' } as const); + default: + return json; + } +} + +export function TestDashedDiscriminatorResponseToJSON(json: any): any { + return TestDashedDiscriminatorResponseToJSONTyped(json, false); +} + +export function TestDashedDiscriminatorResponseToJSONTyped(value?: TestDashedDiscriminatorResponse | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + switch (value['discriminatorField']) { + case 'dashedOptionOne': + return Object.assign({}, DashedOptionOneToJSON(value), { discriminatorField: 'dashedOptionOne' } as const); + case 'dashedOptionTwo': + return Object.assign({}, DashedOptionTwoToJSON(value), { discriminatorField: 'dashedOptionTwo' } as const); + default: + return value; + } +} + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/TestSnakeCaseDiscriminatorResponse.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/TestSnakeCaseDiscriminatorResponse.ts new file mode 100644 index 000000000000..88da169b3516 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/TestSnakeCaseDiscriminatorResponse.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * testing oneOf without discriminator + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { SnakeOptionOne } from './SnakeOptionOne'; +import { + instanceOfSnakeOptionOne, + SnakeOptionOneFromJSON, + SnakeOptionOneFromJSONTyped, + SnakeOptionOneToJSON, +} from './SnakeOptionOne'; +import type { SnakeOptionTwo } from './SnakeOptionTwo'; +import { + instanceOfSnakeOptionTwo, + SnakeOptionTwoFromJSON, + SnakeOptionTwoFromJSONTyped, + SnakeOptionTwoToJSON, +} from './SnakeOptionTwo'; + +/** + * @type TestSnakeCaseDiscriminatorResponse + * + * @export + */ +export type TestSnakeCaseDiscriminatorResponse = { discriminatorField: 'snakeOptionOne' } & SnakeOptionOne | { discriminatorField: 'snakeOptionTwo' } & SnakeOptionTwo; + +export function TestSnakeCaseDiscriminatorResponseFromJSON(json: any): TestSnakeCaseDiscriminatorResponse { + return TestSnakeCaseDiscriminatorResponseFromJSONTyped(json, false); +} + +export function TestSnakeCaseDiscriminatorResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TestSnakeCaseDiscriminatorResponse { + if (json == null) { + return json; + } + switch (json['discriminator_field']) { + case 'snakeOptionOne': + return Object.assign({}, SnakeOptionOneFromJSONTyped(json, true), { discriminatorField: 'snakeOptionOne' } as const); + case 'snakeOptionTwo': + return Object.assign({}, SnakeOptionTwoFromJSONTyped(json, true), { discriminatorField: 'snakeOptionTwo' } as const); + default: + return json; + } +} + +export function TestSnakeCaseDiscriminatorResponseToJSON(json: any): any { + return TestSnakeCaseDiscriminatorResponseToJSONTyped(json, false); +} + +export function TestSnakeCaseDiscriminatorResponseToJSONTyped(value?: TestSnakeCaseDiscriminatorResponse | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + switch (value['discriminatorField']) { + case 'snakeOptionOne': + return Object.assign({}, SnakeOptionOneToJSON(value), { discriminatorField: 'snakeOptionOne' } as const); + case 'snakeOptionTwo': + return Object.assign({}, SnakeOptionTwoToJSON(value), { discriminatorField: 'snakeOptionTwo' } as const); + default: + return value; + } +} + diff --git a/samples/client/petstore/typescript-fetch/builds/oneOf/models/index.ts b/samples/client/petstore/typescript-fetch/builds/oneOf/models/index.ts index 79f8303e9ed5..dd6f84c6f02d 100644 --- a/samples/client/petstore/typescript-fetch/builds/oneOf/models/index.ts +++ b/samples/client/petstore/typescript-fetch/builds/oneOf/models/index.ts @@ -1,9 +1,15 @@ /* tslint:disable */ /* eslint-disable */ +export * from './DashedOptionOne'; +export * from './DashedOptionTwo'; export * from './OptionOne'; export * from './OptionTwo'; +export * from './SnakeOptionOne'; +export * from './SnakeOptionTwo'; export * from './TestA'; export * from './TestArrayResponse'; export * from './TestB'; +export * from './TestDashedDiscriminatorResponse'; export * from './TestDiscriminatorResponse'; export * from './TestResponse'; +export * from './TestSnakeCaseDiscriminatorResponse'; diff --git a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Animal.ts b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Animal.ts index 6d1cb238fc7a..790ff584911a 100644 --- a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Animal.ts +++ b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/Animal.ts @@ -39,7 +39,7 @@ export interface Animal { * Check if a given object implements the Animal interface. */ export function instanceOfAnimal(value: object): value is Animal { - if (!('className' in value) || value['className'] === undefined) return false; + if ((!('className' in value) && !('class_name' in value)) || (value['className'] === undefined && value['class_name'] === undefined)) return false; return true; } 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 a5eecc180343..6890904e62b9 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 @@ -142,7 +142,7 @@ export type EnumTestEnumNumberEnum = typeof EnumTestEnumNumberEnum[keyof typeof * Check if a given object implements the EnumTest interface. */ export function instanceOfEnumTest(value: object): value is EnumTest { - if (!('enumStringRequired' in value) || value['enumStringRequired'] === undefined) return false; + if ((!('enumStringRequired' in value) && !('enum_string_required' in value)) || (value['enumStringRequired'] === undefined && value['enum_string_required'] === undefined)) return false; return true; } diff --git a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/FormatTest.ts b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/FormatTest.ts index f695e974f39d..822bb60636fb 100644 --- a/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/FormatTest.ts +++ b/samples/client/petstore/typescript-fetch/builds/snakecase-discriminator/models/FormatTest.ts @@ -122,7 +122,7 @@ export interface FormatTest { */ export function instanceOfFormatTest(value: object): value is FormatTest { if (!('number' in value) || value['number'] === undefined) return false; - if (!('_byte' in value) || value['_byte'] === undefined) return false; + if ((!('_byte' in value) && !('byte' in value)) || (value['_byte'] === undefined && value['byte'] === undefined)) return false; if (!('date' in value) || value['date'] === undefined) return false; if (!('password' in value) || value['password'] === undefined) return false; return true;