mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-09 06:03:01 -05:00
- Removed temporary ignores for the docs package. - Updated linting rules for the docs package to improve code quality. - Refactored variable declarations from `let` to `const` for better consistency. - Added a new configuration file for oxlint in the docs directory. - Made minor formatting adjustments across various components.
247 lines
8.2 KiB
JSON
247 lines
8.2 KiB
JSON
{
|
|
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
|
"plugins": ["react", "typescript", "import", "jsx-a11y"],
|
|
"rules": {
|
|
// TODO fix all these and re-enable
|
|
"jsx-a11y/click-events-have-key-events": "off",
|
|
"jsx-a11y/prefer-tag-over-role": "off",
|
|
"jsx-a11y/tabindex-no-positive": "off",
|
|
|
|
// Keep these rules
|
|
"no-var": "warn",
|
|
|
|
// JSX A11y rules
|
|
"jsx-a11y/no-autofocus": ["warn", { "ignoreNonDOM": true }],
|
|
|
|
// Import rules
|
|
"import/first": "error",
|
|
"import/no-amd": "error",
|
|
"import/no-default-export": "warn",
|
|
"import/no-webpack-loader-syntax": "error",
|
|
"import/no-useless-path-segments": "warn",
|
|
"import/no-unresolved": "warn",
|
|
"import/no-unused-modules": "warn",
|
|
"import/no-duplicates": [
|
|
"warn",
|
|
{
|
|
"prefer-inline": true
|
|
}
|
|
],
|
|
|
|
// React rules
|
|
"react/exhaustive-deps": [
|
|
"warn",
|
|
{
|
|
"additionalHooks": "(useQuery|useEffectAfterMount)"
|
|
}
|
|
],
|
|
"react/jsx-curly-brace-presence": "warn",
|
|
"react/jsx-filename-extension": [
|
|
"warn",
|
|
{
|
|
"extensions": [".jsx", ".tsx"],
|
|
"allow": "as-needed"
|
|
}
|
|
],
|
|
"react/jsx-no-comment-textnodes": "warn",
|
|
"react/jsx-no-duplicate-props": "warn",
|
|
"react/jsx-no-target-blank": "warn",
|
|
"react/jsx-no-undef": "error",
|
|
"react/jsx-no-useless-fragment": "warn",
|
|
"react/jsx-pascal-case": [
|
|
"warn",
|
|
{
|
|
"allowAllCaps": true,
|
|
"ignore": []
|
|
}
|
|
],
|
|
"react/no-danger-with-children": "warn",
|
|
"react/no-direct-mutation-state": "warn",
|
|
"react/no-is-mounted": "warn",
|
|
"react/no-unstable-nested-components": "warn",
|
|
"react/require-render-return": "error",
|
|
"react/rules-of-hooks": "error",
|
|
"react/self-closing-comp": "warn",
|
|
"react/style-prop-object": "warn",
|
|
|
|
// ESLint rules
|
|
"eslint/no-redeclare": "warn",
|
|
"eslint/no-regex-spaces": "warn",
|
|
"eslint/no-restricted-globals": [
|
|
"warn",
|
|
|
|
// https://github.com/facebook/create-react-app/tree/main/packages/confusing-browser-globals
|
|
"addEventListener",
|
|
"blur",
|
|
"close",
|
|
"closed",
|
|
"confirm",
|
|
"defaultStatus",
|
|
"defaultstatus",
|
|
"event",
|
|
"external",
|
|
"find",
|
|
"focus",
|
|
"frameElement",
|
|
"frames",
|
|
"history",
|
|
"innerHeight",
|
|
"innerWidth",
|
|
"length",
|
|
"location",
|
|
"locationbar",
|
|
"menubar",
|
|
"moveBy",
|
|
"moveTo",
|
|
"name",
|
|
"onblur",
|
|
"onerror",
|
|
"onfocus",
|
|
"onload",
|
|
"onresize",
|
|
"onunload",
|
|
"open",
|
|
"opener",
|
|
"opera",
|
|
"outerHeight",
|
|
"outerWidth",
|
|
"pageXOffset",
|
|
"pageYOffset",
|
|
"parent",
|
|
"print",
|
|
"removeEventListener",
|
|
"resizeBy",
|
|
"resizeTo",
|
|
"screen",
|
|
"screenLeft",
|
|
"screenTop",
|
|
"screenX",
|
|
"screenY",
|
|
"scroll",
|
|
"scrollbars",
|
|
"scrollBy",
|
|
"scrollTo",
|
|
"scrollX",
|
|
"scrollY",
|
|
"status",
|
|
"statusbar",
|
|
"stop",
|
|
"toolbar",
|
|
"top"
|
|
],
|
|
"eslint/no-restricted-imports": [
|
|
"warn",
|
|
{
|
|
"paths": [
|
|
{
|
|
"name": "react-router",
|
|
"importNames": ["useNavigate"],
|
|
"message": "Please import Actual's useNavigate() hook from `src/hooks` instead."
|
|
},
|
|
{
|
|
"name": "react-redux",
|
|
"importNames": ["useDispatch"],
|
|
"message": "Please import Actual's useDispatch() hook from `src/redux` instead."
|
|
},
|
|
{
|
|
"name": "react-redux",
|
|
"importNames": ["useSelector"],
|
|
"message": "Please import Actual's useSelector() hook from `src/redux` instead."
|
|
},
|
|
{
|
|
"name": "react-redux",
|
|
"importNames": ["useStore"],
|
|
"message": "Please import Actual's useStore() hook from `src/redux` instead."
|
|
}
|
|
],
|
|
"patterns": [
|
|
{
|
|
"group": ["*.api", "*.web", "*.electron"],
|
|
"message": "Don't directly reference imports from other platforms"
|
|
},
|
|
{
|
|
"group": ["uuid"],
|
|
"importNames": ["*"],
|
|
"message": "Use `import { v4 as uuidv4 } from 'uuid'` instead"
|
|
},
|
|
{
|
|
"group": ["**/style", "**/colors"],
|
|
"importNames": ["colors"],
|
|
"message": "Please use themes instead of colors"
|
|
},
|
|
{
|
|
"group": ["@actual-app/web/*"],
|
|
"message": "Please do not import `@actual-app/web` in `loot-core`"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"overrides": [
|
|
{
|
|
// TODO: fix the issues in these files
|
|
"files": [
|
|
"packages/component-library/src/Menu.tsx",
|
|
"packages/desktop-client/src/components/accounts/Account.jsx",
|
|
"packages/desktop-client/src/components/accounts/MobileAccount.jsx",
|
|
"packages/desktop-client/src/components/accounts/MobileAccounts.jsx",
|
|
"packages/desktop-client/src/components/budget/BudgetCategories.jsx",
|
|
"packages/desktop-client/src/components/budget/BudgetSummaries.tsx",
|
|
"packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx",
|
|
"packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx",
|
|
"packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx",
|
|
"packages/desktop-client/src/components/budget/index.tsx",
|
|
"packages/desktop-client/src/components/budget/MobileBudget.tsx",
|
|
"packages/desktop-client/src/components/FinancesApp.tsx",
|
|
"packages/desktop-client/src/components/GlobalKeys.ts",
|
|
"packages/desktop-client/src/components/LoggedInUser.tsx",
|
|
"packages/desktop-client/src/components/manager/ManagementApp.jsx",
|
|
"packages/desktop-client/src/components/manager/subscribe/common.tsx",
|
|
"packages/desktop-client/src/components/ManageRules.tsx",
|
|
"packages/desktop-client/src/components/mobile/MobileAmountInput.jsx",
|
|
"packages/desktop-client/src/components/mobile/MobileNavTabs.tsx",
|
|
"packages/desktop-client/src/components/Modals.tsx",
|
|
"packages/desktop-client/src/components/modals/EditRule.jsx",
|
|
"packages/desktop-client/src/components/modals/ImportTransactions.jsx",
|
|
"packages/desktop-client/src/components/modals/ImportTransactionsModal/ImportTransactionsModal.tsx",
|
|
"packages/desktop-client/src/components/modals/MergeUnusedPayees.jsx",
|
|
"packages/desktop-client/src/components/Notifications.tsx",
|
|
"packages/desktop-client/src/components/payees/ManagePayees.jsx",
|
|
"packages/desktop-client/src/components/payees/ManagePayeesWithData.jsx",
|
|
"packages/desktop-client/src/components/payees/PayeeTable.tsx",
|
|
"packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTable.tsx",
|
|
"packages/desktop-client/src/components/reports/graphs/tableGraph/ReportTableTotals.tsx",
|
|
"packages/desktop-client/src/components/reports/reports/CashFlowCard.jsx",
|
|
"packages/desktop-client/src/components/reports/reports/CustomReport.jsx",
|
|
"packages/desktop-client/src/components/reports/reports/CustomReport.tsx",
|
|
"packages/desktop-client/src/components/reports/reports/NetWorthCard.jsx",
|
|
"packages/desktop-client/src/components/reports/SaveReportName.tsx",
|
|
"packages/desktop-client/src/components/reports/useReport.ts",
|
|
"packages/desktop-client/src/components/schedules/ScheduleDetails.jsx",
|
|
"packages/desktop-client/src/components/schedules/ScheduleEditModal.tsx",
|
|
"packages/desktop-client/src/components/schedules/SchedulesTable.tsx",
|
|
"packages/desktop-client/src/components/select/DateSelect.tsx",
|
|
"packages/desktop-client/src/components/sidebar/Tools.tsx",
|
|
"packages/desktop-client/src/components/sort.tsx",
|
|
"packages/desktop-client/src/hooks/useEffectAfterMount.ts",
|
|
"packages/desktop-client/src/hooks/useQuery.ts"
|
|
],
|
|
"rules": {
|
|
"react/exhaustive-deps": "off"
|
|
}
|
|
},
|
|
|
|
{
|
|
"files": [
|
|
"packages/api/migrations/*",
|
|
"packages/loot-core/migrations/*",
|
|
"packages/sync-server/src/app-gocardless/banks/*.js",
|
|
"*.config.{ts,mts,mjs}"
|
|
],
|
|
"rules": {
|
|
"import/no-default-export": "off"
|
|
}
|
|
}
|
|
]
|
|
}
|