// @ts-check import stylistic from '@stylistic/eslint-plugin'; import withNuxt from './.nuxt/eslint.config.mjs'; export default withNuxt( // Disable legacy stylistic rules stylistic.configs['disable-legacy'], { files: ['**/*.vue', '**/*.js', '**/*.ts', '**/*.mjs'], ignores: [ 'node_modules/**', 'dist/**', '.nuxt/**', '.output/**', '.vite/**', '.*/**', ], plugins: { '@stylistic': stylistic, }, rules: { // Semicolon rules - require semicolons (Rust-style) '@stylistic/semi': ['error', 'always'], // Interface and type rules - require semicolons in interfaces '@stylistic/member-delimiter-style': ['error', { multiline: { delimiter: 'semi', requireLast: true }, singleline: { delimiter: 'semi', requireLast: false }, }], // Code quality rules 'camelcase': ['error', { properties: 'never', ignoreDestructuring: true }], 'no-console': ['error', { allow: ['info', 'warn', 'error'] }], 'sort-imports': ['error', { ignoreDeclarationSort: true }], // Nuxt specific rules 'nuxt/prefer-import-meta': 'error', // Vue specific rules 'vue/first-attribute-linebreak': ['error', { singleline: 'ignore', multiline: 'ignore' }], 'vue/no-unused-vars': ['error', { ignorePattern: '^_', }], 'vue/max-attributes-per-line': ['error', { singleline: 100 }], 'vue/singleline-html-element-content-newline': ['off'], 'vue/no-multiple-template-root': ['off'], 'vue/html-closing-bracket-spacing': ['error', { selfClosingTag: 'always' }], 'vue/html-indent': ['error', 2], 'vue/multiline-html-element-content-newline': ['error', { ignores: [] }], }, }, );