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
@throwstags for functions that throw errors.
- Support
@throwsbut without a type. Optional. - Check if a
@throwstag is set, but not required. - Support of anonymous functions
- Support of async function
npm install eslint-plugin-throw-aware --save-devimport 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.