import { globalIgnores } from 'eslint/config'; import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'; import pluginVue from 'eslint-plugin-vue'; // import pluginVitest from '@vitest/eslint-plugin'; import js from '@eslint/js'; import globals from 'globals'; import stylistic from '@stylistic/eslint-plugin'; import jsdoc from 'eslint-plugin-jsdoc'; export default defineConfigWithVueTs( { name: 'app/files-to-lint', files: ['**/*.{vue,ts,js,mts,tsx}'], }, js.configs.recommended, jsdoc.configs['flat/recommended-mixed'], // Add @stylistic configuration stylistic.configs.customize({ indent: 4, quotes: 'single', semi: true, // Add any other stylistic preferences here }), ...pluginVue.configs['flat/essential'], vueTsConfigs.recommended, { name: 'app/global-rules', files: ['**/*.{js,ts,vue}'], rules: { 'eqeqeq': ['error', 'smart'], 'no-nested-ternary': 'error', 'no-param-reassign': 'error', 'jsdoc/require-jsdoc': 'off', '@stylistic/comma-dangle': 'off', '@stylistic/max-len': ['error', { code: 160, tabWidth: 4, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true }], 'vue/max-len': ['error', { code: 160, template: 160, tabWidth: 4, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true, ignoreHTMLTextContents: false }], } }, { name: 'app/custom-vue-rules', files: ['**/*.vue'], rules: { 'vue/block-lang': ['error', { script: { lang: ['js', 'ts'], allowNoLang: true // Still allow