// oxlint-disable simple-import-sort/imports import js from '@eslint/js'; import typescriptEslint from '@typescript-eslint/eslint-plugin'; import tsParser from '@typescript-eslint/parser'; // import simpleImportSort from 'eslint-plugin-simple-import-sort'; import eslintPluginYml from 'eslint-plugin-yml'; import { defineConfig } from 'eslint/config'; import globals from 'globals'; const SOURCE_FILES_GLOB = '**/*.?([cm])[jt]s?(x)'; export default defineConfig([ { ignores: ['**/coverage', '**/.vscode', '**/docker-compose.yml', '!.github', 'assets/build', 'lib/routes-deprecated', 'lib/router.js', 'dist', 'dist-lib', 'dist-worker'], }, { files: [SOURCE_FILES_GLOB], plugins: { '@typescript-eslint': typescriptEslint, js, }, // extends: [typescriptEslint.configs['flat/recommended'], typescriptEslint.configs['flat/stylistic'], n.configs['flat/recommended-script']], languageOptions: { globals: { ...globals.node, ...globals.browser, }, parser: tsParser, ecmaVersion: 'latest', sourceType: 'module', }, linterOptions: { reportUnusedDisableDirectives: false, }, rules: { // #region typescript /* '@typescript-eslint/array-type': ['error', { default: 'array-simple' }], '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/consistent-indexed-object-style': 'off', // stylistic '@typescript-eslint/consistent-type-definitions': 'off', // stylistic '@typescript-eslint/no-empty-function': 'off', // stylistic && tests '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-inferrable-types': ['error', { ignoreParameters: true, ignoreProperties: true }], '@typescript-eslint/no-unused-expressions': ['error', { allowShortCircuit: true, allowTernary: true }], '@typescript-eslint/no-unused-vars': ['error', { args: 'after-used', argsIgnorePattern: '^_' }], */ // #endregion }, }, { files: ['**/*.yaml', '**/*.yml'], ignores: ['pnpm-lock.yaml'], plugins: { yml: eslintPluginYml, }, language: 'yml/yaml', rules: { 'lines-around-comment': ['error', { beforeBlockComment: false }], 'yml/indent': ['error', 4, { indicatorValueIndent: 2 }], 'yml/no-empty-mapping-value': 'off', 'yml/quotes': ['error', { prefer: 'single' }], }, }, ]);