import js from '@eslint/js'; import tsParser from '@typescript-eslint/parser'; import tsPlugin from '@typescript-eslint/eslint-plugin'; import sveltePlugin from 'eslint-plugin-svelte'; import svelteParser from 'svelte-eslint-parser'; export default [ { ignores: [ '.svelte-kit/**', '.vercel/**', 'build/**', 'node_modules/**', 'dist/**', '**/*.config.js' ] }, js.configs.recommended, { files: ['**/*.ts', '**/*.svelte'], languageOptions: { parser: tsParser, parserOptions: { project: './tsconfig.json', extraFileExtensions: ['.svelte'] }, globals: { // browser globals window: 'readonly', document: 'readonly', console: 'readonly', fetch: 'readonly', localStorage: 'readonly', sessionStorage: 'readonly', setTimeout: 'readonly', clearTimeout: 'readonly', alert: 'readonly', confirm: 'readonly', navigator: 'readonly', location: 'readonly', history: 'readonly', crypto: 'readonly', // svelte 5 runes $state: 'readonly', $derived: 'readonly', $effect: 'readonly', $props: 'readonly', $bindable: 'readonly', $inspect: 'readonly' } }, plugins: { '@typescript-eslint': tsPlugin }, rules: { 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrors: 'none' } ] } }, { files: ['**/*.svelte'], languageOptions: { parser: svelteParser, parserOptions: { parser: tsParser } }, plugins: { svelte: sveltePlugin }, rules: { ...sveltePlugin.configs.recommended.rules } } ];