Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ 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;
if ((!('{{name}}' in (value as Record<string, any>)) && !('{{baseName}}' in (value as Record<string, any>))) || ((value as Record<string, any>)['{{name}}'] === undefined && (value as Record<string, any>)['{{baseName}}'] === undefined)) return false;
{{/hasSanitizedName}}
{{^hasSanitizedName}}
if (!('{{name}}' in value) || value['{{name}}'] === undefined) return false;
Expand All @@ -37,8 +37,8 @@ export function instanceOf{{classname}}(value: object): value is {{classname}} {
{{#-first}}
{{#-last}}
{{#hasSanitizedName}}
{{#isString}}if (value['{{name}}'] !== '{{.}}' && value['{{baseName}}'] !== '{{.}}') return false;{{/isString}}
{{^isString}}if (value['{{name}}'] !== {{.}} && value['{{baseName}}'] !== {{.}}) return false;{{/isString}}
{{#isString}}if ((value as Record<string, any>)['{{name}}'] !== '{{.}}' && (value as Record<string, any>)['{{baseName}}'] !== '{{.}}') return false;{{/isString}}
{{^isString}}if ((value as Record<string, any>)['{{name}}'] !== {{.}} && (value as Record<string, any>)['{{baseName}}'] !== {{.}}) return false;{{/isString}}
{{/hasSanitizedName}}
{{^hasSanitizedName}}
{{#isString}}if (value['{{name}}'] !== '{{.}}') return false;{{/isString}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -466,25 +466,26 @@ public void testInstanceOfChecksDiscriminatorValue() throws IOException {

// SnakeOptionOne: discriminator_field (snake_case baseName) vs discriminatorField (camelCase name)
// instanceOf should check both casings for field presence and discriminator value
// (the value is widened to Record<string, any> to avoid TS2590 on wide models)
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'");
TestUtils.assertFileContains(snakeOptionOne, "'discriminatorField' in (value as Record<string, any>)");
TestUtils.assertFileContains(snakeOptionOne, "'discriminator_field' in (value as Record<string, any>)");
TestUtils.assertFileContains(snakeOptionOne, "(value as Record<string, any>)['discriminatorField'] !== 'snakeOptionOne'");
TestUtils.assertFileContains(snakeOptionOne, "(value as Record<string, any>)['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");
TestUtils.assertFileContains(snakeOptionOne, "'someProperty' in (value as Record<string, any>)");
TestUtils.assertFileContains(snakeOptionOne, "'some_property' in (value as Record<string, any>)");

// 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");
TestUtils.assertFileContains(dashedOptionOne, "'discriminatorField' in (value as Record<string, any>)");
TestUtils.assertFileContains(dashedOptionOne, "'discriminator-field' in (value as Record<string, any>)");
TestUtils.assertFileContains(dashedOptionOne, "(value as Record<string, any>)['discriminatorField'] !== 'dashedOptionOne'");
TestUtils.assertFileContains(dashedOptionOne, "(value as Record<string, any>)['discriminator-field'] !== 'dashedOptionOne'");
TestUtils.assertFileContains(dashedOptionOne, "'someProperty' in (value as Record<string, any>)");
TestUtils.assertFileContains(dashedOptionOne, "'some-property' in (value as Record<string, any>)");

// Numeric singleton enum: value check must NOT quote the literal
Path numericModel = Paths.get(output + "/models/NumericSingletonEnumModel.ts");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) && !('enum_string_required' in value)) || (value['enumStringRequired'] === undefined && value['enum_string_required'] === undefined)) return false;
if ((!('enumStringRequired' in (value as Record<string, any>)) && !('enum_string_required' in (value as Record<string, any>))) || ((value as Record<string, any>)['enumStringRequired'] === undefined && (value as Record<string, any>)['enum_string_required'] === undefined)) return false;
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) && !('byte' in value)) || (value['_byte'] === undefined && value['byte'] === undefined)) return false;
if ((!('_byte' in (value as Record<string, any>)) && !('byte' in (value as Record<string, any>))) || ((value as Record<string, any>)['_byte'] === undefined && (value as Record<string, any>)['byte'] === undefined)) return false;
if (!('date' in value) || value['date'] === undefined) return false;
if (!('password' in value) || value['password'] === undefined) return false;
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ export type DashedOptionOneDiscriminatorFieldEnum = typeof DashedOptionOneDiscri
* 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 ((!('discriminatorField' in (value as Record<string, any>)) && !('discriminator-field' in (value as Record<string, any>))) || ((value as Record<string, any>)['discriminatorField'] === undefined && (value as Record<string, any>)['discriminator-field'] === undefined)) return false;
if ((value as Record<string, any>)['discriminatorField'] !== 'dashedOptionOne' && (value as Record<string, any>)['discriminator-field'] !== 'dashedOptionOne') return false;

if ((!('someProperty' in value) && !('some-property' in value)) || (value['someProperty'] === undefined && value['some-property'] === undefined)) return false;
if ((!('someProperty' in (value as Record<string, any>)) && !('some-property' in (value as Record<string, any>))) || ((value as Record<string, any>)['someProperty'] === undefined && (value as Record<string, any>)['some-property'] === undefined)) return false;
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ export type DashedOptionTwoDiscriminatorFieldEnum = typeof DashedOptionTwoDiscri
* 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 ((!('discriminatorField' in (value as Record<string, any>)) && !('discriminator-field' in (value as Record<string, any>))) || ((value as Record<string, any>)['discriminatorField'] === undefined && (value as Record<string, any>)['discriminator-field'] === undefined)) return false;
if ((value as Record<string, any>)['discriminatorField'] !== 'dashedOptionTwo' && (value as Record<string, any>)['discriminator-field'] !== 'dashedOptionTwo') return false;

if ((!('someProperty' in value) && !('some-property' in value)) || (value['someProperty'] === undefined && value['some-property'] === undefined)) return false;
if ((!('someProperty' in (value as Record<string, any>)) && !('some-property' in (value as Record<string, any>))) || ((value as Record<string, any>)['someProperty'] === undefined && (value as Record<string, any>)['some-property'] === undefined)) return false;
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ export type SnakeOptionOneDiscriminatorFieldEnum = typeof SnakeOptionOneDiscrimi
* 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 ((!('discriminatorField' in (value as Record<string, any>)) && !('discriminator_field' in (value as Record<string, any>))) || ((value as Record<string, any>)['discriminatorField'] === undefined && (value as Record<string, any>)['discriminator_field'] === undefined)) return false;
if ((value as Record<string, any>)['discriminatorField'] !== 'snakeOptionOne' && (value as Record<string, any>)['discriminator_field'] !== 'snakeOptionOne') return false;

if ((!('someProperty' in value) && !('some_property' in value)) || (value['someProperty'] === undefined && value['some_property'] === undefined)) return false;
if ((!('someProperty' in (value as Record<string, any>)) && !('some_property' in (value as Record<string, any>))) || ((value as Record<string, any>)['someProperty'] === undefined && (value as Record<string, any>)['some_property'] === undefined)) return false;
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ export type SnakeOptionTwoDiscriminatorFieldEnum = typeof SnakeOptionTwoDiscrimi
* 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 ((!('discriminatorField' in (value as Record<string, any>)) && !('discriminator_field' in (value as Record<string, any>))) || ((value as Record<string, any>)['discriminatorField'] === undefined && (value as Record<string, any>)['discriminator_field'] === undefined)) return false;
if ((value as Record<string, any>)['discriminatorField'] !== 'snakeOptionTwo' && (value as Record<string, any>)['discriminator_field'] !== 'snakeOptionTwo') return false;

if ((!('someProperty' in value) && !('some_property' in value)) || (value['someProperty'] === undefined && value['some_property'] === undefined)) return false;
if ((!('someProperty' in (value as Record<string, any>)) && !('some_property' in (value as Record<string, any>))) || ((value as Record<string, any>)['someProperty'] === undefined && (value as Record<string, any>)['some_property'] === undefined)) return false;
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) && !('class_name' in value)) || (value['className'] === undefined && value['class_name'] === undefined)) return false;
if ((!('className' in (value as Record<string, any>)) && !('class_name' in (value as Record<string, any>))) || ((value as Record<string, any>)['className'] === undefined && (value as Record<string, any>)['class_name'] === undefined)) return false;
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) && !('enum_string_required' in value)) || (value['enumStringRequired'] === undefined && value['enum_string_required'] === undefined)) return false;
if ((!('enumStringRequired' in (value as Record<string, any>)) && !('enum_string_required' in (value as Record<string, any>))) || ((value as Record<string, any>)['enumStringRequired'] === undefined && (value as Record<string, any>)['enum_string_required'] === undefined)) return false;
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) && !('byte' in value)) || (value['_byte'] === undefined && value['byte'] === undefined)) return false;
if ((!('_byte' in (value as Record<string, any>)) && !('byte' in (value as Record<string, any>))) || ((value as Record<string, any>)['_byte'] === undefined && (value as Record<string, any>)['byte'] === undefined)) return false;
if (!('date' in value) || value['date'] === undefined) return false;
if (!('password' in value) || value['password'] === undefined) return false;
return true;
Expand Down
Loading