🔧 (eslint) patch no-restriced-imports rule (#5081)

This commit is contained in:
Matiss Janis Aboltins
2025-06-05 19:59:51 +01:00
committed by GitHub
parent cd15aded05
commit cd6b141117
11 changed files with 46 additions and 105 deletions

View File

@@ -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/*'],

View File

@@ -5,6 +5,7 @@ import {
type NavigateOptions,
type To,
useLocation,
// eslint-disable-next-line no-restricted-imports
useNavigate as useNavigateReactRouter,
} from 'react-router-dom';

View File

@@ -1,3 +1,4 @@
/* eslint-disable no-restricted-imports */
import {
useDispatch as useReduxDispatch,
useSelector as useReduxSelector,

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line no-restricted-imports
export * as colors from './colors';
export * from './styles';
export * from './theme';

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line no-restricted-imports
import * as oldColors from './colors';
// Only for use in contextual color definitions

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line no-restricted-imports
import * as colorPalette from '@desktop-client/style/palette';
export const pageBackground = colorPalette.gray900;

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line no-restricted-imports
import * as colorPalette from '@desktop-client/style/palette';
export const pageBackground = colorPalette.navy100;

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line no-restricted-imports
import * as colorPalette from '@desktop-client/style/palette';
export const pageBackground = colorPalette.navy100;

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line no-restricted-imports
import * as colorPalette from '@desktop-client/style/palette';
export const pageBackground = colorPalette.gray600;

View File

@@ -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';

View File

@@ -0,0 +1,6 @@
---
category: Maintenance
authors: [MatissJanis]
---
Patch no-restricted-imports eslint rule