ちょっと前にNeverThrowを触ろうとして、そのESLintプラグインがFlat Configに未対応だったから、そこで遊んでしまった話を書いたけど。
遊んでしまったついでに、フォークしてFlat Configに対応した。
pnpmとかでインストールして
# npm npm install --save-dev @bufferings/eslint-plugin-neverthrow # pnpm pnpm install --save-dev @bufferings/eslint-plugin-neverthrow
こんな感じで設定を書いたらOK
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import neverthrowPlugin from '@bufferings/eslint-plugin-neverthrow';
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.recommendedTypeChecked,
neverthrowPlugin.configs.recommended,
{
languageOptions: {
parserOptions: {
projectService: {
allowDefaultProject: ['*.config.*'],
},
tsconfigRootDir: import.meta.dirname,
},
},
}
);
そうすると、中身を取り出していないResultは怒られる。わーい。

利用サンプルはここに置いておいた
注意点
プラグインの書き方がよくわかっていない。Node.jsのバージョン対応とからへんあやしい。
そもそも、Ruleのコアの部分のロジックは読まずに、その周りの対応だけをしたので、ロジックがどうなってるか分かってない。
semantic-releaseを雰囲気で使っている。ちゃんといい感じでリリースできるか分かってない。
まぁ、自分が個人で使うぶんにはこれでいいかな。ちょこっと改良とかできたら面白いかな。