2025-10-10 06:21:56 +00:00
|
|
|
{
|
|
|
|
|
"$schema": "https://biomejs.dev/schemas/2.2.5/schema.json",
|
|
|
|
|
"vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
|
|
|
|
|
"files": {
|
|
|
|
|
"includes": [
|
2025-10-25 08:42:33 +00:00
|
|
|
"apps/main/src/**/*",
|
|
|
|
|
"apps/main/worker/**/*",
|
|
|
|
|
"apps/main/*.{ts,tsx,js,jsx,json}",
|
|
|
|
|
"apps/external/src/**/*",
|
|
|
|
|
"apps/external/worker/**/*",
|
|
|
|
|
"apps/external/*.{ts,tsx,js,jsx,json}",
|
2025-11-10 07:52:47 +00:00
|
|
|
"apps/api/src/**/*",
|
|
|
|
|
"apps/api/*.{ts,tsx,js,jsx,json}",
|
2025-10-25 08:42:33 +00:00
|
|
|
"packages/ui/src/**/*",
|
|
|
|
|
"packages/ui/*.{ts,tsx,js,jsx,json}",
|
|
|
|
|
"packages/shared/src/**/*",
|
|
|
|
|
"packages/shared/*.{ts,tsx,js,jsx,json}",
|
2025-11-10 07:52:47 +00:00
|
|
|
"packages/shared-types/src/**/*",
|
|
|
|
|
"packages/shared-types/*.{ts,tsx,js,jsx,json}",
|
2025-10-10 06:21:56 +00:00
|
|
|
"xtablo-expo/app/**/*",
|
|
|
|
|
"xtablo-expo/components/**/*",
|
|
|
|
|
"xtablo-expo/hooks/**/*",
|
|
|
|
|
"xtablo-expo/lib/**/*",
|
|
|
|
|
"xtablo-expo/providers/**/*",
|
|
|
|
|
"xtablo-expo/stores/**/*",
|
|
|
|
|
"xtablo-expo/types/**/*",
|
|
|
|
|
"xtablo-expo/*.{ts,tsx,js,jsx,json}"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"formatter": {
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"formatWithErrors": false,
|
|
|
|
|
"indentStyle": "space",
|
|
|
|
|
"indentWidth": 2,
|
|
|
|
|
"lineEnding": "lf",
|
|
|
|
|
"lineWidth": 100,
|
|
|
|
|
"attributePosition": "auto"
|
|
|
|
|
},
|
|
|
|
|
"linter": {
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"rules": {
|
|
|
|
|
"recommended": false,
|
|
|
|
|
"complexity": {
|
|
|
|
|
"noAdjacentSpacesInRegex": "error",
|
|
|
|
|
"noBannedTypes": "error",
|
|
|
|
|
"noExtraBooleanCast": "error",
|
|
|
|
|
"noUselessCatch": "error",
|
|
|
|
|
"noUselessEscapeInRegex": "error",
|
|
|
|
|
"noUselessTypeConstraint": "error"
|
|
|
|
|
},
|
|
|
|
|
"correctness": {
|
|
|
|
|
"noChildrenProp": "error",
|
|
|
|
|
"noConstAssign": "error",
|
|
|
|
|
"noConstantCondition": "error",
|
|
|
|
|
"noEmptyCharacterClassInRegex": "error",
|
|
|
|
|
"noEmptyPattern": "error",
|
|
|
|
|
"noGlobalObjectCalls": "error",
|
|
|
|
|
"noInvalidBuiltinInstantiation": "error",
|
|
|
|
|
"noInvalidConstructorSuper": "error",
|
|
|
|
|
"noNonoctalDecimalEscape": "error",
|
|
|
|
|
"noPrecisionLoss": "error",
|
|
|
|
|
"noSelfAssign": "error",
|
|
|
|
|
"noSetterReturn": "error",
|
|
|
|
|
"noSwitchDeclarations": "error",
|
|
|
|
|
"noUndeclaredVariables": "error",
|
|
|
|
|
"noUnreachable": "error",
|
|
|
|
|
"noUnreachableSuper": "error",
|
|
|
|
|
"noUnsafeFinally": "error",
|
|
|
|
|
"noUnsafeOptionalChaining": "error",
|
|
|
|
|
"noUnusedLabels": "error",
|
|
|
|
|
"noUnusedPrivateClassMembers": "error",
|
|
|
|
|
"noUnusedVariables": "error",
|
2025-10-16 09:20:27 +00:00
|
|
|
"noUnusedImports": "error",
|
2025-10-10 06:21:56 +00:00
|
|
|
"useIsNan": "error",
|
|
|
|
|
"useJsxKeyInIterable": "error",
|
|
|
|
|
"useValidForDirection": "error",
|
|
|
|
|
"useValidTypeof": "error",
|
|
|
|
|
"useYield": "error"
|
|
|
|
|
},
|
|
|
|
|
"nursery": {},
|
|
|
|
|
"security": { "noDangerouslySetInnerHtmlWithChildren": "error" },
|
|
|
|
|
"style": {
|
|
|
|
|
"noCommonJs": "error",
|
|
|
|
|
"noNamespace": "error",
|
|
|
|
|
"useArrayLiterals": "error",
|
|
|
|
|
"useAsConstAssertion": "error",
|
|
|
|
|
"useConst": "error",
|
|
|
|
|
"useTemplate": "error"
|
|
|
|
|
},
|
|
|
|
|
"suspicious": {
|
|
|
|
|
"noAsyncPromiseExecutor": "error",
|
|
|
|
|
"noCatchAssign": "error",
|
|
|
|
|
"noClassAssign": "error",
|
|
|
|
|
"noCommentText": "error",
|
|
|
|
|
"noCompareNegZero": "error",
|
|
|
|
|
"noConstantBinaryExpressions": "error",
|
|
|
|
|
"noControlCharactersInRegex": "error",
|
|
|
|
|
"noDebugger": "error",
|
|
|
|
|
"noDuplicateCase": "error",
|
|
|
|
|
"noDuplicateClassMembers": "error",
|
|
|
|
|
"noDuplicateElseIf": "error",
|
|
|
|
|
"noDuplicateJsxProps": "error",
|
|
|
|
|
"noDuplicateObjectKeys": "error",
|
|
|
|
|
"noDuplicateParameters": "error",
|
|
|
|
|
"noEmptyBlockStatements": "error",
|
|
|
|
|
"noExplicitAny": "error",
|
|
|
|
|
"noExtraNonNullAssertion": "error",
|
|
|
|
|
"noFallthroughSwitchClause": "error",
|
|
|
|
|
"noFunctionAssign": "error",
|
|
|
|
|
"noGlobalAssign": "error",
|
|
|
|
|
"noImportAssign": "error",
|
|
|
|
|
"noIrregularWhitespace": "error",
|
|
|
|
|
"noMisleadingCharacterClass": "error",
|
|
|
|
|
"noMisleadingInstantiator": "error",
|
|
|
|
|
"noPrototypeBuiltins": "error",
|
|
|
|
|
"noRedeclare": "error",
|
|
|
|
|
"noShadowRestrictedNames": "error",
|
|
|
|
|
"noSparseArray": "error",
|
|
|
|
|
"noUnsafeDeclarationMerging": "error",
|
|
|
|
|
"noUnsafeNegation": "error",
|
|
|
|
|
"noUselessRegexBackrefs": "error",
|
|
|
|
|
"noWith": "error",
|
|
|
|
|
"useGetterReturn": "error",
|
|
|
|
|
"useNamespaceKeyword": "error"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"javascript": {
|
|
|
|
|
"formatter": {
|
|
|
|
|
"jsxQuoteStyle": "double",
|
|
|
|
|
"quoteProperties": "asNeeded",
|
|
|
|
|
"trailingCommas": "es5",
|
|
|
|
|
"semicolons": "always",
|
|
|
|
|
"arrowParentheses": "always",
|
|
|
|
|
"bracketSameLine": false,
|
|
|
|
|
"quoteStyle": "double",
|
|
|
|
|
"attributePosition": "auto",
|
|
|
|
|
"bracketSpacing": true
|
|
|
|
|
},
|
|
|
|
|
"globals": [
|
|
|
|
|
"onanimationend",
|
|
|
|
|
"ongamepadconnected",
|
|
|
|
|
"onlostpointercapture",
|
|
|
|
|
"onanimationiteration",
|
|
|
|
|
"onkeyup",
|
|
|
|
|
"onmousedown",
|
|
|
|
|
"onanimationstart",
|
|
|
|
|
"onslotchange",
|
|
|
|
|
"onprogress",
|
|
|
|
|
"ontransitionstart",
|
|
|
|
|
"onpause",
|
|
|
|
|
"onended",
|
|
|
|
|
"onpointerover",
|
|
|
|
|
"onscrollend",
|
|
|
|
|
"onformdata",
|
|
|
|
|
"ontransitionrun",
|
|
|
|
|
"onanimationcancel",
|
|
|
|
|
"ondrag",
|
|
|
|
|
"onchange",
|
|
|
|
|
"onbeforeinstallprompt",
|
|
|
|
|
"onbeforexrselect",
|
|
|
|
|
"onmessage",
|
|
|
|
|
"ontransitioncancel",
|
|
|
|
|
"onpointerdown",
|
|
|
|
|
"onabort",
|
|
|
|
|
"onpointerout",
|
|
|
|
|
"oncuechange",
|
|
|
|
|
"ongotpointercapture",
|
|
|
|
|
"onscrollsnapchanging",
|
|
|
|
|
"onsearch",
|
|
|
|
|
"onsubmit",
|
|
|
|
|
"onstalled",
|
|
|
|
|
"onsuspend",
|
|
|
|
|
"onreset",
|
|
|
|
|
"onerror",
|
|
|
|
|
"onresize",
|
|
|
|
|
"onmouseenter",
|
|
|
|
|
"ongamepaddisconnected",
|
|
|
|
|
"ondragover",
|
|
|
|
|
"onbeforetoggle",
|
|
|
|
|
"onmouseover",
|
|
|
|
|
"onpagehide",
|
|
|
|
|
"onmousemove",
|
|
|
|
|
"onratechange",
|
|
|
|
|
"onmessageerror",
|
|
|
|
|
"onwheel",
|
|
|
|
|
"ondevicemotion",
|
|
|
|
|
"onauxclick",
|
|
|
|
|
"ontransitionend",
|
|
|
|
|
"onpaste",
|
|
|
|
|
"onpageswap",
|
|
|
|
|
"ononline",
|
|
|
|
|
"ondeviceorientationabsolute",
|
|
|
|
|
"onkeydown",
|
|
|
|
|
"onclose",
|
|
|
|
|
"onselect",
|
|
|
|
|
"onpageshow",
|
|
|
|
|
"onpointercancel",
|
|
|
|
|
"onbeforematch",
|
|
|
|
|
"onpointerrawupdate",
|
|
|
|
|
"ondragleave",
|
|
|
|
|
"onscrollsnapchange",
|
|
|
|
|
"onseeked",
|
|
|
|
|
"onwaiting",
|
|
|
|
|
"onbeforeunload",
|
|
|
|
|
"onplaying",
|
|
|
|
|
"onvolumechange",
|
|
|
|
|
"ondragend",
|
|
|
|
|
"onstorage",
|
|
|
|
|
"onloadeddata",
|
|
|
|
|
"onfocus",
|
|
|
|
|
"onoffline",
|
|
|
|
|
"onplay",
|
|
|
|
|
"onafterprint",
|
|
|
|
|
"onclick",
|
|
|
|
|
"oncut",
|
|
|
|
|
"onmouseout",
|
|
|
|
|
"ondblclick",
|
|
|
|
|
"oncanplay",
|
|
|
|
|
"onloadstart",
|
|
|
|
|
"onappinstalled",
|
|
|
|
|
"onpointermove",
|
|
|
|
|
"ontoggle",
|
|
|
|
|
"oncontextmenu",
|
|
|
|
|
"onblur",
|
|
|
|
|
"oncancel",
|
|
|
|
|
"onbeforeprint",
|
|
|
|
|
"oncontextrestored",
|
|
|
|
|
"onloadedmetadata",
|
|
|
|
|
"onpointerup",
|
|
|
|
|
"onlanguagechange",
|
|
|
|
|
"oncopy",
|
|
|
|
|
"onselectstart",
|
|
|
|
|
"onscroll",
|
|
|
|
|
"onload",
|
|
|
|
|
"ondragstart",
|
|
|
|
|
"onbeforeinput",
|
|
|
|
|
"oncanplaythrough",
|
|
|
|
|
"oninput",
|
|
|
|
|
"oninvalid",
|
|
|
|
|
"ontimeupdate",
|
|
|
|
|
"ondurationchange",
|
|
|
|
|
"onselectionchange",
|
|
|
|
|
"onmouseup",
|
|
|
|
|
"location",
|
|
|
|
|
"onkeypress",
|
|
|
|
|
"onpointerleave",
|
|
|
|
|
"oncontextlost",
|
|
|
|
|
"ondrop",
|
|
|
|
|
"onsecuritypolicyviolation",
|
|
|
|
|
"oncontentvisibilityautostatechange",
|
|
|
|
|
"ondeviceorientation",
|
|
|
|
|
"onseeking",
|
|
|
|
|
"onrejectionhandled",
|
|
|
|
|
"onunload",
|
|
|
|
|
"onmouseleave",
|
|
|
|
|
"onhashchange",
|
|
|
|
|
"onpointerenter",
|
|
|
|
|
"onmousewheel",
|
|
|
|
|
"onunhandledrejection",
|
|
|
|
|
"ondragenter",
|
|
|
|
|
"onpopstate",
|
|
|
|
|
"onpagereveal",
|
|
|
|
|
"onemptied"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"json": {
|
|
|
|
|
"parser": { "allowComments": true, "allowTrailingCommas": false },
|
|
|
|
|
"formatter": {
|
|
|
|
|
"enabled": true,
|
|
|
|
|
"indentStyle": "space",
|
|
|
|
|
"indentWidth": 2,
|
|
|
|
|
"lineEnding": "lf",
|
|
|
|
|
"lineWidth": 100,
|
|
|
|
|
"trailingCommas": "none"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"overrides": [
|
|
|
|
|
{ "linter": { "rules": { "suspicious": { "noExplicitAny": "off" } } } },
|
|
|
|
|
{ "linter": { "rules": { "style": { "useNodejsImportProtocol": "off" } } } },
|
|
|
|
|
{
|
|
|
|
|
"linter": {
|
|
|
|
|
"rules": {
|
|
|
|
|
"style": { "useNodejsImportProtocol": "off" },
|
|
|
|
|
"suspicious": { "noExplicitAny": "off" }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"includes": [
|
2025-10-25 08:42:33 +00:00
|
|
|
"apps/main/src/**/*.{ts,tsx}",
|
|
|
|
|
"apps/main/worker/**/*.{ts,tsx}",
|
|
|
|
|
"apps/main/*.{ts,tsx}",
|
|
|
|
|
"apps/external/src/**/*.{ts,tsx}",
|
|
|
|
|
"apps/external/worker/**/*.{ts,tsx}",
|
|
|
|
|
"apps/external/*.{ts,tsx}",
|
2025-11-10 07:52:47 +00:00
|
|
|
"apps/api/src/**/*.{ts,tsx}",
|
|
|
|
|
"apps/api/*.{ts,tsx}",
|
2025-10-25 08:42:33 +00:00
|
|
|
"packages/ui/src/**/*.{ts,tsx}",
|
|
|
|
|
"packages/ui/*.{ts,tsx}",
|
|
|
|
|
"packages/shared/src/**/*.{ts,tsx}",
|
|
|
|
|
"packages/shared/*.{ts,tsx}",
|
2025-11-10 07:52:47 +00:00
|
|
|
"packages/shared-types/src/**/*.{ts,tsx}",
|
|
|
|
|
"packages/shared-types/*.{ts,tsx}",
|
2025-10-10 06:21:56 +00:00
|
|
|
"xtablo-expo/**/*.{ts,tsx}"
|
|
|
|
|
],
|
|
|
|
|
"linter": {
|
|
|
|
|
"rules": {
|
|
|
|
|
"complexity": { "noArguments": "error" },
|
|
|
|
|
"correctness": {
|
|
|
|
|
"noConstAssign": "off",
|
|
|
|
|
"noGlobalObjectCalls": "off",
|
|
|
|
|
"noInvalidBuiltinInstantiation": "off",
|
|
|
|
|
"noInvalidConstructorSuper": "off",
|
|
|
|
|
"noSetterReturn": "off",
|
|
|
|
|
"noUndeclaredVariables": "off",
|
|
|
|
|
"noUnreachable": "off",
|
|
|
|
|
"noUnreachableSuper": "off"
|
|
|
|
|
},
|
|
|
|
|
"style": { "useConst": "error" },
|
|
|
|
|
"suspicious": {
|
|
|
|
|
"noClassAssign": "off",
|
|
|
|
|
"noDuplicateClassMembers": "off",
|
|
|
|
|
"noDuplicateObjectKeys": "off",
|
|
|
|
|
"noDuplicateParameters": "off",
|
|
|
|
|
"noFunctionAssign": "off",
|
|
|
|
|
"noImportAssign": "off",
|
|
|
|
|
"noRedeclare": "off",
|
|
|
|
|
"noUnsafeNegation": "off",
|
|
|
|
|
"noVar": "error",
|
|
|
|
|
"useGetterReturn": "off"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"includes": ["xtablo-expo/**/*.{js,jsx,ts,tsx}"],
|
|
|
|
|
"linter": {
|
|
|
|
|
"rules": {
|
|
|
|
|
"correctness": {
|
|
|
|
|
"noUndeclaredVariables": "off"
|
|
|
|
|
},
|
|
|
|
|
"suspicious": {
|
|
|
|
|
"noExplicitAny": "warn"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-11-10 07:52:47 +00:00
|
|
|
"includes": ["apps/api/src/**/*.{js,ts}"],
|
2025-10-10 06:21:56 +00:00
|
|
|
"linter": {
|
|
|
|
|
"rules": {
|
|
|
|
|
"style": {
|
|
|
|
|
"noCommonJs": "off"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|