Code Monkey home page Code Monkey logo

openapi-codegen-ts's Issues

Array conversion

I am this parameter in a request

 {
    "name" : "bundleType",
    "in" : "query",
    "description" : "Boundles's type",
    "required" : false,
    "style" : "form",
    "explode" : true,
    "schema" : {
      "type" : "string",
      "enum" : [ "GLOBAL", "PRIVATE", "PUBLIC" ]
    }
  }

the generated class is

// Request type definition
export type GetBundlesByPSPT = r.IGetApiRequestType<
  {
    readonly JWT: string;
    readonly limit?: number;
    readonly "bundle-type"?: array;
    readonly page?: number;
    readonly "psp-code": string;
    readonly name?: string;
  },
  "Authorization",
  never,
  r.IResponseType<200, Bundles, "X-Request-Id">
>;

I have a compile error due to the line readonly "bundle-type"?: array;

How I fixed it manually

readonly "bundle-type"?: Array<string>;

`Buffer` type breaks generated SDKs

Operations which produce octet/stream responses will be resolved into generated definitions using Buffer as defined in #293

This breaks the build of SDK packages as Buffer is not a native Typescript type

Example

swagger: '2.0'
info:
  version: 1.0.0
  title: API
host: localhost
basePath: /api/v1
schemes:
  - https
paths:
  /mypath:
    get:
      summary: An endpoint
      produces:
        - application/octet-stream
      responses:
        '200':
          description: Success
          schema:
            format: binary
            type: string
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
requestTypes.ts:2047:8 - error TS4016: Type parameter 'A0' of exported function has or is using private name 'Buffer'.

Support OpenAPI v3 - GSOC

I expect

This repo supports OpenAPI v3

Instead

Just supports Swagger v2

Notes

  • syntax validation of current tests #92 @aymen94
  • familiarize with io-utils and basic oas3 parsing #74
  • identify a strategy for supporting both Swagger 2 and OAS3
  • create tests for OAS3
  • basic OAS3 support - proof of concept
  • implement OAS3 basic
  • define all other tests
  • implement all the remaining tests and be consistent with the older ones

This is for Google Summer of Code

Support referencing a property

We have examples of specifications using reference not only to a definition but to one specific property. Is it allowed? Reading OpenAPI docs I found neither confirmation nor disprove, and online validators don't complaint.

We should support such case in our generator.

Example

definitions:
  Item:
    type: object
    properties:
      status:
        type: string
      revocation_date:
        $ref: '#/definitions/Otp/properties/expires_at'
      revocation_reason:
        type: string
        minLength: 1
  Otp:
    type: object
    properties:
      code:
        type: string
      expires_at:
        type: string
        format: UTCISODateFromString
        description: A date-time field in ISO-8601 format and UTC timezone.
      ttl:
        type: number
    required:
      - code
      - expires_at
      - ttl

Custom Header brokes the autogen client

I try to use this tool to generate the client from this swagger

In the swagger we have a custom X-Request-Id header in request and response and this is a problem for the tool.

I found that the only allowed headers are:
export declare type RequestHeaderKey = "Accept-Encoding" | "Authorization" | "Content-Type" | "Host" | "If-None-Match" | "Ocp-Apim-Subscription-Key" | "X-Functions-Key";

Handle default error types in decoders generation

Expected behavior

The gen-api-models command generates right code when specs don't specify any type for error responses (!== 200)

Actual behavior

The gen-api-models command generats wrong code when specs don't specify any type for error responses and the command uses the default error type as a fallback --default-error-type

Fix swagger syntax of api.yaml. swagger2 does not support `oneOf`

I expect

syntax of src/tests/api.yaml to be correct

Instead

opening on swagger editor I get the following error:

Structural error at definitions.OneOfTest
should NOT have additional properties
additionalProperty: oneOf
Jump to line 69

Note

This is because gen-api-models supports oneOf schema feature from OAS3. This ticket
could be closed once OAS3 support will be completed:

  • the swagger2 schema will remove this test from the yaml
  • the openapi3 schema will support this use-case

Optional Header can be undefined

Issue

If in the openapi v3 there is an optional header for the request the generated client expects it as param (can be undefined)

Example openapi:

 "headers" : {
    "X-Request-Id" : {
      "description" : "This header identifies the call",
      "schema" : {
        "type" : "string"
      }
    }
  }

Expected:

I want to ignore the optional header. Now I'm forced to pass it to the client.

Support minLength=0 on Yaml->Ts generator

Issue Description
Yaml->Ts Generator miss minLength=0 from Yaml Def and generate wrong types (just string instead of WithinRangeString)

Current Behavior

Yaml Source:

EmptyString:
      type: string
      minLength: 0
      maxLength: 0

LimitedString:
      type: string
      minLength: 0
      maxLength: 4000

Ts Output:

export type EmptyString = t.TypeOf<typeof EmptyString>;
export const EmptyString = t.string;

export type LimitedString= t.TypeOf<typeof LimitedString>;
export const LimitedString= t.string;

Expected/Correct Behavior
Ts Output:

export type EmptyString = t.TypeOf<typeof EmptyString>;
export const EmptyString = WithinRangeString(0, 1);

export type LimitedString= t.TypeOf<typeof LimitedString>;
export const LimitedString= WithinRangeString(0, 4001);

Solution:
Into macros.njk file, change
{% elif definition.minLength and definition.maxLength %}
TO
{% elif definition.minLength!==undefined and definition.maxLength!==undefined %}
In this way, 0 value will be recognized and used

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.