ant-design/eslint.config.mjs

139 lines
4.6 KiB
JavaScript
Raw Permalink Normal View History

// eslint.config.mjs
import antfu from '@antfu/eslint-config';
import compat from 'eslint-plugin-compat';
import jest from 'eslint-plugin-jest';
import jsxA11y from 'eslint-plugin-jsx-a11y';
export default antfu(
{
ignores: [
'**/node_modules/**',
'**/dist/**',
'**/_site/**',
'**/es/**',
'**/lib/**',
'**/.dumi/tmp/**',
'**/.dumi/tmp-production/**',
'**/*.snap',
'**/*.md',
'.dumi/scripts/clarity.js',
],
settings: {
polyfills: ['Promise', 'URL'],
},
type: 'lib',
stylistic: false,
typescript: true,
react: true,
rules: {
'node/prefer-global/process': 'off', // TODO: remove this
'node/prefer-global/buffer': 'off', // TODO: remove this
'jsdoc/empty-tags': 'off',
'ts/no-require-imports': 'off',
'ts/explicit-function-return-type': 'off',
'ts/ban-ts-comment': 'off', // TODO: remove this
'ts/consistent-type-definitions': 'off',
'ts/consistent-type-imports': 'off', // TODO: remove this
'ts/method-signature-style': 'off', // TODO: remove this
'ts/no-non-null-asserted-optional-chain': 'off',
'unicorn/prefer-number-properties': 'off',
'unicorn/prefer-node-protocol': 'off',
'unicorn/prefer-includes': 'off', // TODO: remove this
'unicorn/no-new-array': 'off',
'unicorn/prefer-string-starts-ends-with': 'off', // TODO: remove this
'regexp/no-unused-capturing-group': 'off',
'regexp/no-misleading-capturing-group': 'off',
'regexp/no-super-linear-backtracking': 'off', // TODO: remove this
'regexp/optimal-quantifier-concatenation': 'off',
'test/prefer-lowercase-title': 'off',
'test/prefer-hooks-in-order': 'off', // TODO: remove this
'react-hooks/exhaustive-deps': 'off',
'react/prefer-destructuring-assignment': 'off', // TODO: remove this
'react-refresh/only-export-components': 'off', // TODO: remove this
'react/no-clone-element': 'off',
'react/no-children-for-each': 'off',
'react/no-children-count': 'off',
'react/no-children-map': 'off',
'react/no-children-only': 'off',
'react/no-unstable-default-props': 'off',
'react/no-create-ref': 'off', // TODO: remove this
'perfectionist/sort-imports': 'off',
'perfectionist/sort-exports': 'off',
'perfectionist/sort-named-imports': 'off',
'perfectionist/sort-named-exports': 'off',
'regexp/strict': 'off',
},
},
compat.configs['flat/recommended'],
jest.configs['flat/recommended'],
{
...jsxA11y.flatConfigs.recommended,
rules: {
...jsxA11y.flatConfigs.recommended.rules,
'jsx-a11y/no-noninteractive-element-interactions': 'off',
'jsx-a11y/no-static-element-interactions': 'off',
'jsx-a11y/click-events-have-key-events': 'off',
'jsx-a11y/no-autofocus': 'off',
'jsx-a11y/anchor-is-valid': 'off', // TODO: remove this
},
},
{
// tests
files: ['**/*.test.ts', 'tests/**/*', '**/__tests__/**/*', 'scripts/**/*', '**/*.test.tsx'],
rules: {
'react/no-create-ref': 'off',
'react/no-nested-components': 'off',
'react/no-useless-fragment': 'off',
'no-console': 'off',
'no-restricted-globals': 'off',
'unicorn/consistent-function-scoping': 'off',
'ts/no-non-null-asserted-optional-chain': 'off',
'compat/compat': 'off',
'jest/no-test-callback': 'off',
'jest/expect-expect': 'off',
'jest/no-done-callback': 'off',
'jest/valid-title': 'off',
'jest/no-conditional-expect': 'off',
'jest/no-standalone-expect': 'off',
'jsx-a11y/anchor-is-valid': 'off',
'jsx-a11y/anchor-has-content': 'off',
'prefer-promise-reject-errors': 'off',
},
},
{
// demos
files: ['components/*/demo/*.tsx'],
rules: {
'react/no-create-ref': 'off',
'no-console': 'off',
'unicorn/consistent-function-scoping': 'off',
'jsx-a11y/anchor-is-valid': 'off',
'jsx-a11y/anchor-has-content': 'off',
},
settings: {
polyfills: ['Promise', 'URL', 'fetch', 'requestAnimationFrame'],
},
},
{
// dumi site
files: ['.dumi/**/*'],
rules: {
'react-refresh/only-export-components': 'off', // TODO: remove this
'react-dom/no-dangerously-set-innerhtml': 'off', // TODO: remove this
'react/no-array-index-key': 'off',
'react-dom/no-missing-iframe-sandbox': 'off',
'no-restricted-globals': 'off',
},
settings: {
polyfills: ['Promise', 'URL', 'URLSearchParams'],
},
},
{
// locales
files: ['components/locale/*.ts', 'components/form/demo/*.tsx'],
rules: {
'no-template-curly-in-string': 'off',
},
},
);