🚀
OpenAPI 定義からyup定義を生成するRust製CLIを作ってみた
OpenAPIv3の定義ファイルからyupのバリデーション定義を自動生成してくれるCLIを作ってみました
使い方
openapi-yup-generator -f openapi3.yaml -o yup-defs.js
すると以下のようなjsファイルが生成される
/* tslint:disable */
/* eslint-disable */
//DO NOT EDIT MANUALLY
import { object, string, number, date, array, bool } from 'yup';
export const LightingSummary = object({
zones: array().of(object({
id: string(),
name: string(),
deviceId: number().integer(),
deviceType: string(),
zone: string(),
})),
zoneStatus: array().of(object({
id: string(),
name: string(),
lastUpdate: date(),
level: number().integer(),
}).label('the status of the lighting zone.')),
}).label('ok');
export const LightingZone = object({
id: string(),
name: string(),
deviceId: number().integer(),
deviceType: string(),
zone: string(),
});
インストール方法
brew install igtm/tap/openapi-yup-generator
作った背景
最近APIにgoa、FrontにReact(Typescript)、FrontのAPIまわりは openapi-generator-cliで自動生成させる構成をよくとっていました。
ただ、SPAを採用するとAPIとFrontの2重でバリデーション定義を管理しないといけないのが辛いので、openapi3.yamlからyupの定義ができたら良いなと思い、今回Rustの勉強も兼ねて作ってみました。
yupでよく使う定義は対応したつもりですが、これも使いたいなどあれば気軽にissue/PR化していただければなと思います。
Discussion