diff --git a/.eslintrc b/.eslintrc index 2daae95..1052dbe 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,12 +1,12 @@ { "extends": [ "next/core-web-vitals", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:@typescript-eslint/strict-type-checked", + "plugin:@typescript-eslint/stylistic-type-checked", "plugin:react/all", "plugin:import/recommended", "plugin:import/typescript", - "plugin:jsx-a11y/recommended", + "plugin:jsx-a11y/strict", "plugin:deprecation/recommended" ], "parserOptions": { diff --git a/prisma/db.ts b/prisma/db.ts index 812b9f1..8ef68c1 100644 --- a/prisma/db.ts +++ b/prisma/db.ts @@ -1,7 +1,6 @@ import { Prisma, PrismaClient } from '@prisma/client' -import { DefaultArgs } from '@prisma/client/runtime/library' -const prismaClientSingleton = (): PrismaClient => { +const prismaClientSingleton = (): PrismaClient => { const prisma = new PrismaClient({ log: [ { @@ -36,12 +35,13 @@ declare global { const prismaGlobal: undefined | ReturnType } -// @ts-ignore +// @ts-expect-error +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const prisma = globalThis.prismaGlobal as PrismaClient ?? prismaClientSingleton() export default prisma if (process.env.NODE_ENV !== 'production') { - // @ts-ignore + // @ts-expect-error globalThis.prismaGlobal = prisma } diff --git a/src/app/(connecte)/indicateurs-cles/page.tsx b/src/app/(connecte)/indicateurs-cles/page.tsx index 17b7433..d1af940 100644 --- a/src/app/(connecte)/indicateurs-cles/page.tsx +++ b/src/app/(connecte)/indicateurs-cles/page.tsx @@ -85,7 +85,7 @@ function transformIndicateursModelToViewModel(indicateursModel: ind_indicateur_i emissionsDeParticulesFines += indicateur.impact_unitaire } else if (critere === Criteres.acidification) { acidification += indicateur.impact_unitaire - } else if (critere === Criteres.empreinteCarbone) { + } else { empreinteCarbone += indicateur.impact_unitaire / 1000 if (etapeacv === EtapesAcv.fabrication) { @@ -94,7 +94,7 @@ function transformIndicateursModelToViewModel(indicateursModel: ind_indicateur_i distribution += indicateur.impact_unitaire / 1000 } else if (etapeacv === EtapesAcv.utilisation) { utilisation += indicateur.impact_unitaire / 1000 - } else if (etapeacv === EtapesAcv.finDeVie) { + } else { finDeVie += indicateur.impact_unitaire / 1000 } } diff --git a/src/app/(connecte)/liste-equipements/page.tsx b/src/app/(connecte)/liste-equipements/page.tsx index 84f9170..fdf8e95 100644 --- a/src/app/(connecte)/liste-equipements/page.tsx +++ b/src/app/(connecte)/liste-equipements/page.tsx @@ -59,9 +59,9 @@ function transformEquipementModelToViewModel( const types = {} for (const equipementModel of equipementsModel.sort(sortByTypeEquipementAndEtapeAcv(referentielsEquipementsModel))) { - // @ts-ignore + // @ts-expect-error types[equipementModel.type] = [ - // @ts-ignore + // @ts-expect-error // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment ...types[equipementModel.type] || [], { diff --git a/src/authentification.ts b/src/authentification.ts index f4b87ad..4dd707d 100644 --- a/src/authentification.ts +++ b/src/authentification.ts @@ -9,7 +9,7 @@ const authOptions = { callbacks: { jwt({ token, profile }): JWT { if (profile !== undefined) { - // @ts-ignore + // @ts-expect-error token.profile_atih = profile.profile_atih } @@ -17,7 +17,7 @@ const authOptions = { }, session({ session, token }): Session { if (session.user !== undefined) { - // @ts-ignore + // @ts-expect-error session.user.profile_atih = token.profile_atih } @@ -69,27 +69,27 @@ export async function getProfileAtih(): Promise { nomEtablissement: '', } - // @ts-ignore + // @ts-expect-error // eslint-disable-next-line @typescript-eslint/no-unsafe-argument for (const profil of Object.keys(session.user.profile_atih.profils)) { let finess = '' - // @ts-ignore + // @ts-expect-error if (Number(profil) === Number(session.user.profile_atih.idProfilSelectionne)) { - // @ts-ignore + // @ts-expect-error finess = session.user.profile_atih.profils[profil].entite.finess - // @ts-ignore + // @ts-expect-error if (session.user.profile_atih.profils[profil].entite.niveau === 'ET') { - // @ts-ignore + // @ts-expect-error if (session.user.profile_atih.profils[profil].entite.statut[1] !== undefined) { - // @ts-ignore + // @ts-expect-error finess = session.user.profile_atih.profils[profil].entite.finessJuridique } } profile = { - // @ts-ignore + // @ts-expect-error nomEtablissement: session.user.profile_atih.profils[profil].entite.libelle + '$$' + finess, } } diff --git a/src/components/Connexion/Connexion.tsx b/src/components/Connexion/Connexion.tsx index 8cbccad..9be9034 100644 --- a/src/components/Connexion/Connexion.tsx +++ b/src/components/Connexion/Connexion.tsx @@ -5,7 +5,7 @@ import { ClientSafeProvider, LiteralUnion, signIn } from 'next-auth/react' import { ReactElement } from 'react' type LoginProps = Readonly<{ - providers: Record, ClientSafeProvider> | null + providers: Record, ClientSafeProvider> | null }> export default function Connexion({ providers }: LoginProps): ReactElement { diff --git a/src/components/Inventaire/Actions.tsx b/src/components/Inventaire/Actions.tsx index 30c5092..2e4c791 100644 --- a/src/components/Inventaire/Actions.tsx +++ b/src/components/Inventaire/Actions.tsx @@ -11,7 +11,7 @@ type ModaleProps = Readonly<{ }> export default function Actions({ enregistrerUnInventaireNonCalcule, quantiteGlobale, statut }: ModaleProps): ReactElement { - const isNonCalcule = statut && statut === StatutsInventaire.TRAITE + const isNonCalcule = statut === StatutsInventaire.TRAITE return (
diff --git a/src/components/Inventaire/modele.ts b/src/components/Inventaire/modele.ts index 2bb6edc..a24d585 100644 --- a/src/components/Inventaire/modele.ts +++ b/src/components/Inventaire/modele.ts @@ -10,7 +10,7 @@ export const modelesSelectionnes = () => { modeles.push({ modele: selects[index].value, quantite: inputs[index].valueAsNumber, - type: selects[index].dataset.nomEquipement as string, + type: selects[index].dataset.nomEquipement ?? '', }) } } diff --git a/src/components/Inventaire/useEquipement.ts b/src/components/Inventaire/useEquipement.ts index 7be9bd3..d782c08 100644 --- a/src/components/Inventaire/useEquipement.ts +++ b/src/components/Inventaire/useEquipement.ts @@ -37,7 +37,7 @@ export function useEquipement(setQuantiteGlobale: (quantite: number) => void, mo type ActionReducer = Readonly<{ id: string - modele?: ModeleReducer + modele: ModeleReducer type: string }> @@ -46,7 +46,7 @@ function modelesReducer(modeles: ModeleReducer[], action: ActionReducer): Modele case 'changed': { return modeles.map((modele: ModeleReducer): ModeleReducer => { if (modele.id === action.id) { - return action.modele as ModeleReducer + return action.modele } else { return modele } diff --git a/src/components/viewModel.ts b/src/components/viewModel.ts index 40bdba8..f8e2c1c 100644 --- a/src/components/viewModel.ts +++ b/src/components/viewModel.ts @@ -15,9 +15,9 @@ export type EquipementsAvecSesModelesViewModel = Readonly<{ type: string }> -export type EquipementsViewModel = Readonly<{ - [key: string]: EquipementViewModel[] -}> +export type EquipementsViewModel = Readonly< + Record +> export type EquipementViewModel = Readonly<{ dateInventaire: Date diff --git a/src/repository/equipementsRepository.ts b/src/repository/equipementsRepository.ts index acfec0d..7d72864 100644 --- a/src/repository/equipementsRepository.ts +++ b/src/repository/equipementsRepository.ts @@ -27,11 +27,11 @@ export type EquipementPhysique = Readonly<{ export type EquipementPhysiqueModel = Readonly<{ type: string - modeles: ReadonlyArray<{ + modeles: readonly { ref_correspondance_ref_eqp: Readonly<{ modele_equipement_source: string }> - }> + }[] }> export async function recupererLesReferentielsEquipementsRepository(): Promise { @@ -96,7 +96,7 @@ async function ajouterEquipementsPhysiquesRepository( method: 'POST', }) - if (responseEntrees.ok === false) { + if (!responseEntrees.ok) { if (responseEntrees.status === 415) { const data = await responseEntrees.json() as ApiErrorJava throw new Error(`Status: ${responseEntrees.status}, Status text: ${data.detail}`) @@ -121,7 +121,7 @@ async function lancerLeCalculRepository(nomEtablissement: string, nomInventaire: method: 'POST', }) - if (responseCalculs.ok === false) { + if (!responseCalculs.ok) { if (responseCalculs.status === 415) { const data = await responseCalculs.json() as ApiErrorJava throw new Error(`Status: ${responseCalculs.status}, Status text: ${data.detail}`) diff --git a/src/repository/indicateursRepository.ts b/src/repository/indicateursRepository.ts index 66bee8b..0508c5d 100644 --- a/src/repository/indicateursRepository.ts +++ b/src/repository/indicateursRepository.ts @@ -27,7 +27,7 @@ export async function recupererIndicateursEquipementsPhysiquesSommesRepository( nomEtablissement: string, nomInventaire: string ): Promise { - // @ts-ignore + // @ts-expect-error return await prisma.ind_indicateur_impact_equipement_physique.groupBy({ _sum: { impact_unitaire: true, diff --git a/src/repository/inventairesRepository.ts b/src/repository/inventairesRepository.ts index a867a9e..fb5b3c8 100644 --- a/src/repository/inventairesRepository.ts +++ b/src/repository/inventairesRepository.ts @@ -41,6 +41,6 @@ export async function supprimerInventaireRepository(nomEtablissement: string, no await supprimerEquipementsPhysiquesRepository(nomEtablissement, nomInventaire) await supprimerIndicateursEquipementsPhysiquesRepository(nomEtablissement, nomInventaire) - return inventaire?.date_lot || new Date() + return inventaire?.date_lot ?? new Date() }) }