1+ import globals from "globals" ;
2+ import astro from "eslint-plugin-astro" ;
3+ import typescriptEslint from "@typescript-eslint/eslint-plugin" ;
4+ import tsParser from "@typescript-eslint/parser" ;
5+ import vueParser from "vue-eslint-parser" ;
6+ import astroParser from "astro-eslint-parser" ;
7+ import path from "node:path" ;
8+ import { fileURLToPath } from "node:url" ;
9+ import js from "@eslint/js" ;
10+ import { FlatCompat } from "@eslint/eslintrc" ;
11+
12+ const __filename = fileURLToPath ( import . meta. url ) ;
13+ const __dirname = path . dirname ( __filename ) ;
14+ const compat = new FlatCompat ( {
15+ baseDirectory : __dirname ,
16+ recommendedConfig : js . configs . recommended ,
17+ allConfig : js . configs . all
18+ } ) ;
19+
20+ export default [ ...compat . extends ( "eslint:recommended" , "plugin:@typescript-eslint/recommended" ) , {
21+
22+ plugins : {
23+ "@typescript-eslint" : typescriptEslint ,
24+ } ,
25+
26+ languageOptions : {
27+ globals : {
28+ ...globals . browser ,
29+ ...globals . node ,
30+ Fragment : "readonly" ,
31+ } ,
32+
33+ parser : tsParser ,
34+ ecmaVersion : "latest" ,
35+ sourceType : "module" ,
36+ } ,
37+ } , {
38+ files : [ "**/*.js" ] ,
39+
40+ languageOptions : {
41+ globals : {
42+ global : "writeable" ,
43+ } ,
44+ } ,
45+ } , ...compat . extends (
46+ "eslint:recommended" ,
47+ "plugin:astro/recommended" ,
48+ "plugin:astro/jsx-a11y-strict" ,
49+ ) . map ( config => ( {
50+ ...config ,
51+ files : [ "**/*.astro" ] ,
52+ } ) ) , {
53+ files : [ "**/*.astro" ] ,
54+
55+ languageOptions : {
56+ parser : astroParser ,
57+ ecmaVersion : 5 ,
58+ sourceType : "script" ,
59+
60+ parserOptions : {
61+ parser : "@typescript-eslint/parser" ,
62+ extraFileExtensions : [ ".astro" ] ,
63+ } ,
64+ } ,
65+
66+ rules : {
67+ "astro/jsx-a11y/anchor-is-valid" : "off" ,
68+ } ,
69+ } , ...compat . extends ( "plugin:vue/vue3-recommended" , "plugin:vuejs-accessibility/recommended" ) . map ( config => ( {
70+ ...config ,
71+ files : [ "**/*.vue" ] ,
72+ } ) ) , {
73+ files : [ "**/*.vue" ] ,
74+
75+ languageOptions : {
76+ parser : vueParser ,
77+ ecmaVersion : "latest" ,
78+ sourceType : "module" ,
79+ } ,
80+
81+ rules : {
82+ "vuejs-accessibility/label-has-for" : [ "error" , {
83+ required : {
84+ some : [ "id" ] ,
85+ } ,
86+ } ] ,
87+ } ,
88+ } ] ;
0 commit comments