diff --git a/web/eslint-plugins/isolation/no-mixed-imports.js b/web/eslint-plugins/isolation/no-mixed-imports.js index 8f44453..16e03da 100644 --- a/web/eslint-plugins/isolation/no-mixed-imports.js +++ b/web/eslint-plugins/isolation/no-mixed-imports.js @@ -17,13 +17,16 @@ import fs from "node:fs"; import path from "node:path"; -const DEFAULT_OLD = ["routes/(old)/**", "lib/old/**"]; +// FIXME: change paths to new ones +// TODO: test case for this lint rules + +const DEFAULT_OLD = ["routes/v1/**", "lib/v1/**"]; const DEFAULT_NEW = [ - "routes/preview/**", + "routes/**", "lib/components/kit/**", - "lib/preview/**", - "lib/registry-new/**", + "lib/**", + "lib/registry/**", "lib/registry-schema.ts", "lib/registry-schema.test.ts", ]; diff --git a/web/eslint.config.js b/web/eslint.config.js index c01abb3..3551437 100644 --- a/web/eslint.config.js +++ b/web/eslint.config.js @@ -1,16 +1,18 @@ import js from "@eslint/js"; import prettier from "eslint-config-prettier"; import svelte from "eslint-plugin-svelte"; -import designTokens from "./eslint-plugins/index.js"; -import isolationPlugin from "./eslint-plugins/isolation/index.js"; import globals from "globals"; import svelteParser from "svelte-eslint-parser"; import tseslint from "typescript-eslint"; +import designTokens from "./eslint-plugins/index.js"; +import isolationPlugin from "./eslint-plugins/isolation/index.js"; +// FIXME: надо игнорировать старые файлы, после переноса пути новых компонентов включают старые // Новый код редизайна: к нему применяем полные recommended-наборы уже сейчас. // Когда старый дизайн удалим (C19), этот scoped-блок убирается и recommended // включается на весь код (см. план-redesign §10, шаг 6). -const newCode = ["**/src/lib/components/kit/**", "**/src/routes/preview/**"]; +const newCode = ["**/src/lib/components/**", "**/src/routes/**"]; +const oldCode = ["**/src/lib/v1/**", "**/src/routes/v1/**"]; // Полные recommended-наборы — только на новый код (см. ниже, блок перед prettier). const jsRecommended = Array.isArray(js.configs.recommended) @@ -21,10 +23,19 @@ const svelteRecommended = Array.isArray(svelte.configs["flat/recommended"]) : [svelte.configs["flat/recommended"]]; // Svelte-рекомендации применяем только к .svelte-файлам нового кода, иначе // svelte-eslint-parser "съедает" обычные .ts в тех же папках (напр. +page.ts). -const svelteFiles = [ - "**/src/lib/components/kit/**/*.svelte", - "**/src/routes/preview/**/*.svelte", +const newSvelteFiles = [ + "**/src/lib/components/**/*.svelte", + "**/src/routes/**/*.svelte", ]; +const oldSvelteFiles = [ + "**/src/lib/v1/**/*.svelte", + "**/src/routes/v1/**/*.svelte", +]; + +// FIXME: +// The signature '(...configs: InfiniteDepthConfigWithExtends[]): ConfigArray' of 'tseslint.config' is deprecated.ts +// Migrate to defineConfig(...) +// The core defineConfig(...) helper is a nearly exact clone of tseslint.config(...) export default tseslint.config( { @@ -100,7 +111,8 @@ export default tseslint.config( // Применяется к новому коду редизайна (см. newCode выше). Когда старый дизайн // удалят, расширить glob на весь код, исключив (old)/. { - files: svelteFiles, + files: newSvelteFiles, + ignores: oldSvelteFiles, plugins: { "design-tokens": designTokens, }, @@ -113,9 +125,21 @@ export default tseslint.config( }, // Полные recommended-наборы — только на новый код. ...[ - ...jsRecommended.map((cfg) => ({ ...cfg, files: newCode })), - ...tseslint.configs.recommended.map((cfg) => ({ ...cfg, files: newCode })), - ...svelteRecommended.map((cfg) => ({ ...cfg, files: svelteFiles })), + ...jsRecommended.map((cfg) => ({ + ...cfg, + files: newCode, + ignores: oldCode, + })), + ...tseslint.configs.recommended.map((cfg) => ({ + ...cfg, + files: newCode, + ignores: oldCode, + })), + ...svelteRecommended.map((cfg) => ({ + ...cfg, + files: newSvelteFiles, + ignores: oldSvelteFiles, + })), ], // В Svelte 5 пропсы деструктурируются через `let` (конвенция документации и