or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration.mdindex.mdrules.md
tile.json

configuration.mddocs/

Plugin Configuration

Configuration options and presets for ESLint Plugin Promise, including flat config and legacy config support.

Capabilities

Plugin Object

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;

Recommended Configuration

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"]
}

Flat Recommended Configuration

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'],
];

Legacy Rules Configuration

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
};

Configuration Patterns

Manual Rule Configuration

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"
  }
}

Rule Severity Levels

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)

Environment Compatibility

The plugin supports:

  • ESLint versions: 7.0.0, 8.x, 9.x
  • Node.js versions: 18.18.0+, 20.9.0+, 21.1.0+
  • Configuration formats: Legacy (.eslintrc.*) and Flat (eslint.config.js)

Types

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;