diff --git a/eslint.config.mjs b/eslint.config.mjs index 34356c013d..a6a74ef4f8 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -108,11 +108,10 @@ export default pluginTypescript.config( 'packages/desktop-electron/client-build/', 'packages/desktop-electron/build/', 'packages/desktop-electron/dist/', - 'packages/import-ynab4/**/node_modules/*', - 'packages/import-ynab5/**/node_modules/*', 'packages/loot-core/**/node_modules/*', 'packages/loot-core/**/lib-dist/*', 'packages/loot-core/**/proto/*', + 'packages/sync-server/build/', '.yarn/*', '.github/*', ], @@ -504,6 +503,32 @@ export default pluginTypescript.config( 'no-restricted-imports': [ 'warn', { + paths: [ + { + name: 'react-router-dom', + 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'], @@ -519,6 +544,10 @@ export default pluginTypescript.config( importNames: ['colors'], message: 'Please use themes instead of colors', }, + { + group: ['@actual-app/web/*'], + message: 'Please do not import `@actual-app/web` in `loot-core`', + }, ], }, ], @@ -652,88 +681,6 @@ export default pluginTypescript.config( ], }, }, - { - files: ['packages/desktop-client/**/*'], - ignores: ['packages/desktop-client/src/hooks/useNavigate.{ts,tsx}'], - - rules: { - 'no-restricted-imports': [ - 'warn', - { - paths: [ - { - name: 'react-router-dom', - importNames: ['useNavigate'], - message: - "Please import Actual's useNavigate() hook from `src/hooks` instead.", - }, - ], - }, - ], - }, - }, - { - files: ['packages/desktop-client/**/*', 'packages/loot-core/**/*'], - ignores: ['packages/desktop-client/src/redux/index.{ts,tsx}'], - - rules: { - 'no-restricted-imports': [ - 'warn', - { - paths: [ - { - 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.", - }, - ], - }, - ], - }, - }, - { - files: ['packages/loot-core/src/**/*'], - rules: { - 'no-restricted-imports': [ - 'warn', - { - 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: ['loot-core/**'], - message: - 'Please use relative imports in loot-core instead of importing from `loot-core/*`', - }, - { - group: ['@actual-app/web/*'], - message: 'Please do not import `@actual-app/web` in `loot-core`', - }, - ], - }, - ], - }, - }, { files: [ 'packages/loot-core/src/types/**/*', @@ -748,27 +695,6 @@ export default pluginTypescript.config( 'import/no-unused-modules': 'off', }, }, - { - files: [ - 'packages/desktop-client/src/style/index.*', - 'packages/desktop-client/src/style/palette.*', - ], - - rules: { - 'no-restricted-imports': [ - 'off', - { - patterns: [ - { - group: ['**/style', '**/colors'], - importNames: ['colors'], - message: 'Please use themes instead of colors', - }, - ], - }, - ], - }, - }, { files: ['packages/api/migrations/*', 'packages/loot-core/migrations/*'], diff --git a/packages/desktop-client/src/hooks/useNavigate.ts b/packages/desktop-client/src/hooks/useNavigate.ts index 5f05bb2b1e..d28d7179c0 100644 --- a/packages/desktop-client/src/hooks/useNavigate.ts +++ b/packages/desktop-client/src/hooks/useNavigate.ts @@ -5,6 +5,7 @@ import { type NavigateOptions, type To, useLocation, + // eslint-disable-next-line no-restricted-imports useNavigate as useNavigateReactRouter, } from 'react-router-dom'; diff --git a/packages/desktop-client/src/redux/index.ts b/packages/desktop-client/src/redux/index.ts index d8134ed369..ccb16a9a90 100644 --- a/packages/desktop-client/src/redux/index.ts +++ b/packages/desktop-client/src/redux/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-restricted-imports */ import { useDispatch as useReduxDispatch, useSelector as useReduxSelector, diff --git a/packages/desktop-client/src/style/index.ts b/packages/desktop-client/src/style/index.ts index fb5f2ea25b..0ce172acb7 100644 --- a/packages/desktop-client/src/style/index.ts +++ b/packages/desktop-client/src/style/index.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports export * as colors from './colors'; export * from './styles'; export * from './theme'; diff --git a/packages/desktop-client/src/style/palette.ts b/packages/desktop-client/src/style/palette.ts index 3e2cf47883..250c1167ab 100644 --- a/packages/desktop-client/src/style/palette.ts +++ b/packages/desktop-client/src/style/palette.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import * as oldColors from './colors'; // Only for use in contextual color definitions diff --git a/packages/desktop-client/src/style/themes/dark.ts b/packages/desktop-client/src/style/themes/dark.ts index 62192a6066..95e51621fb 100644 --- a/packages/desktop-client/src/style/themes/dark.ts +++ b/packages/desktop-client/src/style/themes/dark.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import * as colorPalette from '@desktop-client/style/palette'; export const pageBackground = colorPalette.gray900; diff --git a/packages/desktop-client/src/style/themes/development.ts b/packages/desktop-client/src/style/themes/development.ts index 186d5c4398..b96a33bdfa 100644 --- a/packages/desktop-client/src/style/themes/development.ts +++ b/packages/desktop-client/src/style/themes/development.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import * as colorPalette from '@desktop-client/style/palette'; export const pageBackground = colorPalette.navy100; diff --git a/packages/desktop-client/src/style/themes/light.ts b/packages/desktop-client/src/style/themes/light.ts index e14cdc1c73..e3159e3f9a 100644 --- a/packages/desktop-client/src/style/themes/light.ts +++ b/packages/desktop-client/src/style/themes/light.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import * as colorPalette from '@desktop-client/style/palette'; export const pageBackground = colorPalette.navy100; diff --git a/packages/desktop-client/src/style/themes/midnight.ts b/packages/desktop-client/src/style/themes/midnight.ts index 38332e2b97..8b33d1a30f 100644 --- a/packages/desktop-client/src/style/themes/midnight.ts +++ b/packages/desktop-client/src/style/themes/midnight.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import * as colorPalette from '@desktop-client/style/palette'; export const pageBackground = colorPalette.gray600; diff --git a/packages/desktop-electron/e2e/onboarding.test.ts b/packages/desktop-electron/e2e/onboarding.test.ts index cd241eff7d..e1851f76fd 100644 --- a/packages/desktop-electron/e2e/onboarding.test.ts +++ b/packages/desktop-electron/e2e/onboarding.test.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports -- fix me import { ConfigurationPage } from '@actual-app/web/e2e/page-models/configuration-page'; import { expect } from '@playwright/test'; diff --git a/upcoming-release-notes/5081.md b/upcoming-release-notes/5081.md new file mode 100644 index 0000000000..46644eb667 --- /dev/null +++ b/upcoming-release-notes/5081.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MatissJanis] +--- + +Patch no-restricted-imports eslint rule