import js from '@eslint/js'; import ts from 'typescript-eslint'; import svelte from 'eslint-plugin-svelte'; import prettier from 'eslint-config-prettier'; import globals from 'globals'; export default ts.config( js.configs.recommended, ...ts.configs.recommended, ...svelte.configs['flat/recommended'], prettier, ...svelte.configs['flat/prettier'], { languageOptions: { globals: { ...globals.browser, ...globals.node } } }, { rules: { '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' } ], '@typescript-eslint/consistent-type-imports': [ 'warn', { prefer: 'type-imports', fixStyle: 'separate-type-imports' } ], // console.warn/console.error are allowed for server-side observability // (logging dispatch failures, audit fallbacks). console.log is still flagged. 'no-console': ['warn', { allow: ['warn', 'error'] }], // SvelteMap / SvelteSet only matter inside .svelte rune state. The // stores layer uses plain Maps as caches that the runtime does not // need to track reactively (consumers re-read via $derived). Disable // project-wide to match the pre-existing repo state, where these // were never enforced. 'svelte/prefer-svelte-reactivity': 'off' } }, { files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], languageOptions: { parserOptions: { parser: ts.parser } }, rules: { 'svelte/no-navigation-without-resolve': 'off', 'svelte/prefer-writable-derived': 'off' } }, { ignores: ['build/', '.svelte-kit/', 'dist/', 'node_modules/', 'coverage/'] } );