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.
71 lines (57 loc) • 3.09 kB
text/typescript
import { ensurePackages, interopDefault, type TypedFlatConfigItem } from '@antfu/eslint-config';
// import { pluginUnicorn } from '../plugins.ts';
export async function unicorn(options?: TypedFlatConfigItem['rules']): Promise<TypedFlatConfigItem[]> {
await ensurePackages(['eslint-plugin-unicorn']);
const pluginUnicorn = await interopDefault(import('eslint-plugin-unicorn'));
return [{
name: 'xaxa/unicorn/rules',
plugins: { unicorn: pluginUnicorn },
rules: {
// It is pretty common to name it `err`, and there is almost no reason to be any other.
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/catch-error-name.md
'unicorn/catch-error-name': ['error', { name: 'err' }],
'unicorn/consistent-destructuring ': 'off',
// Enforce proper Error subclassing. (fixable)
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/custom-error-definition.md
'unicorn/custom-error-definition': 'error',
'unicorn/expiring-todo-comments': 'off',
// Pretty useful rule, but it depends.
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/filename-case.md
'unicorn/filename-case': 'off',
// Enforce importing index files with `.` instead of `./index`. (fixable)
// But we should be explicit. We know it is working without that,
// but at least it is good for newcomers.
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/import-index.md
'unicorn/import-index': 'off',
'unicorn/no-array-reduce': 'off',
'unicorn/no-await-expression-member': 'off',
// Please don't annoy me.
'unicorn/no-null': 'off',
// These below are intentional & explicit overrides of XO and Unicorn
'unicorn/no-process-exit': 'off',
// 'prefer-destructuring': ['warn', { object: true, array: false }],
'unicorn/no-unreadable-array-destructuring': 'error', // default in recommended
// Disallow unsafe regular expressions.
// Don't allow potential catastrophic crashes, slow behaving and downtimes.
// You still can disable that and do whatever you want,
// but that will be explicit and visible.
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/rules/no-unsafe-regex.md
// 'unicorn/no-unsafe-regex': 'error',
'unicorn/no-unused-properties': 'error',
'unicorn/no-useless-spread': 'off', // useless rule
// Doesn't work well in node-land. We have `.on/.off` emitters in Nodejs.
'unicorn/prefer-add-event-listener': 'off',
'unicorn/prefer-spread': 'off',
'unicorn/prefer-switch': 'off', // fvck off
// It is too much annoyance for me. It's a good thing, but generally
// after so many years we already name things properly,
// so please don't mess with me and don't correct me.
'unicorn/prevent-abbreviations': 'off',
},
}, {
name: 'xaxa/unicorn/user-overrides',
rules: {
...(options || {}),
},
}];
}