/** * ───────────────────────────────────────────── * SPB Git — Personal Git Platform * ───────────────────────────────────────────── * Author : Simon-Pierre Boucher * Contact : contact@spboucher.ai * File : eslint.config.mjs * Purpose : ESLint flat configuration for the whole project * License : MIT © Simon-Pierre Boucher * ───────────────────────────────────────────── */ import js from '@eslint/js'; export default [ js.configs.recommended, { ignores: ['node_modules/**', 'dev/**', 'coverage/**', 'dist/**', 'src/web/assets/vendor/**'], }, { files: ['**/*.mjs', '**/*.cjs', '**/*.js'], languageOptions: { ecmaVersion: 2024, sourceType: 'module', globals: { console: 'readonly', process: 'readonly', Buffer: 'readonly', URL: 'readonly', URLSearchParams: 'readonly', fetch: 'readonly', setTimeout: 'readonly', clearTimeout: 'readonly', setInterval: 'readonly', clearInterval: 'readonly', queueMicrotask: 'readonly', AbortController: 'readonly', TextEncoder: 'readonly', TextDecoder: 'readonly', crypto: 'readonly', structuredClone: 'readonly', }, }, rules: { 'no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], 'no-console': 'off', eqeqeq: ['error', 'smart'], 'prefer-const': 'error', 'no-var': 'error', }, }, { files: ['deploy/ecosystem.config.cjs'], languageOptions: { sourceType: 'commonjs', globals: { module: 'writable', require: 'readonly', __dirname: 'readonly', process: 'readonly' }, }, }, { files: ['src/web/assets/js/**/*.js'], languageOptions: { sourceType: 'script', globals: { window: 'readonly', document: 'readonly', localStorage: 'readonly', navigator: 'readonly', location: 'readonly', matchMedia: 'readonly', requestAnimationFrame: 'readonly', history: 'readonly', CustomEvent: 'readonly', fetch: 'readonly', setTimeout: 'readonly', clearTimeout: 'readonly', console: 'readonly', }, }, rules: { // Plain browser scripts (no build step): var + empty catch are idiomatic. 'no-var': 'off', 'no-unused-vars': ['error', { caughtErrors: 'none' }], }, }, ];