OpenAPITools / OpenAPITools/openapi-generator

[BUG] [TYPESCRIPT] [DART] Missing enum key with non-latin characters

Open
#16,928 0 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Issue: Bug
Dominant language
Java
Stars
26.8k
Forks
7.7k
PR merge metrics
PR metrics pending

Description

Bug Report Checklist
  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

First enum key-value generates with missing key 1 when enum values contain non-latin characters

openapi-generator version

typescript-angular

export namespace ResOrderDto {
    export type StatusEnum = 'À' | 'Á' | 'Â' | 'Ã' | 'Ä';
    export const StatusEnum = {
        : 'À' as StatusEnum,
        2: 'Á' as StatusEnum,
        3: 'Â' as StatusEnum,
        4: 'Ã' as StatusEnum,
        5: 'Ä' as StatusEnum
    };
}

dart-dio

class ResOrderDtoStatusEnum extends EnumClass {

  @BuiltValueEnumConst(wireName: r'À')
  static const ResOrderDtoStatusEnum  = _$resOrderDtoStatusEnum_;
  @BuiltValueEnumConst(wireName: r'Á')
  static const ResOrderDtoStatusEnum 2 = _$resOrderDtoStatusEnum_2;
  @BuiltValueEnumConst(wireName: r'Â')
  static const ResOrderDtoStatusEnum 3 = _$resOrderDtoStatusEnum_3;
  @BuiltValueEnumConst(wireName: r'Ã')
  static const ResOrderDtoStatusEnum 4 = _$resOrderDtoStatusEnum_4;
  @BuiltValueEnumConst(wireName: r'Ä')
  static const ResOrderDtoStatusEnum 5 = _$resOrderDtoStatusEnum_5;

  static Serializer<ResOrderDtoStatusEnum> get serializer => _$resOrderDtoStatusEnumSerializer;

  const ResOrderDtoStatusEnum._(String name): super(name);

  static BuiltSet<ResOrderDtoStatusEnum> get values => _$resOrderDtoStatusEnumValues;
  static ResOrderDtoStatusEnum valueOf(String name) => _$resOrderDtoStatusEnumValueOf(name);
}
OpenAPI declaration file content or url

Json url

Generation Details

@openapitools/openapi-generator-cli (npm package) was used to generate code
Npm package downloaded lastest jar file (7.0.1.jar)

Following openapitools.json was used to configure CLI

{
  "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
  "spaces": 2,
  "generator-cli": {
    "version": "7.0.1",
    "generators": {
      "mobile": {
        "generatorName": "dart-dio",
        "output": "#{cwd}/mobile/#{name}",
        "glob": "swagger/spec.json",
        "skip-validate-spec": true
      },
      "front": {
        "generatorName": "typescript-angular",
        "output": "#{cwd}/front/#{name}",
        "glob": "swagger/spec.json",
        "skip-validate-spec": true
      }
    }
  }
}

Executing npm run openapi-generator-cli generate led to next generator calls:

java -jar "E:\Projects\backend\node_modules\@openapitools\openapi-generator-cli\versions\7.0.1.jar" generate --input-spec="E:\Projects\backend\swagger\spec.json" --generator-name="typescript-angular" --output="E:\Projects\backend/front/spec" --skip-validate-spec
java -jar "E:\Projects\backend\node_modules\@openapitools\openapi-generator-cli\versions\7.0.1.jar" generate --input-spec="E:\Projects\backend\swagger\spec.json" --generator-name="dart-dio" --output="E:\Projects\backend/mobile/spec" --skip-validate-spec
Steps to reproduce
  1. npm run openapi-generator-cli generate
Related issues/PRs

Issue 893 had issues with Japanese characters, but author used different languages and had different problem

Suggest a fix

Not skipping 1 would be nice ☻

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with the linked OpenAPI declaration and the shown npm run openapi-generator-cli generate command, using the typescript-angular and dart-dio generators. Inspect how enum names are produced for non-Latin values and compare the generated outputs with the expected enum keys. Done means both generators produce valid, non-missing identifiers for all listed enum values.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart, java, openapi, typescript
Domain
api, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.