or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

binary-tools.mdconfigs.mdformatters.mdindex.mdplugin.mdrules.md
tile.json

plugin.mddocs/

Main Plugin

Core plugin functionality providing the main ESLint plugin interface with rules, configurations, and metadata.

Capabilities

Default Export

The main plugin export provides access to all plugin functionality.

/**
 * Main ESLint Plugin GitHub export
 */
interface ESLintPluginGithub {
  /** Collection of all 25 custom ESLint rules */
  rules: Record<string, ESLintRule>;
  /** Legacy ESLint configuration presets */
  configs: ConfigurationPresets;
  /** Function returning flat ESLint configuration presets */
  getFlatConfigs(): FlatConfigurationPresets;
}

interface ConfigurationPresets {
  browser: ESLintConfig;
  internal: ESLintConfig;
  recommended: ESLintConfig;
  typescript: ESLintConfig;
  react: ESLintConfig;
}

interface FlatConfigurationPresets {
  browser: FlatESLintConfig;
  internal: FlatESLintConfig;
  recommended: FlatESLintConfig;
  typescript: FlatESLintConfig;
  react: FlatESLintConfig;
}

Usage Examples:

import eslintPluginGithub from "eslint-plugin-github";

// Access all rules
const allRules = eslintPluginGithub.rules;

// Access legacy configs
const recommendedConfig = eslintPluginGithub.configs.recommended;

// Access flat configs
const flatConfigs = eslintPluginGithub.getFlatConfigs();
const flatRecommended = flatConfigs.recommended;

Plugin Rules Access

Access individual rules from the plugin.

/**
 * Access specific rules from the plugin
 */
interface PluginRules {
  'a11y-no-visually-hidden-interactive-element': ESLintRule;
  'a11y-no-generic-link-text': ESLintRule;
  'a11y-no-title-attribute': ESLintRule;
  'a11y-aria-label-is-well-formatted': ESLintRule;
  'a11y-role-supports-aria-props': ESLintRule;
  'a11y-svg-has-accessible-name': ESLintRule;
  'array-foreach': ESLintRule;
  'async-currenttarget': ESLintRule;
  'async-preventdefault': ESLintRule;
  'authenticity-token': ESLintRule;
  'filenames-match-regex': ESLintRule;
  'get-attribute': ESLintRule;
  'js-class-name': ESLintRule;
  'no-blur': ESLintRule;
  'no-d-none': ESLintRule;
  'no-dataset': ESLintRule;
  'no-implicit-buggy-globals': ESLintRule;
  'no-inner-html': ESLintRule;
  'no-innerText': ESLintRule;
  'no-dynamic-script-tag': ESLintRule;
  'no-then': ESLintRule;
  'no-useless-passive': ESLintRule;
  'prefer-observers': ESLintRule;
  'require-passive-events': ESLintRule;
  'unescaped-html-literal': ESLintRule;
}

interface ESLintRule {
  meta: ESLintRuleMeta;
  create(context: ESLintContext): Record<string, Function>;
}

interface ESLintRuleMeta {
  type: 'problem' | 'suggestion' | 'layout';
  docs: {
    description: string;
    url: string;
    recommended: boolean;
  };
  schema: any[];
  messages: Record<string, string>;
}

interface ESLintContext {
  report(descriptor: {
    node: any;
    messageId: string;
    data?: Record<string, any>;
  }): void;
  getSourceCode(): any;
  getFilename(): string;
}

Usage Examples:

import eslintPluginGithub from "eslint-plugin-github";

// Get a specific rule
const noBlurRule = eslintPluginGithub.rules['no-blur'];

// Check rule metadata
console.log(noBlurRule.meta.docs.description);
// "disallow usage of `Element.prototype.blur()`"

// Use in ESLint configuration
export default [
  {
    plugins: {
      github: eslintPluginGithub
    },
    rules: {
      'github/no-blur': 'error'
    }
  }
];

Get Flat Configs Function

Returns flat ESLint configuration objects for modern ESLint setups.

/**
 * Returns flat ESLint configuration presets
 * @returns Object containing all flat configuration presets
 */
function getFlatConfigs(): FlatConfigurationPresets;

interface FlatConfigurationPresets {
  browser: FlatESLintConfig;
  internal: FlatESLintConfig;
  recommended: FlatESLintConfig;
  typescript: FlatESLintConfig;
  react: FlatESLintConfig;
}

interface FlatESLintConfig {
  languageOptions?: {
    ecmaVersion?: number;
    sourceType?: 'module' | 'script';
    globals?: Record<string, boolean>;
    parser?: any;
    parserOptions?: Record<string, any>;
  };
  plugins?: Record<string, any>;
  rules: Record<string, ESLintSeverity | [ESLintSeverity, any]>;
  settings?: Record<string, any>;
}

Usage Examples:

import eslintPluginGithub from "eslint-plugin-github";

// Get all flat configs
const flatConfigs = eslintPluginGithub.getFlatConfigs();

// Use in flat ESLint configuration
export default [
  flatConfigs.recommended,
  flatConfigs.browser,
  {
    files: ['**/*.ts', '**/*.tsx'],
    ...flatConfigs.typescript
  }
];

Types

type ESLintSeverity = 'off' | 'warn' | 'error' | 0 | 1 | 2;

interface ESLintConfig {
  env?: Record<string, boolean>;
  parserOptions?: {
    ecmaFeatures?: Record<string, any>;
    sourceType?: 'module' | 'script';
    ecmaVersion?: number;
  };
  plugins?: string[];
  extends?: string[];
  rules: Record<string, ESLintSeverity | [ESLintSeverity, any]>;
  settings?: Record<string, any>;
}