oxlint-plugin-inhuman
v0.1.7
Published
Oxlint JS plugin for opinionated rules that steer AI and humans toward explicit, guard-clause-first, error-safe code.
Maintainers
Readme
oxlint-plugin-inhuman
Opinionated Oxlint rules that encode pet peeves and steer AI toward explicit, safer code.
This plugin also re-exposes the no-branching rules under the inhuman/* namespace from
oxlint-plugin-no-branching.
Install
npm i -D oxlint-plugin-inhumanOxlint Config (Explicit)
Oxlint requires enabling JS plugin rules explicitly under rules.
{
"jsPlugins": ["oxlint-plugin-inhuman"],
"rules": {
"inhuman/require-guard-clauses": "error",
"inhuman/no-swallowed-catch": "error",
"inhuman/export-code-last": "error",
"inhuman/no-empty-wrappers": "error",
"inhuman/no-switch": "error",
"inhuman/no-else": "error"
}
}Rules
inhuman/require-guard-clauses
Forbids a single wrapper if (...) { ... } that is the entire function body.
inhuman/no-swallowed-catch
Forbids empty or comment-only catch blocks, including catch { /* ignore */ }.
inhuman/export-code-last
Requires value exports at the bottom of the file. Type-only exports are exempt and may appear anywhere.
Local export lists like export { b } are not allowed; export the declaration directly instead.
Local alias exports like export const x = y are also not allowed.
Default exports must be on declarations; export default foo is only allowed when foo is a variable used internally.
Primitive export const values (for example strings, numbers, booleans, null, bigint, or static templates) are exempt and may appear at the top.
Options default:
allowReExport: false
Optional config:
{
"rules": {
"inhuman/export-code-last": ["error", { "allowReExport": true }]
}
}inhuman/no-empty-wrappers
Forbids exported empty wrapper functions that only pass through to a single call.
inhuman/no-switch
Re-exported from oxlint-plugin-no-branching.
inhuman/no-else
Re-exported from oxlint-plugin-no-branching.
Local Demo
bunx oxlint examplesExpected errors include:
examples/fail-wrapper-if.jsexamples/fail-swallowed-catch.jsexamples/fail-exports-before-non-export.jsexamples/fail-export-list.jsexamples/fail-export-alias.jsexamples/fail-export-alias-member.jsexamples/fail-export-alias-chain.jsexamples/fail-default-export-identifier.jsexamples/fail-default-export-unused-identifier.jsexamples/fail-empty-wrapper-impl.tsexamples/fail-empty-wrapper-generic.tsexamples/fail-non-primitive-const-top.tsexamples/fail-switch.jsexamples/fail-else.jsexamples/fail-else-if.js
