openapi-to-flowtype
v0.9.1
Published
Command line tool for generating flow types definitions from OpenAPI 3.0 specification
Downloads
47
Readme
openapi-to-flowtype
openapi-to-flowtype
is a tool for generating type definitions of Flow from OpenAPI 3.0 file.
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 };
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.