openapi-ts / openapi-typescript

Generate TypeScript types from OpenAPI 3 specs
https://openapi-ts.dev
MIT License
5.47k stars 450 forks source link

Problem using --array-length when minItems equals to maxItems #1781

Open Couc opened 1 month ago

Couc commented 1 month ago

Hello everyone :) Description

When using --array-length flag and minItems, maxItems with identical values in schema definition, the generated interface is [].

Name Version
openapi-typescript >=7.0.0
Node.js 20.15.0
OS + version Windows 10

Reproduction

Run openapi-typescript with --array-length flag set to true on yaml :

openapi: 3.1.0
info:
  title: Webhook Example
  summary: My lovely API
  version: 1.0.0
  description: some description
  license:
    name: MIT
    identifier: MIT
    url: https://opensource.org/licenses/MIT
jsonSchemaDialect: https://spec.openapis.org/oas/3.1/dialect/base
tags:
  - name: Gameplay
    description: gameplay tag
servers:
  - url: https://redocly-example.com/{var}
    variables:
      var:
        enum:
          - a
          - b
        default: b
security: []
paths:
  /pets/items:
    get:
      operationId: getTest
      summary: Get Test! Foo! Etc!
      responses:
        200:
          description: '200'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                minItems: 3
                maxItems: 3
        400:
          description: An error response

Expected Result The part "application/json" should be typed as "[string, string, string]" in :

responses: {
            /** @description 200 */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": [string, string, string];
                };
            };

Current Result

responses: {
            /** @description 200 */
            200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": [];
                };
            };

Checklist

PartyWumpus commented 1 month ago

I've got the same issue.