import { fileURLToPath } from "node:url"; import { includeIgnoreFile } from "@eslint/compat"; import js from "@eslint/js"; import prettier from "eslint-config-prettier"; import svelte from "eslint-plugin-svelte"; import { defineConfig } from "eslint/config"; import globals from "globals"; import ts from "typescript-eslint"; const gitignorePath = fileURLToPath(new URL("./.gitignore", import.meta.url)); {% if frontend_adapter == 'bun' -%} const svelteConfig = { compilerOptions: { runes: ({ filename }) => filename.split(/[/\\]/).includes("node_modules") ? undefined : true, }, }; {%- else -%} const svelteConfig = {}; {%- endif %} export default defineConfig( includeIgnoreFile(gitignorePath), js.configs.recommended, ...ts.configs.recommended, ...svelte.configs.recommended, prettier, ...svelte.configs.prettier, { languageOptions: { globals: { ...globals.browser, ...globals.node } }, rules: { // typescript-eslint recommends against no-undef on TypeScript projects: // https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors "no-undef": "off", }, }, {%- if ui_library == 'shadcn' %} { // shadcn-svelte primitives are copied in and changed upstream only. files: ["src/lib/components/ui/**"], rules: { "@typescript-eslint/no-explicit-any": "off", "svelte/no-navigation-without-resolve": "off", }, }, {%- endif %} { files: ["**/*.svelte", "**/*.svelte.ts", "**/*.svelte.js"], languageOptions: { parserOptions: { extraFileExtensions: [".svelte"], parser: ts.parser, projectService: true, svelteConfig, }, }, } );