CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-eslint-plugin-promise

Enforce best practices for JavaScript promises

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

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;

docs

configuration.md

index.md

rules.md

tile.json