🔥

Hono Takibi 0.6.2 🔥

に公開

Hono Takibi 0.6.2

npm

https://www.npmjs.com/package/hono-takibi

GitHub

https://github.com/nakita628/hono-takibi

Hono Takibi 0.6.2の変更点

  • コマンドライン引数から、変数名の形式を指定できるようにしました。

  • passthroughの生成をサポートしました。

  • スキーマと型の出力形式が変わりました。

  • その他

変数名の形式

 0.6.2以前では、hono-takibi.jsonで指定して、カスタマイズすることができました。

{
  "schema": {
    "name": "PascalCase",
    "export": true
  },
  "type": {
    "name": "PascalCase",
    "export": true
  }
}

 生成される型とスキーマ。

import { createRoute, z } from '@hono/zod-openapi'

const ASchema = z.object({ id: z.string(), name: z.string() }).openapi('A')

const BSchema = z.object({ count: z.string(), tags: z.string().optional() }).openapi('B')

const CSchema = z.object({ active: z.string(), note: z.string().optional() }).openapi('C')

export const schemas = {
  ASchema,
  BSchema,
  CSchema,
}

export type A = z.infer<typeof ASchema>

export type B = z.infer<typeof BSchema>

export type C = z.infer<typeof CSchema>

...

0.6.2以降では、コマンドライン引数でも指定できます。

⚠️ 注意点

 コマンドライン引数を利用する際は、必ず0.6.2以降を指定してください。

PascalCase指定

pnpm hono-takibi openapi.yaml -o route.ts --export-type --export-schema --naming-case-type PascalCase --naming-case-schema PascalCase
import { createRoute, z } from '@hono/zod-openapi'

export const ASchema = z.object({ id: z.string(), name: z.string() }).openapi('A')

export type A = z.infer<typeof ASchema>

export const BSchema = z.object({ count: z.string(), tags: z.string().optional() }).openapi('B')

export type B = z.infer<typeof BSchema>

export const CSchema = z.object({ active: z.string(), note: z.string().optional() }).openapi('C')

export type C = z.infer<typeof CSchema>

...

camelCase指定

pnpm hono-takibi openapi.yaml -o route.ts --export-type --export-schema --naming-case-type camelCase --naming-case-schema camelCase
import { createRoute, z } from '@hono/zod-openapi'

export const aSchema = z.object({ id: z.string(), name: z.string() }).openapi('A')

export type a = z.infer<typeof aSchema>

export const bSchema = z.object({ count: z.string(), tags: z.string().optional() }).openapi('B')

export type b = z.infer<typeof bSchema>

export const cSchema = z.object({ active: z.string(), note: z.string().optional() }).openapi('C')

export type c = z.infer<typeof cSchema>

...

 また、スキーマは個別にexportし、それに続けて型を出力するように変更しています。

passthrough の対応

additionalPropertiestrueにすると、passthroughを生成できるようになりました。

おわりに

Hono Takibi0.6.2の変更点を記事にまとめました。今後も、メンテナンスを継続し、精度が高いライブラリを目指します。

参考

Discussion