UNPKG

eslint-config-xaxa

Version:

The ultimate ESLint config - successor to Airbnb Config. Built on Anthony Fu's ESLint config, Airbnb, ESLint Stylistic, Perfectionist, React, TypeScript, Astro, JSDocs, Prettier, Node.js, Unicorns, Promises, and more.

80 lines (71 loc) 1.96 kB
import { GLOB_JSX, GLOB_TSX, type OptionsOverrides, type StylisticConfig, type TypedFlatConfigItem, } from '@antfu/eslint-config'; import { pluginAntfu, pluginStylistic } from '../plugins.ts'; export const StylisticConfigDefaults = { arrowParens: true, blockSpacing: true, braceStyle: '1tbs', commaDangle: 'always-multiline', indent: 2, jsx: false, overrides: {}, pluginName: 'style', quoteProps: 'consistent-as-needed', quotes: 'single', semi: true, severity: 'error', }; export interface StylisticOptions extends StylisticConfig, OptionsOverrides { lessOpinionated?: boolean; } export async function stylistic( options: StylisticOptions = {}, ): Promise<TypedFlatConfigItem[]> { const opts = { ...StylisticConfigDefaults, ...options, }; // await ensurePackages(['@stylistic/eslint-plugin']); return [{ name: 'xaxa/stylistic/setup', plugins: { antfu: pluginAntfu, style: pluginStylistic, }, rules: { ...pluginStylistic.configs.customize(opts as any).rules, 'antfu/consistent-chaining': 'error', 'antfu/consistent-list-newline': 'off', 'antfu/curly': 'error', 'antfu/if-newline': 'error', 'antfu/import-dedupe': 'error', 'antfu/no-import-dist': 'error', 'antfu/no-import-node-modules-by-path': 'error', 'antfu/no-top-level-await': 'off', 'antfu/no-ts-export-equal': 'error', 'antfu/top-level-function': 'error', }, }, { files: [GLOB_TSX, GLOB_JSX], name: 'xaxa/stylistic/jsx-files', plugins: { style: pluginStylistic }, rules: { ...pluginStylistic.configs.customize({ ...opts, jsx: true } as any).rules, 'style/jsx-curly-spacing': ['error', 'never'], 'style/jsx-sort-props': ['error', { callbacksLast: true, shorthandFirst: true, }], }, }, { name: 'xaxa/stylistic/overrides', rules: { ...opts.overrides, }, }]; }