diff --git a/package.json b/package.json
index 77321704923d9d63390cece65f1fa506bf089f0a..567653854071b60a640b8a3afcc5e341eecaa310 100644
--- a/package.json
+++ b/package.json
@@ -119,7 +119,7 @@
     "eslint-config-prettier": "^8.8.0",
     "eslint-plugin-jest": "^27.2.3",
     "eslint-plugin-jsdoc": "^46.8.2",
-    "eslint-plugin-prettier": "^4.2.1",
+    "eslint-plugin-prettier": "^5.0.0",
     "eslint-plugin-react": "7.32.2",
     "eslint-plugin-react-hooks": "^4.6.0",
     "git-directory-deploy": "1.5.1",
@@ -132,7 +132,7 @@
     "mjml": "^4.10.2",
     "mjml-web": "^4.10.0",
     "npm-run-all": "^4.1.5",
-    "prettier": "^2.8.5",
+    "prettier": "^3.0.0",
     "prettier-eslint": "^15.0.1",
     "raw-loader": "^4.0.2",
     "react-test-renderer": "16.14.0",
diff --git a/src/components/Challenge/ChallengeCardUnlocked/ChallengeCardUnlocked.tsx b/src/components/Challenge/ChallengeCardUnlocked/ChallengeCardUnlocked.tsx
index 97aad463f6ff9bdea280ea1e81ab68f3144b027e..fb2e03e393890f33155d052fdb4a9dd1e2012505 100644
--- a/src/components/Challenge/ChallengeCardUnlocked/ChallengeCardUnlocked.tsx
+++ b/src/components/Challenge/ChallengeCardUnlocked/ChallengeCardUnlocked.tsx
@@ -46,9 +46,8 @@ const ChallengeCardUnlocked = ({
   const launchChallenge = useCallback(async () => {
     if (fluidTypes.length > 0 && statusRequirementOk) {
       const challengeService = new ChallengeService(client)
-      const updatedChallenge = await challengeService.startUserChallenge(
-        userChallenge
-      )
+      const updatedChallenge =
+        await challengeService.startUserChallenge(userChallenge)
       await UsageEventService.addEvent(client, {
         type: UsageEventType.CHALLENGE_LAUNCH_EVENT,
         target: userChallenge.id,
diff --git a/src/components/Duel/DuelUnlocked/DuelUnlocked.tsx b/src/components/Duel/DuelUnlocked/DuelUnlocked.tsx
index c5da4d74ed98df664d3aa769f0033eb33fcd92ff..60693ddd57f0991b1af885043dba05fca14c212a 100644
--- a/src/components/Duel/DuelUnlocked/DuelUnlocked.tsx
+++ b/src/components/Duel/DuelUnlocked/DuelUnlocked.tsx
@@ -34,9 +34,8 @@ const DuelUnlocked = ({ userChallenge }: { userChallenge: UserChallenge }) => {
       userChallenge,
       UserChallengeUpdateFlag.DUEL_START
     )
-    const dataloads = await challengeService.getUserChallengeDataload(
-      updatedChallenge
-    )
+    const dataloads =
+      await challengeService.getUserChallengeDataload(updatedChallenge)
     await UsageEventService.addEvent(client, {
       type: UsageEventType.DUEL_LAUNCH_EVENT,
       target: userChallenge.duel.id,
diff --git a/src/components/Ecogesture/EcogestureTabsView.tsx b/src/components/Ecogesture/EcogestureTabsView.tsx
index 2cd5f92b7a15fd4f7f964c17531e5548f0c9f3e2..39e1598c90cff947cb7b77383ba231d64c59d1d9 100644
--- a/src/components/Ecogesture/EcogestureTabsView.tsx
+++ b/src/components/Ecogesture/EcogestureTabsView.tsx
@@ -144,9 +144,8 @@ const EcogestureTabsView = () => {
         dispatch(updateProfile({ ecogestureHash }))
       }
 
-      const availableList = await ecogestureService.getEcogestureListByProfile(
-        profileEcogesture
-      )
+      const availableList =
+        await ecogestureService.getEcogestureListByProfile(profileEcogesture)
       const filteredList = availableList.filter(
         ecogesture => ecogesture.viewedInSelection === false
       )
diff --git a/src/components/Konnector/KonnectorViewerCard.tsx b/src/components/Konnector/KonnectorViewerCard.tsx
index e0e44542b1259656304f6124cbffa61466ccc539..076cf8227be13e23e36fd72d2faed22a744315df 100644
--- a/src/components/Konnector/KonnectorViewerCard.tsx
+++ b/src/components/Konnector/KonnectorViewerCard.tsx
@@ -233,9 +233,8 @@ const KonnectorViewerCard = ({
           )
         }
         // const partnersInfo = await partnersInfoService.getPartnersInfo()
-        const updatedFluidStatus = await fluidService.getFluidStatus(
-          partnersInfo
-        )
+        const updatedFluidStatus =
+          await fluidService.getFluidStatus(partnersInfo)
         dispatch(setFluidStatus(updatedFluidStatus))
       }
 
diff --git a/src/components/ProfileType/ProfileTypeFinished/ProfileTypeFinished.tsx b/src/components/ProfileType/ProfileTypeFinished/ProfileTypeFinished.tsx
index f4b2f0ef36f99fe06ef170bae22613f63cbf55d0..dc982cffd85df9a6fcfeb3ee3b98e7f72b006afe 100644
--- a/src/components/ProfileType/ProfileTypeFinished/ProfileTypeFinished.tsx
+++ b/src/components/ProfileType/ProfileTypeFinished/ProfileTypeFinished.tsx
@@ -56,9 +56,8 @@ const ProfileTypeFinished = ({ profileType }: { profileType: ProfileType }) => {
       const myProfileTypes: ProfileType[] | null =
         await profileTypeEntityService.getAllProfileTypes(chosenPeriod)
       if (myProfileTypes !== null) {
-        const destroyPT = await profileTypeEntityService.deleteProfileTypes(
-          myProfileTypes
-        )
+        const destroyPT =
+          await profileTypeEntityService.deleteProfileTypes(myProfileTypes)
         if (destroyPT) {
           await createNewProfileType(client, consistentProfileType)
           setIsSaved(true)
diff --git a/src/components/Splash/SplashRoot.tsx b/src/components/Splash/SplashRoot.tsx
index 49d280d3116c663c49bf5d8c2fe2e2c70041ed9c..7613a7daf3da01bf3dd98cfa73722e4a997b2dc6 100644
--- a/src/components/Splash/SplashRoot.tsx
+++ b/src/components/Splash/SplashRoot.tsx
@@ -98,9 +98,8 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => {
     async (profile: Profile, partnersInfo: PartnersInfo) => {
       if (partnersInfo.notification_activated && !profile?.isFirstConnection) {
         const fluidService = new FluidService(client)
-        const _updatedFluidStatus = await fluidService.getFluidStatus(
-          partnersInfo
-        )
+        const _updatedFluidStatus =
+          await fluidService.getFluidStatus(partnersInfo)
         dispatch(setFluidStatus(_updatedFluidStatus))
       }
     },
@@ -163,9 +162,8 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => {
   const loadProfileType = useCallback(
     async (profileType: ProfileType) => {
       const profileTypeEntityService = new ProfileTypeEntityService(client)
-      const updatedProfileType = await profileTypeEntityService.saveProfileType(
-        profileType
-      )
+      const updatedProfileType =
+        await profileTypeEntityService.saveProfileType(profileType)
       if (updatedProfileType) {
         dispatch(setProfileType(updatedProfileType))
       }
diff --git a/src/services/action.service.ts b/src/services/action.service.ts
index cede08d02afbcb07b1c6254268389ffdc3e2e298..cf27a1fa83e416d012f2a13b6184551d973c78dd 100644
--- a/src/services/action.service.ts
+++ b/src/services/action.service.ts
@@ -58,9 +58,8 @@ export default class ActionService {
    */
   public async getDefaultActions(): Promise<Ecogesture[]> {
     const actionIds = ['ECOGESTURE0030', 'ECOGESTURE0014', 'ECOGESTURE0010']
-    const defaultActions = await this._ecogestureService.getEcogesturesByIds(
-      actionIds
-    )
+    const defaultActions =
+      await this._ecogestureService.getEcogesturesByIds(actionIds)
     return defaultActions
   }
 
diff --git a/src/services/challenge.service.spec.ts b/src/services/challenge.service.spec.ts
index 2f0c2bb070680dba3d22da91e25c02480094f487..146d9121abe367e994c7e466661b2d5221eddd7b 100644
--- a/src/services/challenge.service.spec.ts
+++ b/src/services/challenge.service.spec.ts
@@ -174,9 +174,8 @@ describe('Challenge service', () => {
       mockGetUserExplorationFromExplorationEntities.mockReturnValue(
         userExploration
       )
-      const result = await challengeService.buildUserChallengeList(
-        fluidStatusData
-      )
+      const result =
+        await challengeService.buildUserChallengeList(fluidStatusData)
       expect(result).toEqual(userChallengeData)
     })
     it('should return all user challenge plus create one missing', async () => {
@@ -191,9 +190,8 @@ describe('Challenge service', () => {
       mockClient.query.mockResolvedValueOnce(mockQueryResultQuiz)
       mockClient.query.mockResolvedValueOnce(mockQueryResultExploration)
       mockClient.query.mockResolvedValueOnce(mockQueryResultUser)
-      const result = await challengeService.buildUserChallengeList(
-        fluidStatusData
-      )
+      const result =
+        await challengeService.buildUserChallengeList(fluidStatusData)
       expect(result).toEqual(userChallengeData)
     })
     it('should create all user challenge', async () => {
@@ -214,9 +212,8 @@ describe('Challenge service', () => {
       mockGetUserExplorationFromExplorationEntities.mockReturnValue(
         explorationDefault
       )
-      const result = await challengeService.buildUserChallengeList(
-        fluidStatusData
-      )
+      const result =
+        await challengeService.buildUserChallengeList(fluidStatusData)
       expect(result).toEqual(userChallengeDefault)
     })
   })
@@ -396,9 +393,8 @@ describe('Challenge service', () => {
         },
       }
       mockGetGraphData.mockResolvedValueOnce(graphData)
-      const result = await challengeService.getUserChallengeDataload(
-        updatedUserChallenge
-      )
+      const result =
+        await challengeService.getUserChallengeDataload(updatedUserChallenge)
       expect(result).toEqual(graphData.actualData)
     })
     it('should return a empty dataload list when duel has no start date', async () => {
diff --git a/src/services/challenge.service.ts b/src/services/challenge.service.ts
index 8cfaeffcdce83867d563b3ad94a7645eb6c75597..516c73913b2e54bea6e268f8df0a5c7f5678c349 100644
--- a/src/services/challenge.service.ts
+++ b/src/services/challenge.service.ts
@@ -330,9 +330,8 @@ export default class ChallengeService {
     const {
       data: challengeEntityList,
       included: duelEntities,
-    }: QueryResult<ChallengeEntity[], DuelEntity[]> = await this._client.query(
-      queryChallengeEntity
-    )
+    }: QueryResult<ChallengeEntity[], DuelEntity[]> =
+      await this._client.query(queryChallengeEntity)
     const {
       included: explorationEntities,
     }: QueryResult<ChallengeEntity[], ExplorationEntity[]> =
diff --git a/src/services/connection.service.ts b/src/services/connection.service.ts
index 500955376ca4980422bbbf4248071349f5ddefbe..b37854fb64c6cf4434eb0f84d4ae253f4ae1e863 100644
--- a/src/services/connection.service.ts
+++ b/src/services/connection.service.ts
@@ -30,9 +30,8 @@ export default class ConnectionService {
   ): Promise<{ account: Account; trigger: Trigger }> {
     // Retrieve konnector
     const konnectorService = new KonnectorService(this._client)
-    const konnector: Konnector | null = await konnectorService.getKonnector(
-      konnectorId
-    )
+    const konnector: Konnector | null =
+      await konnectorService.getKonnector(konnectorId)
     if (!konnector?.slug) {
       const errorMessage = `Could not find konnector for ${konnectorId}`
       logStack('error', errorMessage)
diff --git a/src/services/consumption.service.spec.ts b/src/services/consumption.service.spec.ts
index ba675a859c898aac29c919567cb254f70d7509d1..bd5f44bccffefe409e8a0641b0b4757c8e983a6a 100644
--- a/src/services/consumption.service.spec.ts
+++ b/src/services/consumption.service.spec.ts
@@ -425,9 +425,8 @@ describe('Consumption service', () => {
       mockGetFirstDateData.mockResolvedValueOnce(
         DateTime.fromISO('2020-09-03T23:59:59.999Z')
       )
-      const result = await consumptionDataManager.fetchAllFirstDateData(
-        fluidTypes
-      )
+      const result =
+        await consumptionDataManager.fetchAllFirstDateData(fluidTypes)
       expect(result).toEqual(expectedResult)
     })
     it('should return the latest date data of All fluid', async () => {
@@ -450,9 +449,8 @@ describe('Consumption service', () => {
         DateTime.fromISO('2020-09-03T23:59:59.999Z'),
         DateTime.fromISO('2020-09-01T23:59:59.999Z'),
       ]
-      const result = await consumptionDataManager.fetchAllFirstDateData(
-        fluidTypes
-      )
+      const result =
+        await consumptionDataManager.fetchAllFirstDateData(fluidTypes)
       expect(result).toEqual(expectedResult)
     })
   })
@@ -464,9 +462,8 @@ describe('Consumption service', () => {
       mockGetLastDateData.mockResolvedValueOnce(
         DateTime.fromISO('2020-09-03T23:59:59.999Z')
       )
-      const result = await consumptionDataManager.fetchAllLastDateData(
-        fluidTypes
-      )
+      const result =
+        await consumptionDataManager.fetchAllLastDateData(fluidTypes)
       expect(result).toEqual(expectedResult)
     })
     it('should return the latest date data of All fluid', async () => {
@@ -489,9 +486,8 @@ describe('Consumption service', () => {
         DateTime.fromISO('2020-09-03T23:59:59.999Z'),
         DateTime.fromISO('2020-09-01T23:59:59.999Z'),
       ]
-      const result = await consumptionDataManager.fetchAllLastDateData(
-        fluidTypes
-      )
+      const result =
+        await consumptionDataManager.fetchAllLastDateData(fluidTypes)
       expect(result).toEqual(expectedResult)
     })
   })
diff --git a/src/services/enedisMonthlyAnalysisData.service.ts b/src/services/enedisMonthlyAnalysisData.service.ts
index a46ff453c9abb88f3f1b82dfac789e3d258ee991..dcbcb3a2bc2a19b96cc38fd3cf44cad6ead1d09f 100644
--- a/src/services/enedisMonthlyAnalysisData.service.ts
+++ b/src/services/enedisMonthlyAnalysisData.service.ts
@@ -31,9 +31,8 @@ export default class EnedisMonthlyAnalysisDataService {
     const query: QueryDefinition = Q(ENEDIS_MONTHLY_ANALYSIS_DATA_DOCTYPE)
     const {
       data: enedisMonthlyAnalysisData,
-    }: QueryResult<EnedisMonthlyAnalysisData[]> = await this._client.query(
-      query
-    )
+    }: QueryResult<EnedisMonthlyAnalysisData[]> =
+      await this._client.query(query)
     return enedisMonthlyAnalysisData
   }
 
diff --git a/src/services/exploration.service.spec.ts b/src/services/exploration.service.spec.ts
index ebd9e8870624f574f962052d5f04bc10eda6aeea..cb9ed9de840f7052200cf950decdbb4614b4a420 100644
--- a/src/services/exploration.service.spec.ts
+++ b/src/services/exploration.service.spec.ts
@@ -43,9 +43,8 @@ describe('Exploration service', () => {
       }
       const explorationId = 'EXPLORATION001'
       mockClient.query.mockResolvedValueOnce(mockQueryResult)
-      const result = await explorationService.getExplorationEntityById(
-        explorationId
-      )
+      const result =
+        await explorationService.getExplorationEntityById(explorationId)
       expect(result).toEqual(explorationEntity)
     })
   })
diff --git a/src/services/fluid.service.spec.ts b/src/services/fluid.service.spec.ts
index fd3878c55a1cc99c81652e2c3bead30182c10de4..a21c59d1b82087d3d46a3a7c6cf55d8080cb5eed 100644
--- a/src/services/fluid.service.spec.ts
+++ b/src/services/fluid.service.spec.ts
@@ -560,9 +560,7 @@ describe('Fluid service', () => {
           },
         },
       ]
-      const result: FluidType[] = await FluidService.getOldFluidData(
-        mockFluidStatus
-      )
+      const result = await FluidService.getOldFluidData(mockFluidStatus)
       expect(result).toEqual([FluidType.ELECTRICITY])
     })
 
@@ -595,9 +593,7 @@ describe('Fluid service', () => {
           },
         },
       ]
-      const result: FluidType[] = await FluidService.getOldFluidData(
-        mockFluidStatus
-      )
+      const result = await FluidService.getOldFluidData(mockFluidStatus)
       expect(result).toEqual([])
     })
 
@@ -630,9 +626,8 @@ describe('Fluid service', () => {
           },
         },
       ]
-      const result: FluidType[] = await FluidService.getOldFluidData(
-        mockFluidStatus
-      )
+      const result: FluidType[] =
+        await FluidService.getOldFluidData(mockFluidStatus)
       expect(result).toEqual([])
     })
 
@@ -665,9 +660,8 @@ describe('Fluid service', () => {
           },
         },
       ]
-      const result: FluidType[] = await FluidService.getOldFluidData(
-        mockFluidStatus
-      )
+      const result: FluidType[] =
+        await FluidService.getOldFluidData(mockFluidStatus)
       expect(result).toEqual([])
     })
 
diff --git a/src/services/initialization.service.ts b/src/services/initialization.service.ts
index 1383331b40a76f3cbf4e5750e51add7d7468c60a..4f9a8dddab1525aa6fc53bd0b712e354d992e28f 100644
--- a/src/services/initialization.service.ts
+++ b/src/services/initialization.service.ts
@@ -585,9 +585,8 @@ export default class InitializationService {
     const startTime = performance.now()
     const challengeService = new ChallengeService(this._client)
     try {
-      const userChallengeList = await challengeService.buildUserChallengeList(
-        fluidStatus
-      )
+      const userChallengeList =
+        await challengeService.buildUserChallengeList(fluidStatus)
       if (userChallengeList) {
         logDuration('[Initialization] initUserChallenges', startTime)
         return userChallengeList
diff --git a/src/services/profileType.service.ts b/src/services/profileType.service.ts
index ee742cec125aa3e34247b92da4666f3d752fcd5c..4f75e33ae964e472df96119dd8d920dc84bc78cc 100644
--- a/src/services/profileType.service.ts
+++ b/src/services/profileType.service.ts
@@ -373,9 +373,8 @@ export default class ProfileTypeService {
         warmingFluid !== null &&
         (fluidType as number) === (warmingFluid as number)
       ) {
-        detailsMonthlyForecast.heatingConsumption = await this.getMonthHeating(
-          month
-        )
+        detailsMonthlyForecast.heatingConsumption =
+          await this.getMonthHeating(month)
       }
       if (
         hotWaterFluid !== null &&
diff --git a/src/services/quiz.service.ts b/src/services/quiz.service.ts
index bb0a4f72cfaff373803692dda8b16590095984e1..ffc47a65192bb41959922668371673eac095e95e 100644
--- a/src/services/quiz.service.ts
+++ b/src/services/quiz.service.ts
@@ -37,9 +37,8 @@ export default class QuizService {
    */
   public async getAllQuizEntities(): Promise<QuizEntity[]> {
     const query: QueryDefinition = Q(QUIZ_DOCTYPE)
-    const { data: quizs }: QueryResult<QuizEntity[]> = await this._client.query(
-      query
-    )
+    const { data: quizs }: QueryResult<QuizEntity[]> =
+      await this._client.query(query)
     return quizs
   }
 
diff --git a/src/services/triggers.service.ts b/src/services/triggers.service.ts
index d3478fcfc809d106fbe1b5841b773f51585deef6..3540fad12ceb7984bbe6baf52ee7c9bdddc9d852 100644
--- a/src/services/triggers.service.ts
+++ b/src/services/triggers.service.ts
@@ -58,9 +58,8 @@ export default class TriggerService {
       .indexFields(['cozyMetadata.updatedAt'])
       .sortBy([{ 'cozyMetadata.updatedAt': 'desc' }])
       .limitBy(1)
-    const { data: triggers }: QueryResult<Trigger[]> = await this._client.query(
-      query
-    )
+    const { data: triggers }: QueryResult<Trigger[]> =
+      await this._client.query(query)
     return triggers[0] ? triggers[0] : null
   }
 
@@ -73,9 +72,8 @@ export default class TriggerService {
       .indexFields(['cozyMetadata.createdAt'])
       .sortBy([{ 'cozyMetadata.createdAt': 'desc' }])
       .limitBy(1)
-    const { data: triggers }: QueryResult<Trigger[]> = await this._client.query(
-      query
-    )
+    const { data: triggers }: QueryResult<Trigger[]> =
+      await this._client.query(query)
     return triggers[0] ? triggers[0] : null
   }
 
diff --git a/yarn.lock b/yarn.lock
index 2616ea33eb3c11f95fa1c0d1bab60128a005969b..b11902566e749de74669aeb9429b6ec6b74756f6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2206,6 +2206,18 @@
     mkdirp "^1.0.4"
     rimraf "^3.0.2"
 
+"@pkgr/utils@^2.3.1":
+  version "2.4.2"
+  resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc"
+  integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==
+  dependencies:
+    cross-spawn "^7.0.3"
+    fast-glob "^3.3.0"
+    is-glob "^4.0.3"
+    open "^9.1.0"
+    picocolors "^1.0.0"
+    tslib "^2.6.0"
+
 "@pollyjs/adapter-node-http@5.1.1":
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/@pollyjs/adapter-node-http/-/adapter-node-http-5.1.1.tgz#b717f28eda10e76e80c821f33d71b1cf064f41d0"
@@ -4388,6 +4400,13 @@ bowser@^2.4.0:
   resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f"
   integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==
 
+bplist-parser@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e"
+  integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==
+  dependencies:
+    big-integer "^1.6.44"
+
 brace-expansion@^1.1.7:
   version "1.1.11"
   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -4581,6 +4600,13 @@ builtins@^1.0.3:
   resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
   integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==
 
+bundle-name@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a"
+  integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==
+  dependencies:
+    run-applescript "^5.0.0"
+
 bundlemon-utils@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/bundlemon-utils/-/bundlemon-utils-1.0.0.tgz#9c3e10f09107568913db2e69a3d3317a82b00633"
@@ -6786,6 +6812,24 @@ deepmerge@^4.2.2:
   resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
   integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
 
+default-browser-id@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c"
+  integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==
+  dependencies:
+    bplist-parser "^0.2.0"
+    untildify "^4.0.0"
+
+default-browser@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da"
+  integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==
+  dependencies:
+    bundle-name "^3.0.0"
+    default-browser-id "^3.0.0"
+    execa "^7.1.1"
+    titleize "^3.0.0"
+
 default-gateway@^4.2.0:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
@@ -6806,6 +6850,11 @@ define-lazy-prop@^2.0.0:
   resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
   integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
 
+define-lazy-prop@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f"
+  integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==
+
 define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
@@ -7604,12 +7653,13 @@ eslint-plugin-prettier@3.1.2:
   dependencies:
     prettier-linter-helpers "^1.0.0"
 
-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==
+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==
   dependencies:
     prettier-linter-helpers "^1.0.0"
+    synckit "^0.8.5"
 
 eslint-plugin-react-hooks@2.3.0:
   version "2.3.0"
@@ -8092,6 +8142,21 @@ execa@^4.0.0:
     signal-exit "^3.0.2"
     strip-final-newline "^2.0.0"
 
+execa@^5.0.0:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+  integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+  dependencies:
+    cross-spawn "^7.0.3"
+    get-stream "^6.0.0"
+    human-signals "^2.1.0"
+    is-stream "^2.0.0"
+    merge-stream "^2.0.0"
+    npm-run-path "^4.0.1"
+    onetime "^5.1.2"
+    signal-exit "^3.0.3"
+    strip-final-newline "^2.0.0"
+
 execa@^6.1.0:
   version "6.1.0"
   resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20"
@@ -8107,6 +8172,21 @@ execa@^6.1.0:
     signal-exit "^3.0.7"
     strip-final-newline "^3.0.0"
 
+execa@^7.1.1:
+  version "7.2.0"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9"
+  integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==
+  dependencies:
+    cross-spawn "^7.0.3"
+    get-stream "^6.0.1"
+    human-signals "^4.3.0"
+    is-stream "^3.0.0"
+    merge-stream "^2.0.0"
+    npm-run-path "^5.1.0"
+    onetime "^6.0.0"
+    signal-exit "^3.0.7"
+    strip-final-newline "^3.0.0"
+
 exit@^0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
@@ -8290,6 +8370,17 @@ fast-glob@^3.2.9:
     merge2 "^1.3.0"
     micromatch "^4.0.4"
 
+fast-glob@^3.3.0:
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
+  integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
+  dependencies:
+    "@nodelib/fs.stat" "^2.0.2"
+    "@nodelib/fs.walk" "^1.2.3"
+    glob-parent "^5.1.2"
+    merge2 "^1.3.0"
+    micromatch "^4.0.4"
+
 fast-json-stable-stringify@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -8805,7 +8896,7 @@ get-stream@^5.0.0:
   dependencies:
     pump "^3.0.0"
 
-get-stream@^6.0.1:
+get-stream@^6.0.0, get-stream@^6.0.1:
   version "6.0.1"
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
   integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
@@ -9485,11 +9576,21 @@ human-signals@^1.1.1:
   resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
   integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
 
+human-signals@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+  integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+
 human-signals@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5"
   integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==
 
+human-signals@^4.3.0:
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2"
+  integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==
+
 human-size@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/human-size/-/human-size-1.1.0.tgz#052562be999841c037022c20259990c56ea996f9"
@@ -9938,6 +10039,11 @@ is-docker@^2.0.0, is-docker@^2.1.1:
   resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
   integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
 
+is-docker@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200"
+  integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==
+
 is-extendable@^0.1.0, is-extendable@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
@@ -10006,6 +10112,13 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3:
   resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835"
   integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==
 
+is-inside-container@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4"
+  integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==
+  dependencies:
+    is-docker "^3.0.0"
+
 is-negative-zero@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
@@ -12614,7 +12727,7 @@ npm-run-path@^2.0.0:
   dependencies:
     path-key "^2.0.0"
 
-npm-run-path@^4.0.0:
+npm-run-path@^4.0.0, npm-run-path@^4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
   integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
@@ -12866,7 +12979,7 @@ onetime@^2.0.0:
   dependencies:
     mimic-fn "^1.0.0"
 
-onetime@^5.1.0:
+onetime@^5.1.0, onetime@^5.1.2:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
   integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
@@ -12897,6 +13010,16 @@ open@8.4.0:
     is-docker "^2.1.1"
     is-wsl "^2.2.0"
 
+open@^9.1.0:
+  version "9.1.0"
+  resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6"
+  integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==
+  dependencies:
+    default-browser "^4.0.0"
+    define-lazy-prop "^3.0.0"
+    is-inside-container "^1.0.0"
+    is-wsl "^2.2.0"
+
 opener@^1.5.1:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
@@ -13764,10 +13887,10 @@ prettier@^2.5.1:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
   integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
 
-prettier@^2.8.5:
-  version "2.8.6"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.6.tgz#5c174b29befd507f14b83e3c19f83fdc0e974b71"
-  integrity sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==
+prettier@^3.0.0:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643"
+  integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==
 
 pretty-error@^2.0.2:
   version "2.1.2"
@@ -15008,6 +15131,13 @@ rsvp@^4.8.4:
   resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
   integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
 
+run-applescript@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c"
+  integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==
+  dependencies:
+    execa "^5.0.0"
+
 run-async@^2.2.0:
   version "2.4.1"
   resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@@ -15399,7 +15529,7 @@ sigmund@^1.0.1:
   resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
   integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==
 
-signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7:
+signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
   version "3.0.7"
   resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
   integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
@@ -16256,6 +16386,14 @@ symbol@^0.2.1:
   resolved "https://registry.yarnpkg.com/symbol/-/symbol-0.2.3.tgz#3b9873b8a901e47c6efe21526a3ac372ef28bbc7"
   integrity sha512-IUW+ek7apEaW5bFhS6WpYoNtVpNTlNoqB/PH7YiMWQTxSPeXCzG4PILVakwXivJt3ZXWeO1fIJnUd/L9A/VeGA==
 
+synckit@^0.8.5:
+  version "0.8.5"
+  resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3"
+  integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==
+  dependencies:
+    "@pkgr/utils" "^2.3.1"
+    tslib "^2.5.0"
+
 table@^5.2.3:
   version "5.4.6"
   resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
@@ -16424,6 +16562,11 @@ tiny-warning@^1.0.2:
   resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
   integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
 
+titleize@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53"
+  integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==
+
 tldjs@^2.3.1:
   version "2.3.1"
   resolved "https://registry.yarnpkg.com/tldjs/-/tldjs-2.3.1.tgz#cf09c3eb5d7403a9e214b7d65f3cf9651c0ab039"
@@ -16583,6 +16726,11 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.2.0:
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
   integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
 
+tslib@^2.5.0, tslib@^2.6.0:
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+  integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
 tsutils@^3.21.0:
   version "3.21.0"
   resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -16864,6 +17012,11 @@ unset-value@^1.0.0:
     has-value "^0.3.1"
     isobject "^3.0.0"
 
+untildify@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
+  integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
+
 upath@^1.1.1:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"