mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-14 23:26:15 -05:00
311 lines
7.1 KiB
JSON
311 lines
7.1 KiB
JSON
{
|
|
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
|
|
"files": {
|
|
"includes": [
|
|
"**",
|
|
"!scripts/dicts/**/*",
|
|
"!scripts/output/**/*",
|
|
"!app/db/seed/data/placements.json",
|
|
"!build/**/*",
|
|
"!app/features/scanner/tests/fixtures",
|
|
"!test-results/**/*",
|
|
"!playwright-report/**/*",
|
|
"!.react-router/**/*",
|
|
"!**/*.svg"
|
|
]
|
|
},
|
|
"linter": {
|
|
"rules": {
|
|
"suspicious": {
|
|
"noExplicitAny": "off",
|
|
"noArrayIndexKey": "off",
|
|
"noConsole": { "level": "error" },
|
|
"noDeprecatedImports": "error",
|
|
"noVar": "error",
|
|
"noForIn": "error",
|
|
"useGuardForIn": "error",
|
|
"noConstantBinaryExpressions": "error",
|
|
"noUnassignedVariables": "error",
|
|
"noDuplicatedSpreadProps": "error",
|
|
"noUnknownAttribute": "error",
|
|
"useErrorMessage": "error",
|
|
"useNumberToFixedDigitsArgument": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"noSkippedTests": "error",
|
|
"noParametersOnlyUsedInRecursion": "error",
|
|
"useArraySortCompare": "error",
|
|
"noEvolvingTypes": "error",
|
|
"noReturnAssign": "error",
|
|
"noNestedPromises": "error",
|
|
"noUnusedExpressions": "error",
|
|
"noShadow": "error"
|
|
},
|
|
"correctness": {
|
|
"noUndeclaredVariables": "error",
|
|
"noUnusedInstantiation": "error",
|
|
"noNestedComponentDefinitions": "error",
|
|
"noReactPropAssignments": "error",
|
|
"noGlobalDirnameFilename": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useSingleJsDocAsterisk": "error",
|
|
"noUndeclaredDependencies": "error"
|
|
},
|
|
"style": {
|
|
"noNonNullAssertion": "off",
|
|
"noUnusedTemplateLiteral": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useNodejsImportProtocol": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useTemplate": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"noParameterAssign": "error",
|
|
"useAsConstAssertion": "error",
|
|
"useDefaultParameterLast": "error",
|
|
"useEnumInitializers": "error",
|
|
"useSelfClosingElements": "error",
|
|
"useSingleVarDeclarator": "error",
|
|
"useNumberNamespace": "error",
|
|
"noInferrableTypes": "error",
|
|
"noUselessElse": "error",
|
|
"noEnum": "error",
|
|
"noCommonJs": "error",
|
|
"noParameterProperties": "error",
|
|
"noMultiAssign": "error",
|
|
"noMultilineString": "error",
|
|
"noYodaExpression": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useTrimStartEnd": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useObjectSpread": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useNodeAssertStrict": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useCollapsedElseIf": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useSymbolDescription": "error",
|
|
"useGroupedAccessorPairs": "error",
|
|
"useSpreadOverApply": "error",
|
|
"useCollapsedIf": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useConsistentObjectDefinitions": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"useThrowNewError": "error",
|
|
"useShorthandAssign": "error",
|
|
"useFragmentSyntax": "error",
|
|
"noSubstr": "error",
|
|
"useUnifiedTypeSignatures": "error",
|
|
"useReadonlyClassProperties": "error",
|
|
"useForOf": "error",
|
|
"useErrorCause": "error",
|
|
"useThrowOnlyError": "error",
|
|
"noNamespace": "error",
|
|
"noDefaultExport": "error",
|
|
"useFilenamingConvention": {
|
|
"level": "error",
|
|
"options": {
|
|
"filenameCases": ["kebab-case", "PascalCase", "camelCase"],
|
|
"strictCase": false,
|
|
"requireAscii": true
|
|
}
|
|
}
|
|
},
|
|
"a11y": {
|
|
"useKeyWithClickEvents": "off",
|
|
"noLabelWithoutControl": "off",
|
|
"noSvgWithoutTitle": "off"
|
|
},
|
|
"complexity": {
|
|
"useLiteralKeys": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"noImportantStyles": "off",
|
|
"useWhile": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"noUselessStringConcat": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"noDivRegex": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"noUselessCatchBinding": "error",
|
|
"noForEach": "error"
|
|
},
|
|
"performance": {
|
|
"noSyncScripts": "error"
|
|
},
|
|
"nursery": {
|
|
"useImportsFirst": "error",
|
|
"useReactFunctionComponentDefinition": "error",
|
|
"useControlLabel": "error",
|
|
"useIframeSandbox": "error",
|
|
"useArraySome": "error",
|
|
"useReduceTypeParameter": "error",
|
|
"noUnnecessaryTemplateExpression": {
|
|
"fix": "safe",
|
|
"level": "error"
|
|
},
|
|
"noJsxLeakedDollar": "error",
|
|
"noJsxNamespace": "error",
|
|
"noNegationInEqualityCheck": "error",
|
|
"noExtendNative": "error"
|
|
}
|
|
}
|
|
},
|
|
"formatter": {
|
|
"useEditorconfig": true
|
|
},
|
|
"css": {
|
|
"formatter": {
|
|
"enabled": true
|
|
},
|
|
"linter": {
|
|
"enabled": true
|
|
},
|
|
"parser": {
|
|
"cssModules": true
|
|
}
|
|
},
|
|
"overrides": [
|
|
{
|
|
"includes": [
|
|
"app/features/*/routes/**",
|
|
"app/modules/*/routes/**",
|
|
"app/features/*/loaders/**",
|
|
"app/features/*/actions/**"
|
|
],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"useFilenamingConvention": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["**/*.ts"],
|
|
"linter": {
|
|
"rules": {
|
|
"nursery": {
|
|
"useReactFunctionComponentDefinition": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["e2e/**"],
|
|
"linter": {
|
|
"rules": {
|
|
"nursery": {
|
|
"noPlaywrightPagePause": "error",
|
|
"noPlaywrightWaitForTimeout": "error",
|
|
"noPlaywrightMissingAwait": "error",
|
|
"noPlaywrightUselessAwait": "error",
|
|
"noPlaywrightWaitForNavigation": "error",
|
|
"noPlaywrightElementHandle": "error",
|
|
"noPlaywrightEval": "error",
|
|
"noPlaywrightNetworkidle": "error",
|
|
"noPlaywrightWaitForSelector": "error",
|
|
"usePlaywrightValidDescribeCallback": "error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["types/**/*.d.ts"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noNamespace": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": [
|
|
"app/features/*/routes/**",
|
|
"app/modules/*/routes/**",
|
|
"app/root.tsx",
|
|
"app/routes.ts",
|
|
"app/entry.server.tsx",
|
|
"*.config.ts",
|
|
"knip.ts",
|
|
"e2e/global-setup.ts",
|
|
"e2e/global-teardown.ts",
|
|
"scripts/**"
|
|
],
|
|
"linter": {
|
|
"rules": {
|
|
"style": {
|
|
"noDefaultExport": "off"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"includes": ["app/**", "!app/modules/search-params/**"],
|
|
"plugins": ["./biome-plugins/no-raw-search-params.grit"]
|
|
},
|
|
{
|
|
"includes": ["app/**", "!app/hooks/useActionSubmit.ts"],
|
|
"plugins": ["./biome-plugins/no-raw-action-forms.grit"]
|
|
},
|
|
{
|
|
"includes": ["**/*.test.ts", "**/*.test.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"nursery": {
|
|
"useConsistentTestIt": {
|
|
"level": "error",
|
|
"options": { "function": "test", "withinDescribe": "test" }
|
|
},
|
|
"useTestHooksOnTop": "error",
|
|
"useTestHooksInOrder": "error"
|
|
}
|
|
}
|
|
},
|
|
"plugins": ["./biome-plugins/no-raw-db-writes-in-tests.grit"]
|
|
},
|
|
{
|
|
"includes": ["app/db/seed/dev/**", "app/db/seed/index.ts"],
|
|
"plugins": ["./biome-plugins/no-raw-db-writes-in-dev-seed.grit"]
|
|
},
|
|
{
|
|
"includes": ["**", "!app/utils/kysely.server.ts"],
|
|
"plugins": ["./biome-plugins/no-kysely-sqlite-helpers.grit"]
|
|
},
|
|
{
|
|
"includes": ["app/**"],
|
|
"plugins": ["./biome-plugins/no-and-conditional-rendering.grit"]
|
|
}
|
|
]
|
|
}
|