CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-typescript-eslint--eslint-plugin

TypeScript plugin for ESLint providing comprehensive lint rules for TypeScript codebases

Pending
Overview
Eval results
Files

plugin-configuration.mddocs/

Plugin Configuration

Core plugin setup and configuration presets for different TypeScript ESLint project requirements. Provides both legacy ESLint RC and modern flat configuration formats.

Capabilities

Main Plugin Export

The default export providing the ESLint plugin with all rules and configurations.

/**
 * Main ESLint plugin export with rules, configurations, and metadata
 */
interface PluginExport {
  /** Legacy ESLint RC configuration presets */
  configs: Record<string, ClassicConfig.Config>;
  /** Plugin metadata including name and version */
  meta: FlatConfig.PluginMeta;
  /** All available TypeScript ESLint rules */
  rules: TypeScriptESLintRules;
}

Usage Example:

import plugin from "@typescript-eslint/eslint-plugin";

// Access configurations
const recommendedConfig = plugin.configs.recommended;

// Access individual rules
const noUnusedVarsRule = plugin.rules["no-unused-vars"];

// Plugin metadata
console.log(plugin.meta.name); // "@typescript-eslint/eslint-plugin"
console.log(plugin.meta.version); // "8.42.0"

Raw Plugin Export

Extended plugin export with flat configurations and parser integration.

/**
 * Extended plugin export with flat configs and parser
 */
interface RawPluginExport {
  /** Flat configuration presets for ESLint 9+ */
  flatConfigs: Record<string, FlatConfig.Config | FlatConfig.ConfigArray>;
  /** TypeScript ESLint parser instance */
  parser: FlatConfig.Parser;
  /** Main plugin export */
  plugin: PluginExport;
}

Usage Example:

import { plugin, parser, flatConfigs } from "@typescript-eslint/eslint-plugin/use-at-your-own-risk/raw-plugin";

// Use flat configuration
export default [
  ...flatConfigs["flat/recommended"],
  {
    languageOptions: {
      parser: parser,
      parserOptions: {
        project: "./tsconfig.json"
      }
    },
    plugins: {
      "@typescript-eslint": plugin
    }
  }
];

Legacy Configuration Presets

Pre-configured rule sets for legacy ESLint RC format.

interface LegacyConfigs {
  /** All available rules enabled */
  all: ClassicConfig.Config;
  /** Base configuration */
  base: ClassicConfig.Config;
  /** Disables type-checked rules */
  "disable-type-checked": ClassicConfig.Config;
  /** ESLint recommended rules overrides */
  "eslint-recommended": ClassicConfig.Config;
  /** Recommended TypeScript rules */
  recommended: ClassicConfig.Config;
  /** @deprecated Use recommended-type-checked instead */
  "recommended-requiring-type-checking": ClassicConfig.Config;
  /** Recommended rules requiring type checking */
  "recommended-type-checked": ClassicConfig.Config;
  /** Only type-checked recommended rules */
  "recommended-type-checked-only": ClassicConfig.Config;
  /** Strict rule enforcement */
  strict: ClassicConfig.Config;
  /** Strict rules with type checking */
  "strict-type-checked": ClassicConfig.Config;
  /** Only strict type-checked rules */
  "strict-type-checked-only": ClassicConfig.Config;
  /** Code style rules */
  stylistic: ClassicConfig.Config;
  /** Stylistic rules with type checking */
  "stylistic-type-checked": ClassicConfig.Config;
  /** Only stylistic type-checked rules */
  "stylistic-type-checked-only": ClassicConfig.Config;
}

Usage Example:

// .eslintrc.js
module.exports = {
  parser: "@typescript-eslint/parser",
  plugins: ["@typescript-eslint"],
  extends: [
    "@typescript-eslint/recommended",
    "@typescript-eslint/recommended-type-checked"
  ],
  parserOptions: {
    project: "./tsconfig.json"
  }
};

Flat Configuration Presets

Modern flat configuration presets for ESLint 9+.

interface FlatConfigs {
  /** All available rules enabled */
  "flat/all": FlatConfig.ConfigArray;
  /** Base configuration */
  "flat/base": FlatConfig.Config;
  /** Disables type-checked rules */
  "flat/disable-type-checked": FlatConfig.Config;
  /** ESLint recommended rules overrides */
  "flat/eslint-recommended": FlatConfig.Config;
  /** Recommended TypeScript rules */
  "flat/recommended": FlatConfig.ConfigArray;
  /** Recommended rules requiring type checking */
  "flat/recommended-type-checked": FlatConfig.ConfigArray;
  /** Only type-checked recommended rules */
  "flat/recommended-type-checked-only": FlatConfig.ConfigArray;
  /** Strict rule enforcement */
  "flat/strict": FlatConfig.ConfigArray;
  /** Strict rules with type checking */
  "flat/strict-type-checked": FlatConfig.ConfigArray;
  /** Only strict type-checked rules */
  "flat/strict-type-checked-only": FlatConfig.ConfigArray;
  /** Code style rules */
  "flat/stylistic": FlatConfig.ConfigArray;
  /** Stylistic rules with type checking */
  "flat/stylistic-type-checked": FlatConfig.ConfigArray;
  /** Only stylistic type-checked rules */
  "flat/stylistic-type-checked-only": FlatConfig.ConfigArray;
}

Usage Example:

// eslint.config.js
import tseslint from "@typescript-eslint/eslint-plugin/use-at-your-own-risk/raw-plugin";

export default [
  ...tseslint.flatConfigs["flat/recommended-type-checked"],
  {
    languageOptions: {
      parser: tseslint.parser,
      parserOptions: {
        project: true
      }
    }
  }
];

Parser Integration

TypeScript ESLint parser for processing TypeScript syntax.

/**
 * TypeScript ESLint parser instance
 */
interface Parser {
  /** Parser metadata */
  meta: ParserMeta;
  /** Main parsing function for ESLint */
  parseForESLint(code: string, options: ParserOptions): ParseResult;
}

interface ParserOptions {
  /** Path to TypeScript configuration file */
  project?: string | string[] | boolean;
  /** Additional TypeScript compiler options */
  tsconfigRootDir?: string;
  /** ESLint-specific options */
  ecmaVersion?: number;
  sourceType?: "script" | "module";
  ecmaFeatures?: Record<string, boolean>;
}

Usage Example:

import { parser } from "@typescript-eslint/eslint-plugin/use-at-your-own-risk/raw-plugin";

export default [
  {
    languageOptions: {
      parser: parser,
      parserOptions: {
        project: ["./tsconfig.json", "./packages/*/tsconfig.json"],
        tsconfigRootDir: __dirname
      }
    }
  }
];

Configuration Examples

Basic Setup

// .eslintrc.js - Basic setup
module.exports = {
  parser: "@typescript-eslint/parser",
  plugins: ["@typescript-eslint"],
  extends: ["@typescript-eslint/recommended"],
  rules: {
    "@typescript-eslint/no-unused-vars": "error"
  }
};

Type-Checked Setup

// .eslintrc.js - With type checking
module.exports = {
  parser: "@typescript-eslint/parser",
  plugins: ["@typescript-eslint"],
  extends: ["@typescript-eslint/recommended-type-checked"],
  parserOptions: {
    project: "./tsconfig.json"
  },
  rules: {
    "@typescript-eslint/no-floating-promises": "error",
    "@typescript-eslint/no-unsafe-assignment": "warn"
  }
};

Flat Config Setup

// eslint.config.js - Modern flat config
import tseslint from "@typescript-eslint/eslint-plugin/use-at-your-own-risk/raw-plugin";

export default [
  ...tseslint.flatConfigs["flat/strict-type-checked"],
  {
    languageOptions: {
      parser: tseslint.parser,
      parserOptions: {
        project: true
      }
    },
    rules: {
      "@typescript-eslint/explicit-function-return-type": "error"
    }
  }
];

Types

interface ClassicConfig {
  extends?: string[];
  plugins?: string[];
  rules?: Record<string, RuleConfig>;
  parser?: string;
  parserOptions?: ParserOptions;
  env?: Record<string, boolean>;
  globals?: Record<string, boolean>;
}

interface FlatConfig {
  languageOptions?: {
    parser?: Parser;
    parserOptions?: ParserOptions;
    globals?: Record<string, boolean>;
    ecmaVersion?: number;
    sourceType?: "script" | "module";
  };
  plugins?: Record<string, Plugin>;
  rules?: Record<string, RuleConfig>;
  files?: string[];
  ignores?: string[];
}

interface PluginMeta {
  name: string;
  version: string;
}

type RuleConfig = 
  | "off" | "warn" | "error"
  | 0 | 1 | 2
  | [("off" | "warn" | "error" | 0 | 1 | 2), ...unknown[]];

interface ParseResult {
  ast: Program;
  scopeManager: ScopeManager;
  visitorKeys: VisitorKeys;
}

Install with Tessl CLI

npx tessl i tessl/npm-typescript-eslint--eslint-plugin

docs

best-practices-rules.md

code-quality-rules.md

index.md

plugin-configuration.md

style-formatting-rules.md

type-safety-rules.md

tile.json