/* eslint-disable @typescript-eslint/naming-convention */ module.exports = { parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint', 'react', 'react-hooks'], ignorePatterns: [ 'build', 'dist', 'node_modules', 'renderer', '.next', '_next', '*.md', 'out', ], extends: [ 'next/core-web-vitals', 'eslint:recommended', 'plugin:import/typescript', 'plugin:@typescript-eslint/recommended', 'plugin:react/recommended', 'prettier', 'plugin:prettier/recommended', 'eslint-config-next/core-web-vitals', ], globals: { React: true, JSX: true, }, settings: { react: { version: 'detect', }, }, rules: { '@next/next/no-server-import-in-page': 'off', '@typescript-eslint/naming-convention': [ 'error', { selector: 'default', format: ['camelCase', 'PascalCase'], }, { selector: 'variableLike', format: ['camelCase', 'PascalCase', 'UPPER_CASE'], leadingUnderscore: 'allow', }, { selector: 'property', format: ['camelCase', 'snake_case', 'PascalCase', 'UPPER_CASE'], }, { selector: 'memberLike', format: ['camelCase', 'PascalCase'], }, { selector: 'typeLike', format: ['PascalCase'], }, { selector: 'property', filter: '^__html$', format: null, }, ], '@typescript-eslint/explicit-module-boundary-types': 'off', '@next/next/no-img-element': 'off', '@next/next/no-html-link-for-pages': 'off', 'react/display-name': 'off', 'react-hooks/rules-of-hooks': 'error', '@typescript-eslint/no-unused-vars': ['warn'], 'import/order': [ 'error', { 'alphabetize': { order: 'asc' }, 'groups': ['builtin', 'external', 'parent', 'sibling', 'index'], 'pathGroups': [ { pattern: 'react*', group: 'external', position: 'before', }, { pattern: 'next*', group: 'external', position: 'before', }, { pattern: 'next/*', group: 'external', position: 'before', }, { pattern: '@/assets/**', group: 'parent', position: 'before', }, { pattern: '@/components/**', group: 'parent', position: 'before', }, { pattern: '@/containers/**', group: 'parent', position: 'before', }, { pattern: '@/context/**', group: 'parent', position: 'before', }, { pattern: '@/constants/**', group: 'parent', position: 'before', }, { pattern: '@/hooks/**', group: 'parent', position: 'before', }, { pattern: '@/services/**', group: 'parent', position: 'before', }, { pattern: '@/screens/**', group: 'parent', position: 'before', }, { pattern: '@/utils/**', group: 'parent', position: 'before', }, { pattern: '@/styles/**', group: 'parent', position: 'before', }, ], 'pathGroupsExcludedImportTypes': ['react'], 'newlines-between': 'always-and-inside-groups', }, ], }, }