• 作成:

ブラウザ側JavaScriptでPunycodeを処理する良い感じのライブラリが見つからなかった

前提

ncaq/google-search-title-qualified: Google will omit the title of the web page. With this add-on, the original title is used as much as possible. という、 Google検索結果のwebサイトのタイトルを省略しない拡張機能を前から作っています。

最近、 added: URLも短縮しない closed #21 by ncaq · Pull Request #39 · ncaq/google-search-title-qualified でタイトルだけではなくURLも短縮しない機能を付け加えました。

何故かと言うと、最近検索結果でのURLが、 github.com > issues のような切り詰めた表示になっていることが多く、いやそのURLの切り取りだけだと、なんのプロジェクトのページなのかさっぱりわからないぞ… となってしまったからです。

それ自体の実装は割とすんなりといったのですが、 Punycodeの問題が起きました。

問題

国際化ドメイン名のサイトが検索結果に引っかかった場合、例えば、日本語JPドメイン名とは - 日本語.jp などは https://日本語.jp/about/ ではなく、 https://xn--wgv71a119e.jp/about/ と表示されてしまいます。

コピペするときとかはともかく表示する時は当然日本語になってほしい。

ブラウザにPunycodeのデコードを行う標準JavaScript APIがない?

まあサクッと変換するようにして終わりだろうと思ったのですが、苦戦しています。

まず標準ブラウザJavaScript APIにPunycodeのdecodeを行うものが無いようなのですよね。なんで無いの…? ブラウザ側ではみんなサポートしているのに見つからない。

じゃあサードパーティのものを使うかと思って、 punycode - npmpunycode.toUnicodeを使えば変換できるのですが、 Punycodeのサポートは新しいNode.jsで行われたからこれは非推奨にしたよとか書かれています。

じゃあNode.jsが参照している、 whatwg-url - npm を使えば良いのかなと思いましたが、 Node.js側のAPIでは提供している、 url.domainToUnicode(domain) がwhatwg-urlの方にはなくて頓挫しました。

非推奨の理由がNode.jsにあるからということならひとまず無視

とりあえず今は、 punycode - npm を使っています。

非推奨になった理由がNode.jsにあるからということなら、ブラウザで使いたい私には関係のない話です。

しかし開発ツールが非推奨警告を出してくるのがつらいのと、セキュリティ問題が発生したとしてちゃんとレポートが来るのかなどの不安があります。

ちゃんと生きている非推奨になっていないライブラリを使いたいものですが、どうもサクッとは見つかりません。

助けてください。

issueは作りました。 punycodeライブラリを削除するなりして非推奨の関数を使うのをやめる · Issue #50 · ncaq/google-search-title-qualified