diff --git a/eslint.config.mjs b/eslint.config.mjs
index 7babc3f..8e619d2 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -4,11 +4,15 @@ import eslintPluginReactHooks from 'eslint-plugin-react-hooks'
import eslintPluginReactRefresh from 'eslint-plugin-react-refresh'
import eslintPluginUnicorn from 'eslint-plugin-unicorn'
import tseslint from 'typescript-eslint'
-import globals from 'globals'
export default tseslint.config(
{
- ignores: ['**/dist/**/*'],
+ ignores: [
+ '**/dist/**/*',
+ 'jest.config.js',
+ 'eslint.config.mjs',
+ 'esbuild.mjs',
+ ],
},
{
languageOptions: {
@@ -63,8 +67,17 @@ export default tseslint.config(
},
],
+ '@typescript-eslint/no-unsafe-argument': 'off',
+ '@typescript-eslint/no-unsafe-return': 'off',
+ '@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
+ '@typescript-eslint/no-unsafe-assignment': 'off',
+ '@typescript-eslint/restrict-template-expressions': 'off',
+ '@typescript-eslint/no-empty-function': 'off',
+
+ 'unicorn/no-null': 'off',
+ 'unicorn/prefer-spread': 'off',
'unicorn/no-useless-undefined': 'off',
'unicorn/catch-error-name': 'off',
'unicorn/filename-case': 'off',
diff --git a/package.json b/package.json
index d1f93c3..ebfae09 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"prebuild": "npm run clean",
"start": "node esbuild.mjs",
"build": "tsc && NODE_ENV=production node esbuild.mjs",
- "lint": "eslint --report-unused-disable-directives --max-warnings 0 src/",
+ "lint": "eslint --report-unused-disable-directives --max-warnings 0",
"prepack": "npm run build",
"postversion": "git push --follow-tags"
},
diff --git a/src/AddHighlightModel/ProteinToGenomeClickHighlight.tsx b/src/AddHighlightModel/ProteinToGenomeClickHighlight.tsx
index 1fe23b4..fd3a3b9 100644
--- a/src/AddHighlightModel/ProteinToGenomeClickHighlight.tsx
+++ b/src/AddHighlightModel/ProteinToGenomeClickHighlight.tsx
@@ -16,19 +16,20 @@ const ProteinToGenomeClickHighlight = observer(function ({
}) {
const { assemblyManager, views } = getSession(model)
const { assemblyNames } = model
- const p = views.find(
- f => f.type === 'ProteinView',
- ) as JBrowsePluginProteinViewModel
- const assembly = assemblyManager.get(assemblyNames[0])
+ const p = views.find(f => f.type === 'ProteinView') as
+ | JBrowsePluginProteinViewModel
+ | undefined
+ const assemblyName = assemblyNames[0]!
+ const assembly = assemblyManager.get(assemblyName)
return assembly ? (
<>
- {p.clickGenomeHighlights.map((r, idx) => (
+ {p?.clickGenomeHighlights.map((r, idx) => (
))}
diff --git a/src/AddHighlightModel/ProteinToGenomeHoverHighlight.tsx b/src/AddHighlightModel/ProteinToGenomeHoverHighlight.tsx
index 7137824..f98b61d 100644
--- a/src/AddHighlightModel/ProteinToGenomeHoverHighlight.tsx
+++ b/src/AddHighlightModel/ProteinToGenomeHoverHighlight.tsx
@@ -16,19 +16,20 @@ const ProteinToGenomeHoverHighlight = observer(function ({
}) {
const { assemblyManager, views } = getSession(model)
const { assemblyNames } = model
- const p = views.find(
- f => f.type === 'ProteinView',
- ) as JBrowsePluginProteinViewModel
- const assembly = assemblyManager.get(assemblyNames[0])
+ const p = views.find(f => f.type === 'ProteinView') as
+ | JBrowsePluginProteinViewModel
+ | undefined
+ const assemblyName = assemblyNames[0]!
+ const assembly = assemblyManager.get(assemblyName)
return assembly ? (
<>
- {p.hoverGenomeHighlights.map((r, idx) => (
+ {p?.hoverGenomeHighlights.map((r, idx) => (
))}
diff --git a/src/LaunchProteinView/components/UserProvidedStructure.tsx b/src/LaunchProteinView/components/UserProvidedStructure.tsx
index fb3abaf..05d661f 100644
--- a/src/LaunchProteinView/components/UserProvidedStructure.tsx
+++ b/src/LaunchProteinView/components/UserProvidedStructure.tsx
@@ -102,9 +102,7 @@ const UserProvidedStructure = observer(function ({
const { seq: structureSequence2, error: error4 } =
useRemoteStructureFileSequence({ url: structureURL })
const structureName =
- file?.name ??
- structureURL.slice(structureURL.lastIndexOf('/') + 1) ??
- 'structureSequence'
+ file?.name ?? structureURL.slice(structureURL.lastIndexOf('/') + 1)
const structureSequence = structureSequence1 ?? structureSequence2
useEffect(() => {
diff --git a/src/LaunchProteinView/components/calculateProteinSequence.ts b/src/LaunchProteinView/components/calculateProteinSequence.ts
index 7891dc2..48791bf 100644
--- a/src/LaunchProteinView/components/calculateProteinSequence.ts
+++ b/src/LaunchProteinView/components/calculateProteinSequence.ts
@@ -30,7 +30,7 @@ export function calculateProteinSequence({
let protein = ''
for (let i = 0; i < str.length; i += 3) {
// use & symbol for undefined codon, or partial slice
- protein += codonTable[str.slice(i, i + 3)] || '&'
+ protein += codonTable[str.slice(i, i + 3)] ?? '&'
}
return protein
}
diff --git a/src/LaunchProteinView/index.ts b/src/LaunchProteinView/index.ts
index 3aaae23..ec1a692 100644
--- a/src/LaunchProteinView/index.ts
+++ b/src/LaunchProteinView/index.ts
@@ -2,45 +2,51 @@ import PluginManager from '@jbrowse/core/PluginManager'
import DisplayType from '@jbrowse/core/pluggableElementTypes/DisplayType'
import { PluggableElementType } from '@jbrowse/core/pluggableElementTypes'
import { IAnyModelType } from 'mobx-state-tree'
-import { getSession, getContainingTrack } from '@jbrowse/core/util'
+import { getSession, getContainingTrack, Feature } from '@jbrowse/core/util'
// icons
import AddIcon from '@mui/icons-material/Add'
// locals
import LaunchProteinViewDialog from './components/LaunchProteinViewDialog'
+import { MenuItem } from '@jbrowse/core/ui'
function isDisplay(elt: { name: string }): elt is DisplayType {
return elt.name === 'LinearBasicDisplay'
}
function extendStateModel(stateModel: IAnyModelType) {
- return stateModel.views(self => {
- const superContextMenuItems = self.contextMenuItems
- return {
- contextMenuItems() {
- const feature = self.contextMenuFeature
- const track = getContainingTrack(self)
- return [
- ...superContextMenuItems(),
- ...(feature
- ? [
- {
- label: 'Launch 3-D protein view',
- icon: AddIcon,
- onClick: () => {
- getSession(track).queueDialog(handleClose => [
- LaunchProteinViewDialog,
- { model: track, handleClose, feature },
- ])
+ return stateModel.views(
+ (self: {
+ contextMenuItems: () => MenuItem[]
+ contextMenuFeature?: Feature
+ }) => {
+ const superContextMenuItems = self.contextMenuItems
+ return {
+ contextMenuItems() {
+ const feature = self.contextMenuFeature
+ const track = getContainingTrack(self)
+ return [
+ ...superContextMenuItems(),
+ ...(feature
+ ? [
+ {
+ label: 'Launch 3-D protein view',
+ icon: AddIcon,
+ onClick: () => {
+ getSession(track).queueDialog(handleClose => [
+ LaunchProteinViewDialog,
+ { model: track, handleClose, feature },
+ ])
+ },
},
- },
- ]
- : []),
- ]
- },
- }
- })
+ ]
+ : []),
+ ]
+ },
+ }
+ },
+ )
}
export default function LaunchProteinViewF(pluginManager: PluginManager) {
diff --git a/src/ProteinView/components/ProteinAlignment.tsx b/src/ProteinView/components/ProteinAlignment.tsx
index d65fb95..2def2fc 100644
--- a/src/ProteinView/components/ProteinAlignment.tsx
+++ b/src/ProteinView/components/ProteinAlignment.tsx
@@ -23,9 +23,12 @@ const ProteinAlignment = observer(function ({
alignmentToStructurePosition,
showHighlight,
} = model
- const a0 = alignment!.alns[0].seq as string
- const a1 = alignment!.alns[1].seq as string
- const con = alignment!.consensus
+ if (!alignment) {
+ return
No alignment
+ }
+ const a0 = alignment.alns[0]!.seq as string
+ const a1 = alignment.alns[1]!.seq as string
+ const con = alignment.consensus
const set = new Set()
// eslint-disable-next-line unicorn/no-for-loop
for (let i = 0; i < con.length; i++) {
@@ -47,7 +50,7 @@ const ProteinAlignment = observer(function ({
}
function onClick(alignmentPos: number) {
const structureSeqPos = alignmentToStructurePosition[alignmentPos]
- clickProteinToGenome({ model, structureSeqPos }).catch(e => {
+ clickProteinToGenome({ model, structureSeqPos }).catch((e: unknown) => {
console.error(e)
})
}
diff --git a/src/ProteinView/components/ProteinView.tsx b/src/ProteinView/components/ProteinView.tsx
index 2cc373f..e297e76 100644
--- a/src/ProteinView/components/ProteinView.tsx
+++ b/src/ProteinView/components/ProteinView.tsx
@@ -20,11 +20,9 @@ import clearSelection from '../clearSelection'
// css
import css from '../css/molstar'
-if (document.head) {
- const style = document.createElement('style')
- style.append(css)
- document.head.append(style)
-}
+const style = document.createElement('style')
+style.append(css)
+document.head.append(style)
const ProteinView = observer(function ({
model,
@@ -98,9 +96,10 @@ const ProteinViewContainer = observer(function ({
}, [plugin, structure, showHighlight, structureSeqToTranscriptSeqPosition])
useEffect(() => {
- if (!plugin || !structure || structureSeqHoverPos === undefined) {
+ if (!plugin || !structure) {
return
}
+
if (structureSeqHoverPos === undefined) {
console.warn('not found')
} else {
diff --git a/src/ProteinView/launchRemotePairwiseAlignment.ts b/src/ProteinView/launchRemotePairwiseAlignment.ts
index ffc7bbd..b6e80fc 100644
--- a/src/ProteinView/launchRemotePairwiseAlignment.ts
+++ b/src/ProteinView/launchRemotePairwiseAlignment.ts
@@ -78,6 +78,7 @@ async function wait({
algorithm: string
onProgress: (arg: string) => void
}) {
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
while (true) {
for (let i = 0; i < 10; i++) {
await timeout(1000)
@@ -87,6 +88,8 @@ async function wait({
if (result === 'FINISHED') {
break
+ } else if (result.includes('FAILED')) {
+ throw new Error('Remote returned FAILED')
}
}
}
diff --git a/src/ProteinView/model.ts b/src/ProteinView/model.ts
index 5744049..2b33bef 100644
--- a/src/ProteinView/model.ts
+++ b/src/ProteinView/model.ts
@@ -72,7 +72,7 @@ function stateModelFactory() {
/**
* #property
*/
- feature: types.frozen(),
+ feature: types.frozen(),
/**
* #property
*/
diff --git a/src/ProteinView/proteinToGenomeMapping.ts b/src/ProteinView/proteinToGenomeMapping.ts
index 872f260..6339fe6 100644
--- a/src/ProteinView/proteinToGenomeMapping.ts
+++ b/src/ProteinView/proteinToGenomeMapping.ts
@@ -30,7 +30,7 @@ export function proteinToGenomeMapping({
}
const start = s0
const end = start + 3 * strand
- return [Math.min(start, end), Math.max(start, end)]
+ return [Math.min(start, end), Math.max(start, end)] as const
}
export async function clickProteinToGenome({
@@ -64,7 +64,7 @@ export async function clickProteinToGenome({
`${refName}:${s1}-${s2}${strand === -1 ? '[rev]' : ''}`,
)
} else {
- const assembly = assemblyManager.get(lgv.assemblyNames[0])
+ const assembly = assemblyManager.get(lgv.assemblyNames[0]!)
const r = assembly?.getCanonicalRefName(refName) ?? refName
lgv.centerAt(s1, r)
}
@@ -80,11 +80,12 @@ export function hoverProteinToGenome({
const session = getSession(model)
const result = proteinToGenomeMapping({ structureSeqPos, model })
const { genomeToTranscriptSeqMapping } = model
- if (!genomeToTranscriptSeqMapping || !result) {
+ if (!genomeToTranscriptSeqMapping) {
return
}
if (!result) {
session.notify('Genome position not found')
+ return
}
const [s1, s2] = result
const { refName } = genomeToTranscriptSeqMapping
diff --git a/src/ProteinView/useProteinViewClickBehavior.ts b/src/ProteinView/useProteinViewClickBehavior.ts
index d59db1c..48d6b86 100644
--- a/src/ProteinView/useProteinViewClickBehavior.ts
+++ b/src/ProteinView/useProteinViewClickBehavior.ts
@@ -36,10 +36,12 @@ export default function useProteinViewClickActionBehavior({
chain,
})
- clickProteinToGenome({ model, structureSeqPos: pos - 1 }).catch(e => {
- console.error(e)
- setError(e)
- })
+ clickProteinToGenome({ model, structureSeqPos: pos - 1 }).catch(
+ (e: unknown) => {
+ console.error(e)
+ setError(e)
+ },
+ )
}
}
})
diff --git a/src/ProteinView/util.ts b/src/ProteinView/util.ts
index 9a59c2d..ad693cc 100644
--- a/src/ProteinView/util.ts
+++ b/src/ProteinView/util.ts
@@ -5,7 +5,10 @@ import { proteinAbbreviationMapping } from './proteinAbbreviationMapping'
export function checkHovered(hovered: unknown): hovered is {
hoverFeature: Feature
- hoverPosition: { coord: number; refName: string }
+ hoverPosition: {
+ coord: number
+ refName: string
+ }
} {
return (
!!hovered &&
@@ -43,7 +46,7 @@ export function toStr(r: {
return [
`Position: ${r.structureSeqPos}`,
r.code
- ? `Letter: ${r.code} (${proteinAbbreviationMapping[r.code].singleLetterCode})`
+ ? `Letter: ${r.code} (${proteinAbbreviationMapping[r.code]?.singleLetterCode})`
: '',
r.chain ? `Chain: ${r.chain}` : '',
]
@@ -51,6 +54,12 @@ export function toStr(r: {
.join(', ')
}
-export function invertMap(arg: Record) {
- return Object.fromEntries(Object.entries(arg).map(([a, b]) => [b, a]))
+export function invertMap(
+ arg: Record,
+): Record {
+ return Object.fromEntries(
+ Object.entries(arg)
+ .map(([a, b]) => [b, a])
+ .filter(f => !!f[0]),
+ )
}
diff --git a/yarn.lock b/yarn.lock
index 8365cc7..c6f39a7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1421,62 +1421,62 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/eslint-plugin@8.1.0", "@typescript-eslint/eslint-plugin@^8.1.0":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.1.0.tgz#3c020deeaaba82a6f741d00dacf172c53be4911f"
- integrity sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==
+"@typescript-eslint/eslint-plugin@8.2.0", "@typescript-eslint/eslint-plugin@^8.1.0":
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.2.0.tgz#bf50e9c8dac6bdf15dd1b52ca29448550903558e"
+ integrity sha512-02tJIs655em7fvt9gps/+4k4OsKULYGtLBPJfOsmOq1+3cdClYiF0+d6mHu6qDnTcg88wJBkcPLpQhq7FyDz0A==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
- "@typescript-eslint/scope-manager" "8.1.0"
- "@typescript-eslint/type-utils" "8.1.0"
- "@typescript-eslint/utils" "8.1.0"
- "@typescript-eslint/visitor-keys" "8.1.0"
+ "@typescript-eslint/scope-manager" "8.2.0"
+ "@typescript-eslint/type-utils" "8.2.0"
+ "@typescript-eslint/utils" "8.2.0"
+ "@typescript-eslint/visitor-keys" "8.2.0"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
ts-api-utils "^1.3.0"
-"@typescript-eslint/parser@8.1.0", "@typescript-eslint/parser@^8.1.0":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.1.0.tgz#b7e77f5fa212df59eba51ecd4986f194bccc2303"
- integrity sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==
+"@typescript-eslint/parser@8.2.0", "@typescript-eslint/parser@^8.1.0":
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.2.0.tgz#de3993304feb98576d9ffbf10c83ca1bcb68a5dd"
+ integrity sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==
dependencies:
- "@typescript-eslint/scope-manager" "8.1.0"
- "@typescript-eslint/types" "8.1.0"
- "@typescript-eslint/typescript-estree" "8.1.0"
- "@typescript-eslint/visitor-keys" "8.1.0"
+ "@typescript-eslint/scope-manager" "8.2.0"
+ "@typescript-eslint/types" "8.2.0"
+ "@typescript-eslint/typescript-estree" "8.2.0"
+ "@typescript-eslint/visitor-keys" "8.2.0"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@8.1.0":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.1.0.tgz#dd8987d2efebb71d230a1c71d82e84a7aead5c3d"
- integrity sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==
+"@typescript-eslint/scope-manager@8.2.0":
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.2.0.tgz#4a4bd7e7df5522acc8795c3b6f21e8c41b951138"
+ integrity sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==
dependencies:
- "@typescript-eslint/types" "8.1.0"
- "@typescript-eslint/visitor-keys" "8.1.0"
+ "@typescript-eslint/types" "8.2.0"
+ "@typescript-eslint/visitor-keys" "8.2.0"
-"@typescript-eslint/type-utils@8.1.0":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.1.0.tgz#dbf5a4308166dfc37a36305390dea04a3a3b5048"
- integrity sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==
+"@typescript-eslint/type-utils@8.2.0":
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.2.0.tgz#5cd7fef50f492e5a0f508bdd40678861a57c3549"
+ integrity sha512-g1CfXGFMQdT5S+0PSO0fvGXUaiSkl73U1n9LTK5aRAFnPlJ8dLKkXr4AaLFvPedW8lVDoMgLLE3JN98ZZfsj0w==
dependencies:
- "@typescript-eslint/typescript-estree" "8.1.0"
- "@typescript-eslint/utils" "8.1.0"
+ "@typescript-eslint/typescript-estree" "8.2.0"
+ "@typescript-eslint/utils" "8.2.0"
debug "^4.3.4"
ts-api-utils "^1.3.0"
-"@typescript-eslint/types@8.1.0":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.1.0.tgz#fbf1eaa668a7e444ac507732ca9d3c3468e5db9c"
- integrity sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==
+"@typescript-eslint/types@8.2.0":
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.2.0.tgz#dfe9895a2812f7c6bf7af863054c22a67060420c"
+ integrity sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==
-"@typescript-eslint/typescript-estree@8.1.0":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.1.0.tgz#c44e5667683c0bb5caa43192e27de6a994f4e4c4"
- integrity sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==
+"@typescript-eslint/typescript-estree@8.2.0":
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.2.0.tgz#fbdb93a1c7ac7f1f96ae2de4fc97cd64c60ae894"
+ integrity sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==
dependencies:
- "@typescript-eslint/types" "8.1.0"
- "@typescript-eslint/visitor-keys" "8.1.0"
+ "@typescript-eslint/types" "8.2.0"
+ "@typescript-eslint/visitor-keys" "8.2.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
@@ -1484,22 +1484,22 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
-"@typescript-eslint/utils@8.1.0":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.1.0.tgz#a922985a43d2560ce0d293be79148fa80c1325e0"
- integrity sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==
+"@typescript-eslint/utils@8.2.0":
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.2.0.tgz#02d442285925f28d520587185f295f932702e733"
+ integrity sha512-O46eaYKDlV3TvAVDNcoDzd5N550ckSe8G4phko++OCSC1dYIb9LTc3HDGYdWqWIAT5qDUKphO6sd9RrpIJJPfg==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
- "@typescript-eslint/scope-manager" "8.1.0"
- "@typescript-eslint/types" "8.1.0"
- "@typescript-eslint/typescript-estree" "8.1.0"
+ "@typescript-eslint/scope-manager" "8.2.0"
+ "@typescript-eslint/types" "8.2.0"
+ "@typescript-eslint/typescript-estree" "8.2.0"
-"@typescript-eslint/visitor-keys@8.1.0":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.1.0.tgz#ab2b3a9699a8ddebf0c205e133f114c1fed9daad"
- integrity sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==
+"@typescript-eslint/visitor-keys@8.2.0":
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz#f6abb3b6508898a117175ddc11f9b9869cc96834"
+ integrity sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==
dependencies:
- "@typescript-eslint/types" "8.1.0"
+ "@typescript-eslint/types" "8.2.0"
eslint-visitor-keys "^3.4.3"
"@ungap/structured-clone@^1.0.0":
@@ -6108,13 +6108,13 @@ typed-array-length@^1.0.6:
possible-typed-array-names "^1.0.0"
typescript-eslint@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.1.0.tgz#c43a3543ab34c37b7f88deb4ff18b9764aed0b60"
- integrity sha512-prB2U3jXPJLpo1iVLN338Lvolh6OrcCZO+9Yv6AR+tvegPPptYCDBIHiEEUdqRi8gAv2bXNKfMUrgAd2ejn/ow==
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.2.0.tgz#90d75636b663a9f5e391e9b3a33f3031236a25c8"
+ integrity sha512-DmnqaPcML0xYwUzgNbM1XaKXpEb7BShYf2P1tkUmmcl8hyeG7Pj08Er7R9bNy6AufabywzJcOybQAtnD/c9DGw==
dependencies:
- "@typescript-eslint/eslint-plugin" "8.1.0"
- "@typescript-eslint/parser" "8.1.0"
- "@typescript-eslint/utils" "8.1.0"
+ "@typescript-eslint/eslint-plugin" "8.2.0"
+ "@typescript-eslint/parser" "8.2.0"
+ "@typescript-eslint/utils" "8.2.0"
typescript@^5.3.3:
version "5.5.4"
@@ -6137,9 +6137,9 @@ undici-types@~5.26.4:
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
undici-types@~6.19.2:
- version "6.19.6"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.6.tgz#e218c3df0987f4c0e0008ca00d6b6472d9b89b36"
- integrity sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==
+ version "6.19.8"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
+ integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
unified@^11.0.0:
version "11.0.5"