2024-12-15
filterにasyncを渡してはいけない
日記はマークダウンで書いていて、タイトルとか公開・非公開とかはフロントマターに書いている。それをパースしてよしなに処理してHTMLに落としたり、そもそも公開しないようにしている。それらの処理はTSで書いている。
ちょっと前にリファクタしたときにテストを書くのをサボったせいで公開・非公開の設定が反映されなくなっていた。コードベースは公開リポジトリに置いているのでクリティカルな問題ではないのだけど、望んだ挙動ではないので普通に嫌だった。
事故の原因は非公開な記事を処理対象から落とすfilterにasync関数を渡したことだった。async関数はpromiseを返すので、どんな処理を書こうがfilterは何もしないmapと同じ振る舞いをしていた、というオチ。biomeを入れてたので弾いて欲しい気持ちがある(気が付かなかった僕が悪くはあるのだけど)。
mapにasync関数を渡して記事一覧を加工していたので、そのままのノリで放り込んだのが敗因。promise.Allした後の配列に対してfilterすることで修正した。
RSSに対応する?
そういえばサイトマップとかRSSフィードとかに全く対応していなかった。自分がそもそも使わないのと、この日記を積極的に人に読ませようという気がないのが理由。じゃあいいか。ちゃんとしたブログエンジンを作りたいわけでもないし