@christianv/openapi-to-flowtype

0.9.20 • Public • Published

openapi-to-flowtype (forked)

Forked version of https://www.npmjs.com/package/openapi-to-flowtype with the following changes:

  • Use { [key: string] : mixed} for object types without any properties. Previously this was typed as {} which causes issues in exact mode
  • Fix Array<undefined> output types by falling back to mixed when no type is defined
  • Replace Array<*> with Array<mixed>
  • Add pinterest open api schema as a test
  • 0.9.3: fix issue with discriminator (anyOf, oneOf allOf) not being the first item
  • 0.9.4: fix --exact with top level object types & add --verbose option
  • 0.9.5: fix string escaping
  • 0.9.6: fix string escaping within properties
  • 0.9.6: fix string escaping within properties
  • 0.9.7: support keys starting with a numeric value + introduce prettier + improve tests
  • 0.9.8: use $ReadOnlyArray instead of Array
  • 0.9.9: fix camelize import
  • 0.9.10: fix destination parameter
  • 0.9.11: move prettier & other dependencies
  • 0.9.12: only move prettier over to dependencies
  • 0.9.13: support enum numerical literal types
  • 0.9.14: support open ended objects
  • 0.9.15: fix top level oneOf
  • 0.9.16: make values of open ended objects optional
  • 0.9.17: support keys with :
  • 0.9.18: (wrong publish)
  • 0.9.19: implement --parameters
  • 0.9.20: fix bug with --parameters

openapi-to-flowtype is a tool for generating type definitions of Flow from OpenAPI 3.0 file.

NPM version Build Status Downloads

Getting started

Install package

npm i -g openapi-to-flowtype

Generating flow type definitions

$openapi-to-flowtype <YOUR SWAGGER FILE OR URL>

This command generates a file named flowtype.js includes type definitions as default.

Options

Specify an output path

You can also specify an output path with -d option.

$openapi-to-flowtype <YOUR SWAGGER FILE PATH OR URL> -d <OUTPUT FILE PATH>

Generate types for operation titled responses as well

You can enable type generation for operation responses (if they have schema title specified) with --responses.

$openapi-to-flowtype <YOUR SWAGGER FILE PATH OR URL> --responses

Specify a suffix for generated types

You can specify a suffix for all generated types with --suffix <suffix>.

$openapi-to-flowtype <YOUR SWAGGER FILE PATH OR URL> -suffix <YOUR SUFFIX>

Transform property key to lower camel case

--lower-camel-case option transforms each property keys to lower camel case.

"Cat": {
  "type": "object",
  "properties": {
    "long_long_key": {
      "type": "string"
    }
  }
}

will be

export type Cat = { longLongKey?: string };

Generate types for parameters as well

You can enable type generation for parameters with --parameters.

$openapi-to-flowtype <YOUR SWAGGER FILE PATH OR URL> --parameters

Example

swagger file like following

---
components:
  schemas:
    Order:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
        petId:
          type: "integer"
          format: "int64"
        quantity:
          type: "integer"
          format: "int32"
        shipDate:
          type: "string"
          format: "date-time"
        status:
          type: "string"
          description: "Order Status"
          enum:
            - "placed"
            - "approved"
            - "delivered"
        complete:
          type: "boolean"
          default: false
      xml:
        name: "Order"
    Category:
      type: "object"
      properties:
        id:
          type: "integer"
          format: "int64"
        name:
          type: "string"
      xml:
        name: "Category"

Output will be like below

// @flow
export type Order = {
  id?: number,
  petId?: number,
  quantity?: number,
  shipDate?: string,
  status?: "placed" | "approved" | "delivered",
  complete?: boolean,
};
export type Category = { id?: number, name?: string };

Requirements

  • Node 12+ is required

Tests

npm test

Testimonials

Based on swagger-to-flowtype by yayoc.

Readme

Keywords

Package Sidebar

Install

npm i @christianv/openapi-to-flowtype

Weekly Downloads

843

Version

0.9.20

License

MIT

Unpacked Size

198 kB

Total Files

30

Last publish

Collaborators

  • christianv