import js from "@eslint/js"; import pluginVue from "eslint-plugin-vue"; import globals from "globals"; export default [ { ignores: ["dist/**", "node_modules/**"] }, js.configs.recommended, ...pluginVue.configs["flat/recommended"], { files: ["**/*.{js,vue}"], languageOptions: { ecmaVersion: "latest", sourceType: "module", globals: { ...globals.browser } }, rules: { // o que esta config existe para pegar: o `npm run build` passa com identificador // inexistente no template, e não havia nada apontando símbolo morto "vue/no-undef-properties": "error", "vue/no-unused-properties": ["error", { groups: ["props", "setup"] }], "no-unused-vars": ["error", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }], // catch vazio é o idioma correto ao redor de localStorage/JSON.parse, que podem // falhar em navegação privada e não têm tratamento útil "no-empty": ["error", { allowEmptyCatch: true }], // o design system tem componentes de uma palavra por convenção (Spinner) "vue/multi-word-component-names": "off", // formatação fica com o editor; aqui só o que indica defeito "vue/max-attributes-per-line": "off", "vue/singleline-html-element-content-newline": "off", "vue/html-self-closing": "off", "vue/html-indent": "off", "vue/html-closing-bracket-newline": "off", "vue/attributes-order": "off", "vue/first-attribute-linebreak": "off", "vue/multiline-html-element-content-newline": "off" } }, { files: ["vite.config.js", "eslint.config.js", "scripts/**"], languageOptions: { globals: { ...globals.node } } } ];