import eslint from '@eslint/js'; import globals from 'globals'; import tseslint from 'typescript-eslint'; import vue from 'eslint-plugin-vue'; export default tseslint.config( { ignores: [ '**/node_modules/**', '**/dist/**', '**/.nuxt/**', '**/.output/**', '**/coverage/**', '**/tmp/**', '**/test-results/**', ], }, eslint.configs.recommended, ...tseslint.configs.recommended, ...vue.configs['flat/recommended'], { files: ['tooling/**/*.mjs'], languageOptions: { globals: { ...globals.node, ...globals.browser, }, }, }, { files: ['**/*.{ts,tsx,vue}'], languageOptions: { globals: { ...globals.browser, ...globals.node, computed: 'readonly', onBeforeUnmount: 'readonly', onMounted: 'readonly', reactive: 'readonly', ref: 'readonly', useConferenceApi: 'readonly', useHead: 'readonly', useRoute: 'readonly', useRouter: 'readonly', }, parserOptions: { parser: tseslint.parser, extraFileExtensions: ['.vue'], }, }, rules: { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], 'vue/multi-word-component-names': 'off', 'vue/html-self-closing': 'off', 'vue/max-attributes-per-line': 'off', 'vue/singleline-html-element-content-newline': 'off', 'vue/attributes-order': 'off', }, }, );