github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/typescript-fetch/modelGeneric.mustache (about)

     1  import { exists, mapValues } from '../runtime';
     2  {{#hasImports}}
     3  import {
     4      {{#imports}}
     5      {{{.}}},
     6      {{.}}FromJSON,
     7      {{.}}FromJSONTyped,
     8      {{.}}ToJSON,
     9      {{/imports}}
    10  } from './';
    11  
    12  {{/hasImports}}
    13  {{#discriminator}}
    14  import {
    15  {{#discriminator.mappedModels}}
    16       {{modelName}}FromJSONTyped{{^-last}},{{/-last}}
    17  {{/discriminator.mappedModels}}
    18  } from './';
    19  
    20  {{/discriminator}}
    21  /**
    22   * {{{description}}}
    23   * @export
    24   * @interface {{classname}}
    25   */
    26  export interface {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{
    27  {{#additionalPropertiesType}}
    28      [key: string]: {{{additionalPropertiesType}}}{{#hasVars}} | any{{/hasVars}};
    29  {{/additionalPropertiesType}}
    30  {{#vars}}
    31      /**
    32       * {{{description}}}
    33       * @type {{=<% %>=}}{<%&datatype%>}<%={{ }}=%>
    34       * @memberof {{classname}}
    35       */
    36      {{#isReadOnly}}readonly {{/isReadOnly}}{{name}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}};
    37  {{/vars}}
    38  }
    39  
    40  export function {{classname}}FromJSON(json: any): {{classname}} {
    41      return {{classname}}FromJSONTyped(json, false);
    42  }
    43  
    44  export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boolean): {{classname}} {
    45      {{#hasVars}}
    46      if ((json === undefined) || (json === null)) {
    47          return json;
    48      }
    49  {{#discriminator}}
    50      if (!ignoreDiscriminator) {
    51  {{#discriminator.mappedModels}}
    52          if (json['{{discriminator.propertyName}}'] === '{{mappingName}}') {
    53              return {{modelName}}FromJSONTyped(json, true);
    54          }
    55  {{/discriminator.mappedModels}}
    56      }
    57  {{/discriminator}}
    58      return {
    59          {{#parent}}...{{{parent}}}FromJSONTyped(json, ignoreDiscriminator),{{/parent}}
    60          {{#additionalPropertiesType}}
    61              ...json,
    62          {{/additionalPropertiesType}}
    63          {{#vars}}
    64          {{#isPrimitiveType}}
    65          {{#isDate}}
    66          '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}({{#isNullable}}json['{{baseName}}'] === null ? null : {{/isNullable}}new Date(json['{{baseName}}'])),
    67          {{/isDate}}
    68          {{#isDateTime}}
    69          '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}({{#isNullable}}json['{{baseName}}'] === null ? null : {{/isNullable}}new Date(json['{{baseName}}'])),
    70          {{/isDateTime}}
    71          {{^isDate}}
    72          {{^isDateTime}}
    73          '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}json['{{baseName}}'],
    74          {{/isDateTime}}
    75          {{/isDate}}
    76          {{/isPrimitiveType}}
    77          {{^isPrimitiveType}}
    78          {{#isArray}}
    79          '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}({{#isNullable}}json['{{baseName}}'] === null ? null : {{/isNullable}}(json['{{baseName}}'] as Array<any>).map({{#items}}{{datatype}}{{/items}}FromJSON)),
    80          {{/isArray}}
    81          {{#isMap}}
    82          '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}({{#isNullable}}json['{{baseName}}'] === null ? null : {{/isNullable}}mapValues(json['{{baseName}}'], {{#items}}{{datatype}}{{/items}}FromJSON)),
    83          {{/isMap}}
    84          {{^isArray}}
    85          {{^isMap}}
    86          {{^isFreeFormObject}}
    87          '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}{{datatype}}FromJSON(json['{{baseName}}']),
    88          {{/isFreeFormObject}}
    89          {{#isFreeFormObject}}
    90          '{{name}}': {{^required}}!exists(json, '{{baseName}}') ? undefined : {{/required}}json['{{baseName}}'],
    91          {{/isFreeFormObject}}
    92          {{/isMap}}
    93          {{/isArray}}
    94          {{/isPrimitiveType}}
    95          {{/vars}}
    96      };
    97      {{/hasVars}}
    98      {{^hasVars}}
    99      return json;
   100      {{/hasVars}}
   101  }
   102  
   103  export function {{classname}}ToJSON(value?: {{classname}} | null): any {
   104      {{#hasVars}}
   105      if (value === undefined) {
   106          return undefined;
   107      }
   108      if (value === null) {
   109          return null;
   110      }
   111      return {
   112          {{#parent}}...{{{parent}}}ToJSON(value),{{/parent}}
   113          {{#additionalPropertiesType}}
   114              ...value,
   115          {{/additionalPropertiesType}}
   116          {{#vars}}
   117          {{^isReadOnly}}
   118          {{#isPrimitiveType}}
   119          '{{baseName}}': {{#isDate}}{{^required}}value.{{name}} === undefined ? undefined : {{/required}}({{#isNullable}}value.{{name}} === null ? null : {{/isNullable}}value.{{name}}.toISOString().substr(0,10)){{/isDate}}{{#isDateTime}}{{^required}}value.{{name}} === undefined ? undefined : {{/required}}({{#isNullable}}value.{{name}} === null ? null : {{/isNullable}}value.{{name}}.toISOString()){{/isDateTime}}{{^isDate}}{{^isDateTime}}value.{{name}}{{/isDateTime}}{{/isDate}},
   120          {{/isPrimitiveType}}
   121          {{^isPrimitiveType}}
   122          {{#isArray}}
   123          '{{baseName}}': {{^required}}value.{{name}} === undefined ? undefined : {{/required}}({{#isNullable}}value.{{name}} === null ? null : {{/isNullable}}(value.{{name}} as Array<any>).map({{#items}}{{datatype}}{{/items}}ToJSON)),
   124          {{/isArray}}
   125          {{#isMap}}
   126          '{{baseName}}': {{^required}}value.{{name}} === undefined ? undefined : {{/required}}({{#isNullable}}value.{{name}} === null ? null : {{/isNullable}}mapValues(value.{{name}}, {{#items}}{{datatype}}{{/items}}ToJSON)),
   127          {{/isMap}}
   128          {{^isArray}}
   129          {{^isMap}}
   130          {{^isFreeFormObject}}
   131          '{{baseName}}': {{datatype}}ToJSON(value.{{name}}),
   132          {{/isFreeFormObject}}
   133          {{#isFreeFormObject}}
   134          '{{baseName}}': value.{{name}},
   135          {{/isFreeFormObject}}
   136          {{/isMap}}
   137          {{/isArray}}
   138          {{/isPrimitiveType}}
   139          {{/isReadOnly}}
   140          {{/vars}}
   141      };
   142      {{/hasVars}}
   143      {{^hasVars}}
   144      return value;
   145      {{/hasVars}}
   146  }
   147  
   148  {{#hasEnums}}
   149  {{#vars}}
   150  {{#isEnum}}
   151  /**
   152  * @export
   153  * @enum {string}
   154  */
   155  export enum {{classname}}{{enumName}} {
   156  {{#allowableValues}}
   157      {{#enumVars}}
   158      {{{name}}} = {{{value}}}{{^-last}},{{/-last}}
   159      {{/enumVars}}
   160  {{/allowableValues}}
   161  }
   162  {{/isEnum}}
   163  {{/vars}}
   164  
   165  {{/hasEnums}}