/*
 * Copyright (C) 2022 Savoir-faire Linux Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation; either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public
 * License along with this program.  If not, see
 * <https://www.gnu.org/licenses/>.
 */

const header = [
  'error',
  'block',
  [
    '',
    {
      pattern: ' \\* Copyright \\(C\\) (\\d{4}|(\\d{4}-\\d{4})) Savoir-faire Linux Inc\\.',
      template: ` * Copyright (C) ${new Date().getFullYear()} Savoir-faire Linux Inc.`,
    },
    ' *',
    ' * This program is free software; you can redistribute it and/or modify',
    ' * it under the terms of the GNU Affero General Public License as',
    ' * published by the Free Software Foundation; either version 3 of the',
    ' * License, or (at your option) any later version.',
    ' *',
    ' * This program is distributed in the hope that it will be useful,',
    ' * but WITHOUT ANY WARRANTY; without even the implied warranty of',
    ' * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the',
    ' * GNU Affero General Public License for more details.',
    ' *',
    ' * You should have received a copy of the GNU Affero General Public',
    ' * License along with this program.  If not, see',
    ' * <https://www.gnu.org/licenses/>.',
    ' ',
  ],
];

module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    /* TODO: Enable these configs once the project is fully converted to typescript */
    // "plugin:@typescript-eslint/recommended-requiring-type-checking",
    // "plugin:@typescript-eslint/strict",
    'prettier',
  ],
  ignorePatterns: ['node_modules/', 'dist/', 'daemon/', 'test/'],
  overrides: [
    {
      files: ['**/*.test.{js,jsx,ts,tsx}', '**/*.cy.{js,jsx,ts,tsx}'],
      env: {
        jest: true,
        'cypress/globals': true,
      },
    },
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion: 'latest',
    sourceType: 'module',
  },
  plugins: ['@typescript-eslint', 'header', 'html', 'simple-import-sort', 'unused-imports', 'cypress'],
  rules: {
    '@typescript-eslint/ban-ts-comment': 'off',
    '@typescript-eslint/no-empty-function': 'off',
    '@typescript-eslint/no-explicit-any': 'off',
    '@typescript-eslint/no-non-null-assertion': 'off',
    '@typescript-eslint/no-unused-vars': 'off',
    camelcase: 'error',
    eqeqeq: ['error', 'smart'],
    'header/header': header,
    'no-constant-condition': ['error', { checkLoops: false }],
    'simple-import-sort/exports': 'warn',
    'simple-import-sort/imports': 'warn',
    'unused-imports/no-unused-imports': 'error',
    'unused-imports/no-unused-vars': [
      'warn',
      { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_', ignoreRestSiblings: true },
    ],
  },
};
