diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 50ef0cc6f..318b08f67 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "Node.js & TypeScript", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye", + "image": "mcr.microsoft.com/devcontainers/typescript-node:3-20-bullseye", // Features to add to the dev container. More info: https://containers.dev/features. // "features": {}, diff --git a/.github/workflows/GHPages.yml b/.github/workflows/GHPages.yml index ac8f0c329..1a580e47d 100644 --- a/.github/workflows/GHPages.yml +++ b/.github/workflows/GHPages.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 - name: Install And Build @@ -40,7 +40,7 @@ jobs: - name: Setup Pages uses: actions/configure-pages@v5 - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: path: ./docs-svelte-kit/build/eslint-plugin-svelte - name: Deploy to GitHub Pages diff --git a/.github/workflows/NodeCI.yml b/.github/workflows/NodeCI.yml index 3b442aa7b..4100ec4f6 100644 --- a/.github/workflows/NodeCI.yml +++ b/.github/workflows/NodeCI.yml @@ -13,7 +13,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 - name: Install Packages @@ -35,7 +35,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 - name: Install Packages @@ -56,7 +56,7 @@ jobs: node: [18.x, 20.x, 22.x, latest] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - name: Setup Node.js ${{ matrix.node }} uses: actions/setup-node@v4 @@ -89,7 +89,7 @@ jobs: node: [18, 20, 22] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - name: Setup Node.js ${{ matrix.node }} uses: actions/setup-node@v4 @@ -119,7 +119,7 @@ jobs: node: [18] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - name: Setup Node.js ${{ matrix.node }} uses: actions/setup-node@v4 @@ -142,7 +142,7 @@ jobs: update-resources: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 - name: Install Packages diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index 0625bea8a..6d3f18a2a 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits fetch-depth: 0 diff --git a/.github/workflows/pkg.pr.new-comment.yml b/.github/workflows/pkg.pr.new-comment.yml index 277168f72..1f8963fa7 100644 --- a/.github/workflows/pkg.pr.new-comment.yml +++ b/.github/workflows/pkg.pr.new-comment.yml @@ -16,16 +16,16 @@ jobs: name: 'Update comment' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Download artifact - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: output github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} - run: ls -R . - name: 'Post or update comment' - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/pkg.pr.new.yml b/.github/workflows/pkg.pr.new.yml index 6f2fa51cc..596180cd6 100644 --- a/.github/workflows/pkg.pr.new.yml +++ b/.github/workflows/pkg.pr.new.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 - name: Install Packages @@ -21,7 +21,7 @@ jobs: run: pnpm run build - run: pnpx pkg-pr-new publish --compact './packages/eslint-plugin-svelte' --json output.json --comment=off - name: Add metadata to output - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 7dafd679f..a61fd7819 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -13,7 +13,7 @@ jobs: name: Close stale issues with missing information runs-on: ubuntu-latest steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: any-of-labels: 'needs repro,needs info,needs more info' days-before-stale: 60 diff --git a/README.md b/README.md index 9cccc33bd..f2340d79b 100644 --- a/README.md +++ b/README.md @@ -273,6 +273,7 @@ These rules relate to possible syntax or logic errors in Svelte code: | [svelte/no-store-async](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-store-async/) | disallow using async/await inside svelte stores because it causes issues with the auto-unsubscribing features | :star: | | [svelte/no-top-level-browser-globals](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-top-level-browser-globals/) | disallow using top-level browser global variables | | | [svelte/no-unknown-style-directive-property](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-unknown-style-directive-property/) | disallow unknown `style:property` | :star: | +| [svelte/prefer-svelte-reactivity](https://sveltejs.github.io/eslint-plugin-svelte/rules/prefer-svelte-reactivity/) | disallow using mutable instances of built-in classes where a reactive alternative is provided by svelte/reactivity | :star: | | [svelte/require-store-callbacks-use-set-param](https://sveltejs.github.io/eslint-plugin-svelte/rules/require-store-callbacks-use-set-param/) | store callbacks must use `set` param | :bulb: | | [svelte/require-store-reactive-access](https://sveltejs.github.io/eslint-plugin-svelte/rules/require-store-reactive-access/) | disallow to use of the store itself as an operand. Need to use $ prefix or get function. | :star::wrench: | | [svelte/valid-compile](https://sveltejs.github.io/eslint-plugin-svelte/rules/valid-compile/) | disallow warnings when compiling. | | @@ -362,7 +363,7 @@ These rules relate to SvelteKit and its best Practices. | Rule ID | Description | | |:--------|:------------|:---| | [svelte/no-export-load-in-svelte-module-in-kit-pages](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-export-load-in-svelte-module-in-kit-pages/) | disallow exporting load functions in `*.svelte` module in SvelteKit page components. | :star: | -| [svelte/no-navigation-without-base](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-navigation-without-base/) | disallow using navigation (links, goto, pushState, replaceState) without the base path | | +| [svelte/no-navigation-without-resolve](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-navigation-without-resolve/) | disallow using navigation (links, goto, pushState, replaceState) without a resolve() | :star: | | [svelte/valid-prop-names-in-kit-pages](https://sveltejs.github.io/eslint-plugin-svelte/rules/valid-prop-names-in-kit-pages/) | disallow props other than data or errors in SvelteKit page components. | :star: | ## Experimental @@ -392,7 +393,8 @@ These rules relate to this plugin works: |:--------|:------------| | [svelte/@typescript-eslint/no-unnecessary-condition](https://sveltejs.github.io/eslint-plugin-svelte/rules/@typescript-eslint/no-unnecessary-condition/) | This rule is no longer needed when using svelte-eslint-parser>=v0.19.0. | | [svelte/no-dynamic-slot-name](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-dynamic-slot-name/) | Now Svelte compiler itself throws an compile error. | -| [svelte/no-goto-without-base](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-goto-without-base/) | [svelte/no-navigation-without-base](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-navigation-without-base/) | +| [svelte/no-goto-without-base](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-goto-without-base/) | [svelte/no-navigation-without-resolve](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-navigation-without-resolve/) | +| [svelte/no-navigation-without-base](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-navigation-without-base/) | [svelte/no-navigation-without-resolve](https://sveltejs.github.io/eslint-plugin-svelte/rules/no-navigation-without-resolve/) | diff --git a/docs-svelte-kit/package.json b/docs-svelte-kit/package.json index fbc6dafb5..0caf4e705 100644 --- a/docs-svelte-kit/package.json +++ b/docs-svelte-kit/package.json @@ -12,56 +12,56 @@ "svelte-kit": "vite" }, "devDependencies": { - "@babel/core": "^7.26.0", - "@babel/types": "^7.26.0", - "@fontsource/fira-mono": "^5.1.0", - "@ota-meshi/eslint-plugin": "^0.17.6", - "@shikijs/markdown-it": "^3.0.0", - "@shikijs/twoslash": "^3.0.0", + "@babel/core": "^7.28.3", + "@babel/types": "^7.28.2", + "@fontsource/fira-mono": "^5.2.6", + "@ota-meshi/eslint-plugin": "^0.18.0", + "@shikijs/markdown-it": "^3.12.2", + "@shikijs/twoslash": "^3.12.2", "@sindresorhus/slugify": "^2.2.1", - "@sveltejs/adapter-static": "^3.0.6", - "@sveltejs/kit": "^2.8.5", - "@sveltejs/vite-plugin-svelte": "^5.0.1", + "@sveltejs/adapter-static": "^3.0.9", + "@sveltejs/kit": "^2.37.0", + "@sveltejs/vite-plugin-svelte": "^6.1.4", "@types/babel__core": "^7.20.5", "@types/cross-spawn": "^6.0.6", "@types/escape-html": "^1.0.4", - "@types/eslint-scope": "^8.0.0", + "@types/eslint-scope": "^8.3.2", "@types/eslint-visitor-keys": "^3.3.2", - "@types/less": "^3.0.7", + "@types/less": "^3.0.8", "@types/markdown-it": "^14.1.2", "@types/markdown-it-container": "^2.0.10", "@types/markdown-it-emoji": "^3.0.1", - "@types/node": "^22.10.0", + "@types/node": "^22.18.0", "@types/prismjs": "^1.26.5", "@types/stylus": "^0.48.43", - "@typescript/vfs": "^1.6.0", - "acorn": "^8.14.0", + "@typescript/vfs": "^1.6.1", + "acorn": "^8.15.0", "assert": "^2.1.0", "cross-spawn": "^7.0.6", - "env-cmd": "^10.1.0", - "esbuild": "^0.25.0", + "env-cmd": "^11.0.0", + "esbuild": "^0.25.9", "escape-html": "^1.0.3", "eslint-plugin-svelte": "workspace:^", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "globals": "^16.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "globals": "^16.3.0", "markdown-it-anchor": "^9.2.0", "markdown-it-container": "^4.0.0", "markdown-it-emoji": "^3.0.0", "pako": "^2.1.0", "postcss-nested": "^7.0.2", "prism-svelte": "^0.5.0", - "prismjs": "^1.29.0", - "sass": "^1.81.0", + "prismjs": "^1.30.0", + "sass": "^1.92.0", "source-map-js": "^1.2.1", "stylus": "^0.64.0", - "svelte": "^5.30.1", + "svelte": "^5.38.6", "svelte-adapter-ghpages": "0.2.2", - "twoslash-eslint": "^0.3.0", - "twoslash-protocol": "^0.3.0", + "twoslash-eslint": "^0.3.4", + "twoslash-protocol": "^0.3.4", "util": "^0.12.5", - "vite": "^7.0.0", - "vite-plugin-svelte-md": "^0.1.7" + "vite": "^7.1.4", + "vite-plugin-svelte-md": "^0.1.9" } } diff --git a/docs-svelte-kit/src/lib/footer/Footer.svelte b/docs-svelte-kit/src/lib/footer/Footer.svelte index 6a7fb82f0..2a2c1bf64 100644 --- a/docs-svelte-kit/src/lib/footer/Footer.svelte +++ b/docs-svelte-kit/src/lib/footer/Footer.svelte @@ -1,7 +1,7 @@ @@ -16,7 +16,7 @@ {item.title} diff --git a/docs-svelte-kit/src/routes/+error.svelte b/docs-svelte-kit/src/routes/+error.svelte index 7d026ab13..977dd26b3 100644 --- a/docs-svelte-kit/src/routes/+error.svelte +++ b/docs-svelte-kit/src/routes/+error.svelte @@ -1,10 +1,10 @@

{$page.status}

{$page.error.message}

-

Take me home

+

Take me home

diff --git a/docs-svelte-kit/src/routes/404/+page.svelte b/docs-svelte-kit/src/routes/404/+page.svelte index 0263a291c..7cb3bb8fa 100644 --- a/docs-svelte-kit/src/routes/404/+page.svelte +++ b/docs-svelte-kit/src/routes/404/+page.svelte @@ -1,11 +1,11 @@

404

Not Found

-

Take me home

+

Take me home