biome.json
Rama main · réplica de lectura del repositorio original.
{
"$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" } } }
}
]
}