LoginSignup
2
0

More than 3 years have passed since last update.

Deno用のValidatorライブラリを作った話

Posted at

2日遅れで Deno Advent Calendar 2019 の記事を書いています。

はじめに

ちなみにJSConf JP 2019で改めてDenoに興味が湧き、触った感じではベースは慣れているTypeScriptが好ましかったです。
しっかり設計されていればNodeで書かれていたWeb APIのコードを移行には困らない優等生の印象なのでネタに困りました。

denolib/awesome-denoを眺めていたところValidatorライブラリがないことが気が付きました。
Validatorは地味ではありますが、Web APIを作るときにはあるととても便利です。
Denoの周辺ツールに慣れるためにもValidatorライブラリを作ってみました。

https://github.com/nana4gonta/validator
(突貫で作ったのでREADMEは後ほど書きます。。)

実装まわり

  • 特定のフレームワークには依存したくない
  • APIは必要最低限にしたい
  • (できれば)バリデーションのみしたい

以上から@angular/formsのコードを参考にしています。
結果的には実装順が逆になりましたが、pattern 関数で正規表現を使いつつ、バリデーション関数のショートハンドと、独自関数が実装できれば大体のバリデーションはできるという想定です。
自分がAngularでフォームバリデーションをする際にもそのあたりの感覚があったため、@hapi/joiも悪くはなかったのですがAPIが多かったり、メソッドチェーンが好きになれなかった気持ちもあります。

Denoまわり

Validatorライブラリを作りましただけだとTypeScriptの話になるのでDenoの話も。
実際に触ったのは deno fmt のサブコマンドや std/testing のライブラリです。

deno fmt は最初何が使われるか分からなかったのですが、内部的にはPrettierと触り慣れているツールで設定しやすいのはよかったです。
このあたりPrettierは使いつつも設定は隠蔽してフォーマットは強制してもよかったのでは、とはちょっと思いました。

std/testing のライブラリはシンプルで使いやすいライブラリでした。
やっぱりstdに色々集約されているのはいいですね。
今回は別実装で済ませましたが、早くcryptoライブラリも欲しいことです。

まとめ

改めてDeno向けにValidatorライブラリを作りました。
今後はArrayやObjectに対応し、リクエストボディをそのままバリデーションかけられるようにしたいと思います。

2020年はNodeとDenoをもっとやっていくぞ!!!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0