Skip to content

Commit 986912d

Browse files
authored
eslint9 (#3604)
* eslint9 * antar det som fjernes er disables vi ikke trenger
1 parent 473dd86 commit 986912d

30 files changed

+310
-202
lines changed

.eslintrc

-64
This file was deleted.

eslint.config.mjs

+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import { fixupPluginRules } from '@eslint/compat';
2+
import { FlatCompat } from '@eslint/eslintrc';
3+
import js from '@eslint/js';
4+
import typescriptEslint from '@typescript-eslint/eslint-plugin';
5+
import tsParser from '@typescript-eslint/parser';
6+
import reactHooks from 'eslint-plugin-react-hooks';
7+
import globals from 'globals';
8+
import path from 'node:path';
9+
import { fileURLToPath } from 'node:url';
10+
11+
const __filename = fileURLToPath(import.meta.url);
12+
const __dirname = path.dirname(__filename);
13+
const compat = new FlatCompat({
14+
baseDirectory: __dirname,
15+
recommendedConfig: js.configs.recommended,
16+
allConfig: js.configs.all,
17+
});
18+
19+
export default [
20+
...compat.extends('airbnb', 'plugin:@typescript-eslint/recommended', 'prettier'),
21+
{
22+
plugins: {
23+
'@typescript-eslint': typescriptEslint,
24+
'react-hooks': fixupPluginRules(reactHooks),
25+
},
26+
27+
languageOptions: {
28+
globals: {
29+
...globals.browser,
30+
},
31+
32+
parser: tsParser,
33+
ecmaVersion: 5,
34+
sourceType: 'module',
35+
36+
parserOptions: {
37+
ecmaFeatures: {
38+
ecmaVersion: 8,
39+
jsx: true,
40+
impliedStrict: true,
41+
},
42+
},
43+
},
44+
45+
settings: {
46+
'import/resolver': {
47+
typescript: {},
48+
49+
node: {
50+
extensions: ['.js', '.jsx', '.ts', '.tsx', '.less', '.scss'],
51+
moduleDirectory: ['node_modules', 'src/'],
52+
},
53+
},
54+
},
55+
56+
rules: {
57+
'import/no-extraneous-dependencies': 0,
58+
59+
'import/no-unused-modules': [
60+
1,
61+
{
62+
unusedExports: true,
63+
missingExports: true,
64+
ignoreExports: [],
65+
},
66+
],
67+
68+
'import/no-unresolved': 'error',
69+
'@typescript-eslint/no-unused-vars': 'warn',
70+
'@typescript-eslint/no-use-before-define': 'error',
71+
'@typescript-eslint/no-shadow': 'error',
72+
73+
'react/jsx-filename-extension': [
74+
1,
75+
{
76+
extensions: ['.js', '.jsx', '.ts', '.tsx'],
77+
},
78+
],
79+
80+
'no-shadow': 'off',
81+
'max-len': [1, 160],
82+
'react/jsx-props-no-spreading': 'off',
83+
'react/destructuring-assignment': 'off',
84+
'jsx-a11y/control-has-associated-label': 'off',
85+
'react/function-component-definition': 'off',
86+
'implicit-arrow-linebreak': 'off',
87+
'function-paren-newline': 'off',
88+
'arrow-parens': 'off',
89+
'object-curly-newline': 'off',
90+
'react/require-default-props': 'off',
91+
'react/prop-types': 'off',
92+
'import/prefer-default-export': 'off',
93+
'import/extensions': 'off',
94+
},
95+
},
96+
{
97+
files: ['**/*.spec.ts', '**/*.spec.tsx'],
98+
99+
rules: {
100+
'@typescript-eslint/no-explicit-any': 0,
101+
'import/no-unused-modules': 0,
102+
},
103+
},
104+
];

package.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@
9999
"@babel/preset-typescript": "7.26.0",
100100
"@babel/register": "7.25.9",
101101
"@chromatic-com/storybook": "3.2.3",
102+
"@eslint/compat": "^1.2.4",
103+
"@eslint/eslintrc": "^3.2.0",
104+
"@eslint/js": "^9.17.0",
102105
"@playwright/test": "1.49.1",
103106
"@storybook/addon-essentials": "8.4.7",
104107
"@storybook/addon-interactions": "8.4.7",
@@ -137,7 +140,7 @@
137140
"css-loader": "7.1.2",
138141
"css-minimizer-webpack-plugin": "7.0.0",
139142
"dotenv": "16.4.7",
140-
"eslint": "8.57.1",
143+
"eslint": "9.17.0",
141144
"eslint-config-airbnb": "19.0.4",
142145
"eslint-config-import": "0.13.0",
143146
"eslint-config-prettier": "9.1.0",
@@ -150,6 +153,7 @@
150153
"eslint-plugin-react": "7.37.3",
151154
"eslint-plugin-react-hooks": "5.1.0",
152155
"eslint-plugin-storybook": "0.11.2",
156+
"globals": "^15.14.0",
153157
"html-webpack-plugin": "5.6.3",
154158
"husky": "9.1.7",
155159
"identity-obj-proxy": "3.0.0",

src/client/app/admin/AdminIndex.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const getTab = (avdelingslederPanel, activeAvdelingslederPanel, getDriftsmelding
3636
</Heading>
3737
),
3838
aktiv: avdelingslederPanel === activeAvdelingslederPanel,
39-
// eslint-disable-next-line react/prop-types
39+
4040
linkCreator: ({ children, className }) => (
4141
<NavLink
4242
to={getDriftsmeldingerPanelLocation(avdelingslederPanel)}

src/client/app/admin/driftsmeldinger/driftsmeldingTsType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// eslint-disable-next-line import/prefer-default-export
1+
22
export type Driftsmelding = Readonly<{
33
id: string;
44
melding: string;

src/client/app/api/queries/avdelingslederQueries.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export const useHentAndreSaksbehandleresKøer = (id: number) =>
4343
axiosInstance.get(apiPaths.hentAndreSaksbehandleresKøerV3, { params: { id } }).then(({ data }) => data),
4444
});
4545

46-
// eslint-disable-next-line import/prefer-default-export
46+
4747
export const useAlleKoer = (options = {}) =>
4848
useQuery<OppgavekøerV3, unknown, OppgavekøV3Enkel[]>({
4949
queryKey: [apiPaths.hentOppgavekoer],

src/client/app/app/errorTsType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// TODO (TOR) default export feilar for yarn:coverage
2-
// eslint-disable-next-line import/prefer-default-export
2+
33
export type Error = Readonly<{
44
response?: {
55
data: {

src/client/app/app/feilhandtering/RestForbidden.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import ErrorEventType from './errorEventType';
55

66
describe('RestTimeoutFormatter', () => {
77
it('skal håndtere feil når feildata er av korrekt type', () => {
8-
// eslint-disable-next-line no-unused-expressions
8+
99
expect(new RestForbiddenFormatter().isOfType(ErrorEventType.REQUEST_FORBIDDEN)).is.true;
1010
});
1111

1212
it('skal ikke håndtere feil når feildata er av annen type', () => {
13-
// eslint-disable-next-line no-unused-expressions
13+
1414
expect(new RestForbiddenFormatter().isOfType(ErrorEventType.POLLING_HALTED_OR_DELAYED)).is.false;
1515
});
1616

src/client/app/app/feilhandtering/RestHaltedOrDelayedFormatter.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import ErrorEventType from './errorEventType';
55

66
describe('RestHaltedOrDelayedFormatter', () => {
77
it('skal håndtere feil når feildata er av korrekt type', () => {
8-
// eslint-disable-next-line no-unused-expressions
8+
99
expect(new RestHaltedOrDelayedFormatter().isOfType(ErrorEventType.POLLING_HALTED_OR_DELAYED)).is.true;
1010
});
1111

1212
it('skal ikke håndtere feil når feildata er av annen type', () => {
13-
// eslint-disable-next-line no-unused-expressions
13+
1414
expect(new RestHaltedOrDelayedFormatter().isOfType(ErrorEventType.POLLING_TIMEOUT)).is.false;
1515
});
1616

src/client/app/app/feilhandtering/RestTimeoutFormatter.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import ErrorEventType from './errorEventType';
55

66
describe('RestTimeoutFormatter', () => {
77
it('skal håndtere feil når feildata er av korrekt type', () => {
8-
// eslint-disable-next-line no-unused-expressions
8+
99
expect(new RestTimeoutFormatter().isOfType(ErrorEventType.POLLING_TIMEOUT)).is.true;
1010
});
1111

1212
it('skal ikke håndtere feil når feildata er av annen type', () => {
13-
// eslint-disable-next-line no-unused-expressions
13+
1414
expect(new RestTimeoutFormatter().isOfType(ErrorEventType.POLLING_HALTED_OR_DELAYED)).is.false;
1515
});
1616

src/client/app/app/locationTsType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// TODO (TOR) default export feilar for yarn:coverage
2-
// eslint-disable-next-line import/prefer-default-export
2+
33
export interface Location {
44
hash?: string;
55
pathname?: string;

src/client/app/avdelingsleder/Stolpediagram.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ const datoFremITid = (daysObject, index) => daysObject.add(index, 'days');
4040
const Stolpediagram = ({ series, labels, legendColors = [], fremITid = false, uker = '2' }: OwnProps) => {
4141
const intl = useIntl();
4242
if (!series.length) {
43-
// eslint-disable-next-line react/jsx-one-expression-per-line
43+
4444
return <p className="typo-normal">{intl.formatMessage({ id: 'InngangOgFerdigstiltePanel.IngenTall' })} </p>;
4545
}
4646
const antallDager = Number(uker) * 7;

src/client/app/avdelingsleder/behandlingskoer/oppgavekoTsType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Saksbehandler } from 'avdelingsleder/bemanning/saksbehandlerTsType';
22
import KoSorteringType from 'kodeverk/KoSorteringTsType';
33

44
// TODO (TOR) default export feilar for yarn:coverage
5-
// eslint-disable-next-line import/prefer-default-export
5+
66
export type Oppgaveko = Readonly<{
77
id: string;
88
navn?: string;

src/client/app/avdelingsleder/bemanning/components/SaksbehandlerInfo.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const SaksbehandlerInfo: FunctionComponent<OwnProps> = ({ saksbehandler }) => {
6060
<KøListe title="Nye køer" data={køerV3} isSuccess={isSuccessKøerV3} isLoading={isLoadingKøerV3} />
6161
</div>
6262
</div>
63-
{/* eslint-disable-next-line jsx-a11y/interactive-supports-focus */}
63+
{ }
6464
<Button
6565
onClick={() => {
6666
setVisSlettModal(true);

src/client/app/avdelingsleder/bemanning/saksbehandlerTsType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// TODO (TOR) default export feilar for yarn:coverage
2-
// eslint-disable-next-line import/prefer-default-export
2+
33
export type Saksbehandler = Readonly<{
44
id: number;
55
brukerIdent?: string;

src/client/app/avdelingsleder/reservasjoner/components/ReservasjonerTabellV1.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ const ReservasjonerTabell = () => {
9999
reservertTil: getDateAndTime(reservasjon.reservertTilTidspunkt).date,
100100
});
101101

102-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
102+
103103
const sokEtterReservasjon = (value: string) => {
104104
const sokVerdi = value.toLowerCase();
105105
const reservasjonerMedMatch = reservasjoner.filter(

src/client/app/filter/parts/KriterieVerdi.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ const KriterieVerdi = ({
216216
feltdefinisjon.verdiforklaringer.length > 3
217217
) {
218218
return (
219-
// eslint-disable-next-line react/jsx-pascal-case, camelcase
219+
220220
<MultiSelectKriterie feltdefinisjon={feltdefinisjon} oppgavefilter={oppgavefilter} error={errorMessage} />
221221
);
222222
}

src/client/app/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable import/no-unused-modules */
2-
/* eslint-disable global-require */
3-
/* eslint-disable @typescript-eslint/no-var-requires */
2+
3+
44
import React from 'react';
55
import { createRoot } from 'react-dom/client';
66
import { createRoutesFromChildren, matchRoutes, useLocation, useNavigationType } from 'react-router';

src/client/app/saksbehandler/behandlingskoer/components/oppgavetabeller/ReserverteOppgaverTabell.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint-disable jsx-a11y/no-static-element-interactions */
1+
22
import React, { FunctionComponent, useRef, useState } from 'react';
33
import { FormattedMessage } from 'react-intl';
44
import { useQueryClient } from 'react-query';

src/client/app/saksbehandler/behandlingskoer/oppgavekoTsType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// TODO (TOR) default export feilar for yarn:coverage
22
import KodeverkMedNavn from 'kodeverk/kodeverkMedNavnTsType';
33

4-
// eslint-disable-next-line import/prefer-default-export
4+
55
export type OppgavekøV1 = Readonly<{
66
id: string;
77
navn: string;

src/client/app/saksbehandler/behandlingskoer/saksbehandlerTsType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// TODO (TOR) default export feilar for yarn:coverage
2-
// eslint-disable-next-line import/prefer-default-export
2+
33
export type Saksbehandler = Readonly<{
44
brukerIdent?: string;
55
navn?: string;

src/client/app/saksbehandler/oppgaveStatusTsType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// TODO (TOR) default export feilar for yarn:coverage
2-
// eslint-disable-next-line import/prefer-default-export
2+
33
export type OppgaveStatus = Readonly<{
44
erReservert: boolean;
55
reservertTilTidspunkt?: string;

src/client/app/saksbehandler/reservasjonEndringType.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// eslint-disable-next-line import/prefer-default-export
1+
22
export type ReservasjonEndringType = Readonly<{
33
oppgave: string;
44
reservertTil: string;

src/client/app/utils/envUtils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
// eslint-disable-next-line import/prefer-default-export, @typescript-eslint/no-explicit-any
1+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
22
export const getEnvironmentVariable = (variableName: string) => (window as any).appSettings[variableName];

src/client/app/utils/fodselsnummerUtils.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint-disable no-unused-expressions */
1+
22
import { expect } from 'chai';
33
import { isValidFodselsnummer } from './fodselsnummerUtils';
44

src/client/app/utils/objectUtils.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint-disable no-unused-expressions */
1+
22
import { expect } from 'chai';
33
import isObject from './objectUtils';
44

src/client/app/utils/validation/validators.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* eslint-disable no-unused-expressions */
1+
22
import { expect } from 'chai';
33
import dayjs from 'dayjs';
44
import { DDMMYYYY_DATE_FORMAT, ISO_DATE_FORMAT } from 'utils/formats';

0 commit comments

Comments
 (0)