import jsdoc from 'eslint-plugin-jsdoc'; import prettier from 'eslint-plugin-prettier'; import configPrettier from 'eslint-config-prettier'; export default [ { ignores: [ "node_modules/", "eslint.config.mjs", "build.mjs", "gulpfile.js" ], languageOptions: { globals: { browser: true, es2022: true, node: true, jquery: true, }, ecmaVersion: 2022, sourceType: 'module', }, plugins: { jsdoc, prettier }, rules: { 'array-bracket-spacing': ['warn', 'never'], 'array-callback-return': 'warn', 'arrow-spacing': 'warn', 'comma-dangle': ['warn', 'never'], 'comma-style': 'warn', 'computed-property-spacing': 'warn', 'constructor-super': 'error', 'default-param-last': 'warn', 'dot-location': ['warn', 'property'], 'eol-last': ['error', 'always'], 'eqeqeq': ['warn', 'smart'], 'func-call-spacing': 'warn', 'func-names': ['warn', 'never'], 'getter-return': 'warn', 'lines-between-class-members': 'warn', 'new-parens': ['warn', 'always'], 'no-alert': 'warn', 'no-array-constructor': 'warn', 'no-class-assign': 'warn', 'no-compare-neg-zero': 'warn', 'no-cond-assign': 'warn', 'no-const-assign': 'error', 'no-constant-condition': 'warn', 'no-constructor-return': 'warn', 'no-delete-var': 'warn', 'no-dupe-args': 'warn', 'no-dupe-class-members': 'warn', 'no-dupe-keys': 'warn', 'no-duplicate-case': 'warn', 'no-duplicate-imports': ['warn', { includeExports: true }], 'no-empty': ['warn', { allowEmptyCatch: true }], 'no-empty-character-class': 'warn', 'no-empty-pattern': 'warn', 'no-func-assign': 'warn', 'no-global-assign': 'warn', 'no-implicit-coercion': ['warn', { allow: ['!!'] }], 'no-implied-eval': 'warn', 'no-import-assign': 'warn', 'no-invalid-regexp': 'warn', 'no-irregular-whitespace': 'warn', 'no-iterator': 'warn', 'no-lone-blocks': 'warn', 'no-lonely-if': 'off', 'no-loop-func': 'warn', 'no-misleading-character-class': 'warn', 'no-mixed-operators': 'warn', 'no-multi-str': 'warn', 'no-multiple-empty-lines': 'warn', 'no-new-func': 'warn', 'no-new-object': 'warn', 'no-new-symbol': 'warn', 'no-new-wrappers': 'warn', 'no-nonoctal-decimal-escape': 'warn', 'no-obj-calls': 'warn', 'no-octal': 'warn', 'no-octal-escape': 'warn', 'no-promise-executor-return': 'warn', 'no-proto': 'warn', 'no-regex-spaces': 'warn', 'no-script-url': 'warn', 'no-self-assign': 'warn', 'no-self-compare': 'warn', 'no-setter-return': 'warn', 'no-sequences': 'warn', 'no-template-curly-in-string': 'warn', 'no-this-before-super': 'error', 'no-unexpected-multiline': 'warn', 'no-unmodified-loop-condition': 'warn', 'no-unneeded-ternary': 'warn', 'no-unreachable': 'warn', 'no-unreachable-loop': 'warn', 'no-unsafe-negation': ['warn', { enforceForOrderingRelations: true }], 'no-unsafe-optional-chaining': ['warn', { disallowArithmeticOperators: true }], 'no-unused-expressions': 'warn', 'no-useless-backreference': 'warn', 'no-useless-call': 'warn', 'no-useless-catch': 'warn', 'no-useless-computed-key': ['warn', { enforceForClassMembers: true }], 'no-useless-concat': 'warn', 'no-useless-constructor': 'warn', 'no-useless-rename': 'warn', 'no-useless-return': 'warn', 'no-var': 'warn', 'no-void': 'warn', 'no-whitespace-before-property': 'warn', 'prefer-numeric-literals': 'warn', 'prefer-object-spread': 'warn', 'prefer-regex-literals': 'warn', 'prefer-spread': 'warn', 'rest-spread-spacing': ['warn', 'never'], 'semi-spacing': 'warn', 'semi-style': ['warn', 'last'], 'space-unary-ops': ['warn', { words: true, nonwords: false }], 'switch-colon-spacing': 'warn', 'symbol-description': 'warn', 'template-curly-spacing': ['warn', 'never'], 'unicode-bom': ['warn', 'never'], 'use-isnan': ['warn', { enforceForSwitchCase: true, enforceForIndexOf: true }], 'valid-typeof': ['warn', { requireStringLiterals: true }], 'wrap-iife': ['warn', 'inside'], 'arrow-parens': ['warn', 'as-needed', { requireForBlockBody: false }], 'capitalized-comments': ['warn', 'always', { ignoreConsecutiveComments: true, ignorePattern: 'noinspection', }], 'comma-spacing': 'warn', 'dot-notation': 'warn', indent: ['warn', 2, { SwitchCase: 1 }], 'key-spacing': 'warn', 'keyword-spacing': ['warn', { overrides: { catch: { before: true, after: false } } }], 'max-len': ['warn', { code: 180, ignoreTrailingComments: true, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true, }], 'no-extra-boolean-cast': ['warn', { enforceForLogicalOperands: true }], 'no-multi-spaces': ['warn', { ignoreEOLComments: true }], 'no-tabs': 'warn', 'no-throw-literal': 'error', 'no-trailing-spaces': 'warn', 'no-useless-escape': 'warn', 'nonblock-statement-body-position': ['warn', 'beside'], 'one-var': ['warn', 'never'], 'operator-linebreak': ['warn', 'before', { overrides: { '=': 'after', '+=': 'after', '-=': 'after' }, }], 'prefer-template': 'warn', 'quote-props': ['warn', 'as-needed', { keywords: false }], quotes: ['warn', 'double', { avoidEscape: true, allowTemplateLiterals: false }], semi: ["error", "never"], 'spaced-comment': 'warn', 'jsdoc/check-access': 'warn', 'jsdoc/check-alignment': 'warn', 'jsdoc/check-examples': 'off', 'jsdoc/check-indentation': 'off', 'jsdoc/check-line-alignment': 'off', 'jsdoc/check-param-names': 'warn', 'jsdoc/check-property-names': 'warn', 'jsdoc/check-syntax': 'off', 'jsdoc/check-tag-names': ['warn', { definedTags: ['category'] }], 'jsdoc/check-types': 'warn', 'jsdoc/check-values': 'warn', 'jsdoc/empty-tags': 'warn', 'jsdoc/implements-on-classes': 'warn', 'jsdoc/match-description': 'off', 'jsdoc/newline-after-description': 'off', 'jsdoc/no-bad-blocks': 'warn', 'jsdoc/no-defaults': 'off', 'jsdoc/no-types': 'off', 'jsdoc/no-undefined-types': 'off', 'jsdoc/require-description': 'warn', 'jsdoc/require-description-complete-sentence': 'off', 'jsdoc/require-example': 'off', 'jsdoc/require-file-overview': 'off', 'jsdoc/require-hyphen-before-param-description': ['warn', 'never'], 'jsdoc/require-jsdoc': 'warn', 'jsdoc/require-param': 'warn', 'jsdoc/require-param-description': 'off', 'jsdoc/require-param-name': 'warn', 'jsdoc/require-param-type': 'warn', 'jsdoc/require-property': 'warn', 'jsdoc/require-property-description': 'off', 'jsdoc/require-property-name': 'warn', 'jsdoc/require-property-type': 'warn', 'jsdoc/require-returns': 'off', 'jsdoc/require-returns-check': 'warn', 'jsdoc/require-returns-description': 'off', 'jsdoc/require-returns-type': 'warn', 'jsdoc/require-throws': 'off', 'jsdoc/require-yields': 'warn', 'jsdoc/require-yields-check': 'warn', 'jsdoc/valid-types': 'off', }, settings: { jsdoc: { preferredTypes: { '.<>': '<>', object: 'Object', Object: 'object', }, mode: 'typescript', tagNamePreference: { augments: 'extends', }, }, }, }, // Ajout de la configuration Prettier qui désactive les règles ESLint en conflit avec Prettier configPrettier ];