sveltejs/eslint-plugin-svelte

[bug][svelte/indent] invalid indentation in some specific scenarios inside <script>

オープン

#783 opened on 2024/06/13

 (6 件のコメント) (2 件のリアクション) (0 人の担当者)TypeScript (72 件のフォーク)auto 404
bugformattinghelp wanted

Repository metrics

Stars
 (400 個のスター)
PR merge metrics
 (PR metrics pending)

説明

Before You File a Bug Report Please Confirm You Have Done The Following...

  • I have tried restarting my IDE and the issue persists.
  • I have updated to the latest version of the packages.

What version of ESLint are you using?

9.4.0

What version of eslint-plugin-svelte are you using?

5.1.3

What did you do?

import tsParser from "@typescript-eslint/parser";
import "eslint-plugin-only-warn";
import eslintPluginSvelte from "eslint-plugin-svelte";
import globals from "globals";
import svelteParser from "svelte-eslint-parser";

export default [
  {
    languageOptions: {
      globals: globals.browser,
      parser: tsParser,
    },
  },
  {
    files: ["**/*.svelte"],
    languageOptions: {
      ecmaVersion: 2022,
      parser: svelteParser,
      parserOptions: {
        extraFileExtensions: [".svelte"],
        parser: tsParser,
      },
      sourceType: "module",
    },
  },
  ...eslintPluginSvelte.configs["flat/recommended"],
  {
    files: ["**/*.svelte"],
    rules: {
      indent: "off",
      "svelte/indent": [
        "error",
        {
          alignAttributesVertically: false,
          ignoredNodes: [],
          indent: 2,
          switchCase: 1,
        },
      ],
    },
  },
  {
    ignores: [
      "postcss.config.cjs",
      "tailwind.config.js",
      "app/frontend/rails/",
      "node_modules/",
      "build/",
      ".svelte-kit/",
      "package/",
      "public/rcf-assets-dev/",
      "public/rcf-assets/",
      "tmp/",
      "coverage/",
    ],
  },
];

<script context="module" lang="ts">
  type GenericTypes = null | number | string | undefined;
  type GenericKeyType<Opt> = keyof Opt | never | null | undefined;
  type ValueType<Opt, VKey extends GenericKeyType<Opt>, VObj extends boolean> = Opt extends GenericTypes
    ? Opt
    : VKey extends keyof Opt
      ? VObj extends true
        ? Opt
        : Opt[VKey]
      : never;

  const dragDrop = (e: any) => {
    e.preventDefault();
    e.stopPropagation();
    /*
     * Warning: This event is called by the element the item was drop on top of.
     * Since we need to update the position of the dragged item (the source), we must use a
     * global context and the onEnd event.
     */
  };
</script>

What did you expect to happen?

Nothing the code is perfectly valid.

What actually happened?

Capture d’écran, le 2024-06-13 à 17 18 16 Capture d’écran, le 2024-06-13 à 17 18 35

Link to GitHub Repo with Minimal Reproducible Example

https://sveltejs.github.io/eslint-plugin-svelte/playground/#eJyNU01PwkAQ/SvjHgwQAonHAiVREg/G4MHgwXrY0mmpLrvN7pRIkP/uLKVVoCYmTTqzb96bN/uxE0uToAjE2C1tXhAsjSb8pEkk1iYpFUYClNQZ5+QiEUYagLYFwj1qtPnymWMHE9ClUvDFv3WMlgNHNtcZB6VOMM01JqNz6gNuPXs8LyhkhQ/cmhQ48TK4OagcVVs0FlKVWNP7sGAxYNuoE9emzxXz+L2piI1RKLVv6xueEQ8z+U4AU49XYXDapLFbob70pAXZEmvoRKfS4vTV673Vi0E1NE/oV/gUHIEza3xEWpmEjXYwAKm3XZiEsKtYOCgskzTNMJWlok53VAOOTPFkTSEzSbnRDTLsHRv24EVazWcUwK2S8eFroIuVoQ/2F+bmtEL74/C3tzyFTj1bpkws1czK7K66XYPUmjVcTY735vr670oy/6trFNskKlq39gaQMDwddNpl+q0a9Q7uD1sR6fGwejGh6AvLD8WJYCfcBhXhMOcLq0kEN/v9NwEAGd4=

Additional comments

No response

コントリビューターガイド