Configuration options and presets for ESLint Plugin Promise, including flat config and legacy config support.
Main plugin export containing all rules, configurations, and metadata.
/**
* Main ESLint plugin export for promise rules
* @type {ESLintPlugin}
*/
const pluginPromise = {
rules: { [ruleName: string]: ESLintRule },
configs: {
recommended: ESLintConfig,
'flat/recommended': ESLintFlatConfig
},
rulesConfig: { [ruleName: string]: number } // Legacy configuration
};Usage Examples:
// ESM import
import pluginPromise from 'eslint-plugin-promise';
// CommonJS require
const pluginPromise = require('eslint-plugin-promise');
// Access specific rule
const alwaysReturnRule = pluginPromise.rules['always-return'];
// Use recommended config
const config = pluginPromise.configs.recommended;Legacy ESLint configuration format with recommended rule settings.
/**
* Recommended configuration for legacy ESLint setups
* @type {ESLintConfig}
*/
const recommendedConfig = {
plugins: ['promise'],
rules: {
'promise/always-return': 'error',
'promise/no-return-wrap': 'error',
'promise/param-names': 'error',
'promise/catch-or-return': 'error',
'promise/no-native': 'off',
'promise/no-nesting': 'warn',
'promise/no-promise-in-callback': 'warn',
'promise/no-callback-in-promise': 'warn',
'promise/avoid-new': 'off',
'promise/no-new-statics': 'error',
'promise/no-return-in-finally': 'warn',
'promise/valid-params': 'warn'
}
};Usage Examples:
// .eslintrc.json
{
"extends": ["plugin:promise/recommended"]
}ESLint flat configuration format for modern ESLint setups (v9+).
/**
* Recommended configuration for ESLint flat config format
* @type {ESLintFlatConfig}
*/
const flatRecommendedConfig = {
name: 'promise/flat/recommended',
plugins: { promise: pluginPromise },
rules: {
'promise/always-return': 'error',
'promise/no-return-wrap': 'error',
'promise/param-names': 'error',
'promise/catch-or-return': 'error',
'promise/no-native': 'off',
'promise/no-nesting': 'warn',
'promise/no-promise-in-callback': 'warn',
'promise/no-callback-in-promise': 'warn',
'promise/avoid-new': 'off',
'promise/no-new-statics': 'error',
'promise/no-return-in-finally': 'warn',
'promise/valid-params': 'warn'
}
};Usage Examples:
// eslint.config.js
import pluginPromise from 'eslint-plugin-promise';
export default [
// ... other configs
pluginPromise.configs['flat/recommended'],
];Deprecated rule configuration object maintained for backward compatibility.
/**
* Legacy rule configuration (deprecated)
* @type {{ [ruleName: string]: number }}
* @deprecated Use configs.recommended or configs['flat/recommended'] instead
*/
const rulesConfig = {
'param-names': 1,
'always-return': 1,
'no-return-wrap': 1,
'no-native': 0,
'catch-or-return': 1
};For custom rule setups, you can configure individual rules:
// Flat config
export default [
{
plugins: { promise: pluginPromise },
rules: {
'promise/always-return': 'error',
'promise/catch-or-return': 'warn',
'promise/no-nesting': 'off'
}
}
];// Legacy config
{
"plugins": ["promise"],
"rules": {
"promise/always-return": "error",
"promise/catch-or-return": "warn",
"promise/no-nesting": "off"
}
}ESLint supports three severity levels:
'off' or 0: Rule is disabled'warn' or 1: Rule reports warnings (doesn't affect exit code)'error' or 2: Rule reports errors (affects exit code)The plugin supports:
interface ESLintPlugin {
rules: { [ruleName: string]: ESLintRule };
configs: {
recommended: ESLintConfig;
'flat/recommended': ESLintFlatConfig;
};
rulesConfig: { [ruleName: string]: number };
}
interface ESLintConfig {
plugins: string[];
rules: { [ruleName: string]: RuleSeverity };
}
interface ESLintFlatConfig {
name: string;
plugins: { [pluginName: string]: ESLintPlugin };
rules: { [ruleName: string]: RuleSeverity };
}
type RuleSeverity = 'off' | 'warn' | 'error' | 0 | 1 | 2;