Skip to content

Commit 7a322df

Browse files
authored
Merge pull request marmelab#10685 from marmelab/eslint-no-extraneous-dependencies
[chore] ESLint: (re)enable import rules
2 parents d260152 + bf68d2c commit 7a322df

File tree

24 files changed

+508
-74
lines changed

24 files changed

+508
-74
lines changed

eslint.config.mjs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import js from '@eslint/js';
22
import { defineConfig, globalIgnores } from 'eslint/config';
33
import tseslint from 'typescript-eslint';
44
import cypress from 'eslint-plugin-cypress';
5+
import importPlugin from 'eslint-plugin-import';
56
import jsxA11y from 'eslint-plugin-jsx-a11y';
67
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
78
import react from 'eslint-plugin-react';
@@ -28,6 +29,22 @@ export default defineConfig([
2829
...conf,
2930
files: ['**/*.ts', '**/*.tsx'],
3031
})),
32+
{
33+
name: 'eslint-plugin-import',
34+
plugins: { import: importPlugin },
35+
rules: {
36+
...importPlugin.configs.recommended.rules,
37+
...importPlugin.configs.typescript.rules,
38+
},
39+
settings: {
40+
'import/resolver': {
41+
// You will also need to install and configure the TypeScript resolver
42+
// See also https://github.com/import-js/eslint-import-resolver-typescript#configuration
43+
typescript: true,
44+
node: true,
45+
},
46+
},
47+
},
3148
{
3249
...jsxA11y.flatConfigs.recommended,
3350
ignores: ['**/*.spec.*', '**/*.stories.*'],
@@ -116,6 +133,10 @@ export default defineConfig([
116133
'no-prototype-builtins': 'off',
117134
'prefer-spread': 'off',
118135
'jsx-a11y/no-autofocus': 'off',
136+
'import/no-anonymous-default-export': 'off',
137+
'import/no-named-as-default': 'off',
138+
'import/no-extraneous-dependencies': 'error',
139+
'import/no-unresolved': 'off',
119140
},
120141
settings: {
121142
react: {
@@ -133,6 +154,23 @@ export default defineConfig([
133154
},
134155
rules: {
135156
'react-hooks/rules-of-hooks': 'off',
157+
'import/no-unresolved': 'off',
158+
'import/no-extraneous-dependencies': 'off',
159+
},
160+
},
161+
{
162+
name: 'stories-rules',
163+
files: ['**/*.stories.*'],
164+
rules: {
165+
'import/no-unresolved': 'off',
166+
'import/no-extraneous-dependencies': 'off',
167+
},
168+
},
169+
{
170+
name: 'examples-rules',
171+
files: ['**/examples/**'],
172+
rules: {
173+
'import/no-extraneous-dependencies': 'off',
136174
},
137175
},
138176
{

examples/crm/src/dashboard/DashboardActivityLog.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import AccessTimeIcon from '@mui/icons-material/AccessTime';
2-
import { Box, Card, Typography } from '@mui/material';
2+
import { Box, Card, Typography, Stack } from '@mui/material';
33
import { ActivityLog } from '../activity/ActivityLog';
4-
import { Stack } from '@mui/material';
54

65
export function DashboardActivityLog() {
76
return (

examples/demo/src/dashboard/CardWithIcon.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import * as React from 'react';
2-
import { FC, createElement } from 'react';
2+
import { FC, createElement, ReactNode } from 'react';
33
import { Card, Box, Typography, Divider } from '@mui/material';
44
import { Link, To } from 'react-router-dom';
5-
import { ReactNode } from 'react';
65

76
interface Props {
87
icon: FC<any>;

examples/demo/src/products/GridList.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import * as React from 'react';
2-
import { useTheme, useMediaQuery } from '@mui/material';
3-
import { Box, ImageList, ImageListItem, ImageListItemBar } from '@mui/material';
2+
import {
3+
useTheme,
4+
useMediaQuery,
5+
Box,
6+
ImageList,
7+
ImageListItem,
8+
ImageListItemBar,
9+
} from '@mui/material';
410
import { useCreatePath, NumberField, useListContext } from 'react-admin';
511
import { Link } from 'react-router-dom';
612

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@
5353
"dotenv": "^16.4.7",
5454
"eslint": "^9.23.0",
5555
"eslint-config-prettier": "^10.1.1",
56+
"eslint-import-resolver-typescript": "^4.3.2",
5657
"eslint-plugin-cypress": "^4.2.0",
58+
"eslint-plugin-import": "^2.31.0",
5759
"eslint-plugin-jsx-a11y": "^6.10.2",
5860
"eslint-plugin-prettier": "^5.2.5",
5961
"eslint-plugin-react": "^7.37.4",

packages/ra-core/src/controller/list/useListParams.spec.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
import * as React from 'react';
22
import expect from 'expect';
3-
import { render, screen } from '@testing-library/react';
4-
import { stringify } from 'query-string';
5-
import { fireEvent, waitFor } from '@testing-library/react';
3+
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
4+
import { stringify, parse } from 'query-string';
65
import { CoreAdminContext } from '../../core';
76

87
import { testDataProvider } from '../../dataProvider';
98
import { useStore } from '../../store/useStore';
109
import { useListParams, getQuery, getNumberOrDefault } from './useListParams';
1110
import { SORT_DESC, SORT_ASC } from './queryReducer';
1211
import { TestMemoryRouter } from '../../routing';
13-
import { parse } from 'query-string';
1412

1513
describe('useListParams', () => {
1614
describe('getQuery', () => {

packages/ra-core/src/controller/useFilterState.spec.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { waitFor } from '@testing-library/react';
2-
import { act, renderHook } from '@testing-library/react';
1+
import { waitFor, act, renderHook } from '@testing-library/react';
32

43
import useFilterState from './useFilterState';
54

packages/ra-core/src/store/useStore.spec.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import * as React from 'react';
2-
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
3-
import { renderHook } from '@testing-library/react';
2+
import {
3+
render,
4+
screen,
5+
fireEvent,
6+
waitFor,
7+
renderHook,
8+
} from '@testing-library/react';
49

510
import { useStore } from './useStore';
611
import { StoreContextProvider } from './StoreContextProvider';

packages/ra-no-code/src/ApplicationsDashboard/ApplicationsDashboard.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import * as React from 'react';
2-
import { styled } from '@mui/material/styles';
32
import { useState } from 'react';
43
import {
54
Avatar,
@@ -12,7 +11,7 @@ import {
1211
ListItemText,
1312
Typography,
1413
} from '@mui/material';
15-
import { createTheme, ThemeProvider } from '@mui/material/styles';
14+
import { createTheme, ThemeProvider, styled } from '@mui/material/styles';
1615
import { defaultTheme as RaDefaultTheme, RaThemeOptions } from 'react-admin';
1716
import FolderIcon from '@mui/icons-material/Folder';
1817
import { Application } from './types';

packages/ra-ui-materialui/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"@types/react-is": "^18.3.0",
3838
"@types/react-transition-group": "^4.4.10",
3939
"cross-env": "^5.2.0",
40+
"csstype": "^3.1.3",
4041
"expect": "^27.4.6",
4142
"file-api": "~0.10.4",
4243
"ignore-styles": "~5.0.1",
@@ -57,6 +58,7 @@
5758
"@mui/material": "^5.16.12 || ^6.0.0",
5859
"@mui/system": "^5.15.20 || ^6.0.0",
5960
"@mui/utils": "^5.15.20 || ^6.0.0",
61+
"csstype": "^3.1.3",
6062
"ra-core": "^5.0.0",
6163
"react": "^18.0.0 || ^19.0.0",
6264
"react-dom": "^18.0.0 || ^19.0.0",

0 commit comments

Comments
 (0)