- 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
116 lines
3.0 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|