Ctrl K
ComunidadGuías…

biome.json

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
{
  "$schema": "https://biomejs.dev/schemas/2.6.3/schema.json",

  "files": {
    "includes": [
      "**",
      "!**/node_modules/**",
      "!**/dist/**",
      "!**/.next/**",
      "!**/out/**",
      "!**/build/**",
      "!**/coverage/**",
      "!**/storybook-static/**",
      "!**/frontend/next-env.d.ts",
      "!**/next-env.d.ts",
      "!**/frontend/public/**",
      "!**/public/**",
      "!**/changelog.json",
      "!**/frontend/.intlayer/**",
      "!**/.intlayer/**",
      "!**/frontend/.next/**",
      "!**/frontend/out/**",
      "!**/backend/uploads/**",
      "!**/docs/**",
      "!**/.claude/**",
      "!**/*.spec.{ts,tsx}",
      "!**/*.test.{ts,tsx}",
      "!**/@tests/**",
      "!**/backend/scripts/**",
      "!**/backend/src/contracts/**",
      "!**/backend/src/modules/parsing/helpers/contributed-layouts.data.ts",
      "!**/frontend/app/lib/contracts/**",
      "!**/*.scss",
      "!**/*.md",
      "!**/*.yaml",
      "!**/*.yml"
    ]
  },

  "formatter": {
    "indentStyle": "space",
    "indentWidth": 2,
    "lineWidth": 100
  },

  "assist": { "actions": { "source": { "organizeImports": "on" } } },

  "javascript": {
    "formatter": {
      "quoteStyle": "single",
      "trailingCommas": "all",
      "semicolons": "always",
      "arrowParentheses": "asNeeded"
    },
    "parser": {
      "unsafeParameterDecoratorsEnabled": true
    }
  },

  "linter": {
    "enabled": true,
    "rules": {
      "preset": "recommended",

      "a11y": {
        "preset": "recommended",
        "useButtonType": "off",
        "noLabelWithoutControl": "warn",
        "useKeyWithClickEvents": "warn",
        "useValidAriaRole": "warn",
        "noSvgWithoutTitle": "warn",
        "noRedundantRoles": "warn",
        "useSemanticElements": "warn"
      },

      "complexity": {
        "noExcessiveCognitiveComplexity": {
          "level": "warn",
          "options": {
            "maxAllowedComplexity": 15
          }
        },
        "noForEach": "warn",
        "useFlatMap": "error",
        "useOptionalChain": "error",
        "useSimplifiedLogicExpression": "warn",
        "noUselessTernary": "error",
        "noUselessFragments": "error",
        "noStaticOnlyClass": "error",
        "noUselessCatch": "error",
        "noUselessConstructor": "error"
      },

      "correctness": {
        "useExhaustiveDependencies": "warn",
        "noUnusedVariables": "warn",
        "noUnusedImports": "error",
        "noUnusedPrivateClassMembers": "error",
        "noInvalidUseBeforeDeclaration": "error"
      },

      "suspicious": {
        "noExplicitAny": "warn",
        "noDoubleEquals": "error",
        "noImplicitAnyLet": "error",
        "useIsArray": "error",
        "noDebugger": "error",
        "noEmptyBlockStatements": "warn",
        "noDuplicateObjectKeys": "error",
        "noShadowRestrictedNames": "warn",
        "noRedeclare": "warn",
        "noArrayIndexKey": "warn"
      },

      "style": {
        "useImportType": "off",
        "useNodejsImportProtocol": "off",
        "noUnusedTemplateLiteral": "warn",
        "useConst": "error",
        "useBlockStatements": "warn",
        "useDefaultParameterLast": "error",
        "noUselessElse": "error",
        "useShorthandAssign": "warn",
        "useSingleVarDeclarator": "error",
        "useTemplate": "error",
        "useNamingConvention": "off"
      },

      "performance": {
        "noDelete": "error",
        "noAccumulatingSpread": "error"
      }
    }
  },

  "overrides": [
    {
      "includes": ["**/backend/**", "**/src/**"],
      "linter": {
        "rules": {
          "correctness": {
            "noComponentHookFactories": "off"
          }
        }
      }
    },
    {
      "includes": ["**/frontend/**/*.{ts,tsx,js,jsx}", "**/app/**/*.{ts,tsx,js,jsx}"],
      "linter": {
        "rules": {
          "a11y": {
            "useButtonType": "off"
          },
          "correctness": {
            "useExhaustiveDependencies": "warn",
            "useHookAtTopLevel": "error"
          },
          "complexity": {
            "noExcessiveCognitiveComplexity": {
              "level": "warn",
              "options": {
                "maxAllowedComplexity": 15
              }
            },
            "noForEach": "warn",
            "noUselessFragments": "error",
            "noExcessiveLinesPerFunction": {
              "level": "warn",
              "options": { "maxLines": 40, "skipBlankLines": true }
            },
            "useMaxParams": { "level": "warn", "options": { "max": 3 } }
          },
          "suspicious": {
            "noExplicitAny": "warn",
            "noImplicitAnyLet": "error",
            "noConsole": { "level": "error", "options": { "allow": ["warn", "error", "info"] } }
          },
          "performance": {
            "noAwaitInLoops": "warn"
          },
          "nursery": {
            "useAwaitThenable": "error",
            "noFloatingPromises": "warn",
            "noMisusedPromises": "warn",
            "useExplicitType": "warn"
          },
          "style": {
            "noUselessElse": "error",
            "useBlockStatements": "warn",
            "useTemplate": "error",
            "noExcessiveLinesPerFile": {
              "level": "warn",
              "options": { "maxLines": 250, "skipBlankLines": true }
            },
            "noRestrictedImports": {
              "level": "error",
              "options": {
                "paths": {
                  "effect": "Import a subpath (effect/Schema, effect/Exit): the barrel pulls all of effect into the chunk."
                }
              }
            }
          }
        }
      }
    },

    {
      "includes": ["**/frontend/**/*.tsx", "**/app/**/*.tsx"],
      "linter": {
        "rules": {
          "complexity": {
            "noExcessiveLinesPerFunction": {
              "level": "warn",
              "options": { "maxLines": 30, "skipBlankLines": true }
            },
            "useMaxParams": { "level": "warn", "options": { "max": 1 } }
          }
        }
      }
    },
    {
      "includes": [
        "**/@tests/**/*.{ts,tsx}",
        "**/test/**/*.{ts,tsx}",
        "**/*.spec.{ts,tsx}",
        "**/*.test.{ts,tsx}",
        "**/frontend/app/**/*.test.{ts,tsx}",
        "**/app/**/*.test.{ts,tsx}"
      ],
      "linter": {
        "rules": {
          "suspicious": {
            "noExplicitAny": "off",
            "noEmptyBlockStatements": "off"
          },
          "style": {
            "useImportType": "off",
            "useNamingConvention": "off",
            "useTemplate": "off"
          },
          "correctness": {
            "noUnusedVariables": "warn"
          },
          "complexity": {
            "noForEach": "off"
          }
        }
      },
      "assist": { "actions": { "source": { "organizeImports": "off" } } }
    }
  ]
}