{ "$schema": "https://biomejs.dev/schemas/2.3.1/schema.json", "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true, "defaultBranch": "main" }, "files": { "ignoreUnknown": true, "includes": [ "**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx", "**/*.json", "**/*.css", "**/*.scss" ], "experimentalScannerIgnores": [ "**/node_modules/**", "**/.next/**", "**/dist/**", "**/build/**", "**/coverage/**", "**/.turbo/**", "**/out/**", "**/.env*", "**/public/**", "**/*.d.ts", "**/storybook-static/**", "**/.vercel/**" ] }, "formatter": { "enabled": true, "formatWithErrors": false, "indentStyle": "space", "indentWidth": 2, "lineWidth": 100, "lineEnding": "lf", "attributePosition": "auto" }, "linter": { "enabled": true, "rules": { "recommended": true, "style": { "noDefaultExport": "off", "noImplicitBoolean": "off", "noInferrableTypes": "error", "noNamespace": "error", "noNegationElse": "warn", "noNonNullAssertion": "info", "noParameterAssign": "error", "noUnusedTemplateLiteral": "error", "noUselessElse": "warn", "useBlockStatements": "off", "useCollapsedElseIf": "error", "useConst": "error", "useDefaultParameterLast": "error", "useEnumInitializers": "error", "useExportType": "error", "useFilenamingConvention": { "level": "error", "options": { "strictCase": false, "requireAscii": true, "filenameCases": ["kebab-case"] } }, "useForOf": "error", "useFragmentSyntax": "error", "useImportType": "error", "useNamingConvention": { "level": "off", "options": { "strictCase": false, "conventions": [ { "selector": { "kind": "function" }, "formats": ["camelCase", "PascalCase"] }, { "selector": { "kind": "variable" }, "formats": ["camelCase", "PascalCase", "CONSTANT_CASE"] }, { "selector": { "kind": "typeLike" }, "formats": ["PascalCase"] } ] } }, "useNodejsImportProtocol": "error", "useNumberNamespace": "error", "useSelfClosingElements": "error", "useShorthandAssign": "error", "useShorthandFunctionType": "error", "useSingleVarDeclarator": "error", "useTemplate": "error", "useThrowOnlyError": "error" }, "suspicious": { "noExplicitAny": "info", "noDebugger": "error", "noDuplicateJsxProps": "error", "noDuplicateObjectKeys": "error", "noDuplicateParameters": "error", "noShadowRestrictedNames": "error", "noSparseArray": "error", "noUnsafeNegation": "error", "noArrayIndexKey": "warn", "noAssignInExpressions": "error", "noCatchAssign": "error", "noClassAssign": "error", "noCommentText": "error", "noCompareNegZero": "error", "noConsole": "off", "noConstEnum": "error", "noControlCharactersInRegex": "error", "noDoubleEquals": "error", "noDuplicateCase": "error", "noEmptyBlockStatements": "error", "noFallthroughSwitchClause": "error", "noFunctionAssign": "error", "noGlobalAssign": "error", "noLabelVar": "error", "noMisleadingCharacterClass": "error", "noPrototypeBuiltins": "error", "noRedeclare": "error", "noSelfCompare": "error", "noUnknownAtRules": "off" }, "correctness": { "noConstAssign": "error", "noConstructorReturn": "error", "noEmptyPattern": "error", "noInvalidConstructorSuper": "error", "noInvalidUseBeforeDeclaration": "error", "noSelfAssign": "error", "noSetterReturn": "error", "noSwitchDeclarations": "error", "noUnreachable": "error", "noUnreachableSuper": "error", "noUnsafeFinally": "error", "noUnsafeOptionalChaining": "error", "noUnusedLabels": "error", "noUnusedVariables": "warn", "useExhaustiveDependencies": "error", "useHookAtTopLevel": "error", "useIsNan": "error", "useJsxKeyInIterable": "error", "useValidForDirection": "error", "useYield": "error" }, "complexity": { "noBannedTypes": "error", "noExcessiveCognitiveComplexity": { "level": "warn", "options": { "maxAllowedComplexity": 15 } }, "noForEach": "warn", "noStaticOnlyClass": "error", "noThisInStatic": "error", "noUselessCatch": "error", "noUselessConstructor": "error", "noUselessFragments": "off", "noUselessLabel": "error", "noUselessRename": "error", "noUselessSwitchCase": "error", "noUselessTernary": "error", "noUselessTypeConstraint": "error", "noVoid": "error", "useFlatMap": "error", "useLiteralKeys": "error", "useOptionalChain": "error", "useSimpleNumberKeys": "error", "useSimplifiedLogicExpression": "info" }, "security": { "noDangerouslySetInnerHtml": "error", "noDangerouslySetInnerHtmlWithChildren": "error", "noGlobalEval": "error" }, "a11y": { "noAccessKey": "error", "noAriaHiddenOnFocusable": "error", "noAriaUnsupportedElements": "error", "noAutofocus": "error", "noDistractingElements": "error", "noHeaderScope": "error", "noInteractiveElementToNoninteractiveRole": "error", "noNoninteractiveElementToInteractiveRole": "error", "noNoninteractiveTabindex": "error", "noPositiveTabindex": "error", "noRedundantAlt": "error", "noRedundantRoles": "error", "useFocusableInteractive": "error", "useIframeTitle": "error", "useKeyWithClickEvents": "error", "useKeyWithMouseEvents": "error", "useMediaCaption": "error", "useSemanticElements": "info", "useValidAnchor": "error", "useValidAriaProps": "error", "useValidAriaValues": "error", "useValidLang": "error" }, "performance": { "noAccumulatingSpread": "warn", "noDelete": "error" } }, "domains": { "next": "all", "react": "recommended" } }, "assist": { "actions": { "source": { "organizeImports": { "level": "on", "options": { "groups": [ ":URL:", ":BLANK_LINE:", [":BUN:", ":NODE:"], ":BLANK_LINE:", ":PACKAGE_WITH_PROTOCOL:", ":BLANK_LINE:", [":PACKAGE:"], ":BLANK_LINE:", ["!@/**", "!#*", "!~*", "!$*", "!%*"], ":BLANK_LINE:", ["@/**", "#*", "~*", "$*", "%*"], ":BLANK_LINE:", [":PATH:", "!./**", "!../**"], ":BLANK_LINE:", ["../**"], ":BLANK_LINE:", ["./**"] ], "identifierOrder": "lexicographic" } }, "useSortedAttributes": "on" } } }, "javascript": { "formatter": { "arrowParentheses": "always", "bracketSameLine": false, "bracketSpacing": true, "jsxQuoteStyle": "double", "quoteProperties": "asNeeded", "quoteStyle": "double", "semicolons": "always", "trailingCommas": "es5" }, "globals": ["console", "process", "__dirname", "__filename"] }, "json": { "formatter": { "trailingCommas": "none", "indentStyle": "space", "indentWidth": 2 } }, "css": { "parser": { "tailwindDirectives": true }, "formatter": { "enabled": true, "indentStyle": "space", "indentWidth": 2, "lineWidth": 100, "quoteStyle": "double" }, "linter": { "enabled": true } }, "html": { "formatter": { "enabled": true, "indentStyle": "space", "indentWidth": 2, "lineWidth": 100 } }, "overrides": [ { "includes": ["**/*.test.{js,ts,tsx}", "**/*.spec.{js,ts,tsx}", "**/__tests__/**"], "linter": { "rules": { "suspicious": { "noExplicitAny": "off", "noConsole": "off" }, "style": { "noNonNullAssertion": "off" } } } }, { "includes": ["**/next.config.{js,ts}", "**/tailwind.config.{js,ts}", "**/*.config.{js,ts}"], "linter": { "rules": { "style": { "noDefaultExport": "off" }, "suspicious": { "noExplicitAny": "off" } } } }, { "includes": ["**/pages/**", "**/app/**/page.{tsx,jsx}", "**/app/**/layout.{tsx,jsx}"], "linter": { "rules": { "style": { "noDefaultExport": "off" } } } }, { "includes": ["**/*.d.ts", "**/lib/env/*.ts"], "linter": { "rules": { "style": { "noNamespace": "off", "useNamingConvention": { "level": "error", "options": { "strictCase": false, "conventions": [ { "selector": { "kind": "objectLiteralProperty" }, "formats": ["CONSTANT_CASE", "camelCase"] } ] } } }, "suspicious": { "noExplicitAny": "info" }, "complexity": { "noExcessiveCognitiveComplexity": { "level": "error", "options": { "maxAllowedComplexity": 12 } } } } } } ] }