openapi-to-flowtype
is a tool for generating type definitions of Flow from OpenAPI 3.0 file.
npm i -g openapi-to-flowtype
$openapi-to-flowtype <YOUR SWAGGER FILE OR URL>
This command generates a file named flowtype.js includes type definitions as default.
You can also specify an output path with -d option
.
$openapi-to-flowtype <YOUR SWAGGER FILE PATH OR URL> -d <OUTPUT FILE PATH>
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
You can specify a suffix for all generated types with --suffix <suffix>
.
$openapi-to-flowtype <YOUR SWAGGER FILE PATH OR URL> -suffix <YOUR SUFFIX>
--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 };
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 };
- Node 12+ is required
npm test
Based on swagger-to-flowtype by yayoc.