ESLint 10.7.0 がリリースされた。max-nested-callbacks と preserve-caught-error に新オプションが入り、no-compare-neg-zero が suggestion を返すようになった。あわせて、シャドウされたグローバルや eqeqeq 周りの誤検知修正が多数含まれる。
max-nested-callbacks は checkConstructorCallCallbacks を有効にすると、new Promise((resolve) => {}) のように new 付きコンストラクタに渡すコールバックもネスト深度に数える。
js
run(() => {
new Promise(resolve => resolve());
});{ "max": 1, "checkConstructorCallCallbacks": true } では上記が許容深度を超えると報告される。
preserve-caught-error は errorClassNames で、組み込みエラー型と同様に cause で元のエラーを保持すべきカスタムクラス名を追加できる。
js
try {
doSomething();
} catch (error) {
throw new MyError("something went wrong");
}{ "errorClassNames": ["MyError"] } では、元の error を cause に渡さない MyError の再スローが違反になる。
no-compare-neg-zero は -0 との比較に suggestion を出す。x === -0 では、従来の比較挙動を保つ x === 0 と、-0 と +0 を区別する Object.is(x, -0) を提案する。
その他の修正は次のとおり。
preserve-caught-errorが括弧で包んだ throw の外側にcauseを挿入するよう修正eqeqeqが静的テンプレートリテラルを扱い、nullオプションが===以外の演算子を誤って報告しないno-invalid-regexp、no-control-regex、prefer-numeric-literals、use-isnanなどがシャドウされたRegExpやNaN/Numberで誤検知しにくくなった