2017-03-21 はじめての DefinitelyTyped への Pull Request が Merge された
はじめて DefinitelyTyped/DefinitelyTyped に Pull Request して Merge された (DefinitelyTyped/DefinitelyTyped#15244) 。これにより @types/htmlescape
が追加された。
htmlescape
は HTML に JavaScript を埋め込むことを考慮した escape をするものだ。browserify をはじめ、多くの npm package で使われている。
使用例を挙げよう。
'<script>window.__STATE__ = ' + JSON.stringify(initialState) + '</script>';
いかにも書きたくなりそうだが、このコードには脆弱性がある。initialState
に '</script>'
のような文字列が含まれていると壊れる。そこで htmlescape
を使う。
import * as htmlescape from 'htmlescape';
'<script>window.__STATE__ = ' + htmlescape(initialState) + '</script>';
htmlescape
は <
などを escape するので、問題ない。ちなみに、もちろんだが、上記の例は TypeScript のつもりで書いている。 npm install @types/htmlescape
で使える。
さっそく bouzuya/mr-jums にも適用した。良い。
DefinitelyTyped への Pull Request は規則に従うのが面倒なので避けていたが、 Lint や generator も用意されているので、意外と簡単だ。小さいものについては今後は積極的に投げていこうと思う。