diff --git a/docs/src/lib/components/header-tracker/HeaderTracker.svelte b/docs/src/lib/components/header-tracker/HeaderTracker.svelte index 0689165d..8718b910 100644 --- a/docs/src/lib/components/header-tracker/HeaderTracker.svelte +++ b/docs/src/lib/components/header-tracker/HeaderTracker.svelte @@ -57,7 +57,7 @@ />
- {#each trackedHeaders as header, i} + {#each trackedHeaders as header, i (header.id)} {@const headerLevel = getHeaderLevel(header.element)} {@const margin = headerLevel - 1} {@const parentHeader = trackedHeaders diff --git a/docs/src/lib/components/navbar/Search.svelte b/docs/src/lib/components/navbar/Search.svelte index 20bafa65..7e87bd48 100644 --- a/docs/src/lib/components/navbar/Search.svelte +++ b/docs/src/lib/components/navbar/Search.svelte @@ -10,6 +10,7 @@ } from '$lib/search'; import { goto } from '$app/navigation'; import { base } from '$app/paths'; + import { SvelteMap } from 'svelte/reactivity'; interface Props { class?: string; @@ -53,7 +54,7 @@ const index = await getIndex(); - const pages = new Map(); + const pages = new SvelteMap(); const searchResult = index .search(query, 5, { enrich: true }) .map((res) => res.result) @@ -101,7 +102,7 @@ {#if value} No results found. - {#each results as result} + {#each results as result (result.id)} { if (result.match?.heading) goto(`${base}${result.path}#${result.match.heading.id}`); diff --git a/docs/src/routes/community-plugins/+page.svelte b/docs/src/routes/community-plugins/+page.svelte index da39d8f2..7eb8c9ca 100644 --- a/docs/src/routes/community-plugins/+page.svelte +++ b/docs/src/routes/community-plugins/+page.svelte @@ -19,7 +19,7 @@ Here are is a list of several plugins developed by the community: -{#each data.plugins as plugin} +{#each data.plugins as plugin (plugin.name)} {plugin.description} diff --git a/eslint.config.mjs b/eslint.config.js similarity index 51% rename from eslint.config.mjs rename to eslint.config.js index 2ad01443..04353d51 100644 --- a/eslint.config.mjs +++ b/eslint.config.js @@ -1,19 +1,9 @@ -import typescriptEslint from '@typescript-eslint/eslint-plugin'; -import globals from 'globals'; +import tsEslint from 'typescript-eslint'; import tsParser from '@typescript-eslint/parser'; -import parser from 'svelte-eslint-parser'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; +import sveltePlugin from 'eslint-plugin-svelte'; +import svelteParser from 'svelte-eslint-parser'; +import globals from 'globals'; import js from '@eslint/js'; -import { FlatCompat } from '@eslint/eslintrc'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all -}); export default [ { @@ -39,50 +29,40 @@ export default [ '**/.rollup.cache' ] }, - ...compat.extends( - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:svelte/recommended' - ), - { - plugins: { - '@typescript-eslint': typescriptEslint - }, + js.configs.recommended, + ...tsEslint.configs.recommended, + ...sveltePlugin.configs['flat/recommended'], + + { + // No plugins block here anymore languageOptions: { globals: { ...globals.node, ...globals.browser }, - parser: tsParser, ecmaVersion: 'latest', sourceType: 'module', - parserOptions: { extraFileExtensions: ['.svelte'] } }, - settings: { - 'svelte3/typescript': true - }, - rules: { 'no-mixed-spaces-and-tabs': 0, - '@typescript-eslint/no-unused-expressions': 0 + '@typescript-eslint/no-unused-expressions': 0, + 'svelte/no-navigation-without-resolve': 0 } }, + { files: ['**/*.svelte'], languageOptions: { - parser: parser, - ecmaVersion: 5, - sourceType: 'script', - + parser: svelteParser, parserOptions: { - parser: '@typescript-eslint/parser' + parser: tsParser } } } diff --git a/package.json b/package.json index 1ef34d9b..e00ab000 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "cz-conventional-changelog": "^3.3.0", "eslint": "^9.20.1", "eslint-config-prettier": "^8.10.0", - "eslint-plugin-svelte": "^2.46.1", + "eslint-plugin-svelte": "^3.17.1", "globals": "^15.15.0", "husky": "^8.0.3", "lint-staged": "^13.3.0", @@ -39,7 +39,8 @@ "prettier-plugin-tailwindcss": "^0.5.14", "semantic-release": "^25.0.3", "semantic-release-monorepo": "^8.0.2", - "svelte-eslint-parser": "^0.43.0" + "svelte-eslint-parser": "^0.43.0", + "typescript-eslint": "^8.59.2" }, "lint-staged": { "*.{js,ts,svelte}": "eslint --cache --fix --no-error-on-unmatched-pattern", diff --git a/packages/carta-md/package.json b/packages/carta-md/package.json index d45d4a5b..1d325012 100644 --- a/packages/carta-md/package.json +++ b/packages/carta-md/package.json @@ -40,7 +40,7 @@ }, "type": "module", "dependencies": { - "diff": "^5.2.0", + "diff": "^5.2.2", "esm-env": "^1.0.0", "rehype-stringify": "^10.0.0", "remark-gfm": "^4.0.0", diff --git a/packages/carta-md/src/lib/Markdown.svelte b/packages/carta-md/src/lib/Markdown.svelte index c3ffc6c6..88c98ba1 100644 --- a/packages/carta-md/src/lib/Markdown.svelte +++ b/packages/carta-md/src/lib/Markdown.svelte @@ -9,7 +9,7 @@ --> @@ -108,7 +104,7 @@
{#if !(mode === 'tabs' && tab === 'preview')} - {#each visibleIcons as icon, index} + {#each visibleIcons as icon, index (icon.id)} {@const label = labels.iconsLabels[icon.id] ?? icon.label}