eslint-config-sensible-prettier-typescript
Version:
Sensible default eslint rules and prettier rules for Typescript projects
107 lines • 4.57 kB
text/typescript
/**
* 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