Skip to content

Commit 93d7b07

Browse files
committed
typescript-fetch: Fix model date crash
Fix a runtime crash converting to json when a date or datetime is both nullable AND required. There are 4 cases to account for: | required | nullable | values | |----------|----------|--------| | f | f | string OR undefined | | f | t | string OR null OR undefined | | t | f | string | | t | t | string OR null | And importantly when required and nullable code that would crash on null was being generated. additionally when required is false and nullable is true we still want to allow consumers to be able to pass in `undefined` OR `null` and pass that value to the server. Some servers treat null and undefined differently for some operations so having that ability is pretty reasonable. fix: #21820
1 parent 9c11fcf commit 93d7b07

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@ export function {{classname}}ToJSONTyped(value?: {{#hasReadOnly}}Omit<{{classnam
141141
{{^isReadOnly}}
142142
{{#isPrimitiveType}}
143143
{{#isDateType}}
144-
'{{baseName}}': {{^required}}{{#isNullable}}value['{{name}}'] === null ? null : {{/isNullable}}{{^isNullable}}value['{{name}}'] == null ? undefined : {{/isNullable}}{{/required}}((value['{{name}}']{{#isNullable}} as any{{/isNullable}}){{^required}}{{#isNullable}}?{{/isNullable}}{{/required}}.toISOString().substring(0,10)),
144+
'{{baseName}}': {{^required}}value['{{name}}'] == null ? value['{{name}}'] : {{/required}}{{#isNullable}}{{#required}}value['{{name}}'] == null ? value['{{name}}'] : {{/required}}{{/isNullable}}value['{{name}}'].toISOString().substring(0,10),
145145
{{/isDateType}}
146146
{{#isDateTimeType}}
147-
'{{baseName}}': {{^required}}{{#isNullable}}value['{{name}}'] === null ? null : {{/isNullable}}{{^isNullable}}value['{{name}}'] == null ? undefined : {{/isNullable}}{{/required}}((value['{{name}}']{{#isNullable}} as any{{/isNullable}}){{^required}}{{#isNullable}}?{{/isNullable}}{{/required}}.toISOString()),
147+
'{{baseName}}': {{^required}}value['{{name}}'] == null ? value['{{name}}'] : {{/required}}{{#isNullable}}{{#required}}value['{{name}}'] == null ? value['{{name}}'] : {{/required}}{{/isNullable}}value['{{name}}'].toISOString(),
148148
{{/isDateTimeType}}
149149
{{#isArray}}
150150
'{{baseName}}': {{#uniqueItems}}{{^required}}value['{{name}}'] == null ? undefined : {{/required}}{{#required}}{{#isNullable}}value['{{name}}'] == null ? null : {{/isNullable}}{{/required}}Array.from(value['{{name}}'] as Set<any>){{/uniqueItems}}{{^uniqueItems}}value['{{name}}']{{/uniqueItems}},

0 commit comments

Comments
 (0)