swagger-to-flowtypeでswaggerファイルからFlow type aliasを作成する

APIのドキュメントツールとして、swaggerを使う場面があり、
そもそも定義されたオブジェクト数も多く、 また、ネストが深いオブジェクトもある中で、FlowにおけるType ailiasを手動で作成するのは、なかなか厳しいものがありました。

そこで、今回npm moduleとして**swagger-to-flowtype**というコマンドラインツールを作りました。
定義されたyamlもしくは、jsonファイルをパースして、definitionsを抽出、type aliasとして定義、ファイルの書き出しを行います。

例えば、下記のような定義をしたswagger.yamlを、

...

definitions:
  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"
...

$swagger-to-flowtype swagger.yaml

としてあげると下記のように型を定義したflowtype.jsというファイルが生成されます。

// @flow
export type Order = {
  id: number,
  petId: number,
  quantity: number,
  shipDate: string,
  status: string,
  complete: boolean
};
export type Category = { id: number, name: string };

swaggerでAPIドキュメントを書いている + Flowを使っている場合には使ってみてもいいかもしれません。

参考