2025-05-04 20:06:57 +00:00
|
|
|
{
|
2025-11-16 19:29:36 +00:00
|
|
|
"$schema": "https://biomejs.dev/schemas/2.3.1/schema.json",
|
2025-11-11 18:57:04 +00:00
|
|
|
"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/**"
|
|
|
|
|
]
|
|
|
|
|
},
|
2025-05-04 20:06:57 +00:00
|
|
|
"formatter": {
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"formatWithErrors": false,
|
|
|
|
|
"indentStyle": "space",
|
|
|
|
|
"indentWidth": 2,
|
|
|
|
|
"lineWidth": 100,
|
2025-11-11 18:57:04 +00:00
|
|
|
"lineEnding": "lf",
|
|
|
|
|
"attributePosition": "auto"
|
2025-05-04 20:06:57 +00:00
|
|
|
},
|
|
|
|
|
"linter": {
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"rules": {
|
|
|
|
|
"recommended": true,
|
|
|
|
|
"style": {
|
2025-11-11 18:57:04 +00:00
|
|
|
"noDefaultExport": "off",
|
|
|
|
|
"noImplicitBoolean": "off",
|
|
|
|
|
"noInferrableTypes": "error",
|
|
|
|
|
"noNamespace": "error",
|
|
|
|
|
"noNegationElse": "warn",
|
2025-10-12 10:43:06 +00:00
|
|
|
"noNonNullAssertion": "info",
|
2025-10-28 17:52:30 +00:00
|
|
|
"noParameterAssign": "error",
|
2025-11-11 18:57:04 +00:00
|
|
|
"noUnusedTemplateLiteral": "error",
|
|
|
|
|
"noUselessElse": "warn",
|
|
|
|
|
"useBlockStatements": "off",
|
|
|
|
|
"useCollapsedElseIf": "error",
|
|
|
|
|
"useConst": "error",
|
2025-10-28 17:52:30 +00:00
|
|
|
"useDefaultParameterLast": "error",
|
|
|
|
|
"useEnumInitializers": "error",
|
2025-11-11 18:57:04 +00:00
|
|
|
"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",
|
2025-10-28 17:52:30 +00:00
|
|
|
"useSelfClosingElements": "error",
|
2025-11-11 18:57:04 +00:00
|
|
|
"useShorthandAssign": "error",
|
|
|
|
|
"useShorthandFunctionType": "error",
|
2025-10-28 17:52:30 +00:00
|
|
|
"useSingleVarDeclarator": "error",
|
2025-11-11 18:57:04 +00:00
|
|
|
"useTemplate": "error",
|
|
|
|
|
"useThrowOnlyError": "error"
|
|
|
|
|
},
|
|
|
|
|
"suspicious": {
|
2025-11-16 19:29:36 +00:00
|
|
|
"noExplicitAny": "info",
|
2025-11-11 18:57:04 +00:00
|
|
|
"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",
|
2025-11-17 09:32:25 +00:00
|
|
|
"noConsole": "off",
|
2025-11-11 18:57:04 +00:00
|
|
|
"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",
|
2025-11-21 18:42:17 +00:00
|
|
|
"noUselessFragments": "off",
|
2025-11-11 18:57:04 +00:00
|
|
|
"noUselessLabel": "error",
|
|
|
|
|
"noUselessRename": "error",
|
|
|
|
|
"noUselessSwitchCase": "error",
|
|
|
|
|
"noUselessTernary": "error",
|
|
|
|
|
"noUselessTypeConstraint": "error",
|
|
|
|
|
"noVoid": "error",
|
|
|
|
|
"useFlatMap": "error",
|
|
|
|
|
"useLiteralKeys": "error",
|
|
|
|
|
"useOptionalChain": "error",
|
|
|
|
|
"useSimpleNumberKeys": "error",
|
2025-11-21 18:42:17 +00:00
|
|
|
"useSimplifiedLogicExpression": "info"
|
2025-11-11 18:57:04 +00:00
|
|
|
},
|
|
|
|
|
"security": {
|
|
|
|
|
"noDangerouslySetInnerHtml": "error",
|
|
|
|
|
"noDangerouslySetInnerHtmlWithChildren": "error",
|
|
|
|
|
"noGlobalEval": "error"
|
2025-10-07 16:38:03 +00:00
|
|
|
},
|
|
|
|
|
"a11y": {
|
2025-11-11 18:57:04 +00:00
|
|
|
"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",
|
2025-11-16 19:29:36 +00:00
|
|
|
"useSemanticElements": "info",
|
2025-11-11 18:57:04 +00:00
|
|
|
"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"
|
2025-05-04 20:06:57 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"javascript": {
|
|
|
|
|
"formatter": {
|
|
|
|
|
"arrowParentheses": "always",
|
|
|
|
|
"bracketSameLine": false,
|
2025-11-11 18:57:04 +00:00
|
|
|
"bracketSpacing": true,
|
|
|
|
|
"jsxQuoteStyle": "double",
|
|
|
|
|
"quoteProperties": "asNeeded",
|
2025-05-04 20:06:57 +00:00
|
|
|
"quoteStyle": "double",
|
2025-11-11 18:57:04 +00:00
|
|
|
"semicolons": "always",
|
|
|
|
|
"trailingCommas": "es5"
|
|
|
|
|
},
|
|
|
|
|
"globals": ["console", "process", "__dirname", "__filename"]
|
|
|
|
|
},
|
|
|
|
|
"json": {
|
|
|
|
|
"formatter": {
|
|
|
|
|
"trailingCommas": "none",
|
|
|
|
|
"indentStyle": "space",
|
|
|
|
|
"indentWidth": 2
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"css": {
|
2025-11-16 19:29:36 +00:00
|
|
|
"parser": {
|
|
|
|
|
"tailwindDirectives": true
|
|
|
|
|
},
|
2025-11-11 18:57:04 +00:00
|
|
|
"formatter": {
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"indentStyle": "space",
|
|
|
|
|
"indentWidth": 2,
|
|
|
|
|
"lineWidth": 100,
|
|
|
|
|
"quoteStyle": "double"
|
|
|
|
|
},
|
|
|
|
|
"linter": {
|
|
|
|
|
"enabled": true
|
|
|
|
|
}
|
|
|
|
|
},
|
2025-11-20 12:03:54 +00:00
|
|
|
"html": {
|
|
|
|
|
"formatter": {
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"indentStyle": "space",
|
|
|
|
|
"indentWidth": 2,
|
|
|
|
|
"lineWidth": 100
|
|
|
|
|
}
|
|
|
|
|
},
|
2025-11-11 18:57:04 +00:00
|
|
|
"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": {
|
2025-11-16 19:29:36 +00:00
|
|
|
"noExplicitAny": "info"
|
2025-11-11 18:57:04 +00:00
|
|
|
},
|
|
|
|
|
"complexity": {
|
|
|
|
|
"noExcessiveCognitiveComplexity": {
|
|
|
|
|
"level": "error",
|
|
|
|
|
"options": {
|
|
|
|
|
"maxAllowedComplexity": 12
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-04 20:06:57 +00:00
|
|
|
}
|
2025-11-11 18:57:04 +00:00
|
|
|
]
|
2025-05-04 20:06:57 +00:00
|
|
|
}
|