diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000000000000000000000000000000000000..b512c09d476623ff4bf8d0d63c29b784925dbdf8
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1 @@
+node_modules
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
index bfb6fbe13759988ff367c2faea5cc97844fc7c48..505e8ccc4a0f0dfb5dcca0a057d6d080898fa37a 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,12 +1,14 @@
 module.exports = {
   parser: '@typescript-eslint/parser', // Specifies the ESLint parser
   extends: [
+    'eslint:recommended',
     'plugin:react/recommended', // Uses the recommended rules from @eslint-plugin-react
+    'plugin:react-hooks/recommended',
     'plugin:@typescript-eslint/eslint-recommended', // Uses the recommended rules from @typescript-eslint/eslint-plugin
     'prettier', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier
     'plugin:prettier/recommended', // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
-    'plugin:react-hooks/recommended',
   ],
+  plugins: ['@typescript-eslint'],
   parserOptions: {
     ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features
     sourceType: 'module', // Allows for the use of imports
@@ -17,11 +19,23 @@ module.exports = {
   rules: {
     // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs
     '@typescript-eslint/explicit-function-return-type': 'off',
+    // Note: you must disable the base rule as it can report incorrect errors
+    'no-unused-vars': 'off',
+    '@typescript-eslint/no-unused-vars': 'warn',
+
+    'no-case-declarations': 'warn',
+    camelcase: 'warn',
     'react/prop-types': 'warn',
+    'no-console': 'off',
+    '@typescript-eslint/no-explicit-any': 'warn',
   },
   settings: {
     react: {
       version: 'detect', // Tells eslint-plugin-react to automatically detect the version of React to use
     },
   },
+  env: {
+    browser: true,
+    node: true,
+  },
 }
diff --git a/package.json b/package.json
index 4dc92ffc51ce9311fae9b3e0d08463fc943e926d..480e4b4a6abd3358b5f91ea1328e7590ab3a8f39 100644
--- a/package.json
+++ b/package.json
@@ -61,7 +61,7 @@
     "cozy-ui": "68.9.1",
     "d3": "^5.15.0",
     "detect-browser": "^5.1.1",
-    "eslint-config-cozy-app": "4.2.0",
+    "eslint-config-cozy-app": "5.1.0",
     "file-saver": "^2.0.5",
     "global": "^4.4.0",
     "handlebars": "^4.7.7",
@@ -99,8 +99,8 @@
     "@types/react-redux": "^7.1.11",
     "@types/react-router-dom": "^5.1.3",
     "@types/redux-mock-store": "^1.0.2",
-    "@typescript-eslint/eslint-plugin": "^5.30.0",
-    "@typescript-eslint/parser": "^5.30.0",
+    "@typescript-eslint/eslint-plugin": "^5.37.0",
+    "@typescript-eslint/parser": "^5.37.0",
     "babel-polyfill": "^6.26.0",
     "babel-preset-cozy-app": "2.0.3",
     "copy-webpack-plugin": "6.4.1",
@@ -112,7 +112,7 @@
     "eslint": "^8.18.0",
     "eslint-config-prettier": "^8.5.0",
     "eslint-plugin-prettier": "^4.2.1",
-    "eslint-plugin-react": "7.30.1",
+    "eslint-plugin-react": "7.31.8",
     "eslint-plugin-react-hooks": "^4.2.0",
     "git-directory-deploy": "1.5.1",
     "husky": "^8.0.1",
diff --git a/src/components/Action/ActionBegin.tsx b/src/components/Action/ActionBegin.tsx
index ff9375ddae09e3087d4aeac47c5046cc1b8d2a5c..6a2c5dcb8279c077a44099600fa9067c0bc32a4d 100644
--- a/src/components/Action/ActionBegin.tsx
+++ b/src/components/Action/ActionBegin.tsx
@@ -101,7 +101,8 @@ const ActionBegin: React.FC<ActionBeginProps> = ({
             </div>
             <div className="action-duration text-18">
               {t('action.duration', {
-                // eslint-disable-next-line @typescript-eslint/camelcase
+                // eslint-disable-next-line camelcase
+                // eslint-disable-next-line camelcase
                 smart_count: currentAction.actionDuration,
               })}
             </div>
diff --git a/src/components/Action/ActionModal.tsx b/src/components/Action/ActionModal.tsx
index 4ae600afff45ff7b75fab5642e23d72ef8f07755..98cee53cdff3296cd4912cdf9eaf6527f2396c9a 100644
--- a/src/components/Action/ActionModal.tsx
+++ b/src/components/Action/ActionModal.tsx
@@ -59,7 +59,7 @@ const ActionModal: React.FC<ActionModalProps> = ({
         <Icon icon={chronoMini} size={75} />
         <div className="action-title text-16-normal">
           {t('action.duration', {
-            // eslint-disable-next-line @typescript-eslint/camelcase
+            // eslint-disable-next-line camelcase
             smart_count: action.actionDuration,
           })}
         </div>
diff --git a/src/components/Action/ActionOnGoing.tsx b/src/components/Action/ActionOnGoing.tsx
index 5253eaa6765133bc1ceb5f83ddb1ccb1039e30a8..16e4379b858860c7d902a90d49ccc36f25beb049 100644
--- a/src/components/Action/ActionOnGoing.tsx
+++ b/src/components/Action/ActionOnGoing.tsx
@@ -31,7 +31,7 @@ const ActionOnGoing: React.FC<ActionOnGoingProps> = ({
         userAction.startDate.diffNow('days').days
       )
       const progress = ratio * progressionInDays
-      if (progress === 0 || progress === -0) {
+      if (progress === 0) {
         return `linear-gradient(90deg, #121212 50%,transparent 50%), linear-gradient(110deg, #58ffff 50%, transparent 50%)`
       } else if (progress === circle) {
         return `linear-gradient(90deg, #58ffff 50%, #58ffff 50%)`
@@ -78,7 +78,7 @@ const ActionOnGoing: React.FC<ActionOnGoingProps> = ({
         <>
           <div className="duration text-18-normal">
             {t('action.duration', {
-              // eslint-disable-next-line @typescript-eslint/camelcase
+              // eslint-disable-next-line camelcase
               smart_count: userAction.ecogesture.actionDuration,
             })}
           </div>
diff --git a/src/components/Analysis/PieChart.tsx b/src/components/Analysis/PieChart.tsx
index d831ee1e8f82095f8c593f399c2b178e2fb358e2..4abe35d04b1bdb4de647914d9b4cefa8f8543ead 100644
--- a/src/components/Analysis/PieChart.tsx
+++ b/src/components/Analysis/PieChart.tsx
@@ -45,7 +45,6 @@ const PieChart: React.FC<PieProps> = ({
     const groupWithData = group.selectAll('g.arc').data(data)
     const colors = ['#D87B39', '#3A98EC', '#45D1B8']
 
-    // eslint-disable-next-line @typescript-eslint/no-explicit-any
     const createArc: any = d3
       .arc()
       .innerRadius(innerRadius)
diff --git a/src/components/Challenge/ChallengeCardLast.tsx b/src/components/Challenge/ChallengeCardLast.tsx
index 345753b9662de26739f3db7b74f15497b461f5c4..20e6b3badc6f3a0ac4223f88dfd879e6cfacdf10 100644
--- a/src/components/Challenge/ChallengeCardLast.tsx
+++ b/src/components/Challenge/ChallengeCardLast.tsx
@@ -7,8 +7,6 @@ import { Button } from '@material-ui/core'
 import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions'
 import { useDispatch } from 'react-redux'
 
-interface ChallengeCardLastProps {}
-
 const ChallengeCardLast: React.FC = () => {
   const { t } = useI18n()
   const dispatch = useDispatch()
diff --git a/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.spec.tsx b/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.spec.tsx
index 74f271ffd71581b9e202aff8bcb5fa1fc0637989..31bf92185c0694392301ece6e18260f6de790754 100644
--- a/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.spec.tsx
+++ b/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.spec.tsx
@@ -9,7 +9,6 @@ import {
 } from '../../../tests/__mocks__/store'
 import DataloadConsumptionVisualizer from './DataloadConsumptionVisualizer'
 import { FluidType } from 'enum/fluid.enum'
-import { DateTime } from 'luxon'
 import { baseDataLoad } from '../../../tests/__mocks__/datachartData.mock'
 import { Dataload } from 'models'
 import { BrowserRouter as Router } from 'react-router-dom'
diff --git a/src/components/Duel/DuelOngoing.tsx b/src/components/Duel/DuelOngoing.tsx
index 8b78f74c796c8c267cf57647b175928623911ba0..171d0d946be1aac7a2053a3224151a1e4dd46bb4 100644
--- a/src/components/Duel/DuelOngoing.tsx
+++ b/src/components/Duel/DuelOngoing.tsx
@@ -155,9 +155,8 @@ const DuelOngoing: React.FC<DuelOngoingProps> = ({
     let subscribed = true
     async function populateData() {
       if (isFinished) {
-        const dataloads: Dataload[] = await challengeService.getUserChallengeDataload(
-          userChallenge
-        )
+        const dataloads: Dataload[] =
+          await challengeService.getUserChallengeDataload(userChallenge)
         if (subscribed) {
           setfinishedDataLoad(dataloads)
         }
@@ -183,11 +182,13 @@ const DuelOngoing: React.FC<DuelOngoingProps> = ({
           <div className="duel-goal text-18-normal">
             {t('duel.goal1', {
               durationInDays,
+              // eslint-disable-next-line camelcase
               smart_count: durationInDays,
             })}
             <span> </span>
             {t('duel.goal2', {
               title,
+              // eslint-disable-next-line camelcase
               smart_count: title,
             })}
           </div>
diff --git a/src/components/Duel/DuelUnlocked.tsx b/src/components/Duel/DuelUnlocked.tsx
index bac87b312f5f3b27c98346f9f17dc9089584c6d9..18cafb63c82946dddecdc0fc39ea7df5fb4fa911 100644
--- a/src/components/Duel/DuelUnlocked.tsx
+++ b/src/components/Duel/DuelUnlocked.tsx
@@ -72,11 +72,11 @@ const DuelUnlocked: React.FC<DuelUnlockedProps> = ({
         <div className="duel-title text-16-normal">
           {userChallenge.duel.title}
         </div>
-        <div className="duel-description text-20-italic">{`\"${description}\"`}</div>
+        <div className="duel-description text-20-italic">{`"${description}"`}</div>
         <div className="duel-average-info text-18-normal">
           {`${t('duel.average_info', {
             average,
-            // eslint-disable-next-line @typescript-eslint/camelcase
+            // eslint-disable-next-line camelcase
             smart_count: average,
           })}`}
         </div>
diff --git a/src/components/EcogestureSelection/EcogestureSelection.tsx b/src/components/EcogestureSelection/EcogestureSelection.tsx
index 43a2b0c6f22ae2e628fb18eeac557f28a06aaee9..f0749606ee9f75d5cba721a0621af4a4f99c0bf9 100644
--- a/src/components/EcogestureSelection/EcogestureSelection.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelection.tsx
@@ -63,7 +63,7 @@ const EcogestureSelection: React.FC = () => {
       const updatedList: Ecogesture[] = ecogestureList
       updatedList[indexEcogesture] = updatedEcogesture
       setEcogestureList(updatedList)
-      setIndexEcogesture((prev) => prev + 1)
+      setIndexEcogesture(prev => prev + 1)
     },
     [ecogestureList, ecogestureService, indexEcogesture]
   )
@@ -127,14 +127,14 @@ const EcogestureSelection: React.FC = () => {
         titleKey={t('common.title_ecogestures_choice')}
         isNotKey={true}
         displayBackArrow={indexEcogesture === 0 ? false : true}
-        backFunction={() => setIndexEcogesture((prev) => prev - 1)}
+        backFunction={() => setIndexEcogesture(prev => prev - 1)}
       />
       <Header
         setHeaderHeight={defineHeaderHeight}
         desktopTitleKey={t('common.title_ecogestures_choice')}
         displayBackArrow={indexEcogesture === 0 ? false : true}
         isNotKey={true}
-        backFunction={() => setIndexEcogesture((prev) => prev - 1)}
+        backFunction={() => setIndexEcogesture(prev => prev - 1)}
       >
         <div className="eg-selection-header">
           {indexEcogesture <= ecogestureList.length - 1
diff --git a/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx b/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx
index e8058004449d08f5219e4fe420a27bb70afaf2ef..d5178c08d8fd1cef700043178c4be516345ae81c 100644
--- a/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx
+++ b/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx
@@ -27,7 +27,7 @@ const EcogestureSelectionRestart: React.FC<EcogestureSelectionRestartProps> = ({
       <div className="content">
         <div className="title text-21-bold">
           {t('ecogesture_selection.title', {
-            // eslint-disable-next-line @typescript-eslint/camelcase
+            // eslint-disable-next-line camelcase
             smart_count: listLength,
           })}
         </div>
diff --git a/src/components/Exploration/ExplorationView.spec.tsx b/src/components/Exploration/ExplorationView.spec.tsx
index af8c18175b1be1c10018d36a4e447df74aaddaf1..8852f059e2fff1c9677acb69e7d37c964573d039 100644
--- a/src/components/Exploration/ExplorationView.spec.tsx
+++ b/src/components/Exploration/ExplorationView.spec.tsx
@@ -3,7 +3,6 @@ import { shallow } from 'enzyme'
 import * as reactRedux from 'react-redux'
 import ExplorationView from './ExplorationView'
 import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock'
-import { UserQuizState } from 'enum/userQuiz.enum'
 import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock'
 import ExplorationFinished from './ExplorationFinished'
 import ExplorationError from './ExplorationError'
diff --git a/src/components/Header/CozyBar.tsx b/src/components/Header/CozyBar.tsx
index e25b1c9703a9ff6b99783160c2ab0ce820a6e218..ba259603d494ed79dad9424893fe9615bcb92e55 100644
--- a/src/components/Header/CozyBar.tsx
+++ b/src/components/Header/CozyBar.tsx
@@ -4,11 +4,7 @@ import { useSelector, useDispatch } from 'react-redux'
 import { AppStore } from 'store'
 import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions'
 import { useHistory } from 'react-router-dom'
-import Icon from 'cozy-ui/transpiled/react/Icon'
-
 import { ScreenType } from 'enum/screen.enum'
-import HammerLeft from 'assets/icons/ico/hammer-left.svg'
-import HammerRight from 'assets/icons/ico/hammer-right.svg'
 import BackArrowIcon from 'assets/icons/ico/back-arrow.svg'
 import FeedbacksIcon from 'assets/icons/ico/feedbacks.svg'
 import StyledIconButton from 'components/CommonKit/IconButton/StyledIconButton'
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
index 2d10f4b38c84a13755a986c65c063c8966831717..47a5a307c4516f6743d0839601c49157951a8d04 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/Header/Header.tsx
@@ -12,9 +12,6 @@ import IconButton from '@material-ui/core/IconButton'
 import Icon from 'cozy-ui/transpiled/react/Icon'
 import BackArrowIcon from 'assets/icons/ico/back-arrow.svg'
 import FeedbacksIcon from 'assets/icons/ico/feedbacks.svg'
-import HammerLeft from 'assets/icons/ico/hammer-left.svg'
-import HammerRight from 'assets/icons/ico/hammer-right.svg'
-import { EcogestureStatus } from 'enum/ecogesture.enum'
 
 interface HeaderProps {
   textKey?: string
diff --git a/src/components/Home/ConsumptionView.spec.tsx b/src/components/Home/ConsumptionView.spec.tsx
index 1692736e7d99cba2e99ac6a3701b00b80cf215bf..99ff6a0d2275bab61c87ec15a963e64c3b249ff6 100644
--- a/src/components/Home/ConsumptionView.spec.tsx
+++ b/src/components/Home/ConsumptionView.spec.tsx
@@ -11,8 +11,6 @@ import * as chartActions from 'store/chart/chart.actions'
 import { FluidState, FluidType } from 'enum/fluid.enum'
 import { TimeStep } from 'enum/timeStep.enum'
 import StyledSpinner from 'components/CommonKit/Spinner/StyledSpinner'
-import FluidButtons from 'components/Home/FluidButtons'
-import KonnectorViewerList from 'components/Konnector/KonnectorViewerList'
 import ConsumptionView from './ConsumptionView'
 import { FluidStatus } from 'models'
 import { mockTestProfile1 } from '../../../tests/__mocks__/profileType.mock'
diff --git a/src/components/Home/ConsumptionView.tsx b/src/components/Home/ConsumptionView.tsx
index 43fae72cd5aeadb5f885a2e12451a1f52effdf6d..f5a76f6c10db82b91a59591b26b3389dee8a5b8d 100644
--- a/src/components/Home/ConsumptionView.tsx
+++ b/src/components/Home/ConsumptionView.tsx
@@ -54,7 +54,6 @@ const ConsumptionView: React.FC<ConsumptionViewProps> = ({
   const [consentExpiredFluids, setconsentExpiredFluids] = useState<FluidType[]>(
     []
   )
-  /* eslint-disable @typescript-eslint/no-non-null-assertion */
 
   const updatekey =
     fluidType !== FluidType.MULTIFLUID && fluidStatus[fluidType].lastDataDate
diff --git a/src/components/Hooks/useExploration.tsx b/src/components/Hooks/useExploration.tsx
index 9d9d4e0fa81f4f8567f68f838c26376927239c8a..eac9ba9bcd82b15968ed34a08aeb36b86f50c26b 100644
--- a/src/components/Hooks/useExploration.tsx
+++ b/src/components/Hooks/useExploration.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/camelcase */
 import { useState, useEffect, Dispatch, SetStateAction } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
 import { Client, useClient } from 'cozy-client'
diff --git a/src/components/Onboarding/WelcomeModal.spec.tsx b/src/components/Onboarding/WelcomeModal.spec.tsx
index 9c46bca76a57a7ca522fc35693d1ef3aadab36fd..7b5ac1ddb016e327f90442c446d15c3f1e2dc899 100644
--- a/src/components/Onboarding/WelcomeModal.spec.tsx
+++ b/src/components/Onboarding/WelcomeModal.spec.tsx
@@ -26,7 +26,7 @@ jest.mock('cozy-client', () => {
 jest.mock('components/Hooks/userInstanceSettings', () => {
   return jest.fn(() => ({
     data: {
-      // eslint-disable-next-line @typescript-eslint/camelcase
+      // eslint-disable-next-line camelcase
       public_name: 'mocked_public_name',
     },
   }))
diff --git a/src/migrations/migration.data.ts b/src/migrations/migration.data.ts
index d9ed8ddc31cc1717d55ed4f4fbe542693ece0831..d8661b43cca9db00c3a3dea764e2a94525571f41 100644
--- a/src/migrations/migration.data.ts
+++ b/src/migrations/migration.data.ts
@@ -281,7 +281,7 @@ export const migrations: Migration[] = [
     docTypes: FLUIDPRICES_DOCTYPE,
     isCreate: true,
     isDeprecated: true,
-    run: async (_client: Client, docs: any[]): Promise<any> => {
+    run: async (): Promise<any> => {
       return []
     },
   },
@@ -491,7 +491,7 @@ export const migrations: Migration[] = [
     releaseNotes: null,
     docTypes: FLUIDPRICES_DOCTYPE,
     isDeprecated: true,
-    run: async (_client: Client, docs: any[]): Promise<any> => {
+    run: async (): Promise<any> => {
       return []
     },
   },
diff --git a/src/migrations/migration.service.spec.ts b/src/migrations/migration.service.spec.ts
index b7ec09378803f8ce99fa428ea2593ef361207ee5..88d32046efdcbec6962f860d9230b96e655094f5 100644
--- a/src/migrations/migration.service.spec.ts
+++ b/src/migrations/migration.service.spec.ts
@@ -43,7 +43,7 @@ describe('Migration service', () => {
         appVersion: '1.2.4',
         description: 'Removing mailToken from profil',
         docTypes: PROFILE_DOCTYPE,
-        run: (docs: any[]): Profile[] => {
+        run: (): Profile[] => {
           return []
         },
       },
@@ -66,7 +66,7 @@ describe('Migration service', () => {
         appVersion: '1.2.4',
         description: 'Removing mailToken from profil',
         docTypes: PROFILE_DOCTYPE,
-        run: (docs: any[]): Profile[] => {
+        run: (): Profile[] => {
           return []
         },
       },
@@ -93,7 +93,7 @@ describe('Migration service', () => {
         appVersion: '1.2.4',
         description: 'Removing mailToken from profil',
         docTypes: PROFILE_DOCTYPE,
-        run: (docs: any[]): Profile[] => {
+        run: (): Profile[] => {
           return []
         },
       },
diff --git a/src/migrations/migration.spec.ts b/src/migrations/migration.spec.ts
index 6bd3a670c4cfdc13c4328222b1eb0c0bf2a47069..69e6de6ddb0c6d44737cf6981ffa7d62ac002c68 100644
--- a/src/migrations/migration.spec.ts
+++ b/src/migrations/migration.spec.ts
@@ -1,4 +1,4 @@
-import { Client, QueryResult } from 'cozy-client'
+import { QueryResult } from 'cozy-client'
 import { FLUIDPRICES_DOCTYPE, PROFILE_DOCTYPE } from 'doctypes'
 import { FluidPrice, Profile } from 'models'
 import { Schema } from 'models/schema.models'
@@ -204,7 +204,7 @@ describe('migration create', () => {
       docTypes: FLUIDPRICES_DOCTYPE,
       releaseNotes: null,
       isCreate: true,
-      run: async (tmpMock, docs: any[]): Promise<FluidPrice[]> => {
+      run: async (): Promise<FluidPrice[]> => {
         return []
       },
     }
diff --git a/src/models/account.model.ts b/src/models/account.model.ts
index d3905a953e9915e7022d6705684976f07d190310..c3ae32e01a1938ee4deaaea0ae7c6b0fb712c70b 100644
--- a/src/models/account.model.ts
+++ b/src/models/account.model.ts
@@ -1,3 +1,4 @@
+/* eslint-disable camelcase */
 export interface Account extends AccountAttributes {
   _id: string
   id?: string
diff --git a/src/models/exploration.model.ts b/src/models/exploration.model.ts
index b07f5294ca8f7b1c01eac3aa191ee5f1a43f3d61..6cd6e208121d089067285a3a363e1b3361009771 100644
--- a/src/models/exploration.model.ts
+++ b/src/models/exploration.model.ts
@@ -1,3 +1,4 @@
+/* eslint-disable camelcase */
 import {
   UserExplorationState,
   UserExplorationType,
diff --git a/src/models/partnersInfo.model.ts b/src/models/partnersInfo.model.ts
index 4104584679938c76460fb70c49cd1fa40931deeb..5f3ae266cdbc1f342807eea53b6ab0ce052a2c98 100644
--- a/src/models/partnersInfo.model.ts
+++ b/src/models/partnersInfo.model.ts
@@ -1,3 +1,4 @@
+/* eslint-disable camelcase */
 export interface PartnersInfo {
   grdf_failure: boolean
   enedis_failure: boolean
diff --git a/src/models/trigger.model.ts b/src/models/trigger.model.ts
index 04b54376c2c37c7cba6d8782745e80078504845f..a0c30ff3454409758689609e1653d73355e9ffe7 100644
--- a/src/models/trigger.model.ts
+++ b/src/models/trigger.model.ts
@@ -1,3 +1,4 @@
+/* eslint-disable camelcase */
 export interface Trigger extends TriggerAttributes {
   _id: string
   domain?: string
diff --git a/src/models/userInstanceSettings.model.ts b/src/models/userInstanceSettings.model.ts
index d1e2936a942ee9e57a37a016ea0868168fc96ae8..4202bb58fae14c72c0c7b7068bc306bd66821f26 100644
--- a/src/models/userInstanceSettings.model.ts
+++ b/src/models/userInstanceSettings.model.ts
@@ -1,3 +1,4 @@
+/* eslint-disable camelcase */
 export interface UserInstanceSettingsAttributes {
   auth_mode?: string
   auto_update?: boolean
diff --git a/src/services/consumption.service.spec.ts b/src/services/consumption.service.spec.ts
index 4b69dd97648bd26e976824462fd1b709eaa931eb..5542c8073b278b954ef74d194d9fd11498b0cb24 100644
--- a/src/services/consumption.service.spec.ts
+++ b/src/services/consumption.service.spec.ts
@@ -153,6 +153,7 @@ describe('Consumption service', () => {
         FluidType.WATER,
         FluidType.GAS,
       ]
+
       for (const fluidType of fluidTypes) {
         mockFetchFluidData.mockResolvedValueOnce(mockFetchDataActual)
         mockFetchFluidData.mockResolvedValueOnce(mockFetchDataComparison)
@@ -309,6 +310,7 @@ describe('Consumption service', () => {
         FluidType.WATER,
         FluidType.GAS,
       ]
+
       for (const fluidtype of fluidTypes) {
         mockFetchFluidData.mockResolvedValueOnce(mockFetchDataActual)
         mockFetchFluidData.mockResolvedValueOnce(mockFetchDataComparison)
diff --git a/src/services/consumption.service.ts b/src/services/consumption.service.ts
index cdb594de248c046f0e8dc517a550da1ca6f08cfc..18db7623b1e58e4685dde2a9462ededf81ebd27d 100644
--- a/src/services/consumption.service.ts
+++ b/src/services/consumption.service.ts
@@ -20,7 +20,6 @@ import ConsumptionValidatorService from 'services/consumptionValidator.service'
 import ConverterService from 'services/converter.service'
 import QueryRunnerService from 'services/queryRunner.service'
 
-// eslint-disable-next-line @typescript-eslint/interface-name-prefix
 export interface ISingleFluidChartData {
   chartData: Datachart | null
   chartFluid: FluidType
diff --git a/src/services/consumptionFormatter.service.ts b/src/services/consumptionFormatter.service.ts
index 33f4e5d99ca25b03e5b1adee2dd6604219b28aad..4b438dd72b8a187dadc68963a735baa9b71aef2d 100644
--- a/src/services/consumptionFormatter.service.ts
+++ b/src/services/consumptionFormatter.service.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/interface-name-prefix */
 import { DataloadState } from 'enum/dataload.enum'
 import { FluidType } from 'enum/fluid.enum'
 import { TimeStep } from 'enum/timeStep.enum'
@@ -189,7 +188,6 @@ export default class ConsumptionFormatterService {
     switch (timeStep) {
       case TimeStep.HALF_AN_HOUR:
         return { minutes: 30 }
-      case TimeStep.HALF_AN_HOUR:
       case TimeStep.DAY:
         return { days: 1 }
       case TimeStep.MONTH:
diff --git a/src/services/dateChart.service.ts b/src/services/dateChart.service.ts
index 6552c7e26ee6a2de0391699086b833958c447007..5e4e5f7393a8d819a5103cd35b49e39c51dbb3bd 100644
--- a/src/services/dateChart.service.ts
+++ b/src/services/dateChart.service.ts
@@ -2,7 +2,7 @@ import { DateTime, Interval } from 'luxon'
 
 import { FluidType } from 'enum/fluid.enum'
 import { TimeStep } from 'enum/timeStep.enum'
-import { Datachart, Dataload, FluidConfig, TimePeriod } from 'models'
+import { FluidConfig, TimePeriod } from 'models'
 import ConfigService from './fluidConfig.service'
 
 export default class DateChartService {
diff --git a/src/services/exploration.service.ts b/src/services/exploration.service.ts
index bd5dfa119cc753ac8dc680906c203317fabca346..1bc61c88c8ded0ec3b84af5f13c2bfb30144f64b 100644
--- a/src/services/exploration.service.ts
+++ b/src/services/exploration.service.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/camelcase */
 import { Client, QueryDefinition, QueryResult, Q } from 'cozy-client'
 import { EXPLORATION_DOCTYPE } from 'doctypes'
 import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
@@ -213,7 +212,6 @@ export default class ExplorationService {
       case UserExplorationID.EXPLORATION002:
       case UserExplorationID.EXPLORATION004_0:
       case UserExplorationID.EXPLORATION005:
-      case UserExplorationID.EXPLORATION007:
       case UserExplorationID.EXPLORATION004:
       case UserExplorationID.EXPLORATION003:
       case UserExplorationID.EXPLORATION008:
diff --git a/src/services/triggers.service.spec.ts b/src/services/triggers.service.spec.ts
index 46ff93de25401813253bd16e18f446317ffc9414..549f87c6f458230066fad718c225b89e13de259a 100644
--- a/src/services/triggers.service.spec.ts
+++ b/src/services/triggers.service.spec.ts
@@ -97,7 +97,7 @@ describe('TriggerService service', () => {
       const mockResult = {
         data: {
           attributes: {
-            // eslint-disable-next-line @typescript-eslint/camelcase
+            // eslint-disable-next-line camelcase
             current_state: triggerStateData,
           },
         },
@@ -110,7 +110,7 @@ describe('TriggerService service', () => {
 
     it('should return null when current_state is empty', async () => {
       const mockResult = {
-        // eslint-disable-next-line @typescript-eslint/camelcase
+        // eslint-disable-next-line camelcase
         data: { attributes: { current_state: null } },
       }
       mockClient.getStackClient().fetchJSON.mockResolvedValueOnce(mockResult)
diff --git a/src/services/triggers.service.ts b/src/services/triggers.service.ts
index fae71f7d70999a8ab541182628d46b007dc6c559..12327b1cb55326a935055e4e596f1897d9198bf1 100644
--- a/src/services/triggers.service.ts
+++ b/src/services/triggers.service.ts
@@ -81,7 +81,7 @@ export default class TriggerService {
       const triggerState = await this._client
         .getStackClient()
         .fetchJSON('GET', `/jobs/triggers/${trigger._id}`)
-      // eslint-disable-next-line @typescript-eslint/camelcase
+      // eslint-disable-next-line camelcase
       return triggerState.data.attributes.current_state
         ? triggerState.data.attributes.current_state
         : null
diff --git a/src/targets/browser/index.tsx b/src/targets/browser/index.tsx
index d1e86be12e9e35ea6b5cd2946f0e108a69ec9e14..92e2c8fec643ce85948c9e3320c1228eeff5b74e 100644
--- a/src/targets/browser/index.tsx
+++ b/src/targets/browser/index.tsx
@@ -1,6 +1,5 @@
 /* eslint-disable @typescript-eslint/no-explicit-any */
 /* eslint-disable @typescript-eslint/no-var-requires */
-/* global cozy */
 declare let cozy: any
 declare let __PIWIK_TRACKER_URL__: string
 declare let __PIWIK_SITEID__: number
diff --git a/src/targets/services/aggregatorUsageEvents.ts b/src/targets/services/aggregatorUsageEvents.ts
index c9473a704dc67b98b1bbe708fc16b2106ec3189b..2599c301592f58005bb59c91cd41d4700a5b83b0 100644
--- a/src/targets/services/aggregatorUsageEvents.ts
+++ b/src/targets/services/aggregatorUsageEvents.ts
@@ -171,9 +171,9 @@ const handleQuizStars = async (events: UsageEvent[], client: Client) => {
       measureName: DaccEvent.QUIZ_STARS,
       startDate: event.startDate ? event.startDate.toISODate() : '',
       value: parseInt(event.result ? event.result : '0'),
-      // eslint-disable-next-line @typescript-eslint/camelcase
+      // eslint-disable-next-line camelcase
       group1: { challenge_id: event.context ? event.context : '' },
-      // eslint-disable-next-line @typescript-eslint/camelcase
+      // eslint-disable-next-line camelcase
       group2: { quiz_id: event.target ? event.target : '' },
     }
     const result = await sendIndicator(indicator, client)
@@ -203,9 +203,9 @@ const calculSessionTime = async (events: UsageEvent[], client: Client) => {
           measureName: DaccEvent.SESSION_DURATION,
           startDate: startSessionDate.toISODate(),
           value: duration === undefined ? 0 : duration,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { number_pages: navigationCount.toString() },
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group2: { session_type: isFirstConnection ? 'first' : 'any' },
         }
         await sendIndicator(sessionIndicator, client)
@@ -229,9 +229,9 @@ const calculSessionTime = async (events: UsageEvent[], client: Client) => {
           measureName: DaccEvent.SESSION_DURATION,
           startDate: startSessionDate.toISODate(),
           value: duration === undefined ? 0 : duration,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { number_pages: navigationCount.toString() },
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group2: { session_type: isFirstConnection ? 'first' : 'any' },
         }
         await sendIndicator(sessionIndicator, client)
@@ -259,9 +259,9 @@ const calculPeriodBetweenFirstConnectionAndFirstChallenge = async (
       value: challengeLaunchEvents[0].eventDate.diff(
         firstConnectionEvent.eventDate
       ).seconds,
-      // eslint-disable-next-line @typescript-eslint/camelcase
+      // eslint-disable-next-line camelcase
       group1: { start_event: 'first_session' },
-      // eslint-disable-next-line @typescript-eslint/camelcase
+      // eslint-disable-next-line camelcase
       group2: { end_event: 'first_challenge' },
       group3: { params: '' },
     }
@@ -307,9 +307,9 @@ const calculPeriodBetweenChallenge = async (
             value: event.eventDate.diff(
               allEndedChallengeEvents[previousEndedChallengeIndex].eventDate
             ).seconds,
-            // eslint-disable-next-line @typescript-eslint/camelcase
+            // eslint-disable-next-line camelcase
             group1: { start_event: 'first_session' },
-            // eslint-disable-next-line @typescript-eslint/camelcase
+            // eslint-disable-next-line camelcase
             group2: { end_event: 'first_challenge' },
             group3: { params: event.target + ':' + prevChallengeId },
           }
@@ -527,12 +527,12 @@ const calculateConsumptionVariation = async (client: Client) => {
             consumptionData[fluidType].percentageVariation
               ? consumptionData[fluidType].percentageVariation
               : 0, // in percent
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { fluid_type: FluidType[fluidType].toLowerCase() },
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group2: { seniority: Math.round(seniority).toString() },
           group3: {
-            // eslint-disable-next-line @typescript-eslint/camelcase
+            // eslint-disable-next-line camelcase
             fluid_usage: await buildProfileWithFuildType(
               client,
               getFluidType(FluidType[fluidType])
@@ -661,7 +661,7 @@ const sendEmailSubscription = async (client: Client) => {
         .startOf('day')
         .toISODate(),
       value: profile.sendAnalysisNotification ? 1 : 0,
-      // eslint-disable-next-line @typescript-eslint/camelcase
+      // eslint-disable-next-line camelcase
       group1: { event_type: 'subscribed' },
     }
     await sendIndicator(cameBackFromEmail, client)
@@ -684,9 +684,9 @@ const sendHalfHourConsumption = async (client: Client) => {
   const halfHourConsumption: Indicator = {
     createdBy: 'ecolyo',
     measureName: DaccEvent.FLUID_DATA_GRANULARITY,
-    // eslint-disable-next-line @typescript-eslint/camelcase
+    // eslint-disable-next-line camelcase
     group1: { fluid_type: 'electricity' },
-    // eslint-disable-next-line @typescript-eslint/camelcase
+    // eslint-disable-next-line camelcase
     group2: { granularity: 'half_hour' },
     startDate: DateTime.local()
       .setZone('utc', {
@@ -772,7 +772,7 @@ const sendKonnectorEvents = async (client: Client) => {
         const konnectorSuccess: Indicator = {
           createdBy: 'ecolyo',
           measureName: DaccEvent.PARTNER_SUCESS_MONTHLY,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { fluid_type: slug },
           startDate: DateTime.local()
             .setZone('utc', {
@@ -824,7 +824,7 @@ const sendKonnectorAttemptsMonthly = async (client: Client) => {
     const konnectorAttempts: Indicator = {
       createdBy: 'ecolyo',
       measureName: DaccEvent.UNINITIALIZED_KONNECTOR_ATTEMPTS_MONTHLY,
-      // eslint-disable-next-line @typescript-eslint/camelcase
+      // eslint-disable-next-line camelcase
       group1: { slug: slug },
       group2: { success: success },
       startDate: DateTime.local()
@@ -991,9 +991,9 @@ const aggregateEvents = async (
           value: event.startDate
             ? event.eventDate.diff(event.startDate, ['seconds']).seconds
             : 0,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { start_event: 'start_challenge' },
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group2: { end_event: 'end_challenge' },
           group3: { params: event.target ? event.target : '' },
         }
@@ -1016,9 +1016,9 @@ const aggregateEvents = async (
           value: event.startDate
             ? event.eventDate.diff(event.startDate, ['seconds']).seconds
             : 0,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { start_event: 'start_exploration' },
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group2: { end_event: 'end_exploration' },
           group3: { params: event.context + ':' + event.target },
         }
@@ -1038,9 +1038,9 @@ const aggregateEvents = async (
           value: event.startDate
             ? event.eventDate.diff(event.startDate, ['seconds']).seconds
             : 0,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { start_event: 'start_action' },
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group2: { end_event: 'end_action' },
           group3: { params: event.target + ':' + event.context },
         }
@@ -1060,9 +1060,9 @@ const aggregateEvents = async (
           value: event.startDate
             ? event.eventDate.diff(event.startDate, ['seconds']).seconds
             : 0,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { start_event: 'start_duel' },
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group2: { end_event: 'end_duel' },
           group3: {
             params: event.target + ':' + event.context + ':' + event.result,
@@ -1105,9 +1105,9 @@ const aggregateEvents = async (
           value: event.startDate
             ? event.eventDate.diff(event.startDate, ['seconds']).seconds
             : 0,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { start_event: 'start_duel' },
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group2: { end_event: 'start_duel' },
           group3: {
             params: event.target + ':' + event.context + ':' + starNumbers,
@@ -1135,7 +1135,7 @@ const aggregateEvents = async (
           measureName: DaccEvent.SUMMARY_SUBSCRIPTION_MONTHLY,
           startDate: event.eventDate.toISODate(),
           value: 1,
-          // eslint-disable-next-line @typescript-eslint/camelcase
+          // eslint-disable-next-line camelcase
           group1: { event_type: 'email' },
         }
         const result = await sendIndicator(cameBackFromEmail, client)
diff --git a/src/targets/services/fluidsPrices.ts b/src/targets/services/fluidsPrices.ts
index f8ba71ff41315bb690c8f18d97ab91454dd64509..09fd3376070000745f82b04ce27c48802db66803 100644
--- a/src/targets/services/fluidsPrices.ts
+++ b/src/targets/services/fluidsPrices.ts
@@ -152,6 +152,7 @@ const aggregatePrices = async (
   )
   await Promise.all(
     tsa.map(async ts => {
+      // eslint-disable-next-line no-async-promise-executor
       return new Promise<void>(async resolve => {
         let date: DateTime = DateTime.local()
         Object.assign(date, firstDate)
@@ -285,6 +286,7 @@ const applyPrices = async (client: Client, fluidType: FluidType) => {
       // Hourly and daily prices
       await Promise.all(
         tsa.map(async timeStep => {
+          // eslint-disable-next-line no-async-promise-executor
           return new Promise<void>(async resolve => {
             let date: DateTime = DateTime.local().setZone('utc', {
               keepLocalTime: true,
diff --git a/src/targets/services/monthlyReportNotification.ts b/src/targets/services/monthlyReportNotification.ts
index d41bec8bbe2b79ae41b148c2ae8acd7e95a84513..5c7501b5dc7f8c2c8398ea5b28ad889ee0e9fd4b 100644
--- a/src/targets/services/monthlyReportNotification.ts
+++ b/src/targets/services/monthlyReportNotification.ts
@@ -42,12 +42,13 @@ const getConsumptionValue = async (
       endDate: analysisDate.minus({ month: 2 }).endOf('month'),
     },
   }
-  const fetchedPerformanceIndicators = await consumptionService.getPerformanceIndicators(
-    periods.timePeriod,
-    TimeStep.MONTH,
-    fluidType,
-    periods.comparisonTimePeriod
-  )
+  const fetchedPerformanceIndicators =
+    await consumptionService.getPerformanceIndicators(
+      periods.timePeriod,
+      TimeStep.MONTH,
+      fluidType,
+      periods.comparisonTimePeriod
+    )
   return fetchedPerformanceIndicators
 }
 
@@ -178,9 +179,7 @@ const monthlyReportNotification = async ({
 
   // Init mail token for user in case he don't have one
   if (!userProfil.mailToken || userProfil.mailToken === '') {
-    const token: string = require('crypto')
-      .randomBytes(48)
-      .toString('hex')
+    const token: string = require('crypto').randomBytes(48).toString('hex')
 
     try {
       await upm.updateProfile({
diff --git a/src/targets/vendor/assets/serviceWorker.js b/src/targets/vendor/assets/serviceWorker.js
index 0f14f5b13d69bb7fad30392b70a118150352a9ce..15a90d79b460d82998693aea1a1fc403f0e478d8 100644
--- a/src/targets/vendor/assets/serviceWorker.js
+++ b/src/targets/vendor/assets/serviceWorker.js
@@ -1,3 +1,4 @@
+/* eslint-disable no-undef */
 const staticCacheName = 'ecolyo-v1'
 const urlsToCache = ['index.html', 'offline.html']
 
diff --git a/src/utils/logger.js b/src/utils/logger.js
index 7494134c7470e33cc8460af95d095d3e2a77425b..ee502e362b00210c8f0f70a50e84451f171227c9 100644
--- a/src/utils/logger.js
+++ b/src/utils/logger.js
@@ -2,6 +2,7 @@ import minilog_ from '@cozy/minilog'
 
 const inBrowser = typeof window !== 'undefined'
 
+// eslint-disable-next-line no-undef
 const minilog = (inBrowser && window.minilog) || minilog_
 
 const log = minilog('ecolyo')
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 2a7a70595f8270beb83fd52d3b0f4f375caef892..a14861d1aa25c1440e11c8d2763ae0b3f8ee31fb 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -120,6 +120,7 @@ export const importIconbyId = async (id: string, pathType: string) => {
     importedChallengeIcon = await import(
       /* webpackMode: "eager" */ `assets/icons/visu/${pathType}/${id}.svg`
     )
+    // eslint-disable-next-line no-empty
   } catch (e) {}
   if (importedChallengeIcon) {
     return importedChallengeIcon.default
diff --git a/yarn.lock b/yarn.lock
index b7cf0612d38d1acd6fa1df93b693193b1c3a16ad..d52fafd8f6251b31826caaa0cb3b57b420678b57 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -141,10 +141,10 @@
     eslint-visitor-keys "^2.1.0"
     semver "^6.3.0"
 
-"@babel/eslint-parser@^7.17.0":
-  version "7.18.2"
-  resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz#e14dee36c010edfb0153cf900c2b0815e82e3245"
-  integrity sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==
+"@babel/eslint-parser@7.18.9":
+  version "7.18.9"
+  resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz#255a63796819a97b7578751bb08ab9f2a375a031"
+  integrity sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==
   dependencies:
     eslint-scope "^5.1.1"
     eslint-visitor-keys "^2.1.0"
@@ -1672,11 +1672,35 @@
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
+"@eslint/eslintrc@^1.3.1":
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356"
+  integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==
+  dependencies:
+    ajv "^6.12.4"
+    debug "^4.3.2"
+    espree "^9.4.0"
+    globals "^13.15.0"
+    ignore "^5.2.0"
+    import-fresh "^3.2.1"
+    js-yaml "^4.1.0"
+    minimatch "^3.1.2"
+    strip-json-comments "^3.1.1"
+
 "@gar/promisify@^1.0.1":
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
   integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
 
+"@humanwhocodes/config-array@^0.10.4":
+  version "0.10.4"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c"
+  integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==
+  dependencies:
+    "@humanwhocodes/object-schema" "^1.2.1"
+    debug "^4.1.1"
+    minimatch "^3.0.4"
+
 "@humanwhocodes/config-array@^0.9.2":
   version "0.9.5"
   resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
@@ -1686,6 +1710,16 @@
     debug "^4.1.1"
     minimatch "^3.0.4"
 
+"@humanwhocodes/gitignore-to-minimatch@^1.0.2":
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d"
+  integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==
+
+"@humanwhocodes/module-importer@^1.0.1":
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+  integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
 "@humanwhocodes/object-schema@^1.2.1":
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
@@ -2847,14 +2881,14 @@
   dependencies:
     "@types/yargs-parser" "*"
 
-"@typescript-eslint/eslint-plugin@^5.19.0", "@typescript-eslint/eslint-plugin@^5.30.0":
-  version "5.30.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.0.tgz#524a11e15c09701733033c96943ecf33f55d9ca1"
-  integrity sha512-lvhRJ2pGe2V9MEU46ELTdiHgiAFZPKtLhiU5wlnaYpMc2+c1R8fh8i80ZAa665drvjHKUJyRRGg3gEm1If54ow==
+"@typescript-eslint/eslint-plugin@5.36.0":
+  version "5.36.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.0.tgz#8f159c4cdb3084eb5d4b72619a2ded942aa109e5"
+  integrity sha512-X3In41twSDnYRES7hO2xna4ZC02SY05UN9sGW//eL1P5k4CKfvddsdC2hOq0O3+WU1wkCPQkiTY9mzSnXKkA0w==
   dependencies:
-    "@typescript-eslint/scope-manager" "5.30.0"
-    "@typescript-eslint/type-utils" "5.30.0"
-    "@typescript-eslint/utils" "5.30.0"
+    "@typescript-eslint/scope-manager" "5.36.0"
+    "@typescript-eslint/type-utils" "5.36.0"
+    "@typescript-eslint/utils" "5.36.0"
     debug "^4.3.4"
     functional-red-black-tree "^1.0.1"
     ignore "^5.2.0"
@@ -2862,30 +2896,106 @@
     semver "^7.3.7"
     tsutils "^3.21.0"
 
-"@typescript-eslint/parser@^5.10.0", "@typescript-eslint/parser@^5.19.0", "@typescript-eslint/parser@^5.30.0":
-  version "5.30.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.0.tgz#a2184fb5f8ef2bf1db0ae61a43907e2e32aa1b8f"
-  integrity sha512-2oYYUws5o2liX6SrFQ5RB88+PuRymaM2EU02/9Ppoyu70vllPnHVO7ioxDdq/ypXHA277R04SVjxvwI8HmZpzA==
+"@typescript-eslint/eslint-plugin@^5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz#5ccdd5d9004120f28fc6e717fb4b5c9bddcfbc04"
+  integrity sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==
+  dependencies:
+    "@typescript-eslint/scope-manager" "5.37.0"
+    "@typescript-eslint/type-utils" "5.37.0"
+    "@typescript-eslint/utils" "5.37.0"
+    debug "^4.3.4"
+    functional-red-black-tree "^1.0.1"
+    ignore "^5.2.0"
+    regexpp "^3.2.0"
+    semver "^7.3.7"
+    tsutils "^3.21.0"
+
+"@typescript-eslint/eslint-plugin@^5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz#5ccdd5d9004120f28fc6e717fb4b5c9bddcfbc04"
+  integrity sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==
+  dependencies:
+    "@typescript-eslint/scope-manager" "5.37.0"
+    "@typescript-eslint/type-utils" "5.37.0"
+    "@typescript-eslint/utils" "5.37.0"
+    debug "^4.3.4"
+    functional-red-black-tree "^1.0.1"
+    ignore "^5.2.0"
+    regexpp "^3.2.0"
+    semver "^7.3.7"
+    tsutils "^3.21.0"
+
+"@typescript-eslint/parser@5.36.0":
+  version "5.36.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.36.0.tgz#c08883073fb65acaafd268a987fd2314ce80c789"
+  integrity sha512-dlBZj7EGB44XML8KTng4QM0tvjI8swDh8MdpE5NX5iHWgWEfIuqSfSE+GPeCrCdj7m4tQLuevytd57jNDXJ2ZA==
+  dependencies:
+    "@typescript-eslint/scope-manager" "5.36.0"
+    "@typescript-eslint/types" "5.36.0"
+    "@typescript-eslint/typescript-estree" "5.36.0"
+    debug "^4.3.4"
+
+"@typescript-eslint/parser@^5.10.0":
+  version "5.30.5"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.5.tgz#f667c34e4e4c299d98281246c9b1e68c03a92522"
+  integrity sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==
   dependencies:
     "@typescript-eslint/scope-manager" "5.30.0"
     "@typescript-eslint/types" "5.30.0"
     "@typescript-eslint/typescript-estree" "5.30.0"
     debug "^4.3.4"
 
-"@typescript-eslint/scope-manager@5.30.0":
-  version "5.30.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.0.tgz#bf585ee801ab4ad84db2f840174e171a6bb002c7"
-  integrity sha512-3TZxvlQcK5fhTBw5solQucWSJvonXf5yua5nx8OqK94hxdrT7/6W3/CS42MLd/f1BmlmmbGEgQcTHHCktUX5bQ==
+"@typescript-eslint/parser@^5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.37.0.tgz#c382077973f3a4ede7453fb14cadcad3970cbf3b"
+  integrity sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==
+  dependencies:
+    "@typescript-eslint/scope-manager" "5.37.0"
+    "@typescript-eslint/types" "5.37.0"
+    "@typescript-eslint/typescript-estree" "5.37.0"
+    debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@5.30.5":
+  version "5.30.5"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz#7f90b9d6800552c856a5f3644f5e55dd1469d964"
+  integrity sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==
   dependencies:
     "@typescript-eslint/types" "5.30.0"
     "@typescript-eslint/visitor-keys" "5.30.0"
 
-"@typescript-eslint/type-utils@5.30.0":
-  version "5.30.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.0.tgz#98f3af926a5099153f092d4dad87148df21fbaae"
-  integrity sha512-GF8JZbZqSS+azehzlv/lmQQ3EU3VfWYzCczdZjJRxSEeXDQkqFhCBgFhallLDbPwQOEQ4MHpiPfkjKk7zlmeNg==
+"@typescript-eslint/scope-manager@5.36.0":
+  version "5.36.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.0.tgz#f4f859913add160318c0a5daccd3a030d1311530"
+  integrity sha512-PZUC9sz0uCzRiuzbkh6BTec7FqgwXW03isumFVkuPw/Ug/6nbAqPUZaRy4w99WCOUuJTjhn3tMjsM94NtEj64g==
+  dependencies:
+    "@typescript-eslint/types" "5.36.0"
+    "@typescript-eslint/visitor-keys" "5.36.0"
+
+"@typescript-eslint/scope-manager@5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.37.0.tgz#044980e4f1516a774a418dafe701a483a6c9f9ca"
+  integrity sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==
+  dependencies:
+    "@typescript-eslint/types" "5.37.0"
+    "@typescript-eslint/visitor-keys" "5.37.0"
+
+"@typescript-eslint/type-utils@5.36.0":
+  version "5.36.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.36.0.tgz#5d2f94a36a298ae240ceca54b3bc230be9a99f0a"
+  integrity sha512-W/E3yJFqRYsjPljJ2gy0YkoqLJyViWs2DC6xHkXcWyhkIbCDdaVnl7mPLeQphVI+dXtY05EcXFzWLXhq8Mm/lQ==
   dependencies:
-    "@typescript-eslint/utils" "5.30.0"
+    "@typescript-eslint/typescript-estree" "5.36.0"
+    "@typescript-eslint/utils" "5.36.0"
+    debug "^4.3.4"
+    tsutils "^3.21.0"
+
+"@typescript-eslint/type-utils@5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.37.0.tgz#43ed2f567ada49d7e33a6e4b6f9babd060445fe5"
+  integrity sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==
+  dependencies:
+    "@typescript-eslint/utils" "5.30.5"
     debug "^4.3.4"
     tsutils "^3.21.0"
 
@@ -2894,10 +3004,20 @@
   resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.0.tgz#db7d81d585a3da3801432a9c1d2fafbff125e110"
   integrity sha512-vfqcBrsRNWw/LBXyncMF/KrUTYYzzygCSsVqlZ1qGu1QtGs6vMkt3US0VNSQ05grXi5Yadp3qv5XZdYLjpp8ag==
 
-"@typescript-eslint/typescript-estree@5.30.0":
-  version "5.30.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.0.tgz#4565ee8a6d2ac368996e20b2344ea0eab1a8f0bb"
-  integrity sha512-hDEawogreZB4n1zoqcrrtg/wPyyiCxmhPLpZ6kmWfKF5M5G0clRLaEexpuWr31fZ42F96SlD/5xCt1bT5Qm4Nw==
+"@typescript-eslint/types@5.36.0":
+  version "5.36.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.36.0.tgz#cde7b94d1c09a4f074f46db99e7bd929fb0a5559"
+  integrity sha512-3JJuLL1r3ljRpFdRPeOtgi14Vmpx+2JcR6gryeORmW3gPBY7R1jNYoq4yBN1L//ONZjMlbJ7SCIwugOStucYiQ==
+
+"@typescript-eslint/types@5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.37.0.tgz#09e4870a5f3af7af3f84e08d792644a87d232261"
+  integrity sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==
+
+"@typescript-eslint/typescript-estree@5.30.5":
+  version "5.30.5"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz#c520e4eba20551c4ec76af8d344a42eb6c9767bb"
+  integrity sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==
   dependencies:
     "@typescript-eslint/types" "5.30.0"
     "@typescript-eslint/visitor-keys" "5.30.0"
@@ -2907,15 +3027,53 @@
     semver "^7.3.7"
     tsutils "^3.21.0"
 
-"@typescript-eslint/utils@5.30.0":
-  version "5.30.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.0.tgz#1dac771fead5eab40d31860716de219356f5f754"
-  integrity sha512-0bIgOgZflLKIcZsWvfklsaQTM3ZUbmtH0rJ1hKyV3raoUYyeZwcjQ8ZUJTzS7KnhNcsVT1Rxs7zeeMHEhGlltw==
+"@typescript-eslint/typescript-estree@5.36.0":
+  version "5.36.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.0.tgz#0acce61b4850bdb0e578f0884402726680608789"
+  integrity sha512-EW9wxi76delg/FS9+WV+fkPdwygYzRrzEucdqFVWXMQWPOjFy39mmNNEmxuO2jZHXzSQTXzhxiU1oH60AbIw9A==
+  dependencies:
+    "@typescript-eslint/types" "5.36.0"
+    "@typescript-eslint/visitor-keys" "5.36.0"
+    debug "^4.3.4"
+    globby "^11.1.0"
+    is-glob "^4.0.3"
+    semver "^7.3.7"
+    tsutils "^3.21.0"
+
+"@typescript-eslint/typescript-estree@5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.37.0.tgz#956dcf5c98363bcb97bdd5463a0a86072ff79355"
+  integrity sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==
+  dependencies:
+    "@typescript-eslint/types" "5.37.0"
+    "@typescript-eslint/visitor-keys" "5.37.0"
+    debug "^4.3.4"
+    globby "^11.1.0"
+    is-glob "^4.0.3"
+    semver "^7.3.7"
+    tsutils "^3.21.0"
+
+"@typescript-eslint/utils@5.36.0":
+  version "5.36.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.36.0.tgz#104c864ecc1448417606359275368bf3872bbabb"
+  integrity sha512-wAlNhXXYvAAUBbRmoJDywF/j2fhGLBP4gnreFvYvFbtlsmhMJ4qCKVh/Z8OP4SgGR3xbciX2nmG639JX0uw1OQ==
   dependencies:
     "@types/json-schema" "^7.0.9"
-    "@typescript-eslint/scope-manager" "5.30.0"
-    "@typescript-eslint/types" "5.30.0"
-    "@typescript-eslint/typescript-estree" "5.30.0"
+    "@typescript-eslint/scope-manager" "5.36.0"
+    "@typescript-eslint/types" "5.36.0"
+    "@typescript-eslint/typescript-estree" "5.36.0"
+    eslint-scope "^5.1.1"
+    eslint-utils "^3.0.0"
+
+"@typescript-eslint/utils@5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.37.0.tgz#7784cb8e91390c4f90ccaffd24a0cf9874df81b2"
+  integrity sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==
+  dependencies:
+    "@types/json-schema" "^7.0.9"
+    "@typescript-eslint/scope-manager" "5.37.0"
+    "@typescript-eslint/types" "5.37.0"
+    "@typescript-eslint/typescript-estree" "5.37.0"
     eslint-scope "^5.1.1"
     eslint-utils "^3.0.0"
 
@@ -2927,6 +3085,22 @@
     "@typescript-eslint/types" "5.30.0"
     eslint-visitor-keys "^3.3.0"
 
+"@typescript-eslint/visitor-keys@5.36.0":
+  version "5.36.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.0.tgz#565d35a5ca00d00a406a942397ead2cb190663ba"
+  integrity sha512-pdqSJwGKueOrpjYIex0T39xarDt1dn4p7XJ+6FqBWugNQwXlNGC5h62qayAIYZ/RPPtD+ButDWmpXT1eGtiaYg==
+  dependencies:
+    "@typescript-eslint/types" "5.36.0"
+    eslint-visitor-keys "^3.3.0"
+
+"@typescript-eslint/visitor-keys@5.37.0":
+  version "5.37.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.37.0.tgz#7b72dd343295ea11e89b624995abc7103c554eee"
+  integrity sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==
+  dependencies:
+    "@typescript-eslint/types" "5.37.0"
+    eslint-visitor-keys "^3.3.0"
+
 "@webassemblyjs/ast@1.9.0":
   version "1.9.0"
   resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@@ -3141,6 +3315,11 @@ acorn@^8.2.4, acorn@^8.7.1:
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
   integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
 
+acorn@^8.8.0:
+  version "8.8.0"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
+  integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
+
 add-stream@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
@@ -7022,23 +7201,22 @@ eslint-config-cozy-app@1.5.0:
     eslint-plugin-vue "5.2.3"
     prettier "1.18.2"
 
-eslint-config-cozy-app@4.2.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/eslint-config-cozy-app/-/eslint-config-cozy-app-4.2.0.tgz#d6e41ebe7e924e885c78926ef497030550a383e1"
-  integrity sha512-naYjf9j2idGbfzrEbtCjg0Xb5J5Cgb/JhV88+S5gzK67YHEZm12FZ0pDVUwarj7+kDa64wfEaznhDHWRJb0gyw==
-  dependencies:
-    "@babel/eslint-parser" "^7.17.0"
-    "@typescript-eslint/eslint-plugin" "^5.19.0"
-    "@typescript-eslint/parser" "^5.19.0"
-    eslint "^8.13.0"
-    eslint-config-prettier "^8.5.0"
-    eslint-plugin-prettier "^4.0.0"
-    eslint-plugin-promise "^6.0.0"
-    eslint-plugin-react "^7.29.4"
-    eslint-plugin-react-hooks "^4.5.0"
-    eslint-plugin-vue "^8.6.0"
-    prettier "^2.6.2"
-    typescript "^4.6.3"
+eslint-config-cozy-app@5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-cozy-app/-/eslint-config-cozy-app-5.1.0.tgz#17cf39c01edf587512164aaf340a139f65bc9bb7"
+  integrity sha512-S5dILPftGUzbFJM8bLCegTqj6kHyU+9mXMoa+jd06ARenvcqE8TQuDhGLhI6z/EdpIlXBNBED/eBQZ+fyyhDXQ==
+  dependencies:
+    "@babel/eslint-parser" "7.18.9"
+    "@typescript-eslint/eslint-plugin" "5.36.0"
+    "@typescript-eslint/parser" "5.36.0"
+    eslint "8.23.0"
+    eslint-config-prettier "8.5.0"
+    eslint-plugin-prettier "4.2.1"
+    eslint-plugin-promise "6.0.1"
+    eslint-plugin-react "7.31.1"
+    eslint-plugin-react-hooks "4.6.0"
+    prettier "2.7.1"
+    typescript "4.8.2"
 
 eslint-config-prettier@4.3.0:
   version "4.3.0"
@@ -7047,7 +7225,7 @@ eslint-config-prettier@4.3.0:
   dependencies:
     get-stdin "^6.0.0"
 
-eslint-config-prettier@^8.5.0:
+eslint-config-prettier@8.5.0, eslint-config-prettier@^8.5.0:
   version "8.5.0"
   resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
   integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
@@ -7070,17 +7248,17 @@ eslint-plugin-prettier@3.1.2:
   dependencies:
     prettier-linter-helpers "^1.0.0"
 
-eslint-plugin-prettier@^4.0.0, eslint-plugin-prettier@^4.2.1:
+eslint-plugin-prettier@4.2.1, eslint-plugin-prettier@^4.2.1:
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
   integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
   dependencies:
     prettier-linter-helpers "^1.0.0"
 
-eslint-plugin-promise@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18"
-  integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==
+eslint-plugin-promise@6.0.1:
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423"
+  integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw==
 
 eslint-plugin-react-hooks@2.3.0:
   version "2.3.0"
@@ -7092,11 +7270,16 @@ eslint-plugin-react-hooks@4.0.4:
   resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.4.tgz#aed33b4254a41b045818cacb047b81e6df27fa58"
   integrity sha512-equAdEIsUETLFNCmmCkiCGq6rkSK5MoJhXFPFYeUebcjKgBmWWcgVOqZyQC8Bv1BwVCnTq9tBxgJFgAJTWoJtA==
 
-eslint-plugin-react-hooks@^4.2.0, eslint-plugin-react-hooks@^4.5.0:
+eslint-plugin-react-hooks@4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
   integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
 
+eslint-plugin-react-hooks@^4.2.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172"
+  integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==
+
 eslint-plugin-react@7.14.3:
   version "7.14.3"
   resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13"
@@ -7130,7 +7313,7 @@ eslint-plugin-react@7.19.0:
     string.prototype.matchall "^4.0.2"
     xregexp "^4.3.0"
 
-eslint-plugin-react@7.30.1, eslint-plugin-react@^7.29.4:
+eslint-plugin-react@7.30.1:
   version "7.30.1"
   resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22"
   integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==
@@ -7150,6 +7333,26 @@ eslint-plugin-react@7.30.1, eslint-plugin-react@^7.29.4:
     semver "^6.3.0"
     string.prototype.matchall "^4.0.7"
 
+eslint-plugin-react@7.31.1:
+  version "7.31.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz#d29793ed27743f3ed8a473c347b1bf5a0a8fb9af"
+  integrity sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg==
+  dependencies:
+    array-includes "^3.1.5"
+    array.prototype.flatmap "^1.3.0"
+    doctrine "^2.1.0"
+    estraverse "^5.3.0"
+    jsx-ast-utils "^2.4.1 || ^3.0.0"
+    minimatch "^3.1.2"
+    object.entries "^1.1.5"
+    object.fromentries "^2.0.5"
+    object.hasown "^1.1.1"
+    object.values "^1.1.5"
+    prop-types "^15.8.1"
+    resolve "^2.0.0-next.3"
+    semver "^6.3.0"
+    string.prototype.matchall "^4.0.7"
+
 eslint-plugin-vue@5.2.3:
   version "5.2.3"
   resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz#3ee7597d823b5478804b2feba9863b1b74273961"
@@ -7157,18 +7360,6 @@ eslint-plugin-vue@5.2.3:
   dependencies:
     vue-eslint-parser "^5.0.0"
 
-eslint-plugin-vue@^8.6.0:
-  version "8.7.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz#f13c53547a0c9d64588a675cc5ecc6ccaf63703f"
-  integrity sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==
-  dependencies:
-    eslint-utils "^3.0.0"
-    natural-compare "^1.4.0"
-    nth-check "^2.0.1"
-    postcss-selector-parser "^6.0.9"
-    semver "^7.3.5"
-    vue-eslint-parser "^8.0.1"
-
 eslint-scope@3.7.1:
   version "3.7.1"
   resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
@@ -7316,10 +7507,55 @@ eslint@5.9.0:
     table "^5.0.2"
     text-table "^0.2.0"
 
-eslint@^8.13.0, eslint@^8.18.0, eslint@^8.7.0:
-  version "8.18.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd"
-  integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==
+eslint@8.23.0:
+  version "8.23.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.0.tgz#a184918d288820179c6041bb3ddcc99ce6eea040"
+  integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==
+  dependencies:
+    "@eslint/eslintrc" "^1.3.1"
+    "@humanwhocodes/config-array" "^0.10.4"
+    "@humanwhocodes/gitignore-to-minimatch" "^1.0.2"
+    "@humanwhocodes/module-importer" "^1.0.1"
+    ajv "^6.10.0"
+    chalk "^4.0.0"
+    cross-spawn "^7.0.2"
+    debug "^4.3.2"
+    doctrine "^3.0.0"
+    escape-string-regexp "^4.0.0"
+    eslint-scope "^7.1.1"
+    eslint-utils "^3.0.0"
+    eslint-visitor-keys "^3.3.0"
+    espree "^9.4.0"
+    esquery "^1.4.0"
+    esutils "^2.0.2"
+    fast-deep-equal "^3.1.3"
+    file-entry-cache "^6.0.1"
+    find-up "^5.0.0"
+    functional-red-black-tree "^1.0.1"
+    glob-parent "^6.0.1"
+    globals "^13.15.0"
+    globby "^11.1.0"
+    grapheme-splitter "^1.0.4"
+    ignore "^5.2.0"
+    import-fresh "^3.0.0"
+    imurmurhash "^0.1.4"
+    is-glob "^4.0.0"
+    js-yaml "^4.1.0"
+    json-stable-stringify-without-jsonify "^1.0.1"
+    levn "^0.4.1"
+    lodash.merge "^4.6.2"
+    minimatch "^3.1.2"
+    natural-compare "^1.4.0"
+    optionator "^0.9.1"
+    regexpp "^3.2.0"
+    strip-ansi "^6.0.1"
+    strip-json-comments "^3.1.0"
+    text-table "^0.2.0"
+
+eslint@^8.18.0, eslint@^8.7.0:
+  version "8.19.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28"
+  integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==
   dependencies:
     "@eslint/eslintrc" "^1.3.0"
     "@humanwhocodes/config-array" "^0.9.2"
@@ -7384,6 +7620,15 @@ espree@^9.0.0, espree@^9.3.2:
     acorn-jsx "^5.3.2"
     eslint-visitor-keys "^3.3.0"
 
+espree@^9.4.0:
+  version "9.4.0"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a"
+  integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==
+  dependencies:
+    acorn "^8.8.0"
+    acorn-jsx "^5.3.2"
+    eslint-visitor-keys "^3.3.0"
+
 esprima@^4.0.0, esprima@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
@@ -8354,6 +8599,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
   integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
 
+grapheme-splitter@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+  integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
 growly@^1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
@@ -11906,13 +12156,18 @@ nth-check@^1.0.2:
   dependencies:
     boolbase "~1.0.0"
 
-nth-check@^2.0.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
-  integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+nth-check@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
+  integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==
   dependencies:
     boolbase "^1.0.0"
 
+null-check@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
+  integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=
+
 null-loader@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-4.0.1.tgz#8e63bd3a2dd3c64236a4679428632edd0a6dbc6a"
@@ -12749,14 +13004,6 @@ postcss-prefix-selector@^1.6.0:
   resolved "https://registry.yarnpkg.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz#ad5b56f9a73a2c090ca7161049632c9d89bcb404"
   integrity sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==
 
-postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.9:
-  version "6.0.10"
-  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
-  integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
-  dependencies:
-    cssesc "^3.0.0"
-    util-deprecate "^1.0.2"
-
 postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
   version "3.3.1"
   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
@@ -12985,7 +13232,7 @@ prettier@1.18.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
   integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==
 
-prettier@^2.5.1, prettier@^2.6.2, prettier@^2.7.1:
+prettier@2.7.1, prettier@^2.5.1, prettier@^2.7.1:
   version "2.7.1"
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
   integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
@@ -13151,7 +13398,12 @@ pseudomap@^1.0.2:
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
   integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
 
-psl@^1.1.24, psl@^1.1.28, psl@^1.1.33:
+psl@^1.1.24:
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
+  integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
+
+psl@^1.1.28, psl@^1.1.33:
   version "1.8.0"
   resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
   integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
@@ -15875,7 +16127,12 @@ typedarray@^0.0.6:
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
   integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
 
-typescript@^4.0.0, typescript@^4.3.5, typescript@^4.5.2, typescript@^4.5.4, typescript@^4.6.3:
+typescript@4.8.2:
+  version "4.8.2"
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.2.tgz#e3b33d5ccfb5914e4eeab6699cf208adee3fd790"
+  integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==
+
+typescript@^4.0.0, typescript@^4.5.4:
   version "4.7.4"
   resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235"
   integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==