2022年12月11日日曜日

そろそろvalue-schema v4が出るよ

 注)まだ出てません。

入力値検証ライブラリーのvalue-schemaについて、そろそろv4の正式版が出そうなので予告です。

現時点の最新版はv4のRC2です。RC1については5月の記事をごらんください。以下ではRC1以降の変更点を解説します。

新機能

日付対応

これが目玉機能・・・というわけでもないんですが、一番大きな機能追加です。

詳しい使い方はリファレンスに譲りますが、簡単に言えばRFC8601形式の日付やUNIXTIME形式の数値を受け取ってDateオブジェクトを返すというものです。

ただしRFC8601の全仕様に対応しているわけではなく、

  • 2022-12-11T00:00:00.000Z(ミリ秒指定)
  • 2022-12-11T00:00:00Z(秒指定)
  • 2022-12-11T00:00Z(分指定)

の3種類だけというかなり限定的なものです。ウェブサービスの入力値として使うならこれで十分でしょう。

なお、デフォルトではタイムゾーン指定は必須です。サーバーのタイムゾーン設定が変な値になっていて意図しない時間になってしまった、というバグを防ぐためです。ただし、デフォルトタイムゾーンを指定すれば省略できます。このあたりもリファレンスをごらんください。

Bun対応

Bunについては以前にも記事を書きましたが、v4で正式に対応することにしました。Bun v0.1.11以上で動作確認しています。

以前の記事でも書いたとおり、BunはデフォルトでNPMモジュールも使えます。なので多分v3以前でも使えると思いますが、v4で正式に動作検証したので公式にはv4以降でBun対応、ということにしています。

仕様変更

converter→transform

これはただのパラメーター名変更です。ほぼすべての型に含まれているconverterパラメーターの名前をtransformにしました。

単語の意味的にconvertよりtransformのほうが適切だというのと、そもそもconverterの利用者は少ないから変更しても大した影響ないだろうという判断です。

その他

TypeScript 3.4非対応

v3ではTypeScript 3.4以降に対応していましたが、v4では3.5以降です。日付対応した結果、3.4では型パズルがうまくいかなくてエラーになってしまいました。

3.4が出たのは3年以上前なので、あまり影響ないでしょう。


あとは内部的な話ですが、CIによるテストで環境(OSとNode.jsバージョン)を網羅できてなかったのでCIを組み直しました。

ちなみに全部網羅したらテストの数が1200を超えてテスト完了まで4時間前後かかるようになってしまいました。pushのたびに4時間もかかったらかなりツライ・・・なんとかして短くしよう。


できれば今年中にリリースしたいと思っていますが、もしかしたら年明けになるかも・・・


0 件のコメント:

コメントを投稿