w3c-xmlhttprequest v3.0.0をリリースしました
表題の通りw3c-xmlhttprequest v3.0.0をリリースしました。細かなバグの修正や最新のXMLHttpRequest
の仕様に追従させたりと様々な変更が含まれていますが一番大きな変更としてはECMAScript 2015からTypeScriptへの移行でしょう。
v1.0.0をリリースしたのが2012年なので当初はECMAScript 5を前提としていました。Object.keys
やObject.defineProperty
、JSON.parse
といった当時としては新しい機能を使っていましたがどうしても古さは否めず2016年にECMAScript 2015に書き換えたv2.0.0をリリースしていました。とはいえvar
文をlet
文とconst
文に置き換えたり、prototype
プロパティーをclass
構文に置き換えたりといった基本的なところの書き換えしかしておらず根本の部分は2012年にリリースされたv1.0.0のままでした。
今回はTypeScriptへの移行に伴い根本の部分から書き換えました。プライベートフィールドを使って容易に属性を外から書き換えられないようにしたり、Set
を使ってEventListener
のハン ドリングを平易な記述でできるようにしています。ほかにもTypeScriptに置き換えたおかげで簡便な記述ができるようになり、ECMAScript 2015からの移行もさして苦ではありませんでした。
またTravis CIからGitHub Actionsに移行したり、MochaからJestに移行したり、Dependabotを導入したりもしています。長らく放置していたプロダクトをある程度近代化できたのではないかという自負があります。
余談
v1.1.0を公開した2013年にも同様の発言をしていますがv1.0.0をリリースした2012年当時はNode.jsとウェブブラウザーで同じコードを動かすモチベーションがわたしにはありませんでした。あくまでXMLHttpRequest
の仕様理解のために作って自身で使うつもりもありませんでした。
当時と比べるとReactなどのフレームワークを用いたサーバーサイドレンダリングのために現在はNode.jsとウェブブラウザーで同一のコードを動かすモチベーションも高まっていますがPromsise
ベースの非同期処理が主流となっていてイ ベントベースのXMLHttpRequest
ではなくfetch
を使う人の方が多いのではないでしょうか。そう思っていたのですがnpmでのダウンロード数を見るとありがたいことに少なくない方々に使っていただいているようで驚いています。
次の大きな変更はまた4年後……もしくはそれ以降になるとは思いますが簡単なメンテナンスくらいはしていきたいと思います。