{ "$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" } } } } ] }