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.

65 lines (64 loc) 1.56 kB
import { GLOB_JSX, GLOB_TSX } from "@antfu/eslint-config"; import { pluginAntfu, pluginStylistic } from "../plugins.js"; 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 async function stylistic(options = {}) { const opts = { ...StylisticConfigDefaults, ...options }; return [ { name: "xaxa/stylistic/setup", plugins: { antfu: pluginAntfu, style: pluginStylistic }, rules: { ...pluginStylistic.configs.customize(opts).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 }).rules, "style/jsx-curly-spacing": ["error", "never"], "style/jsx-sort-props": ["error", { callbacksLast: true, shorthandFirst: true }] } }, { name: "xaxa/stylistic/overrides", rules: { ...opts.overrides } } ]; }