biome.json
Rama main · réplica de lectura del repositorio original.
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"formatter": {
"enabled": true,
"formatWithErrors": false,
"indentStyle": "tab",
"lineWidth": 120,
"lineEnding": "lf",
"bracketSpacing": false,
"includes": ["**", "!**/fluxer_app/src/features/theme/variables/ThemeVariableManifest.ts"]
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"jsxQuoteStyle": "double",
"quoteProperties": "asNeeded",
"trailingCommas": "all",
"semicolons": "always",
"arrowParentheses": "always",
"bracketSpacing": false,
"bracketSameLine": false
},
"globals": ["React", "__webpack_base_uri__"]
},
"json": {
"formatter": {
"enabled": true,
"indentStyle": "tab",
"lineWidth": 120
},
"parser": {
"allowComments": true,
"allowTrailingCommas": true
}
},
"css": {
"formatter": {
"enabled": true,
"indentStyle": "tab",
"lineWidth": 120,
"quoteStyle": "single"
},
"parser": {
"cssModules": true,
"tailwindDirectives": true
}
},
"linter": {
"enabled": true,
"rules": {
"preset": "recommended",
"complexity": {
"noForEach": "off",
"noImportantStyles": "off",
"noUselessCatch": "error",
"useLiteralKeys": "off"
},
"correctness": {
"noUndeclaredVariables": "error",
"noUnusedVariables": "error",
"noInvalidUseBeforeDeclaration": "off",
"useExhaustiveDependencies": "off"
},
"suspicious": {
"noArrayIndexKey": "off",
"noAssignInExpressions": "off",
"noExplicitAny": "off",
"noThenProperty": "off",
"noDoubleEquals": {
"level": "error",
"options": {
"ignoreNull": true
}
},
"noVar": "error",
"useAdjacentOverloadSignatures": "off",
"useIterableCallbackReturn": "off"
},
"style": {
"useConsistentArrayType": {
"level": "error",
"options": {
"syntax": "generic"
}
},
"useConst": "error",
"noDescendingSpecificity": "off",
"noNonNullAssertion": "off",
"noParameterAssign": "off",
"noRestrictedImports": {
"level": "error",
"options": {
"paths": {
"@lingui/react": {
"importNames": ["I18nProvider"],
"message": "Use AppI18nProvider from @app/features/i18n/components/AppI18nProvider so <Trans> output stays safe under page translation."
}
}
}
}
},
"a11y": {
"preset": "recommended",
"useAriaPropsForRole": "error",
"useValidAriaRole": "error",
"useValidAriaValues": "error",
"useValidAriaProps": "error",
"useAltText": "error",
"useAnchorContent": "error",
"useButtonType": "error",
"useKeyWithClickEvents": "error",
"useKeyWithMouseEvents": "error",
"useSemanticElements": "off",
"noAriaUnsupportedElements": "error",
"noNoninteractiveElementToInteractiveRole": "error",
"noNoninteractiveTabindex": "error",
"noRedundantAlt": "error",
"noRedundantRoles": "error",
"noInteractiveElementToNoninteractiveRole": "error",
"noAutofocus": "warn",
"noAccessKey": "warn",
"useAriaActivedescendantWithTabindex": "error",
"noSvgWithoutTitle": "off"
},
"nursery": {
"useTailwindSortedClasses": "error"
}
}
},
"assist": {"actions": {"source": {"organizeImports": "on"}}},
"overrides": [
{
"includes": [
"packages/**",
"fluxer_desktop/**",
"fluxer_docs/**",
"fluxer_api/**",
"fluxer_app/**",
"!fluxer_app/pkgs/livekit-client/**"
],
"linter": {"rules": {"style": {"noNestedTernary": "error"}}}
},
{
"includes": [
"packages/constants/**",
"packages/date_utils/**",
"packages/number_utils/**",
"packages/snowflake/**"
],
"linter": {
"rules": {
"complexity": {
"noExcessiveCognitiveComplexity": {"level": "error", "options": {"maxAllowedComplexity": 25}}
},
"suspicious": {"noEmptyBlockStatements": "error"}
}
}
},
{
"includes": ["fluxer_app/inline_scripts/boot-shell.js"],
"linter": {
"rules": {
"complexity": {"useOptionalChain": "off", "useMathMinMax": "off"},
"correctness": {"noInnerDeclarations": "off"},
"style": {"noNestedTernary": "off", "useTemplate": "off"},
"suspicious": {"noVar": "off", "noGlobalIsFinite": "off"}
}
}
},
{
"includes": ["fluxer_app/src/**/*.tsx"],
"plugins": ["./tools/lint/no-adjacent-jsx-text.grit"]
},
{
"includes": [
"fluxer_app/src/**/*.css",
"!fluxer_app/src/features/accessibility/components/NekoSprite.module.css",
"!fluxer_app/src/features/app/components/layout/AuthLayout.module.css",
"!fluxer_app/src/features/channel/components/ChannelOriginIcon.module.css",
"!fluxer_app/src/features/messaging/components/modals/MediaModal.module.css",
"!fluxer_app/src/features/search/components/quick_switcher/OtherAccountAvatar.module.css",
"!fluxer_app/src/features/theme_settings/components/QuickCssEditorPanel.module.css",
"!fluxer_app/src/features/ui/components/BaseAvatar.module.css",
"!fluxer_app/src/features/ui/components/SliderTooltip.module.css",
"!fluxer_app/src/features/ui/floating_pane/FloatingPaneResizeHandles.module.css",
"!fluxer_app/src/features/ui/resizable_pane/ResizablePaneHandles.module.css",
"!fluxer_app/src/features/ui/tooltip/Tooltip.module.css",
"!fluxer_app/src/features/voice/components/AudioWaveform.module.css",
"!fluxer_app/src/features/voice/components/LiveRecordingWaveform.module.css",
"!fluxer_app/src/features/voice/components/PiPOverlay.module.css",
"!fluxer_app/src/features/voice/components/media_player/InlineAudioPlayer.module.css",
"!fluxer_app/src/features/voice/components/media_player/MediaProgressBar.module.css",
"!fluxer_app/src/features/voice/components/media_player/MediaVolumeControl.module.css",
"!fluxer_app/src/features/voice/components/modals/MobileVideoViewer.module.css"
],
"plugins": ["./tools/lint/no-physical-css.grit"]
},
{
"includes": ["fluxer_app/src/features/i18n/components/AppI18nProvider.tsx"],
"linter": {"rules": {"style": {"noRestrictedImports": "off"}}}
},
{
"includes": ["fluxer_app/src/**/*.worklet.js"],
"javascript": {"globals": ["AudioWorkletProcessor", "registerProcessor", "sampleRate", "currentTime"]}
},
{
"includes": ["fluxer_app/src/features/app/config/WebAppHostedImages.json"],
"json": {"formatter": {"indentStyle": "space", "indentWidth": 2}}
},
{
"includes": ["**/*.astro"],
"linter": {"rules": {"correctness": {"noUnusedImports": "off", "noUnusedVariables": "off"}}},
"assist": {"actions": {"source": {"organizeImports": "off"}}}
}
],
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"includes": [
"**",
"!**/.git",
"!**/app.css",
"!**/build",
"fluxer_app/scripts/build",
"!**/dist",
"!**/fluxer_app/src/media/data/emojis.json",
"!**/fluxer_app/src/features/i18n/locales/*/messages.js",
"!**/fluxer_app/src/features/i18n/locales/*/messages.mjs",
"!**/fluxer_app/src/env.d.ts",
"!**/*.generated.*",
"!**/*.pb.*",
"!**/*_pb.*",
"!**/node_modules",
"!packages/schema/src/gen",
"!**/tailwind.css",
"!**/*.html",
"!**/*.md",
"!**/*.yaml",
"!**/*.yml",
"!**/*.module.css.d.ts",
"!**/fluxer_app/src/features/ui/components/SVGMasks.tsx",
"!fluxer_static",
"!packages/fonts",
"!fluxer_admin/static/htmx.min.js",
"!fluxer_api/src/api/openapi/openapi.json",
"!fluxer_admin/openapi-admin.json",
"!fluxer_api/pkgs/email/src/email_i18n/weblate",
"!fluxer_api/src/api/content_i18n/weblate",
"!packages/errors/src/i18n/weblate",
"!fluxer_rexctl/internal/adminapi/configschema.json",
"!fluxer_rexctl/internal/stack/imageset.json",
"!fluxer_rexctl/internal/stack/files/profiles.json"
],
"ignoreUnknown": true
}
}