import eslint from '@eslint/js' import tseslint from 'typescript-eslint' import pluginVue from 'eslint-plugin-vue' import globals from 'globals' export default [ { ignores: ['dist/**', 'node_modules/**'] }, eslint.configs.recommended, ...tseslint.configs.recommended, ...pluginVue.configs['flat/recommended'], { languageOptions: { globals: { ...globals.browser, ...globals.es2022, }, parserOptions: { parser: tseslint.parser, extraFileExtensions: ['.vue'], sourceType: 'module', }, }, rules: { 'vue/multi-word-component-names': 'off', // Vuetify's compact attribute style — these formatting rules are too strict 'vue/max-attributes-per-line': 'off', 'vue/singleline-html-element-content-newline': 'off', 'vue/html-self-closing': 'off', '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], '@typescript-eslint/no-explicit-any': 'warn', }, }, { files: ['tests/**/*.ts'], languageOptions: { globals: { ...globals.node, describe: 'readonly', it: 'readonly', expect: 'readonly', beforeEach: 'readonly', vi: 'readonly', }, }, }, ]