@onrails/eslint-plugin
v0.1.2
Published
ESLint rules for @onrails/result boundaries — flags Promise<Result<…>> in public APIs and _unsafeUnwrap*. Replaces unmaintained eslint-plugin-neverthrow.
Maintainers
Readme
@onrails/eslint-plugin
ESLint rules for @onrails/result boundaries. Replaces the unmaintained eslint-plugin-neverthrow.
Install
bun add -d @onrails/eslint-pluginFlat config (ESLint 9+)
// eslint.config.js
import onrails from "@onrails/eslint-plugin";
export default [
{
plugins: { "@onrails": onrails },
rules: {
"@onrails/no-promise-result": "warn",
"@onrails/no-unsafe-unwrap": "warn",
},
},
];Or use the recommended preset:
import onrails from "@onrails/eslint-plugin";
export default [
{
plugins: { "@onrails": onrails },
rules: {
...onrails.configs.recommended.rules,
},
},
];Rules
| Rule | What it does |
|---|---|
| @onrails/no-promise-result | Flags Promise<Result<…>> in source — public APIs should return ResultAsync |
| @onrails/no-unsafe-unwrap | Flags _unsafeUnwrap* outside test files |
Caveats (v0)
- Current rules are text-scan only. They catch the common cases but miss
Promise<Result<…>>hidden inside complex generics. A@typescript-eslint-powered AST rule is planned. - Spec files (
*.spec.ts) are exempted fromno-unsafe-unwrap.
License
MIT
