import eslint from '@eslint/js'; import tseslint from 'typescript-eslint'; import tsParser from '@typescript-eslint/parser'; import globals from 'globals'; export default tseslint.config({ extends: [ eslint.configs.recommended, ...tseslint.configs.recommended, ], files: ['**/*.ts'], languageOptions: { parserOptions: { ecmaVersion: 2022, sourceType: 'module', parser: tsParser, }, globals: { ...globals.browser, ...globals.node, }, }, rules: { 'arrow-spacing': ['warn', { before: true, after: true, }], 'brace-style': ['error', 'stroustrup', { allowSingleLine: true, }], 'comma-dangle': ['error', 'always-multiline'], 'comma-spacing': 'error', 'comma-style': 'error', curly: ['error', 'multi-line', 'consistent'], 'dot-location': ['error', 'property'], 'handle-callback-err': 'off', indent: ['error', 'tab'], 'keyword-spacing': 'error', 'max-nested-callbacks': ['error', { max: 4, }], 'max-statements-per-line': ['error', { max: 2, }], 'no-console': 'off', 'no-empty-function': 'error', 'no-floating-decimal': 'error', 'no-inline-comments': 'error', 'no-lonely-if': 'error', 'no-multi-spaces': 'error', 'no-multiple-empty-lines': ['error', { max: 2, maxEOF: 1, maxBOF: 0, }], 'no-shadow': ['error', { allow: ['err', 'resolve', 'reject'], }], 'no-trailing-spaces': ['error'], 'no-var': 'error', '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_', varsIgnorePattern: '^_', }], 'no-unused-vars': 'off', 'object-curly-spacing': ['error', 'always'], 'prefer-const': 'error', quotes: ['error', 'single'], semi: ['error', 'always'], 'space-before-blocks': 'error', 'space-before-function-paren': ['error', { anonymous: 'never', named: 'never', asyncArrow: 'always', }], 'space-in-parens': 'error', 'space-infix-ops': 'error', 'space-unary-ops': 'error', 'spaced-comment': 'error', yoda: 'error', }, }, );