From edaf9131c232fe736afc4b877387f6e593f9c035 Mon Sep 17 00:00:00 2001
From: Renovate-Bot <le.rameur.94@gmail.com>
Date: Wed, 21 Aug 2024 12:46:52 +0000
Subject: [PATCH] chore(deps): update typescript-eslint monorepo to v6 (major)

---
 .eslintrc.js                           |  12 +-
 package.json                           |   4 +-
 src/migrations/migration.type.ts       |   6 +-
 src/services/challenge.service.ts      |   2 +-
 src/services/consumption.service.ts    |  27 ++-
 src/services/dateChart.service.ts      |   5 +-
 src/services/duel.service.ts           |   7 +-
 src/services/initialization.service.ts |   2 +-
 src/services/permissions.service.ts    |   2 +-
 src/services/profileType.service.ts    |   7 +-
 src/services/queryRunner.service.ts    |   2 +-
 src/services/quiz.service.ts           |   2 +-
 src/targets/services/fluidsPrices.ts   |   2 +-
 src/types/cozy-bar.d.ts                |   2 +-
 src/types/cozy-client.d.ts             |  29 ++--
 src/utils/math.spec.ts                 |   6 +-
 src/utils/math.ts                      |   4 +-
 src/utils/utils.ts                     |   2 +-
 yarn.lock                              | 220 +++++++++++++++----------
 19 files changed, 194 insertions(+), 149 deletions(-)

diff --git a/.eslintrc.js b/.eslintrc.js
index 9d68cf3ab..8a4f5246f 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -11,10 +11,10 @@ module.exports = {
     {
       extends: [
         'plugin:jsdoc/recommended',
+        // Functional rule configurations, for best best practices and code correctness
         'plugin:@typescript-eslint/recommended',
-        'plugin:@typescript-eslint/eslint-recommended', // Uses the recommended rules from @typescript-eslint/eslint-plugin
-        // This enables a lot of type checking
-        // 'plugin:@typescript-eslint/recommended-requiring-type-checking', // Uses the recommended rules from @typescript-eslint/eslint-plugin
+        // Stylistic rule configurations, for consistent and predictable syntax usage
+        'plugin:@typescript-eslint/stylistic-type-checked',
       ],
       files: ['**/*.{ts,tsx}'],
       parserOptions: {
@@ -31,6 +31,12 @@ module.exports = {
         '@typescript-eslint/no-var-requires': 'off',
         '@typescript-eslint/no-unnecessary-type-assertion': 'error',
 
+        // causes a build error and has a lot of effects on components
+        '@typescript-eslint/prefer-nullish-coalescing': 'off',
+
+        // better readability by naming keys
+        '@typescript-eslint/consistent-indexed-object-style': 'off',
+
         // JSDOC extends overrides: disable some of extends rules
         // JSdoc is not always needed
         'jsdoc/require-jsdoc': 0,
diff --git a/package.json b/package.json
index c685d1ec2..f4ed2e00f 100644
--- a/package.json
+++ b/package.json
@@ -99,8 +99,8 @@
     "@types/react-dom": "^18.2.11",
     "@types/react-lottie": "^1.2.3",
     "@types/redux-mock-store": "^1.0.2",
-    "@typescript-eslint/eslint-plugin": "^5.56.0",
-    "@typescript-eslint/parser": "^5.56.0",
+    "@typescript-eslint/eslint-plugin": "^6.0.0",
+    "@typescript-eslint/parser": "^6.0.0",
     "axios": "^1.3.0",
     "babel-polyfill": "^6.26.0",
     "babel-preset-cozy-app": "2.1.0",
diff --git a/src/migrations/migration.type.ts b/src/migrations/migration.type.ts
index e4b7a93c4..c168aeb84 100644
--- a/src/migrations/migration.type.ts
+++ b/src/migrations/migration.type.ts
@@ -3,7 +3,7 @@ import { Notes } from 'models'
 
 type SchemaVersion = number
 
-export type MigrationData = {
+export interface MigrationData {
   errors: any[]
 }
 export interface MigrationNoop extends MigrationData {
@@ -21,7 +21,7 @@ export type MigrationResult =
   | MigrationComplete
   | MigrationFailed
 
-export type Migration = {
+export interface Migration {
   baseSchemaVersion: SchemaVersion
   targetSchemaVersion: SchemaVersion
   description: string
@@ -36,7 +36,7 @@ export type Migration = {
   run: (_client: Client, docs: any[]) => Promise<any[]>
 }
 
-export type MigrationQueryOptions = {
+export interface MigrationQueryOptions {
   scope: string
   tag: string
   limit: number
diff --git a/src/services/challenge.service.ts b/src/services/challenge.service.ts
index 9a12620f7..db2fa3816 100644
--- a/src/services/challenge.service.ts
+++ b/src/services/challenge.service.ts
@@ -569,7 +569,7 @@ export default class ChallengeService {
     userChallenge: UserChallenge,
     flag: UserChallengeUpdateFlag,
     quizWithUpdatedQuestions?: UserQuiz,
-    fluidStatus?: Array<FluidStatus>,
+    fluidStatus?: FluidStatus[],
     action?: Ecogesture
   ): Promise<UserChallenge> {
     let updatedUserChallenge: UserChallenge
diff --git a/src/services/consumption.service.ts b/src/services/consumption.service.ts
index 961cafd47..5875fa764 100644
--- a/src/services/consumption.service.ts
+++ b/src/services/consumption.service.ts
@@ -406,11 +406,10 @@ export default class ConsumptionDataManager {
     let firstDay = null
     const firstDays = []
     for (const fluidType of fluidTypes) {
-      firstDay =
-        (await this._queryRunnerService.getFirstDateData(
-          fluidType,
-          timeStep
-        )) || null
+      firstDay = await this._queryRunnerService.getFirstDateData(
+        fluidType,
+        timeStep
+      )
       firstDays.push(firstDay)
     }
     return firstDays
@@ -423,19 +422,17 @@ export default class ConsumptionDataManager {
     let lastDay = null
     const lastDays = []
     if (fluidTypes.length === 1) {
-      lastDay =
-        (await this._queryRunnerService.getLastDateData(
-          fluidTypes[0],
-          timeStep
-        )) || null
+      lastDay = await this._queryRunnerService.getLastDateData(
+        fluidTypes[0],
+        timeStep
+      )
       lastDays.push(lastDay)
     } else if (fluidTypes.length > 1) {
       for (const fluidType of fluidTypes) {
-        lastDay =
-          (await this._queryRunnerService.getLastDateData(
-            fluidType,
-            timeStep
-          )) || null
+        lastDay = await this._queryRunnerService.getLastDateData(
+          fluidType,
+          timeStep
+        )
         lastDays.push(lastDay)
       }
     }
diff --git a/src/services/dateChart.service.ts b/src/services/dateChart.service.ts
index 1a5ac296b..47d5266cb 100644
--- a/src/services/dateChart.service.ts
+++ b/src/services/dateChart.service.ts
@@ -1,6 +1,6 @@
 import { FluidType, TimeStep } from 'enums'
 import { DateTime, Interval } from 'luxon'
-import { FluidConfig, TimePeriod } from 'models'
+import { TimePeriod } from 'models'
 import ConfigService from './fluidConfig.service'
 
 export default class DateChartService {
@@ -294,8 +294,7 @@ export default class DateChartService {
     fluidType: FluidType
   ): number | null {
     if (date && fluidType !== FluidType.MULTIFLUID) {
-      const fluidConfig: Array<FluidConfig> =
-        new ConfigService().getFluidConfig()
+      const fluidConfig = new ConfigService().getFluidConfig()
       const today = DateTime.local().setZone('utc', {
         keepLocalTime: true,
       })
diff --git a/src/services/duel.service.ts b/src/services/duel.service.ts
index 1baa8a8cc..9b39dec44 100644
--- a/src/services/duel.service.ts
+++ b/src/services/duel.service.ts
@@ -178,12 +178,11 @@ export default class DuelService {
    */
   public async updateUserDuelThreshold(
     userDuel: UserDuel,
-    fluidStatus: Array<FluidStatus> = []
+    fluidStatus: FluidStatus[] = []
   ): Promise<UserDuel> {
     const consumptionService = new ConsumptionService(this._client)
     const performanceService = new PerformanceService()
-    const fluidTypes: Array<FluidType> =
-      this.getFluidTypesFromStatus(fluidStatus)
+    const fluidTypes = this.getFluidTypesFromStatus(fluidStatus)
     // Get last period with all days known
     const period: TimePeriod | false = await this.getValidPeriod(
       fluidStatus,
@@ -192,7 +191,7 @@ export default class DuelService {
     )
     if (period !== false) {
       // Fetch performance data
-      const fetchLastValidData: Array<PerformanceIndicator> =
+      const fetchLastValidData: PerformanceIndicator[] =
         await consumptionService.getPerformanceIndicators(
           period,
           TimeStep.DAY,
diff --git a/src/services/initialization.service.ts b/src/services/initialization.service.ts
index 9db717ad0..3ef1c9ba9 100644
--- a/src/services/initialization.service.ts
+++ b/src/services/initialization.service.ts
@@ -161,7 +161,7 @@ export default class InitializationService {
     })
     const {
       data: [trigger],
-    }: QueryResult<Array<Trigger>> = await this._client.query(triggerQuery)
+    }: QueryResult<Trigger[]> = await this._client.query(triggerQuery)
     if (trigger?._id) {
       this._client
         .getStackClient()
diff --git a/src/services/permissions.service.ts b/src/services/permissions.service.ts
index a16f3f371..78a8b7639 100644
--- a/src/services/permissions.service.ts
+++ b/src/services/permissions.service.ts
@@ -5,7 +5,7 @@ import { PERMISSIONS_DOCTYPE } from 'doctypes/io-cozy-permissions'
 
 const logStack = logger.namespace('challengeService')
 
-type PermissionsResponse = {
+interface PermissionsResponse {
   attributes: {
     type: string
     source_id: string
diff --git a/src/services/profileType.service.ts b/src/services/profileType.service.ts
index 5ab122541..d23b445e6 100644
--- a/src/services/profileType.service.ts
+++ b/src/services/profileType.service.ts
@@ -152,13 +152,12 @@ export default class ProfileTypeService {
       heating !== IndividualOrCollective.COLLECTIVE
     ) {
       correctionFacilities =
-        heatingData.adjustment_facilities['individual_heater_and_ventilation']
+        heatingData.adjustment_facilities.individual_heater_and_ventilation
     } else if (hasReplacedHeater === ThreeChoicesAnswer.YES) {
-      correctionFacilities =
-        heatingData.adjustment_facilities['individual_heater']
+      correctionFacilities = heatingData.adjustment_facilities.individual_heater
     } else if (hasInstalledVentilation === ThreeChoicesAnswer.YES) {
       correctionFacilities =
-        heatingData.adjustment_facilities['individual_ventilation']
+        heatingData.adjustment_facilities.individual_ventilation
     } else {
       correctionFacilities = 0
     }
diff --git a/src/services/queryRunner.service.ts b/src/services/queryRunner.service.ts
index 39041690f..441f4a27a 100644
--- a/src/services/queryRunner.service.ts
+++ b/src/services/queryRunner.service.ts
@@ -287,7 +287,7 @@ export default class QueryRunner {
     }
     return (
       doctypeMappings[fluidType]?.[timeStep] ||
-      doctypeMappings[fluidType]?.['default'] ||
+      doctypeMappings[fluidType]?.default ||
       'default'
     )
   }
diff --git a/src/services/quiz.service.ts b/src/services/quiz.service.ts
index d4ab41d50..c3341bc63 100644
--- a/src/services/quiz.service.ts
+++ b/src/services/quiz.service.ts
@@ -314,7 +314,7 @@ export default class QuizService {
         fluidTypes: useFluidTypes,
         isHome: !customQuestionEntity.singleFluid,
       })
-      maxLoad = maxLoad === null ? 0 : maxLoad
+      maxLoad = maxLoad ?? 0
       answers = this.getAnswersForNumberValue(maxLoad as number, unit)
     } else {
       // average
diff --git a/src/targets/services/fluidsPrices.ts b/src/targets/services/fluidsPrices.ts
index 2deb27c14..48898f8fa 100644
--- a/src/targets/services/fluidsPrices.ts
+++ b/src/targets/services/fluidsPrices.ts
@@ -288,7 +288,7 @@ const applyPrices = async (client: Client, fluidType: FluidType) => {
         )
 
         // If lastItem has a price, skip this day (in order to save perf)
-        const lastItem = data?.data && data.data[data.data.length - 1]
+        const lastItem = data?.data?.[data.data.length - 1]
         if (lastItem && priceData) {
           // if a price has been updated in backoffice re-calculates all price from the firstEditedPriceDate
           data?.data.forEach((element: DataloadEntity) => {
diff --git a/src/types/cozy-bar.d.ts b/src/types/cozy-bar.d.ts
index 3eb901e72..d618f5a98 100644
--- a/src/types/cozy-bar.d.ts
+++ b/src/types/cozy-bar.d.ts
@@ -2,7 +2,7 @@ import { ReactComponentElement } from 'react'
 
 /* eslint-disable @typescript-eslint/no-explicit-any */
 declare module 'cozy-bar' {
-  type TcozyBarInitOpts = {
+  interface TcozyBarInitOpts {
     appName: string
     appNamePrefix: string
     appSlug?: string
diff --git a/src/types/cozy-client.d.ts b/src/types/cozy-client.d.ts
index 8a7d20f28..0e1f45fd6 100644
--- a/src/types/cozy-client.d.ts
+++ b/src/types/cozy-client.d.ts
@@ -15,28 +15,30 @@ declare module 'cozy-client' {
   export function useClient(): Client
   export function Q(doctype: TDoctype): QueryDefinition
 
-  export type SortOptions = { [field: string]: 'asc' | 'desc' }
-  export type QueryDefinition = {
+  export interface SortOptions {
+    [field: string]: 'asc' | 'desc'
+  }
+  export interface QueryDefinition {
     checkSortOrder(opts: {
       sort: SortOptions
       selector: unknown
       indexedFields: unknown
     }): QueryDefinition
     getById(id: string): QueryDefinition
-    getByIds(ids: Array<string>): QueryDefinition
-    include(relations: Array<string>): QueryDefinition
-    indexFields(indexedFields: Array<string>): QueryDefinition
+    getByIds(ids: string[]): QueryDefinition
+    include(relations: string[]): QueryDefinition
+    indexFields(indexedFields: string[]): QueryDefinition
     partialIndex(partialFilter: object): QueryDefinition
     limitBy(limit: number): QueryDefinition
     offset(skip: number): QueryDefinition
     offsetBookmark(bookmark: string): QueryDefinition
     offsetCursor(cursor): QueryDefinition
     referencedBy(document: unknown): QueryDefinition
-    select(field: Array<string> | undefined): QueryDefinition
-    sortBy(sort: Array<SortOptions>): QueryDefinition
+    select(field: string[] | undefined): QueryDefinition
+    sortBy(sort: SortOptions[]): QueryDefinition
     where(selector: MongoSelector): QueryDefinition
   }
-  export type QueryResult<T, I = undefined> = {
+  export interface QueryResult<T, I = undefined> {
     bookmark: string
     next: boolean
     meta?: { count: number }
@@ -56,7 +58,7 @@ declare module 'cozy-client' {
   }
   export interface FindQueryOptions {
     bookmark?: string
-    fields?: Array<string>
+    fields?: string[]
     indexId?: string
     limit?: number
     skip?: number
@@ -297,10 +299,7 @@ declare module 'cozy-client' {
      * @param  {Array<Document>} documents - Documents to be hydrated
      * @returns {Array<HydratedDocument>}
      */
-    hydrateDocuments<D>(
-      doctype: TDoctype,
-      documents: Array<D>
-    ): Array<HydratedDocument>
+    hydrateDocuments<D>(doctype: TDoctype, documents: D[]): HydratedDocument[]
 
     /**
      * Resolves relationships on a document.
@@ -317,9 +316,7 @@ declare module 'cozy-client' {
   class CCozyClient {
     constructor(n: unknown): Client
   }
-  const CozyClient: {
-    new (n: unknown): Client
-  } = CCozyClient
+  const CozyClient: new (n: unknown) => Client = CCozyClient
   export default CozyClient
 
   export type HydratedDoc = any
diff --git a/src/utils/math.spec.ts b/src/utils/math.spec.ts
index 49e6737cb..e761efc03 100644
--- a/src/utils/math.spec.ts
+++ b/src/utils/math.spec.ts
@@ -3,8 +3,8 @@ import { getPercentage, sum } from './math'
 describe('math utilis test', () => {
   describe('getPercentage test', () => {
     it('should return the correct percent', () => {
-      const dataA: Array<number> = [1, 2, 3, 4, 5]
-      const dataB: Array<number> = [5, 4, 3]
+      const dataA: number[] = [1, 2, 3, 4, 5]
+      const dataB: number[] = [5, 4, 3]
       const result = getPercentage(dataA, dataB)
       expect(result).toBe(25)
     })
@@ -12,7 +12,7 @@ describe('math utilis test', () => {
 
   describe('sum test', () => {
     it('should return the correct sum', () => {
-      const dataA: Array<number> = [1, 2, 3, 4, 5]
+      const dataA: number[] = [1, 2, 3, 4, 5]
       const result = sum(dataA)
       expect(result).toBe(15)
     })
diff --git a/src/utils/math.ts b/src/utils/math.ts
index ddb43df2a..d0664a64f 100644
--- a/src/utils/math.ts
+++ b/src/utils/math.ts
@@ -4,12 +4,12 @@ export function getRoundFloat(data: number) {
   return Math.round((data + Number.EPSILON) * 100) / 100
 }
 
-export function getPercentage(dataA: Array<number>, dataB: Array<number>) {
+export function getPercentage(dataA: number[], dataB: number[]) {
   return Math.round(
     Number.parseFloat(((1 - _.mean(dataA) / _.mean(dataB)) * 100).toFixed(2))
   )
 }
 
-export function sum(dataA: Array<number>) {
+export function sum(dataA: number[]) {
   return Number.parseInt(_.sum(dataA))
 }
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 1f5abd90e..42473d7d0 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -327,7 +327,7 @@ export const formatListWithAnd = (array: string[]) => {
   }
 }
 
-export type OffPeakHours = {
+export interface OffPeakHours {
   start: { hour: number; minute: number }
   end: { hour: number; minute: number }
 }
diff --git a/yarn.lock b/yarn.lock
index 13c884000..458b6260d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1830,10 +1830,17 @@
   dependencies:
     eslint-visitor-keys "^3.3.0"
 
-"@eslint-community/regexpp@^4.4.0":
+"@eslint-community/eslint-utils@^4.4.0":
   version "4.4.0"
-  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.0.tgz#3e61c564fcd6b921cb789838631c5ee44df09403"
-  integrity sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==
+  resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
+  integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
+  dependencies:
+    eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.5.1":
+  version "4.9.1"
+  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4"
+  integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==
 
 "@eslint-community/regexpp@^4.6.1":
   version "4.8.0"
@@ -3087,6 +3094,11 @@
     expect "^29.0.0"
     pretty-format "^29.0.0"
 
+"@types/json-schema@^7.0.12":
+  version "7.0.13"
+  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85"
+  integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==
+
 "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
   version "7.0.11"
   resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
@@ -3227,6 +3239,11 @@
   resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
   integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
 
+"@types/semver@^7.5.0":
+  version "7.5.3"
+  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04"
+  integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==
+
 "@types/stack-utils@^1.0.1":
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
@@ -3261,30 +3278,32 @@
   dependencies:
     "@types/yargs-parser" "*"
 
-"@typescript-eslint/eslint-plugin@^5.56.0":
-  version "5.56.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz#e4fbb4d6dd8dab3e733485c1a44a02189ae75364"
-  integrity sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==
+"@typescript-eslint/eslint-plugin@^6.0.0":
+  version "6.7.4"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.4.tgz#057338df21b6062c2f2fc5999fbea8af9973ac6d"
+  integrity sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==
   dependencies:
-    "@eslint-community/regexpp" "^4.4.0"
-    "@typescript-eslint/scope-manager" "5.56.0"
-    "@typescript-eslint/type-utils" "5.56.0"
-    "@typescript-eslint/utils" "5.56.0"
+    "@eslint-community/regexpp" "^4.5.1"
+    "@typescript-eslint/scope-manager" "6.7.4"
+    "@typescript-eslint/type-utils" "6.7.4"
+    "@typescript-eslint/utils" "6.7.4"
+    "@typescript-eslint/visitor-keys" "6.7.4"
     debug "^4.3.4"
-    grapheme-splitter "^1.0.4"
-    ignore "^5.2.0"
-    natural-compare-lite "^1.4.0"
-    semver "^7.3.7"
-    tsutils "^3.21.0"
+    graphemer "^1.4.0"
+    ignore "^5.2.4"
+    natural-compare "^1.4.0"
+    semver "^7.5.4"
+    ts-api-utils "^1.0.1"
 
-"@typescript-eslint/parser@^5.56.0":
-  version "5.56.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.56.0.tgz#42eafb44b639ef1dbd54a3dbe628c446ca753ea6"
-  integrity sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==
+"@typescript-eslint/parser@^6.0.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b"
+  integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==
   dependencies:
-    "@typescript-eslint/scope-manager" "5.56.0"
-    "@typescript-eslint/types" "5.56.0"
-    "@typescript-eslint/typescript-estree" "5.56.0"
+    "@typescript-eslint/scope-manager" "6.21.0"
+    "@typescript-eslint/types" "6.21.0"
+    "@typescript-eslint/typescript-estree" "6.21.0"
+    "@typescript-eslint/visitor-keys" "6.21.0"
     debug "^4.3.4"
 
 "@typescript-eslint/parser@^6.7.5":
@@ -3298,14 +3317,6 @@
     "@typescript-eslint/visitor-keys" "6.19.1"
     debug "^4.3.4"
 
-"@typescript-eslint/scope-manager@5.56.0":
-  version "5.56.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz#62b4055088903b5254fa20403010e1c16d6ab725"
-  integrity sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==
-  dependencies:
-    "@typescript-eslint/types" "5.56.0"
-    "@typescript-eslint/visitor-keys" "5.56.0"
-
 "@typescript-eslint/scope-manager@5.62.0":
   version "5.62.0"
   resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c"
@@ -3322,20 +3333,31 @@
     "@typescript-eslint/types" "6.19.1"
     "@typescript-eslint/visitor-keys" "6.19.1"
 
-"@typescript-eslint/type-utils@5.56.0":
-  version "5.56.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz#e6f004a072f09c42e263dc50e98c70b41a509685"
-  integrity sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==
+"@typescript-eslint/scope-manager@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1"
+  integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==
   dependencies:
-    "@typescript-eslint/typescript-estree" "5.56.0"
-    "@typescript-eslint/utils" "5.56.0"
-    debug "^4.3.4"
-    tsutils "^3.21.0"
+    "@typescript-eslint/types" "6.21.0"
+    "@typescript-eslint/visitor-keys" "6.21.0"
 
-"@typescript-eslint/types@5.56.0":
-  version "5.56.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.56.0.tgz#b03f0bfd6fa2afff4e67c5795930aff398cbd834"
-  integrity sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==
+"@typescript-eslint/scope-manager@6.7.4":
+  version "6.7.4"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.4.tgz#a484a17aa219e96044db40813429eb7214d7b386"
+  integrity sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==
+  dependencies:
+    "@typescript-eslint/types" "6.7.4"
+    "@typescript-eslint/visitor-keys" "6.7.4"
+
+"@typescript-eslint/type-utils@6.7.4":
+  version "6.7.4"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.4.tgz#847cd3b59baf948984499be3e0a12ff07373e321"
+  integrity sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==
+  dependencies:
+    "@typescript-eslint/typescript-estree" "6.7.4"
+    "@typescript-eslint/utils" "6.7.4"
+    debug "^4.3.4"
+    ts-api-utils "^1.0.1"
 
 "@typescript-eslint/types@5.62.0":
   version "5.62.0"
@@ -3347,18 +3369,15 @@
   resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.19.1.tgz#2d4c9d492a63ede15e7ba7d129bdf7714b77f771"
   integrity sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==
 
-"@typescript-eslint/typescript-estree@5.56.0":
-  version "5.56.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz#48342aa2344649a03321e74cab9ccecb9af086c3"
-  integrity sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==
-  dependencies:
-    "@typescript-eslint/types" "5.56.0"
-    "@typescript-eslint/visitor-keys" "5.56.0"
-    debug "^4.3.4"
-    globby "^11.1.0"
-    is-glob "^4.0.3"
-    semver "^7.3.7"
-    tsutils "^3.21.0"
+"@typescript-eslint/types@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d"
+  integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==
+
+"@typescript-eslint/types@6.7.4":
+  version "6.7.4"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.4.tgz#5d358484d2be986980c039de68e9f1eb62ea7897"
+  integrity sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==
 
 "@typescript-eslint/typescript-estree@5.62.0":
   version "5.62.0"
@@ -3387,19 +3406,45 @@
     semver "^7.5.4"
     ts-api-utils "^1.0.1"
 
-"@typescript-eslint/utils@5.56.0":
-  version "5.56.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.56.0.tgz#db64705409b9a15546053fb4deb2888b37df1f41"
-  integrity sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==
+"@typescript-eslint/typescript-estree@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46"
+  integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==
   dependencies:
-    "@eslint-community/eslint-utils" "^4.2.0"
-    "@types/json-schema" "^7.0.9"
-    "@types/semver" "^7.3.12"
-    "@typescript-eslint/scope-manager" "5.56.0"
-    "@typescript-eslint/types" "5.56.0"
-    "@typescript-eslint/typescript-estree" "5.56.0"
-    eslint-scope "^5.1.1"
-    semver "^7.3.7"
+    "@typescript-eslint/types" "6.21.0"
+    "@typescript-eslint/visitor-keys" "6.21.0"
+    debug "^4.3.4"
+    globby "^11.1.0"
+    is-glob "^4.0.3"
+    minimatch "9.0.3"
+    semver "^7.5.4"
+    ts-api-utils "^1.0.1"
+
+"@typescript-eslint/typescript-estree@6.7.4":
+  version "6.7.4"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.4.tgz#f2baece09f7bb1df9296e32638b2e1130014ef1a"
+  integrity sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==
+  dependencies:
+    "@typescript-eslint/types" "6.7.4"
+    "@typescript-eslint/visitor-keys" "6.7.4"
+    debug "^4.3.4"
+    globby "^11.1.0"
+    is-glob "^4.0.3"
+    semver "^7.5.4"
+    ts-api-utils "^1.0.1"
+
+"@typescript-eslint/utils@6.7.4":
+  version "6.7.4"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.4.tgz#2236f72b10e38277ee05ef06142522e1de470ff2"
+  integrity sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==
+  dependencies:
+    "@eslint-community/eslint-utils" "^4.4.0"
+    "@types/json-schema" "^7.0.12"
+    "@types/semver" "^7.5.0"
+    "@typescript-eslint/scope-manager" "6.7.4"
+    "@typescript-eslint/types" "6.7.4"
+    "@typescript-eslint/typescript-estree" "6.7.4"
+    semver "^7.5.4"
 
 "@typescript-eslint/utils@^5.10.0":
   version "5.62.0"
@@ -3415,14 +3460,6 @@
     eslint-scope "^5.1.1"
     semver "^7.3.7"
 
-"@typescript-eslint/visitor-keys@5.56.0":
-  version "5.56.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz#f19eb297d972417eb13cb69b35b3213e13cc214f"
-  integrity sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==
-  dependencies:
-    "@typescript-eslint/types" "5.56.0"
-    eslint-visitor-keys "^3.3.0"
-
 "@typescript-eslint/visitor-keys@5.62.0":
   version "5.62.0"
   resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e"
@@ -3439,6 +3476,22 @@
     "@typescript-eslint/types" "6.19.1"
     eslint-visitor-keys "^3.4.1"
 
+"@typescript-eslint/visitor-keys@6.21.0":
+  version "6.21.0"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47"
+  integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==
+  dependencies:
+    "@typescript-eslint/types" "6.21.0"
+    eslint-visitor-keys "^3.4.1"
+
+"@typescript-eslint/visitor-keys@6.7.4":
+  version "6.7.4"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.4.tgz#80dfecf820fc67574012375859085f91a4dff043"
+  integrity sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==
+  dependencies:
+    "@typescript-eslint/types" "6.7.4"
+    eslint-visitor-keys "^3.4.1"
+
 "@webassemblyjs/ast@1.9.0":
   version "1.9.0"
   resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@@ -7952,7 +8005,7 @@ eslint-plugin-prettier@3.1.2:
   dependencies:
     prettier-linter-helpers "^1.0.0"
 
-eslint-plugin-prettier@^5.0.0:
+eslint-plugin-prettier@5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a"
   integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==
@@ -9412,11 +9465,6 @@ 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==
-
 graphemer@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
@@ -9971,6 +10019,11 @@ ignore@^5.2.0:
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
   integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
 
+ignore@^5.2.4:
+  version "5.2.4"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
+  integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
 image-size@^0.5.1:
   version "0.5.5"
   resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
@@ -12854,11 +12907,6 @@ nanomatch@^1.2.1, nanomatch@^1.2.9:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
-natural-compare-lite@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
-  integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
-
 natural-compare@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-- 
GitLab