import tsParser from '@typescript-eslint/parser'; import astroParser from 'astro-eslint-parser'; import astroPlugin from 'eslint-plugin-astro'; import importsPlugin from 'eslint-plugin-import'; export default [ { // Apply to all files files: ['**/*'], ignores: [ 'node_modules/**/*', 'dist/**/*', '**/src/components/ui/**', '**/components/ui/**', ], plugins: { import: importsPlugin, }, rules: { 'import/order': [ 'error', { groups: [ ['builtin', 'external'], ['internal', 'parent', 'sibling', 'index'], ], pathGroups: [ { pattern: 'react', group: 'builtin', position: 'before', }, { pattern: 'next/**', group: 'builtin', position: 'before', }, { pattern: '@/**', group: 'internal', position: 'after', }, ], pathGroupsExcludedImportTypes: ['builtin'], 'newlines-between': 'always', alphabetize: { order: 'asc', caseInsensitive: true, }, }, ], }, }, { // Apply specifically to Astro files files: ['**/*.astro'], plugins: { astro: astroPlugin, }, languageOptions: { parser: astroParser, parserOptions: { parser: tsParser, extraFileExtensions: ['.astro'], sourceType: 'module', }, globals: { Astro: 'readonly', Fragment: 'readonly', }, }, rules: { // Astro recommended rules 'astro/no-conflict-set-directives': 'error', 'astro/no-unused-define-vars-in-style': 'error', }, }, { // Apply to TypeScript files files: ['**/*.ts', '**/*.tsx'], languageOptions: { parser: tsParser, parserOptions: { sourceType: 'module', }, }, }, ];