import js from '@eslint/js'; import eslintPluginSvelte from 'eslint-plugin-svelte'; import eslintPluginUnicorn from 'eslint-plugin-unicorn'; import globals from 'globals'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import parser from 'svelte-eslint-parser'; import typescriptEslint from 'typescript-eslint'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); export default typescriptEslint.config( ...eslintPluginSvelte.configs.recommended, eslintPluginUnicorn.configs.recommended, js.configs.recommended, { ignores: [ '**/.DS_Store', '**/node_modules', 'build', '.svelte-kit', 'package', '**/.env', '**/.env.*', '!**/.env.example', '**/pnpm-lock.yaml', '**/package-lock.json', '**/yarn.lock', '**/svelte.config.js', 'eslint.config.js', 'postcss.config.cjs', 'tailwind.config.js', 'coverage', ], }, typescriptEslint.configs.recommended, { plugins: { svelte: eslintPluginSvelte, }, languageOptions: { globals: { ...globals.browser, ...globals.node, NodeJS: true, }, parser: typescriptEslint.parser, ecmaVersion: 2022, sourceType: 'module', parserOptions: { extraFileExtensions: ['.svelte'], tsconfigRootDir: __dirname, project: ['./tsconfig.json'], }, }, rules: { '@typescript-eslint/no-unused-vars': [ 'warn', { argsIgnorePattern: '^_$', varsIgnorePattern: '^_$', }, ], curly: 2, 'unicorn/no-useless-undefined': 'off', 'unicorn/prefer-spread': 'off', 'unicorn/no-null': 'off', 'unicorn/prevent-abbreviations': 'off', 'unicorn/no-nested-ternary': 'off', 'unicorn/consistent-function-scoping': 'off', 'unicorn/filename-case': 'off', 'unicorn/prefer-top-level-await': 'off', 'unicorn/import-style': 'off', 'svelte/button-has-type': 'error', '@typescript-eslint/await-thenable': 'error', '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/no-misused-promises': 'error', '@typescript-eslint/require-await': 'error', 'object-shorthand': ['error', 'always'], }, }, { files: ['**/*.svelte'], languageOptions: { parser: parser, ecmaVersion: 5, sourceType: 'script', parserOptions: { parser: typescriptEslint.parser, }, }, }, );