crates.io のパッケージページで Reverse Dependencies を表示する Chrome 拡張

最近 Rust に再入門しています。

言語初心者によくある問題として、良い (信頼できる) ライブラリがどれかわからないというものがあります。 Rust の中央パッケージリポジトリである crates.io は各パッケージのダウンロード数が書かれていて、 良さそうなライブラリを見つけるときは基本的にはそれを参考にすると思うのですが、 論文での被引用論文のような感じでそのライブラリに依存しているパッケージ (Reverse Dependencies) 一覧やその数も見れると嬉しいです。

Reverse Dependencies のリンクを追加する Pull Request もあったのですが close されているようなので、 各 crate のページで Reverse Dependencies 一覧を表示する Chrome 拡張を書きました。

github.com

もともとこんなページだったのが、

https://github.com/amutake/crates.io-reverse-dependencies/raw/master/images/before.png

こんな感じに Reverse Dependencies を表示してくれるようになります。

https://github.com/amutake/crates.io-reverse-dependencies/raw/master/images/after.png

実装は Reverse Dependencies の API や一覧ページが既にあったので簡単にできました。ES6 の機能や fetch API も使ってみています。

若干面倒だったのは、Links や Dependencies の親要素である div#crate-links が非同期に挿入されることで、 "run_at": "document_idle" でも "run_at": "document_end" でもタイミングによっては挿入後にならなかったので document.addEventListener('DOMNodeInserted', ...)div#crate-links が挿入されるのを見ています。

Chrome 拡張は初めて書いたのですが便利ですね。