ESLint 10.7.0 がリリースされた。max-nested-callbackspreserve-caught-error に新オプションが入り、no-compare-neg-zero が suggestion を返すようになった。あわせて、シャドウされたグローバルや eqeqeq 周りの誤検知修正が多数含まれる。

max-nested-callbackscheckConstructorCallCallbacks を有効にすると、new Promise((resolve) => {}) のように new 付きコンストラクタに渡すコールバックもネスト深度に数える。

js
run(() => {
    new Promise(resolve => resolve());
});

{ "max": 1, "checkConstructorCallCallbacks": true } では上記が許容深度を超えると報告される。

preserve-caught-errorerrorClassNames で、組み込みエラー型と同様に cause で元のエラーを保持すべきカスタムクラス名を追加できる。

js
try {
    doSomething();
} catch (error) {
    throw new MyError("something went wrong");
}

{ "errorClassNames": ["MyError"] } では、元の errorcause に渡さない 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-regexpno-control-regexprefer-numeric-literalsuse-isnan などがシャドウされた RegExpNaN / Number で誤検知しにくくなった

#参考文献