From fadd7fc200bbb7e547d363dffbe47ce0096d9d60 Mon Sep 17 00:00:00 2001
From: Garrett Stevens <stevens.garrett.j@gmail.com>
Date: Fri, 15 Nov 2024 17:31:45 -0700
Subject: [PATCH] typescript-eslint major version updates

---
 .eslintrc.js                                  |  12 +-
 package.json                                  |  10 +-
 packages/apollo-cli/src/utils.ts              |   6 +-
 .../src/files/FileStorageEngine.ts            |   1 +
 .../src/files/filesUtil.ts                    |  14 +-
 .../src/plugins/plugins.service.ts            |   3 +-
 .../apollo-mst/src/AnnotationFeatureModel.ts  |   6 +-
 packages/apollo-mst/src/ApolloAssembly.ts     |   4 +-
 packages/apollo-mst/src/ApolloRefSeq.ts       |   4 +-
 packages/apollo-mst/src/CheckResult.ts        |   4 +-
 .../src/Changes/DeleteUserChange.ts           |   2 +-
 .../jbrowse-plugin-apollo/cypress.config.js   |   7 +-
 packages/jbrowse-plugin-apollo/jestSetup.js   |   3 +-
 .../components/AuthTypeSelector.tsx           |   4 +-
 .../src/ApolloInternetAccount/configSchema.ts |   2 +-
 .../src/ApolloInternetAccount/model.ts        |  11 +-
 .../ApolloRefNameAliasAdapter.ts              |   2 +-
 .../src/BackendDrivers/DesktopFileDriver.ts   |   5 +-
 .../src/FeatureDetailsWidget/model.ts         |   8 +-
 .../components/LinearApolloDisplay.tsx        |   1 +
 .../LinearApolloDisplay/stateModel/index.ts   |   2 +-
 .../stateModel/mouseEvents.ts                 |   2 +-
 .../stateModel/rendering.ts                   |   2 +-
 .../OntologyManager/OntologyStore/index.ts    |  12 +-
 .../src/OntologyManager/index.ts              |   4 +-
 .../src/SixFrameFeatureDisplay/stateModel.ts  |   2 +-
 .../TabularEditor/HybridGrid/HybridGrid.tsx   |   1 +
 .../src/TabularEditor/model.ts                |   2 +-
 .../components/OntologyTermAutocomplete.tsx   |   9 +-
 .../src/components/OpenLocalFile.tsx          |   3 +-
 .../src/extensions/annotationFromPileup.ts    |   2 +-
 .../src/session/session.ts                    |   2 +-
 .../src/components/HomepageFeatures/index.tsx |  12 +-
 packages/website/src/pages/index.tsx          |   2 +-
 yarn.lock                                     | 219 ++++++++----------
 35 files changed, 187 insertions(+), 198 deletions(-)

diff --git a/.eslintrc.js b/.eslintrc.js
index cd9855c2e..1ac1038c5 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -52,11 +52,6 @@ module.exports = {
       { line: { markers: ['/'] } },
     ],
     // @typescript-eslint/eslint-plugin rules (override recommended)
-    '@typescript-eslint/lines-between-class-members': [
-      'warn',
-      'always',
-      { exceptAfterSingleLine: true },
-    ],
     '@typescript-eslint/no-extraneous-class': [
       'error',
       { allowWithDecorator: true },
@@ -149,5 +144,12 @@ module.exports = {
         'tsdoc/syntax': 'off',
       },
     },
+    // Temporary override
+    {
+      files: ['packages/apollo-cli/src/**/*.ts'],
+      rules: {
+        '@typescript-eslint/no-deprecated': 'off',
+      },
+    },
   ],
 }
diff --git a/package.json b/package.json
index 4f440c070..5c6bcc247 100644
--- a/package.json
+++ b/package.json
@@ -21,19 +21,19 @@
     "@types/node": "^18.14.2",
     "@types/semver": "^7",
     "@types/yargs": "^17.0.32",
-    "@typescript-eslint/eslint-plugin": "^7.18.0",
-    "@typescript-eslint/parser": "^7.18.0",
+    "@typescript-eslint/eslint-plugin": "^8.14.0",
+    "@typescript-eslint/parser": "^8.14.0",
     "@yarnpkg/types": "^4.0.0",
     "cross-env": "^7.0.3",
     "cross-spawn": "^7.0.3",
     "eslint": "^8.57.1",
     "eslint-import-resolver-typescript": "^3.6.3",
-    "eslint-plugin-cypress": "^2.15.2",
+    "eslint-plugin-cypress": "^4.1.0",
     "eslint-plugin-import": "^2.31.0",
     "eslint-plugin-jsx-a11y": "^6.10.2",
     "eslint-plugin-react": "^7.37.2",
-    "eslint-plugin-react-hooks": "^4.6.2",
-    "eslint-plugin-tsdoc": "^0.2.17",
+    "eslint-plugin-react-hooks": "^5.0.0",
+    "eslint-plugin-tsdoc": "^0.3.0",
     "eslint-plugin-unicorn": "^48.0.1",
     "husky": "^9.0.11",
     "lint-staged": "^15.2.2",
diff --git a/packages/apollo-cli/src/utils.ts b/packages/apollo-cli/src/utils.ts
index 897dd5749..ba494b34e 100644
--- a/packages/apollo-cli/src/utils.ts
+++ b/packages/apollo-cli/src/utils.ts
@@ -347,7 +347,11 @@ export const waitFor = <T>(
 ): Promise<T> => {
   const promise = new Promise<T>((resolve, reject) => {
     const handleEvent = (eventData: T): void => {
-      eventData instanceof Error ? reject(eventData) : resolve(eventData)
+      if (eventData instanceof Error) {
+        reject(eventData)
+      } else {
+        resolve(eventData)
+      }
 
       emitter.removeListener(eventName, handleEvent)
     }
diff --git a/packages/apollo-collaboration-server/src/files/FileStorageEngine.ts b/packages/apollo-collaboration-server/src/files/FileStorageEngine.ts
index de8de219a..7ee1f13f9 100644
--- a/packages/apollo-collaboration-server/src/files/FileStorageEngine.ts
+++ b/packages/apollo-collaboration-server/src/files/FileStorageEngine.ts
@@ -15,6 +15,7 @@ export interface UploadedFile extends Express.Multer.File {
 export class FileStorageEngine implements StorageEngine {
   private readonly logger = new Logger(FileStorageEngine.name)
 
+  // eslint-disable-next-line @typescript-eslint/no-misused-promises
   async _handleFile(
     req: Express.Request,
     file: Express.Multer.File,
diff --git a/packages/apollo-collaboration-server/src/files/filesUtil.ts b/packages/apollo-collaboration-server/src/files/filesUtil.ts
index 31c6f416e..85ec3ef04 100644
--- a/packages/apollo-collaboration-server/src/files/filesUtil.ts
+++ b/packages/apollo-collaboration-server/src/files/filesUtil.ts
@@ -128,15 +128,15 @@ export class LocalFileGzip implements GenericFilehandle {
     return { bytesRead, buffer }
   }
 
-  public async readFile(): Promise<Buffer>
-  public async readFile(options: BufferEncoding): Promise<string>
-  public async readFile<T extends undefined>(
-    options:
+  public async readFile(
+    options?:
       | Omit<FilehandleOptions, 'encoding'>
-      | (Omit<FilehandleOptions, 'encoding'> & { encoding: T }),
+      | (Omit<FilehandleOptions, 'encoding'> & { encoding: undefined }),
   ): Promise<Buffer>
-  public async readFile<T extends BufferEncoding>(
-    options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },
+  public async readFile(
+    options:
+      | BufferEncoding
+      | (Omit<FilehandleOptions, 'encoding'> & { encoding: BufferEncoding }),
   ): Promise<string>
 
   public async readFile(
diff --git a/packages/apollo-collaboration-server/src/plugins/plugins.service.ts b/packages/apollo-collaboration-server/src/plugins/plugins.service.ts
index ec5b64e23..53c5f5da8 100644
--- a/packages/apollo-collaboration-server/src/plugins/plugins.service.ts
+++ b/packages/apollo-collaboration-server/src/plugins/plugins.service.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-unsafe-call */
 import { ApolloPlugin } from '@apollo-annotation/common'
 import { Inject, Injectable } from '@nestjs/common'
 
@@ -5,7 +6,7 @@ import { APOLLO_PLUGINS } from './plugins.constants'
 
 @Injectable()
 export class PluginsService {
-  // eslint-disable-next-line @typescript-eslint/ban-types
+  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
   extensionPoints = new Map<string, Function[]>()
 
   constructor(@Inject(APOLLO_PLUGINS) private plugins: ApolloPlugin[]) {
diff --git a/packages/apollo-mst/src/AnnotationFeatureModel.ts b/packages/apollo-mst/src/AnnotationFeatureModel.ts
index 49ce671ac..94e26d344 100644
--- a/packages/apollo-mst/src/AnnotationFeatureModel.ts
+++ b/packages/apollo-mst/src/AnnotationFeatureModel.ts
@@ -264,7 +264,7 @@ export const AnnotationFeatureModel = types
         self.max = max
       }
     },
-    setStrand(strand?: 1 | -1 | undefined) {
+    setStrand(strand?: 1 | -1) {
       self.strand = strand
     },
     addChild(childFeature: AnnotationFeatureSnapshot) {
@@ -345,7 +345,7 @@ export type Children = IMSTMap<typeof AnnotationFeatureModel> | undefined
 
 // eslint disables because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 interface AnnotationFeatureRaw
   extends Instance<typeof AnnotationFeatureModel> {}
 // This type isn't exactly right, since "children" is actually an IMSTMap and
@@ -354,7 +354,7 @@ export interface AnnotationFeature
   extends Omit<AnnotationFeatureRaw, 'children'> {
   children?: Map<string, AnnotationFeature>
 }
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 interface AnnotationFeatureSnapshotRaw
   extends SnapshotIn<typeof AnnotationFeatureModel> {}
 export interface AnnotationFeatureSnapshot
diff --git a/packages/apollo-mst/src/ApolloAssembly.ts b/packages/apollo-mst/src/ApolloAssembly.ts
index 7a06b7f1a..eae3146d7 100644
--- a/packages/apollo-mst/src/ApolloAssembly.ts
+++ b/packages/apollo-mst/src/ApolloAssembly.ts
@@ -37,8 +37,8 @@ export const ApolloAssembly = types
 
 // eslint disables because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloAssemblyI extends Instance<typeof ApolloAssembly> {}
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloAssemblySnapshot
   extends SnapshotIn<typeof ApolloAssembly> {}
diff --git a/packages/apollo-mst/src/ApolloRefSeq.ts b/packages/apollo-mst/src/ApolloRefSeq.ts
index 8c6145c20..94ec57190 100644
--- a/packages/apollo-mst/src/ApolloRefSeq.ts
+++ b/packages/apollo-mst/src/ApolloRefSeq.ts
@@ -114,7 +114,7 @@ export const ApolloRefSeq = types
 
 // eslint disables because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloRefSeqI extends Instance<typeof ApolloRefSeq> {}
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloRefSeqSnapshot extends SnapshotIn<typeof ApolloRefSeq> {}
diff --git a/packages/apollo-mst/src/CheckResult.ts b/packages/apollo-mst/src/CheckResult.ts
index 1616a1401..cf8ef4360 100644
--- a/packages/apollo-mst/src/CheckResult.ts
+++ b/packages/apollo-mst/src/CheckResult.ts
@@ -15,7 +15,7 @@ export const CheckResult = types.model('CheckResult', {
 
 // eslint disables because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface CheckResultI extends Instance<typeof CheckResult> {}
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface CheckResultSnapshot extends SnapshotIn<typeof CheckResult> {}
diff --git a/packages/apollo-shared/src/Changes/DeleteUserChange.ts b/packages/apollo-shared/src/Changes/DeleteUserChange.ts
index 8c1b09364..d1589e245 100644
--- a/packages/apollo-shared/src/Changes/DeleteUserChange.ts
+++ b/packages/apollo-shared/src/Changes/DeleteUserChange.ts
@@ -13,7 +13,7 @@ export interface SerializedDeleteUserChangeBase extends SerializedChange {
   userId: string
 }
 
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface DeleteUserChangeDetails {}
 
 interface SerializedDeleteUserChangeSingle
diff --git a/packages/jbrowse-plugin-apollo/cypress.config.js b/packages/jbrowse-plugin-apollo/cypress.config.js
index b3bf4ed03..3e308d85e 100644
--- a/packages/jbrowse-plugin-apollo/cypress.config.js
+++ b/packages/jbrowse-plugin-apollo/cypress.config.js
@@ -1,10 +1,11 @@
+/* eslint-disable @typescript-eslint/no-require-imports */
 /* eslint-disable @typescript-eslint/unbound-method */
 /* eslint-disable @typescript-eslint/no-unsafe-argument */
-// eslint-disable-next-line @typescript-eslint/no-var-requires
+
 const { defineConfig } = require('cypress')
-// eslint-disable-next-line @typescript-eslint/no-var-requires
+
 const { configurePlugin } = require('cypress-mongodb')
-// eslint-disable-next-line @typescript-eslint/no-var-requires
+
 const fs = require('node:fs')
 
 module.exports = defineConfig({
diff --git a/packages/jbrowse-plugin-apollo/jestSetup.js b/packages/jbrowse-plugin-apollo/jestSetup.js
index f822ec40b..0a36090e2 100644
--- a/packages/jbrowse-plugin-apollo/jestSetup.js
+++ b/packages/jbrowse-plugin-apollo/jestSetup.js
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-require-imports */
 /* eslint-disable @typescript-eslint/no-unsafe-call */
-/* eslint-disable @typescript-eslint/no-var-requires */
+
 require('jest-fetch-mock').enableMocks()
diff --git a/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/components/AuthTypeSelector.tsx b/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/components/AuthTypeSelector.tsx
index 135cc5fb8..2361f003c 100644
--- a/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/components/AuthTypeSelector.tsx
+++ b/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/components/AuthTypeSelector.tsx
@@ -51,7 +51,9 @@ export const AuthTypeSelector = ({
       setLoginTypes(data)
     }
     getAuthTypes().catch((error) => {
-      isAbortException(error) ? '' : setErrorMessage(String(error))
+      if (!isAbortException(error)) {
+        setErrorMessage(String(error))
+      }
     })
     return () => {
       controller.abort()
diff --git a/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/configSchema.ts b/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/configSchema.ts
index dfbaec3c8..040ab008f 100644
--- a/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/configSchema.ts
+++ b/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/configSchema.ts
@@ -23,7 +23,7 @@ export type ApolloInternetAccountConfigModel = typeof ApolloConfigSchema
 
 // eslint disable because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloInternetAccountConfig
   extends Instance<ApolloInternetAccountConfigModel> {}
 export default ApolloConfigSchema
diff --git a/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/model.ts b/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/model.ts
index 0cc8fd0ea..2b7d4fbe0 100644
--- a/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/model.ts
+++ b/packages/jbrowse-plugin-apollo/src/ApolloInternetAccount/model.ts
@@ -345,14 +345,9 @@ const stateModelFactory = (configSchema: ApolloInternetAccountConfigModel) => {
         socket.on(
           'REQUEST_INFORMATION',
           (message: RequestUserInformationMessage) => {
-            const { channel, reqType, userSessionId } = message
+            const { channel, userSessionId } = message
             if (channel === 'REQUEST_INFORMATION' && userSessionId !== token) {
-              switch (reqType) {
-                case 'CURRENT_LOCATION': {
-                  session.broadcastLocations()
-                  break
-                }
-              }
+              session.broadcastLocations()
             }
           },
         )
@@ -462,6 +457,6 @@ export type ApolloInternetAccountStateModel = ReturnType<
 >
 // eslint disable because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloInternetAccountModel
   extends Instance<ApolloInternetAccountStateModel> {}
diff --git a/packages/jbrowse-plugin-apollo/src/ApolloRefNameAliasAdapter/ApolloRefNameAliasAdapter.ts b/packages/jbrowse-plugin-apollo/src/ApolloRefNameAliasAdapter/ApolloRefNameAliasAdapter.ts
index 35ef95692..9d03e0231 100644
--- a/packages/jbrowse-plugin-apollo/src/ApolloRefNameAliasAdapter/ApolloRefNameAliasAdapter.ts
+++ b/packages/jbrowse-plugin-apollo/src/ApolloRefNameAliasAdapter/ApolloRefNameAliasAdapter.ts
@@ -88,7 +88,7 @@ export default class RefNameAliasAdapter
     return refNameAliases
   }
 
-  async freeResources() {
+  freeResources() {
     // no resources to free
   }
 }
diff --git a/packages/jbrowse-plugin-apollo/src/BackendDrivers/DesktopFileDriver.ts b/packages/jbrowse-plugin-apollo/src/BackendDrivers/DesktopFileDriver.ts
index 157e92a6a..a1b0092c4 100644
--- a/packages/jbrowse-plugin-apollo/src/BackendDrivers/DesktopFileDriver.ts
+++ b/packages/jbrowse-plugin-apollo/src/BackendDrivers/DesktopFileDriver.ts
@@ -31,7 +31,8 @@ export class DesktopFileDriver extends BackendDriver {
     const { file } = getConf(assembly, ['sequence', 'metadata']) as {
       file: string
     }
-    // eslint-disable-next-line @typescript-eslint/no-var-requires
+
+    // eslint-disable-next-line @typescript-eslint/no-require-imports
     const fs = require('node:fs') as typeof import('fs')
     const fileContents = await fs.promises.readFile(file, 'utf8')
     return loadAssemblyIntoClient(assemblyName, fileContents, this.clientStore)
@@ -165,7 +166,7 @@ export class DesktopFileDriver extends BackendDriver {
 
     const gff3Contents = gff.formatSync(gff3Items)
 
-    // eslint-disable-next-line @typescript-eslint/no-var-requires
+    // eslint-disable-next-line @typescript-eslint/no-require-imports
     const fs = require('node:fs') as typeof import('fs')
     await fs.promises.writeFile(file, gff3Contents, 'utf8')
 
diff --git a/packages/jbrowse-plugin-apollo/src/FeatureDetailsWidget/model.ts b/packages/jbrowse-plugin-apollo/src/FeatureDetailsWidget/model.ts
index a9ff3afc6..a39372b0d 100644
--- a/packages/jbrowse-plugin-apollo/src/FeatureDetailsWidget/model.ts
+++ b/packages/jbrowse-plugin-apollo/src/FeatureDetailsWidget/model.ts
@@ -65,10 +65,10 @@ export const ApolloFeatureDetailsWidgetModel = types
 
 // eslint disables because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloFeatureDetailsWidget
   extends Instance<typeof ApolloFeatureDetailsWidgetModel> {}
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloFeatureDetailsWidgetSnapshot
   extends SnapshotIn<typeof ApolloFeatureDetailsWidgetModel> {}
 
@@ -126,9 +126,9 @@ export const ApolloTranscriptDetailsModel = types
 
 // eslint disables because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloTranscriptDetailsWidget
   extends Instance<typeof ApolloTranscriptDetailsModel> {}
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloTranscriptDetailsWidgetSnapshot
   extends SnapshotIn<typeof ApolloTranscriptDetailsModel> {}
diff --git a/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/components/LinearApolloDisplay.tsx b/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/components/LinearApolloDisplay.tsx
index 88b4100e4..2ab5d4378 100644
--- a/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/components/LinearApolloDisplay.tsx
+++ b/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/components/LinearApolloDisplay.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-unsafe-call */
 /* eslint-disable @typescript-eslint/unbound-method */
 /* eslint-disable @typescript-eslint/no-misused-promises */
 /* eslint-disable @typescript-eslint/no-unnecessary-condition */
diff --git a/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/index.ts b/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/index.ts
index 7461d6c22..ecbf0d416 100644
--- a/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/index.ts
+++ b/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/index.ts
@@ -19,6 +19,6 @@ export function stateModelFactory(
 export type LinearApolloDisplayStateModel = ReturnType<typeof stateModelFactory>
 // eslint disable because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface LinearApolloDisplay
   extends Instance<LinearApolloDisplayStateModel> {}
diff --git a/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/mouseEvents.ts b/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/mouseEvents.ts
index 34b649e0c..d8325640c 100644
--- a/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/mouseEvents.ts
+++ b/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/mouseEvents.ts
@@ -499,6 +499,6 @@ export type LinearApolloDisplayMouseEventsModel = ReturnType<
 >
 // eslint disable because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface LinearApolloDisplayMouseEvents
   extends Instance<LinearApolloDisplayMouseEventsModel> {}
diff --git a/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/rendering.ts b/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/rendering.ts
index 35cb0b322..28656f3d6 100644
--- a/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/rendering.ts
+++ b/packages/jbrowse-plugin-apollo/src/LinearApolloDisplay/stateModel/rendering.ts
@@ -445,6 +445,6 @@ export type LinearApolloDisplayRenderingModel = ReturnType<
 >
 // eslint disable because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface LinearApolloDisplayRendering
   extends Instance<LinearApolloDisplayRenderingModel> {}
diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts
index 09763c1a2..26ae05219 100644
--- a/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts
+++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/OntologyStore/index.ts
@@ -5,6 +5,7 @@ import {
   BlobLocation,
   LocalPathLocation,
   UriLocation,
+  isLocalPathLocation,
   isUriLocation,
 } from '@jbrowse/core/util'
 import {
@@ -43,15 +44,6 @@ export type Transaction<
 /** the format of the loading data source */
 type SourceType = 'obo-graph-json' | 'obo' | 'owl'
 
-/**
- * @deprecated use the one from jbrowse core when it is published
- **/
-function isLocalPathLocation(location: unknown): location is LocalPathLocation {
-  return (
-    typeof location === 'object' && location !== null && 'localPath' in location
-  )
-}
-
 async function arrayFromAsync<T>(iter: AsyncIterable<T>) {
   const a = []
   for await (const i of iter) {
@@ -508,7 +500,7 @@ export default class OntologyStore {
 
     // fetch the full nodes and filter out deprecated ones
     const terms: OntologyClass[] = []
-    for await (const termId of termIds) {
+    for (const termId of termIds) {
       const node = await myTx.objectStore('nodes').get(termId)
       if (node && isOntologyClass(node) && !isDeprecated(node)) {
         terms.push(node)
diff --git a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts
index d10f0edf6..6273f095c 100644
--- a/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts
+++ b/packages/jbrowse-plugin-apollo/src/OntologyManager/index.ts
@@ -180,9 +180,9 @@ export const OntologyRecordConfiguration = ConfigurationSchema(
 
 // eslint disables because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface OntologyManager extends Instance<typeof OntologyManagerType> {}
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface OntologyRecord extends Instance<typeof OntologyRecordType> {}
 
 export type OntologyTerm = OntologyDBNode
diff --git a/packages/jbrowse-plugin-apollo/src/SixFrameFeatureDisplay/stateModel.ts b/packages/jbrowse-plugin-apollo/src/SixFrameFeatureDisplay/stateModel.ts
index 41c2dad84..e9a3930dc 100644
--- a/packages/jbrowse-plugin-apollo/src/SixFrameFeatureDisplay/stateModel.ts
+++ b/packages/jbrowse-plugin-apollo/src/SixFrameFeatureDisplay/stateModel.ts
@@ -425,6 +425,6 @@ export type SixFrameFeatureDisplayStateModel = ReturnType<
 >
 // eslint disable because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface SixFrameFeatureDisplay
   extends Instance<SixFrameFeatureDisplayStateModel> {}
diff --git a/packages/jbrowse-plugin-apollo/src/TabularEditor/HybridGrid/HybridGrid.tsx b/packages/jbrowse-plugin-apollo/src/TabularEditor/HybridGrid/HybridGrid.tsx
index d33bd0d12..9672d47fe 100644
--- a/packages/jbrowse-plugin-apollo/src/TabularEditor/HybridGrid/HybridGrid.tsx
+++ b/packages/jbrowse-plugin-apollo/src/TabularEditor/HybridGrid/HybridGrid.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-unsafe-call */
 import { Menu, MenuItem } from '@jbrowse/core/ui'
 import { useTheme } from '@mui/material'
 import { observer } from 'mobx-react'
diff --git a/packages/jbrowse-plugin-apollo/src/TabularEditor/model.ts b/packages/jbrowse-plugin-apollo/src/TabularEditor/model.ts
index 967d2529c..e541da824 100644
--- a/packages/jbrowse-plugin-apollo/src/TabularEditor/model.ts
+++ b/packages/jbrowse-plugin-apollo/src/TabularEditor/model.ts
@@ -41,6 +41,6 @@ export const TabularEditorStateModelType = types
 
 // eslint disable because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface TabularEditorStateModel
   extends Instance<typeof TabularEditorStateModelType> {}
diff --git a/packages/jbrowse-plugin-apollo/src/components/OntologyTermAutocomplete.tsx b/packages/jbrowse-plugin-apollo/src/components/OntologyTermAutocomplete.tsx
index 83cbde99b..21c515983 100644
--- a/packages/jbrowse-plugin-apollo/src/components/OntologyTermAutocomplete.tsx
+++ b/packages/jbrowse-plugin-apollo/src/components/OntologyTermAutocomplete.tsx
@@ -1,6 +1,5 @@
 /* eslint-disable @typescript-eslint/no-unnecessary-condition */
-/* eslint-disable @typescript-eslint/no-unsafe-argument */
-/* eslint-disable @typescript-eslint/no-unsafe-member-access */
+
 import { AbstractSessionModel, isAbortException } from '@jbrowse/core/util'
 import {
   Autocomplete,
@@ -93,7 +92,7 @@ export function OntologyTermAutocomplete({
             setCurrentOntologyTerm(term)
           }
         },
-        (error) => {
+        (error: unknown) => {
           if (!signal.aborted && !isAbortException(error)) {
             setCurrentOntologyTermInvalid(String(error))
           }
@@ -116,10 +115,10 @@ export function OntologyTermAutocomplete({
             setTermChoices(soTerms)
           }
         },
-        (error) => {
+        (error: unknown) => {
           if (!signal.aborted && !isAbortException(error)) {
             ;(session as unknown as AbstractSessionModel).notify(
-              error.message,
+              error instanceof Error ? error.message : String(error),
               'error',
             )
           }
diff --git a/packages/jbrowse-plugin-apollo/src/components/OpenLocalFile.tsx b/packages/jbrowse-plugin-apollo/src/components/OpenLocalFile.tsx
index 28ac3f24a..fe2f060da 100644
--- a/packages/jbrowse-plugin-apollo/src/components/OpenLocalFile.tsx
+++ b/packages/jbrowse-plugin-apollo/src/components/OpenLocalFile.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-unsafe-call */
 /* eslint-disable @typescript-eslint/unbound-method */
 /* eslint-disable @typescript-eslint/no-unnecessary-condition */
 /* eslint-disable @typescript-eslint/no-misused-promises */
@@ -36,7 +37,7 @@ export function OpenLocalFile({ handleClose, session }: OpenLocalFileProps) {
   const { apolloDataStore } = session
   const { addAssembly, addSessionAssembly, assemblyManager, notify } =
     session as unknown as AbstractSessionModel & {
-      // eslint-disable-next-line @typescript-eslint/ban-types
+      // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
       addSessionAssembly: Function
     }
 
diff --git a/packages/jbrowse-plugin-apollo/src/extensions/annotationFromPileup.ts b/packages/jbrowse-plugin-apollo/src/extensions/annotationFromPileup.ts
index bc9b3671f..89c789a74 100644
--- a/packages/jbrowse-plugin-apollo/src/extensions/annotationFromPileup.ts
+++ b/packages/jbrowse-plugin-apollo/src/extensions/annotationFromPileup.ts
@@ -17,7 +17,7 @@ import { ApolloSessionModel } from '../session'
 
 function parseCigar(cigar: string): [string | undefined, number][] {
   return (cigar.toUpperCase().match(/\d+\D/g) ?? []).map((op) => {
-    return [(op.match(/\D/) ?? [])[0], Number.parseInt(op, 10)]
+    return [(/\D/.exec(op) ?? [])[0], Number.parseInt(op, 10)]
   })
 }
 
diff --git a/packages/jbrowse-plugin-apollo/src/session/session.ts b/packages/jbrowse-plugin-apollo/src/session/session.ts
index 615ff0e47..85bb21e3f 100644
--- a/packages/jbrowse-plugin-apollo/src/session/session.ts
+++ b/packages/jbrowse-plugin-apollo/src/session/session.ts
@@ -434,5 +434,5 @@ export type ApolloSessionStateModel = ReturnType<typeof extendSession>
 // @ts-expect-error Snapshots seem to mess up types here
 // eslint disable because of
 // https://mobx-state-tree.js.org/tips/typescript#using-a-mst-type-at-design-time
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface ApolloSessionModel extends Instance<ApolloSessionStateModel> {}
diff --git a/packages/website/src/components/HomepageFeatures/index.tsx b/packages/website/src/components/HomepageFeatures/index.tsx
index 6b9c9c9ad..b15099074 100755
--- a/packages/website/src/components/HomepageFeatures/index.tsx
+++ b/packages/website/src/components/HomepageFeatures/index.tsx
@@ -1,17 +1,19 @@
+/* eslint-disable @typescript-eslint/no-require-imports */
 import { clsx } from 'clsx'
 import Heading from '@theme/Heading'
+import React from 'react'
 import styles from './styles.module.css'
 
 interface FeatureItem {
   title: string
   Svg: React.ComponentType<React.ComponentProps<'svg'>>
-  description: JSX.Element
+  description: React.JSX.Element
 }
 
 const FeatureList: FeatureItem[] = [
   {
     title: 'Easy to Use',
-    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
+    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
     Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
     description: (
       <>
@@ -22,7 +24,7 @@ const FeatureList: FeatureItem[] = [
   },
   {
     title: 'Focus on What Matters',
-    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
+    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
     Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
     description: (
       <>
@@ -33,7 +35,7 @@ const FeatureList: FeatureItem[] = [
   },
   {
     title: 'Powered by React',
-    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
+    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
     Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
     description: (
       <>
@@ -58,7 +60,7 @@ function Feature({ Svg, description, title }: FeatureItem) {
   )
 }
 
-export default function HomepageFeatures(): JSX.Element {
+export default function HomepageFeatures(): React.JSX.Element {
   return (
     <section className={styles.features}>
       <div className="container">
diff --git a/packages/website/src/pages/index.tsx b/packages/website/src/pages/index.tsx
index 367fdc8bd..eee2f35b1 100755
--- a/packages/website/src/pages/index.tsx
+++ b/packages/website/src/pages/index.tsx
@@ -29,7 +29,7 @@ function HomepageHeader() {
   )
 }
 
-export default function Home(): JSX.Element {
+export default function Home(): React.JSX.Element {
   const { siteConfig } = useDocusaurusContext()
   return (
     <Layout title={siteConfig.title} description={siteConfig.tagline}>
diff --git a/yarn.lock b/yarn.lock
index 100ee75e8..d17f0f726 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6432,22 +6432,22 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@microsoft/tsdoc-config@npm:0.16.2":
-  version: 0.16.2
-  resolution: "@microsoft/tsdoc-config@npm:0.16.2"
+"@microsoft/tsdoc-config@npm:0.17.0":
+  version: 0.17.0
+  resolution: "@microsoft/tsdoc-config@npm:0.17.0"
   dependencies:
-    "@microsoft/tsdoc": "npm:0.14.2"
-    ajv: "npm:~6.12.6"
+    "@microsoft/tsdoc": "npm:0.15.0"
+    ajv: "npm:~8.12.0"
     jju: "npm:~1.4.0"
-    resolve: "npm:~1.19.0"
-  checksum: 10c0/9e8c176b68f01c8bb38e6365d5b543e471bba59fced6070d9bd35b32461fbd650c2e1a6f686e8dca0cf22bc5e7d796e4213e66bce4426c8cb9864c1f6ca6836c
+    resolve: "npm:~1.22.2"
+  checksum: 10c0/9aa51b5b0fa93ad5c6a40ed1acf1f25c625b616efe29f2e5fa22ee9bddea12a4a39c833726e11ab592f20cfc9b8c3865978864dd02711d457fa971df3c091847
   languageName: node
   linkType: hard
 
-"@microsoft/tsdoc@npm:0.14.2":
-  version: 0.14.2
-  resolution: "@microsoft/tsdoc@npm:0.14.2"
-  checksum: 10c0/c018857ad439144559ce34a397a29ace7cf5b24b999b8e3c1b88d878338088b3a453eaac4435beaf2c7eae13c4c0aac81e42f96f0f1d48e8d4eeb438eb3bb82f
+"@microsoft/tsdoc@npm:0.15.0":
+  version: 0.15.0
+  resolution: "@microsoft/tsdoc@npm:0.15.0"
+  checksum: 10c0/6beaf6e01ff54daeba69862cb3d27e03bbabfe299d23d0fade885f5b29bf98af01cecc746d23875fe60ba89514e3b630b71140b1b18d37301096f7a1e35451aa
   languageName: node
   linkType: hard
 
@@ -10339,44 +10339,44 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@typescript-eslint/eslint-plugin@npm:^7.18.0":
-  version: 7.18.0
-  resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0"
+"@typescript-eslint/eslint-plugin@npm:^8.14.0":
+  version: 8.14.0
+  resolution: "@typescript-eslint/eslint-plugin@npm:8.14.0"
   dependencies:
     "@eslint-community/regexpp": "npm:^4.10.0"
-    "@typescript-eslint/scope-manager": "npm:7.18.0"
-    "@typescript-eslint/type-utils": "npm:7.18.0"
-    "@typescript-eslint/utils": "npm:7.18.0"
-    "@typescript-eslint/visitor-keys": "npm:7.18.0"
+    "@typescript-eslint/scope-manager": "npm:8.14.0"
+    "@typescript-eslint/type-utils": "npm:8.14.0"
+    "@typescript-eslint/utils": "npm:8.14.0"
+    "@typescript-eslint/visitor-keys": "npm:8.14.0"
     graphemer: "npm:^1.4.0"
     ignore: "npm:^5.3.1"
     natural-compare: "npm:^1.4.0"
     ts-api-utils: "npm:^1.3.0"
   peerDependencies:
-    "@typescript-eslint/parser": ^7.0.0
-    eslint: ^8.56.0
+    "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0
+    eslint: ^8.57.0 || ^9.0.0
   peerDependenciesMeta:
     typescript:
       optional: true
-  checksum: 10c0/2b37948fa1b0dab77138909dabef242a4d49ab93e4019d4ef930626f0a7d96b03e696cd027fa0087881c20e73be7be77c942606b4a76fa599e6b37f6985304c3
+  checksum: 10c0/46c82eb45be82ffec0ab04728a5180691b1d17002c669864861a3044b6d2105a75ca23cc80d18721b40b5e7dff1eff4ed68a43d726e25d55f3e466a9fbeeb873
   languageName: node
   linkType: hard
 
-"@typescript-eslint/parser@npm:^7.18.0":
-  version: 7.18.0
-  resolution: "@typescript-eslint/parser@npm:7.18.0"
+"@typescript-eslint/parser@npm:^8.14.0":
+  version: 8.14.0
+  resolution: "@typescript-eslint/parser@npm:8.14.0"
   dependencies:
-    "@typescript-eslint/scope-manager": "npm:7.18.0"
-    "@typescript-eslint/types": "npm:7.18.0"
-    "@typescript-eslint/typescript-estree": "npm:7.18.0"
-    "@typescript-eslint/visitor-keys": "npm:7.18.0"
+    "@typescript-eslint/scope-manager": "npm:8.14.0"
+    "@typescript-eslint/types": "npm:8.14.0"
+    "@typescript-eslint/typescript-estree": "npm:8.14.0"
+    "@typescript-eslint/visitor-keys": "npm:8.14.0"
     debug: "npm:^4.3.4"
   peerDependencies:
-    eslint: ^8.56.0
+    eslint: ^8.57.0 || ^9.0.0
   peerDependenciesMeta:
     typescript:
       optional: true
-  checksum: 10c0/370e73fca4278091bc1b657f85e7d74cd52b24257ea20c927a8e17546107ce04fbf313fec99aed0cc2a145ddbae1d3b12e9cc2c1320117636dc1281bcfd08059
+  checksum: 10c0/522b7afd25cd302c0510cc71985ba55ff92ecc5dbe3fc74a76fefea0169252fdd4b8cad6291fef05f63dfc173951af450dca20859c7f23e387b2e7410e8b97b1
   languageName: node
   linkType: hard
 
@@ -10390,30 +10390,28 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@typescript-eslint/scope-manager@npm:7.18.0":
-  version: 7.18.0
-  resolution: "@typescript-eslint/scope-manager@npm:7.18.0"
+"@typescript-eslint/scope-manager@npm:8.14.0":
+  version: 8.14.0
+  resolution: "@typescript-eslint/scope-manager@npm:8.14.0"
   dependencies:
-    "@typescript-eslint/types": "npm:7.18.0"
-    "@typescript-eslint/visitor-keys": "npm:7.18.0"
-  checksum: 10c0/038cd58c2271de146b3a594afe2c99290034033326d57ff1f902976022c8b0138ffd3cb893ae439ae41003b5e4bcc00cabf6b244ce40e8668f9412cc96d97b8e
+    "@typescript-eslint/types": "npm:8.14.0"
+    "@typescript-eslint/visitor-keys": "npm:8.14.0"
+  checksum: 10c0/1e1295c6f9febadf63559aad328b23d960510ce6b4c9f74e10d881c3858fa7f1db767cd1af5272d2fe7c9c5c7daebee71854e6f841e413e5d70af282f6616e26
   languageName: node
   linkType: hard
 
-"@typescript-eslint/type-utils@npm:7.18.0":
-  version: 7.18.0
-  resolution: "@typescript-eslint/type-utils@npm:7.18.0"
+"@typescript-eslint/type-utils@npm:8.14.0":
+  version: 8.14.0
+  resolution: "@typescript-eslint/type-utils@npm:8.14.0"
   dependencies:
-    "@typescript-eslint/typescript-estree": "npm:7.18.0"
-    "@typescript-eslint/utils": "npm:7.18.0"
+    "@typescript-eslint/typescript-estree": "npm:8.14.0"
+    "@typescript-eslint/utils": "npm:8.14.0"
     debug: "npm:^4.3.4"
     ts-api-utils: "npm:^1.3.0"
-  peerDependencies:
-    eslint: ^8.56.0
   peerDependenciesMeta:
     typescript:
       optional: true
-  checksum: 10c0/ad92a38007be620f3f7036f10e234abdc2fdc518787b5a7227e55fd12896dacf56e8b34578723fbf9bea8128df2510ba8eb6739439a3879eda9519476d5783fd
+  checksum: 10c0/42616a664b38ca418e13504247e5e1bad6ae85c045b48e5735ffab977d4bd58cc86fb9d2292bbb314fa408d78d4b0454c3a27dbf9f881f9921917a942825c806
   languageName: node
   linkType: hard
 
@@ -10424,10 +10422,10 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@typescript-eslint/types@npm:7.18.0":
-  version: 7.18.0
-  resolution: "@typescript-eslint/types@npm:7.18.0"
-  checksum: 10c0/eb7371ac55ca77db8e59ba0310b41a74523f17e06f485a0ef819491bc3dd8909bb930120ff7d30aaf54e888167e0005aa1337011f3663dc90fb19203ce478054
+"@typescript-eslint/types@npm:8.14.0":
+  version: 8.14.0
+  resolution: "@typescript-eslint/types@npm:8.14.0"
+  checksum: 10c0/7707f900e24e60e6780c5705f69627b7c0ef912cb3b095dfc8f4a0c84e866c66b1c4c10278cf99724560dc66985ec640750c4192786a09b853f9bb4c3ca5a7ce
   languageName: node
   linkType: hard
 
@@ -10449,14 +10447,14 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@typescript-eslint/typescript-estree@npm:7.18.0":
-  version: 7.18.0
-  resolution: "@typescript-eslint/typescript-estree@npm:7.18.0"
+"@typescript-eslint/typescript-estree@npm:8.14.0":
+  version: 8.14.0
+  resolution: "@typescript-eslint/typescript-estree@npm:8.14.0"
   dependencies:
-    "@typescript-eslint/types": "npm:7.18.0"
-    "@typescript-eslint/visitor-keys": "npm:7.18.0"
+    "@typescript-eslint/types": "npm:8.14.0"
+    "@typescript-eslint/visitor-keys": "npm:8.14.0"
     debug: "npm:^4.3.4"
-    globby: "npm:^11.1.0"
+    fast-glob: "npm:^3.3.2"
     is-glob: "npm:^4.0.3"
     minimatch: "npm:^9.0.4"
     semver: "npm:^7.6.0"
@@ -10464,21 +10462,21 @@ __metadata:
   peerDependenciesMeta:
     typescript:
       optional: true
-  checksum: 10c0/0c7f109a2e460ec8a1524339479cf78ff17814d23c83aa5112c77fb345e87b3642616291908dcddea1e671da63686403dfb712e4a4435104f92abdfddf9aba81
+  checksum: 10c0/5e890d22bd067095f871cf144907a8c302db5b5f014c58906ad58d7f23569951cba805042eac6844744e5abb0d3648c9cc221a91b0703da0a8d6345dc1f83e74
   languageName: node
   linkType: hard
 
-"@typescript-eslint/utils@npm:7.18.0":
-  version: 7.18.0
-  resolution: "@typescript-eslint/utils@npm:7.18.0"
+"@typescript-eslint/utils@npm:8.14.0":
+  version: 8.14.0
+  resolution: "@typescript-eslint/utils@npm:8.14.0"
   dependencies:
     "@eslint-community/eslint-utils": "npm:^4.4.0"
-    "@typescript-eslint/scope-manager": "npm:7.18.0"
-    "@typescript-eslint/types": "npm:7.18.0"
-    "@typescript-eslint/typescript-estree": "npm:7.18.0"
+    "@typescript-eslint/scope-manager": "npm:8.14.0"
+    "@typescript-eslint/types": "npm:8.14.0"
+    "@typescript-eslint/typescript-estree": "npm:8.14.0"
   peerDependencies:
-    eslint: ^8.56.0
-  checksum: 10c0/a25a6d50eb45c514469a01ff01f215115a4725fb18401055a847ddf20d1b681409c4027f349033a95c4ff7138d28c3b0a70253dfe8262eb732df4b87c547bd1e
+    eslint: ^8.57.0 || ^9.0.0
+  checksum: 10c0/1fcc2651d870832a799a5d1c85fc9421853508a006d6a6073c8316b012489dda77e123d13aea8f53eb9030a2da2c0eb273a6946a9941caa2519b99b33e89b720
   languageName: node
   linkType: hard
 
@@ -10509,13 +10507,13 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@typescript-eslint/visitor-keys@npm:7.18.0":
-  version: 7.18.0
-  resolution: "@typescript-eslint/visitor-keys@npm:7.18.0"
+"@typescript-eslint/visitor-keys@npm:8.14.0":
+  version: 8.14.0
+  resolution: "@typescript-eslint/visitor-keys@npm:8.14.0"
   dependencies:
-    "@typescript-eslint/types": "npm:7.18.0"
+    "@typescript-eslint/types": "npm:8.14.0"
     eslint-visitor-keys: "npm:^3.4.3"
-  checksum: 10c0/538b645f8ff1d9debf264865c69a317074eaff0255e63d7407046176b0f6a6beba34a6c51d511f12444bae12a98c69891eb6f403c9f54c6c2e2849d1c1cb73c0
+  checksum: 10c0/d0faf70ed9ecff5e36694bbb161a90bea6db59e0e79a7d4f264d67d565c12b13733d664b736b2730935f013c87ce3155cea954a533d28e99987681bc5f6259c3
   languageName: node
   linkType: hard
 
@@ -10996,7 +10994,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"ajv@npm:8.12.0, ajv@npm:^8.0.0":
+"ajv@npm:8.12.0, ajv@npm:^8.0.0, ajv@npm:~8.12.0":
   version: 8.12.0
   resolution: "ajv@npm:8.12.0"
   dependencies:
@@ -11008,7 +11006,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:~6.12.6":
+"ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5":
   version: 6.12.6
   resolution: "ajv@npm:6.12.6"
   dependencies:
@@ -11197,19 +11195,19 @@ __metadata:
     "@types/node": "npm:^18.14.2"
     "@types/semver": "npm:^7"
     "@types/yargs": "npm:^17.0.32"
-    "@typescript-eslint/eslint-plugin": "npm:^7.18.0"
-    "@typescript-eslint/parser": "npm:^7.18.0"
+    "@typescript-eslint/eslint-plugin": "npm:^8.14.0"
+    "@typescript-eslint/parser": "npm:^8.14.0"
     "@yarnpkg/types": "npm:^4.0.0"
     cross-env: "npm:^7.0.3"
     cross-spawn: "npm:^7.0.3"
     eslint: "npm:^8.57.1"
     eslint-import-resolver-typescript: "npm:^3.6.3"
-    eslint-plugin-cypress: "npm:^2.15.2"
+    eslint-plugin-cypress: "npm:^4.1.0"
     eslint-plugin-import: "npm:^2.31.0"
     eslint-plugin-jsx-a11y: "npm:^6.10.2"
     eslint-plugin-react: "npm:^7.37.2"
-    eslint-plugin-react-hooks: "npm:^4.6.2"
-    eslint-plugin-tsdoc: "npm:^0.2.17"
+    eslint-plugin-react-hooks: "npm:^5.0.0"
+    eslint-plugin-tsdoc: "npm:^0.3.0"
     eslint-plugin-unicorn: "npm:^48.0.1"
     husky: "npm:^9.0.11"
     lint-staged: "npm:^15.2.2"
@@ -16013,14 +16011,14 @@ __metadata:
   languageName: node
   linkType: hard
 
-"eslint-plugin-cypress@npm:^2.15.2":
-  version: 2.15.2
-  resolution: "eslint-plugin-cypress@npm:2.15.2"
+"eslint-plugin-cypress@npm:^4.1.0":
+  version: 4.1.0
+  resolution: "eslint-plugin-cypress@npm:4.1.0"
   dependencies:
-    globals: "npm:^13.20.0"
+    globals: "npm:^15.11.0"
   peerDependencies:
-    eslint: ">= 3.2.1"
-  checksum: 10c0/bcc521633251a852dc3c115455ddda931435bb61c0895e5ad1abe43acb3a15fc0b0e79bf73b7aa078794a2b1084232f1b74ffe39d631a3f312265f97941cd290
+    eslint: ">=9"
+  checksum: 10c0/991d3cc48ed139a52bec4e48e3be2b97274c63f0dd1d14f5b2a1a86315c9adf8a85c91837d64a83b177f07b8c410634d6db44f2555b97aeb96549f4dfac04b10
   languageName: node
   linkType: hard
 
@@ -16104,12 +16102,12 @@ __metadata:
   languageName: node
   linkType: hard
 
-"eslint-plugin-react-hooks@npm:^4.6.2":
-  version: 4.6.2
-  resolution: "eslint-plugin-react-hooks@npm:4.6.2"
+"eslint-plugin-react-hooks@npm:^5.0.0":
+  version: 5.0.0
+  resolution: "eslint-plugin-react-hooks@npm:5.0.0"
   peerDependencies:
-    eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
-  checksum: 10c0/4844e58c929bc05157fb70ba1e462e34f1f4abcbc8dd5bbe5b04513d33e2699effb8bca668297976ceea8e7ebee4e8fc29b9af9d131bcef52886feaa2308b2cc
+    eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
+  checksum: 10c0/bcb74b421f32e4203a7100405b57aab85526be4461e5a1da01bc537969a30012d2ee209a2c2a6cac543833a27188ce1e6ad71e4628d0bb4a2e5365cad86c5002
   languageName: node
   linkType: hard
 
@@ -16141,13 +16139,13 @@ __metadata:
   languageName: node
   linkType: hard
 
-"eslint-plugin-tsdoc@npm:^0.2.17":
-  version: 0.2.17
-  resolution: "eslint-plugin-tsdoc@npm:0.2.17"
+"eslint-plugin-tsdoc@npm:^0.3.0":
+  version: 0.3.0
+  resolution: "eslint-plugin-tsdoc@npm:0.3.0"
   dependencies:
-    "@microsoft/tsdoc": "npm:0.14.2"
-    "@microsoft/tsdoc-config": "npm:0.16.2"
-  checksum: 10c0/26cad40b22f3dc0adfb06b1ea12f7d3c9cb257ac8bb56ad6a023e3b3bdfc6144d95a8b01323563e75283cca90baaf4d68816f5cea6994c6cd660a642e820847a
+    "@microsoft/tsdoc": "npm:0.15.0"
+    "@microsoft/tsdoc-config": "npm:0.17.0"
+  checksum: 10c0/2ee35c661ad9cd3032ec40a4f7b02c04dddd3ecc40afcd8ea509b744c8bedafb408b0a0466e6f28ef771645fa55bf4600a4ad534723f36fc149ef92dc1f6719e
   languageName: node
   linkType: hard
 
@@ -17890,7 +17888,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"globals@npm:^13.19.0, globals@npm:^13.20.0":
+"globals@npm:^13.19.0":
   version: 13.23.0
   resolution: "globals@npm:13.23.0"
   dependencies:
@@ -17899,6 +17897,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"globals@npm:^15.11.0":
+  version: 15.12.0
+  resolution: "globals@npm:15.12.0"
+  checksum: 10c0/f34e0a1845b694f45188331742af9f488b07ba7440a06e9d2039fce0386fbbfc24afdbb9846ebdccd4092d03644e43081c49eb27b30f4b88e43af156e1c1dc34
+  languageName: node
+  linkType: hard
+
 "globalthis@npm:^1.0.3":
   version: 1.0.3
   resolution: "globalthis@npm:1.0.3"
@@ -19213,7 +19218,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"is-core-module@npm:^2.1.0, is-core-module@npm:^2.13.0":
+"is-core-module@npm:^2.13.0":
   version: 2.13.0
   resolution: "is-core-module@npm:2.13.0"
   dependencies:
@@ -24796,7 +24801,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7":
+"path-parse@npm:^1.0.7":
   version: 1.0.7
   resolution: "path-parse@npm:1.0.7"
   checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1
@@ -26899,7 +26904,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"resolve@npm:^1.0.0, resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4":
+"resolve@npm:^1.0.0, resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.4, resolve@npm:~1.22.2":
   version: 1.22.8
   resolution: "resolve@npm:1.22.8"
   dependencies:
@@ -26925,17 +26930,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"resolve@npm:~1.19.0":
-  version: 1.19.0
-  resolution: "resolve@npm:1.19.0"
-  dependencies:
-    is-core-module: "npm:^2.1.0"
-    path-parse: "npm:^1.0.6"
-  checksum: 10c0/1c8afdfb88c9adab0a19b6f16756d47f5917f64047bf5a38c17aa543aae5ccca2a0631671b19ce8460a7a3e65ead98ee70e046d3056ec173d3377a27487848a8
-  languageName: node
-  linkType: hard
-
-"resolve@patch:resolve@npm%3A^1.0.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.1.6#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>":
+"resolve@patch:resolve@npm%3A^1.0.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.1.6#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin<compat/resolve>":
   version: 1.22.8
   resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin<compat/resolve>::version=1.22.8&hash=c3c19d"
   dependencies:
@@ -26961,16 +26956,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"resolve@patch:resolve@npm%3A~1.19.0#optional!builtin<compat/resolve>":
-  version: 1.19.0
-  resolution: "resolve@patch:resolve@npm%3A1.19.0#optional!builtin<compat/resolve>::version=1.19.0&hash=c3c19d"
-  dependencies:
-    is-core-module: "npm:^2.1.0"
-    path-parse: "npm:^1.0.6"
-  checksum: 10c0/254980f60dd9fdb28b34a511e70df6e3027d9627efce86a40757eea9b87252d172829c84517554560c4541ebfe207868270c19a0f086997b41209367aa8ef74f
-  languageName: node
-  linkType: hard
-
 "responselike@npm:^2.0.0":
   version: 2.0.1
   resolution: "responselike@npm:2.0.1"