eslint.config.mjs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import globals from 'globals'
  2. import withNuxt from './.nuxt/eslint.config.mjs'
  3. // Polyfill for structuredClone if it doesn't exist
  4. if (typeof structuredClone !== 'function') {
  5. globalThis.structuredClone = function (obj) {
  6. return JSON.parse(JSON.stringify(obj))
  7. }
  8. }
  9. // Configuration de base personnalisée
  10. const customConfig = [
  11. {
  12. ignores: [
  13. '**/.nuxt',
  14. 'coverage/*',
  15. 'vendor/*',
  16. 'dist/*',
  17. 'models/models.ts',
  18. ],
  19. },
  20. {
  21. languageOptions: {
  22. globals: {
  23. ...globals.browser,
  24. ...globals.node,
  25. useRuntimeConfig: 'readonly',
  26. useAsyncData: 'readonly',
  27. navigateTo: 'readonly',
  28. computed: 'readonly',
  29. ref: 'readonly',
  30. definePageMeta: 'readonly',
  31. useRouter: 'readonly',
  32. useRoute: 'readonly',
  33. useI18n: 'readonly',
  34. onMounted: 'readonly',
  35. onUnmounted: 'readonly',
  36. watch: 'readonly',
  37. useRepo: 'readonly',
  38. },
  39. },
  40. rules: {
  41. 'no-console': 0,
  42. 'vue/valid-v-slot': [
  43. 'error',
  44. {
  45. allowModifiers: true,
  46. },
  47. ],
  48. 'vue/multi-word-component-names': 0,
  49. '@typescript-eslint/no-inferrable-types': 0,
  50. '@typescript-eslint/no-extraneous-class': 0,
  51. },
  52. },
  53. // Directory-specific configurations
  54. {
  55. files: ['**/*.vue'],
  56. rules: {
  57. '@typescript-eslint/no-unused-vars': 0,
  58. },
  59. },
  60. {
  61. files: ['layouts/**/*.vue'],
  62. rules: {
  63. 'vue/multi-word-component-names': 0,
  64. },
  65. },
  66. {
  67. files: ['pages/**/*.vue'],
  68. rules: {
  69. 'vue/multi-word-component-names': 0,
  70. },
  71. },
  72. {
  73. files: ['tests/**/*'],
  74. rules: {
  75. '@typescript-eslint/ban-ts-comment': 0,
  76. '@typescript-eslint/no-unused-vars': 0,
  77. '@typescript-eslint/no-explicit-any': 0,
  78. 'require-await': 0,
  79. },
  80. },
  81. ]
  82. // Utiliser withNuxt avec l'option standalone: false pour éviter les conflits
  83. export default withNuxt(customConfig)