UNPKG

eslint-config-sensible-prettier-typescript

Version:

Sensible default eslint rules and prettier rules for Typescript projects

107 lines 4.57 kB
/** * Builds a TypeScript-specific ESLint configuration object. * * This function creates a comprehensive TypeScript configuration that includes: * - TypeScript parser and plugin * - TypeScript-specific rules and recommendations * - Import/export rules with TypeScript support * - Code quality rules (unicorn, perfectionist, jsdoc) * - Custom rule overrides for TypeScript projects * * @param {import('eslint').Linter.Config['files']} [files] - File patterns to apply this configuration to * @param {import('eslint').Linter.Config['languageOptions']} [languageOptions] - Additional language options to merge * @returns {import('eslint').Linter.Config} TypeScript ESLint configuration object */ export function buildTsConfig(files?: import("eslint").Linter.Config["files"], languageOptions?: import("eslint").Linter.Config["languageOptions"]): import("eslint").Linter.Config; /** * Builds a JavaScript-specific ESLint configuration object. * * This function creates a JavaScript configuration that includes: * - Import/export rules * - Code quality rules (unicorn, perfectionist) * - Common JavaScript linting rules * - Custom rule overrides * * @param {import('eslint').Linter.Config['files']} [files] - File patterns to apply this configuration to * @param {import('eslint').Linter.Config['languageOptions']} [languageOptions] - Additional language options to merge * @returns {import('eslint').Linter.Config} JavaScript ESLint configuration object */ export function buildJsConfig(files?: import("eslint").Linter.Config["files"], languageOptions?: import("eslint").Linter.Config["languageOptions"]): import("eslint").Linter.Config; /** * Builds a complete ESLint 9 flat configuration array. * * This function returns a comprehensive ESLint configuration that includes: * - Global ignore patterns * - Base JavaScript recommended rules * - Prettier integration * - JSDoc rules * - TypeScript configurations for various file types * - JavaScript configurations for various file types * - Browser and Node.js globals where appropriate * * @param {{ defaultSourceType?: string }} [options] - Optional configuration options. * - defaultSourceType: Default source type for TypeScript and JavaScript files that don't have source type indicated in the file name extension. * * @returns {import('eslint').Linter.Config[]} Complete ESLint flat configuration array * * @example * ```javascript * // Use the complete configuration * const config = buildFullConfig(); * * // Extend with custom rules * module.exports = [ * ...buildFullConfig(), * { rules: { 'no-console': 'warn' } } * ]; * ``` */ export function buildESLintConfig(options?: { defaultSourceType?: string; }): import("eslint").Linter.Config[]; /** * Customizes an existing ESLint configuration array by applying modifications to matching configurations. * * This utility function allows you to modify specific configuration objects within an array * based on a selector function. Useful for applying project-specific customizations. * * @param {import('eslint').Linter.Config[]} configArray - Array of ESLint configurations to modify * @param {function(import('eslint').Linter.Config): boolean} selector - Function to select which configs to modify * @param {function(import('eslint').Linter.Config): void} modifier - Function to apply modifications to selected configs * * @example * ```javascript * const { buildESLintConfig, customiseESLintConfig } = require('eslint-config-sensible-prettier-typescript'); * const { defineConfig } = require('eslint/config'); * const globals = require('globals'); * * // Modify all TypeScript configurations for applying desired globals * const config = buildESLintConfig({ defaultSourceType: 'module' }); * customiseESLintConfig( * config, * (cfg) => [cfg.files].flat().some((f) => typeof f === 'string' && f.endsWith('*.ts')), * (cfg) => { * cfg.languageOptions.globals = { * ...globals.node, * ...globals.browser, * ...globals.jquery, * }; * }, * ); * * // More overriding * module.exports = defineConfig([ * { * ignores: ['dist', 'coverage', 'report', 'node_modules'], * }, * ...config, * { * rules: { * 'unicorn/filename-case': 'off', * }, * }, * ]); * ``` */ export function customiseESLintConfig(configArray: import("eslint").Linter.Config[], selector: (arg0: import("eslint").Linter.Config) => boolean, modifier: (arg0: import("eslint").Linter.Config) => void): void; //# sourceMappingURL=config.d.mts.map