A plugin for ESLint to enforce naming conventions and JSDoc annotations for functions that throw errors.
- Function Naming: Enforces a naming convention for functions that can throw, e.g.,
functionNameOrThrow()
. - JSDoc Enforcement: Requires JSDoc
@throws
tags for functions that throw errors.
- Support
@throws
but without a type. Optional. - Check if a
@throws
tag is set, but not required. - Support of anonymous functions
- Support of async function
npm install eslint-plugin-throw-aware --save-dev
import globals from "globals";
import pluginJs from "@eslint/js";
import pluginThrowAware from "eslint-plugin-throw-aware";
export default [
{ languageOptions: { globals: globals.browser } },
pluginJs.configs.recommended,
pluginThrowAware.configs.recommended,
];
You can customize the behavior of this plugin by adjusting the rule settings:
{
plugins: {
"throw-aware": pluginThrowAware
},
// Recommended configuration
rules: {
"throw-aware/throw-function-naming": ["error", { suffix: "OrThrow" }],
"throw-aware/require-throws-doc": ["warn"]
}
}
- suffix: Customizes the expected suffix for function names. Default is
OrThrow
.
Ensures functions that throw have names ending with OrThrow
.
function getData() {
if (!data) throw new Error("No data");
}
function getDataOrThrow() {
if (!data) throw new Error("No data");
}
Requires a @throws
tag in JSDoc for functions that throw.
/**
* Fetches user data.
*/
function fetchUserDataOrThrow() {
if (!userData) throw new Error("User data not found");
}
/**
* Fetches user data.
* @throws {Error} When user data is not found.
*/
function fetchUserDataOrThrow() {
if (!userData) throw new Error("User data not found");
}
- Clarity: Instantly recognize functions that might throw errors.
- Documentation: Ensures that all throwing functions are properly documented, improving code maintainability.
- Consistency: Promotes a consistent coding style across projects where error handling is critical.
Feel free to open issues or pull requests to improve this plugin.