import { Linter } from 'eslint'; export { Linter } from 'eslint'; export { legacyEslintrcConfig } from './legacy.cjs'; declare const typescriptNamingConfig: Linter.Config[]; declare const namingConventionRule: readonly ["error", { readonly selector: "objectLiteralProperty"; readonly format: readonly ["camelCase", "snake_case", "PascalCase", "UPPER_CASE"]; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "memberLike"; readonly modifiers: readonly ["public", "static"]; readonly format: readonly ["camelCase", "PascalCase", "UPPER_CASE"]; readonly leadingUnderscore: "allow"; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "memberLike"; readonly modifiers: readonly ["private", "static"]; readonly format: readonly ["camelCase", "PascalCase", "UPPER_CASE"]; readonly leadingUnderscore: "forbid"; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "memberLike"; readonly modifiers: readonly ["private", "readonly"]; readonly format: readonly ["UPPER_CASE", "camelCase"]; readonly leadingUnderscore: "forbid"; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "memberLike"; readonly modifiers: readonly ["readonly"]; readonly format: readonly ["UPPER_CASE", "camelCase", "snake_case"]; readonly leadingUnderscore: "allow"; }, { readonly selector: "typeProperty"; readonly modifiers: readonly ["readonly"]; readonly format: readonly ["UPPER_CASE", "camelCase", "snake_case"]; readonly leadingUnderscore: "allow"; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "memberLike"; readonly modifiers: readonly ["public"]; readonly format: readonly ["camelCase", "snake_case"]; readonly leadingUnderscore: "allow"; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "memberLike"; readonly modifiers: readonly ["private"]; readonly format: readonly ["camelCase"]; readonly leadingUnderscore: "forbid"; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "memberLike"; readonly modifiers: readonly ["protected"]; readonly format: readonly ["camelCase"]; readonly leadingUnderscore: "forbid"; }, { readonly selector: "enumMember"; readonly format: readonly ["UPPER_CASE"]; }, { readonly selector: "interface"; readonly format: readonly ["PascalCase"]; readonly custom: { readonly regex: "^[IT][A-Z]"; readonly match: false; }; }, { readonly selector: "class"; readonly format: readonly ["PascalCase"]; }, { readonly selector: "enum"; readonly format: readonly ["PascalCase"]; readonly custom: { readonly regex: "(^[IT][A-Z])|(.*es$)|(.*[^us]s$)"; readonly match: false; }; }, { readonly selector: "typeParameter"; readonly format: readonly ["PascalCase"]; readonly custom: { readonly regex: "^(T|U|V|K|T[A-Z][a-zA-Z]*|K[A-Z][a-zA-Z]*|V[A-Z][a-zA-Z]*|[TKV][0-9]*)$"; readonly match: true; }; }, { readonly selector: "typeAlias"; readonly format: readonly ["PascalCase"]; readonly custom: { readonly regex: "^[IT][A-Z]"; readonly match: false; }; }, { readonly selector: "variable"; readonly modifiers: readonly ["destructured"]; readonly format: readonly ["PascalCase", "camelCase", "snake_case"]; readonly leadingUnderscore: "allow"; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "variable"; readonly modifiers: readonly ["const", "global"]; readonly format: readonly ["camelCase", "UPPER_CASE", "PascalCase"]; readonly leadingUnderscore: "allow"; }, { readonly selector: "variable"; readonly types: readonly ["boolean"]; readonly format: readonly ["PascalCase"]; readonly prefix: readonly ["is", "are", "has", "can", "should", "will", "did"]; }, { readonly selector: "variable"; readonly modifiers: readonly ["destructured"]; readonly types: readonly ["boolean"]; readonly format: null; }, { readonly selector: "variable"; readonly format: null; readonly filter: { readonly match: true; readonly regex: string; }; }, { readonly selector: "variable"; readonly format: readonly ["PascalCase"]; readonly filter: { readonly match: true; readonly regex: string; }; }, { readonly selector: "parameter"; readonly modifiers: readonly ["destructured"]; readonly format: readonly ["camelCase", "snake_case"]; readonly leadingUnderscore: "allow"; }, { readonly selector: "function"; readonly modifiers: readonly ["exported", "global"]; readonly format: readonly ["PascalCase", "camelCase"]; readonly leadingUnderscore: "allow"; }, { readonly selector: readonly ["classProperty", "objectLiteralProperty", "typeProperty", "classMethod", "objectLiteralMethod", "typeMethod", "accessor", "enumMember"]; readonly modifiers: readonly ["requiresQuotes"]; readonly format: null; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "variable"; readonly format: readonly ["camelCase", "UPPER_CASE"]; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "function"; readonly format: readonly ["camelCase"]; }, { readonly custom: { readonly regex: string; readonly match: false; }; readonly selector: "parameter"; readonly format: readonly ["camelCase"]; readonly leadingUnderscore: "allow"; }]; /** * Common anti-patterns this file targets (and how to fix them): * * 1) Single-letter names (except very limited domains like coordinates): * - i/j/k -> index / rowIndex / colIndex * - e -> event / error (pick one based on meaning) * * 2) Ambiguous abbreviations: * - dir -> directory OR direction (choose the correct intent) * - res -> response OR result OR resource (don’t guess) * - auth -> authentication OR authorization (be explicit) * * 3) “Meaningless” buckets / vague names (often hide intent): * - data -> payload / result / records / responseBody / input * - info -> metadata / details / summary * - obj -> user / config / payload / dto (name the domain object) * * Tip: Keep ALLOW_LIST for ecosystem-idiomatic identifiers that are hard to avoid * (e.g., Express req/res, Koa ctx), ideally allowed only for *parameters* in your rule. */ /** * DENY_LIST: * key = abbreviation / anti-pattern identifier you want to forbid * value = allowed replacements (full names or clearer alternatives) */ declare const DENY_LIST: Readonly>; /** * ALLOW_LIST: * Identifiers allowed “as-is” because they are widely-recognized initialisms, * ecosystem conventions, or required by external APIs/frameworks. * * Recommendation: In your ESLint rule, allow some of these ONLY in specific contexts: * - function params: req, res, ctx, next * - well-known technical initialisms: id, url, api, ui, db, json, html, css, uuid, jwt */ declare const ALLOW_LIST: readonly string[]; declare const config: Linter.Config[]; export { ALLOW_LIST, DENY_LIST, config as default, namingConventionRule, typescriptNamingConfig };