moex-vibe/biome.json
Sergey Krylov cfadb2adbe feat: migrate from react-router-dom to @tanstack/react-router (code-first)
- Create code-first route tree in src/app/routing/routeTree.tsx
- Replace ProtectedRoute with beforeLoad auth guards
- Add useSearchParamsCompat for URLSearchParams access
- Update App.tsx, layouts, and all page/widget imports
- Add frontend tooling: biome, prettier, env config
- Update all tests for TanStack Router compatibility
- Remove react-router-dom dependency, @tanstack/router-plugin
- Consolidate biome config at root level
2026-06-23 06:51:48 +03:00

116 lines
3.0 KiB
JSON

{
"$schema": "https://biomejs.dev/schemas/2.5.0/schema.json",
"root": true,
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {
"ignoreUnknown": false
},
"formatter": {
"enabled": true,
"formatWithErrors": false,
"indentStyle": "space",
"indentWidth": 2,
"lineEnding": "lf",
"lineWidth": 100
},
"assist": {
"actions": {
"source": {
"organizeImports": "on"
}
}
},
"linter": {
"enabled": true,
"rules": {
"preset": "recommended",
"complexity": {
"noBannedTypes": "error",
"noUselessTypeConstraint": "error"
},
"correctness": {
"noChildrenProp": "error",
"noPrecisionLoss": "error",
"noUnusedVariables": "error",
"useExhaustiveDependencies": "warn",
"useHookAtTopLevel": "error",
"useJsxKeyInIterable": "error"
},
"security": {
"noDangerouslySetInnerHtmlWithChildren": "error"
},
"style": {
"noNamespace": "error",
"noNonNullAssertion": "off",
"noRestrictedImports": {
"level": "warn",
"options": {
"paths": {
"@mui/material": {
"importNames": [
"Typography",
"Button",
"TextField",
"Select",
"Checkbox",
"Paper",
"Chip",
"Badge",
"Alert",
"Dialog",
"Skeleton",
"CircularProgress",
"Link",
"IconButton",
"Table",
"TableBody",
"TableCell",
"TableContainer",
"TableHead",
"TableRow",
"TableSortLabel",
"TablePagination",
"Pagination"
],
"message": "Import from @moex-vibe/design-system instead, or use Box/Stack/Grid for layout."
}
}
}
},
"useArrayLiterals": "error",
"useAsConstAssertion": "error"
},
"suspicious": {
"noCommentText": "error",
"noDuplicateEnumValues": "error",
"noDuplicateJsxProps": "error",
"noExplicitAny": "off",
"noExtraNonNullAssertion": "error",
"noMisleadingInstantiator": "error",
"noNonNullAssertedOptionalChain": "error",
"noArrayIndexKey": "off",
"noUnsafeDeclarationMerging": "error"
},
"a11y": {
"useButtonType": "off",
"noLabelWithoutControl": "off",
"noStaticElementInteractions": "off",
"useKeyWithClickEvents": "off",
"noAutofocus": "off",
"noSvgWithoutTitle": "off"
}
}
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"trailingCommas": "all",
"semicolons": "asNeeded"
}
}
}