2019-01-22 bouzuya/node-wsse 3.0.0 をつくった
bouzuya/node-wsse 3.0.0 をつくった。
主な変更は CoffeeScript から TypeScript に置き換えたこと。あとは module.exports = function /* ... */ を削除したくらいか。 require('wsse').default で良いだろう。どうせ babel か TypeScript あたりで import wsse from 'wsse'; して使っているだろうし……。
2019-01-21 の bouzuya/table-b から設定をコピーしてきたのでその点では楽だった。
これね、 JavaScript や CoffeeScript あたりで書かれたアプリケーションを TypeScript に直したことがある人だと感じるんじゃないかな……。ぼくの経験だとわりと普通にバグってるよ。
— bouzuya (@bouzuya) 2019年1月18日
↑のツイートしてから数日後にまさにそういう事例が起きてしまった。型を明示してみたら間違いに気づいた。 s という変数だったので string をつけたら実は Buffer | string だった。 s の利用箇所は new Buffer(s) だったので実害はないのだけど気持ちが悪い。そも new Buffer(s) も deprecated だ。
Node.js の API はしばしば↑のような返し方をする。今回は hash.digest([encoding]) の encoding の有無で戻り値の型が Buffer と string で変わる。 JavaScript だなあ。
CoffeeScript & JavaScript のリポジトリを整理している。↑の wsse に依存するものがいくつかあった。 TypeScript に置き換えようとしてから気づいた。置き換えにも依存関係というか順序があった。