diff --git a/.eslintrc.json b/.eslintrc.json index 162870ccca1..65e2fac75f7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,7 +1,15 @@ { - "extends": ["next/core-web-vitals", "prettier"], - "plugins": ["prettier"], + "extends": [ + "next/core-web-vitals", + "plugin:@typescript-eslint/recommended", + "prettier" // prettier should always come last + ], + "parser": "@typescript-eslint/parser", + "plugins": ["@typescript-eslint", "prettier"], "rules": { - "react-hooks/exhaustive-deps": "error" + "react-hooks/exhaustive-deps": "error", + "@typescript-eslint/no-explicit-any": "warn", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "error" } } diff --git a/package.json b/package.json index dfd046175ce..b91b3f63d6d 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "@types/node": "^12.12.9", "@types/react": "^18.0.0", "@types/url-parse": "^1.4.3", + "@typescript-eslint/eslint-plugin": "^6.13.1", "axios": "^1.3.4", "classnames": "^2.3.2", "cross-env": "^7.0.3", diff --git a/src/components/Breadcrumbs/index.tsx b/src/components/Breadcrumbs/index.tsx index a2a42bcf976..a87bab2be84 100644 --- a/src/components/Breadcrumbs/index.tsx +++ b/src/components/Breadcrumbs/index.tsx @@ -44,14 +44,14 @@ function generateBreadcrumbs( const breadcrumbs: BreadcrumbItem[] = []; const pieces = route.split('/').filter((str) => str); - let urls: string[] = []; + const urls: string[] = []; for (let i = 1; i <= pieces.length; i++) { urls.push(`/${pieces.slice(0, i).join('/')}`); } urls.forEach((url) => { const directoryEntry = findNode(url); - let href = { + const href = { pathname: url }; if (url.includes('[platform]')) { @@ -75,8 +75,8 @@ function generateBreadcrumbs( return breadcrumbs; } -function BreadcrumbsComponent({ route, platform, isGen2 }: Props) { - const items = generateBreadcrumbs(route, platform, isGen2); +function BreadcrumbsComponent({ route, platform }: Props) { + const items = generateBreadcrumbs(route, platform); return items.length > 1 ? (
diff --git a/src/components/CliCommands/Command.tsx b/src/components/CliCommands/Command.tsx index bb7b887d8c3..43abc996482 100644 --- a/src/components/CliCommands/Command.tsx +++ b/src/components/CliCommands/Command.tsx @@ -1,5 +1,5 @@ import { CliCommand, CliCommandFlag } from '@/data/cli-commands'; -import { Heading, Text, Flex, View } from '@aws-amplify/ui-react'; +import { Text, Flex } from '@aws-amplify/ui-react'; import { MDXCode } from '../MDXComponents'; import { CommandHeading, SubCommandHeading } from './CommandHeading'; import { Fragment } from 'react'; diff --git a/src/components/ExternalLink/index.tsx b/src/components/ExternalLink/index.tsx index 833a35a9fb4..54c4970851f 100644 --- a/src/components/ExternalLink/index.tsx +++ b/src/components/ExternalLink/index.tsx @@ -21,7 +21,7 @@ const ExternalLink: React.FC = ({ className={className} rel="noopener noreferrer" target="_blank" - onClick={(e) => { + onClick={() => { trackLink(href); }} > diff --git a/src/components/ExternalLinkButton/ExternalLinkButton.tsx b/src/components/ExternalLinkButton/ExternalLinkButton.tsx index 711d7f66c60..cdfca20c12a 100644 --- a/src/components/ExternalLinkButton/ExternalLinkButton.tsx +++ b/src/components/ExternalLinkButton/ExternalLinkButton.tsx @@ -32,7 +32,7 @@ export const ExternalLinkButton = ({ as="a" align-items="center" className={className} - onClick={(e) => { + onClick={() => { trackLink(href); }} > diff --git a/src/components/FeatureFlags/FeatureFlagValues.tsx b/src/components/FeatureFlags/FeatureFlagValues.tsx index b180ee7aa26..c7005acc61d 100644 --- a/src/components/FeatureFlags/FeatureFlagValues.tsx +++ b/src/components/FeatureFlags/FeatureFlagValues.tsx @@ -1,14 +1,11 @@ import { - Heading, Table, TableCell, TableBody, TableHead, TableRow, - Text, View } from '@aws-amplify/ui-react'; -import Link from 'next/link'; export type FeatureFlags = Record; diff --git a/src/components/FeatureLists/FeatureLists.tsx b/src/components/FeatureLists/FeatureLists.tsx index 89e04fd897e..71e5add184a 100644 --- a/src/components/FeatureLists/FeatureLists.tsx +++ b/src/components/FeatureLists/FeatureLists.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Grid, Heading } from '@aws-amplify/ui-react'; +import { Heading } from '@aws-amplify/ui-react'; import { Columns } from '@/components/Columns'; interface FeatureListsProps { diff --git a/src/components/Feedback/__tests__/index.test.tsx b/src/components/Feedback/__tests__/index.test.tsx index f13be58b5b3..f93e48ff9f4 100644 --- a/src/components/Feedback/__tests__/index.test.tsx +++ b/src/components/Feedback/__tests__/index.test.tsx @@ -1,5 +1,5 @@ import Feedback from '../index'; -import { fireEvent, render, screen, waitFor } from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import * as trackModule from '../../../utils/track'; diff --git a/src/components/FilterChildren/__tests__/FilterChildren.test.tsx b/src/components/FilterChildren/__tests__/FilterChildren.test.tsx index c9a826532bc..419840683c0 100644 --- a/src/components/FilterChildren/__tests__/FilterChildren.test.tsx +++ b/src/components/FilterChildren/__tests__/FilterChildren.test.tsx @@ -1,8 +1,8 @@ -import * as React from 'react'; -import { render, screen } from '@testing-library/react'; -import FilterChildren from '../index'; +// import * as React from 'react'; +// import { render, screen } from '@testing-library/react'; +// import FilterChildren from '../index'; -let routerMock = { +const routerMock = { __esModule: true }; diff --git a/src/components/FilterContent/__tests__/FilterContent.test.tsx b/src/components/FilterContent/__tests__/FilterContent.test.tsx index 1f9a6c6e13d..94c451159c7 100644 --- a/src/components/FilterContent/__tests__/FilterContent.test.tsx +++ b/src/components/FilterContent/__tests__/FilterContent.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { render, screen } from '@testing-library/react'; import FilterContent from '../index'; -let routerMock = { +const routerMock = { __esModule: true }; diff --git a/src/components/Fragments/__tests__/Fragments.test.tsx b/src/components/Fragments/__tests__/Fragments.test.tsx index 15e362f7ecd..d0bfc44bc51 100644 --- a/src/components/Fragments/__tests__/Fragments.test.tsx +++ b/src/components/Fragments/__tests__/Fragments.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { render, screen } from '@testing-library/react'; import Fragments from '../index'; -let routerMock = { +const routerMock = { __esModule: true, useRouter: () => { return { diff --git a/src/components/Fragments/index.tsx b/src/components/Fragments/index.tsx index 4cbf0fb14de..9403d5ecb32 100644 --- a/src/components/Fragments/index.tsx +++ b/src/components/Fragments/index.tsx @@ -1,10 +1,6 @@ import { Fragment } from 'react'; import FilterChildren from '../FilterChildren'; -type MdxFrontmatterType = { - lastUpdated: string; -}; - export default function Fragments({ fragments }) { const children: React.ReactNode[] = []; diff --git a/src/components/GetStartedPopover/GetStartedPopover.tsx b/src/components/GetStartedPopover/GetStartedPopover.tsx index 270d455b2a2..02c899c10d9 100644 --- a/src/components/GetStartedPopover/GetStartedPopover.tsx +++ b/src/components/GetStartedPopover/GetStartedPopover.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useRef, useCallback } from 'react'; +import { useState, useEffect, useRef } from 'react'; import classNames from 'classnames'; import { Button, Flex, VisuallyHidden, View } from '@aws-amplify/ui-react'; import Link from 'next/link'; @@ -15,7 +15,6 @@ import { IconVue } from '@/components/Icons'; import { useClickOutside } from '@/utils/useClickOutside'; -import { DEFAULT_PLATFORM } from '@/data/platforms'; import { useTabKeyDetection } from '@/utils/useTabKeyDetection'; const getStartedHref = '/[platform]/start/getting-started/introduction/'; diff --git a/src/components/Icons/IconNext.tsx b/src/components/Icons/IconNext.tsx index 28c0ce90e11..bc9614aa40c 100644 --- a/src/components/Icons/IconNext.tsx +++ b/src/components/Icons/IconNext.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useMemo } from 'react'; +import { useState, useEffect } from 'react'; import { Icon } from '@aws-amplify/ui-react'; import { v4 as uuidv4 } from 'uuid'; diff --git a/src/components/InlineFilter/__tests__/InlineFilter.test.tsx b/src/components/InlineFilter/__tests__/InlineFilter.test.tsx index afd0ea6c645..f63f66ae69d 100644 --- a/src/components/InlineFilter/__tests__/InlineFilter.test.tsx +++ b/src/components/InlineFilter/__tests__/InlineFilter.test.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { render, screen } from '@testing-library/react'; import InlineFilter from '../index'; -let routerMock = { +const routerMock = { __esModule: true, useRouter: () => { return { diff --git a/src/components/Layout/Layout.tsx b/src/components/Layout/Layout.tsx index 6cb72ae3801..ed91a7461f5 100644 --- a/src/components/Layout/Layout.tsx +++ b/src/components/Layout/Layout.tsx @@ -36,9 +36,7 @@ import { LayoutProvider } from '@/components/Layout'; import { TableOfContents } from '@/components/TableOfContents'; import type { HeadingInterface } from '@/components/TableOfContents/TableOfContents'; import { PlatformNavigator } from '@/components/PlatformNavigator'; -import directory from 'src/directory/directory.json'; import flatDirectory from 'src/directory/flatDirectory.json'; -import { PageNode } from 'src/directory/directory'; import { Breadcrumbs } from '@/components/Breadcrumbs'; import { debounce } from '@/utils/debounce'; import { DocSearch } from '@docsearch/react'; @@ -65,7 +63,7 @@ export const Layout = ({ url, useCustomTitle = false }: { - children: any; + children: React.ReactNode; hasTOC?: boolean; pageDescription?: string; pageTitle?: string; diff --git a/src/components/MDXComponents/MDXLink.tsx b/src/components/MDXComponents/MDXLink.tsx index b3ec0b9cc8c..2de2e26ef2e 100644 --- a/src/components/MDXComponents/MDXLink.tsx +++ b/src/components/MDXComponents/MDXLink.tsx @@ -3,8 +3,13 @@ import ExternalLink from '@/components/ExternalLink'; import { useCurrentPlatform } from '@/utils/useCurrentPlatform'; import { usePathWithoutHash } from '@/utils/usePathWithoutHash'; -export const MDXLink = (props) => { - let { href, children, hash } = props; +export const MDXLink = ({ + href: hrefFromProps, + children, + hash: hashFromProps +}) => { + let href = hrefFromProps; + let hash = hashFromProps; const isInternal = href && (href.startsWith('/') || href.startsWith('#')); const baseURI = usePathWithoutHash(); const platform = useCurrentPlatform(); diff --git a/src/components/Menu/MenuItem.tsx b/src/components/Menu/MenuItem.tsx index 083596d0d22..c3242b40ed4 100644 --- a/src/components/Menu/MenuItem.tsx +++ b/src/components/Menu/MenuItem.tsx @@ -68,7 +68,7 @@ export function MenuItem({ } }; - let pathname = getPathname(pageNode.route, currentPlatform); + const pathname = getPathname(pageNode.route, currentPlatform); const current = asPathWithoutHash === pathname; diff --git a/src/components/MigrationAlert/MigrationAlert.tsx b/src/components/MigrationAlert/MigrationAlert.tsx index 4b51449871c..58187548cc3 100644 --- a/src/components/MigrationAlert/MigrationAlert.tsx +++ b/src/components/MigrationAlert/MigrationAlert.tsx @@ -1,8 +1,6 @@ -import { useState } from 'react'; import { Callout } from '../Callout'; import Link from 'next/link'; import { useCurrentPlatform } from '@/utils/useCurrentPlatform'; -import { Platform } from '@/data/platforms'; type MigrationAlert = { isLegacy: boolean; diff --git a/src/components/NextPrevious/index.tsx b/src/components/NextPrevious/index.tsx index 49f95da852e..783146d905b 100644 --- a/src/components/NextPrevious/index.tsx +++ b/src/components/NextPrevious/index.tsx @@ -24,8 +24,8 @@ export const NextPrevious = () => { return { previous, next }; } else if (children && children.length) { for (let i = 0; i < children.length; i++) { - let child = children[i]; - let res = findDirectoryNodes( + const child = children[i]; + const res = findDirectoryNodes( route, child, platform, diff --git a/src/components/PlatformNavigator/index.tsx b/src/components/PlatformNavigator/index.tsx index 70a7caf3aba..203adbc225f 100644 --- a/src/components/PlatformNavigator/index.tsx +++ b/src/components/PlatformNavigator/index.tsx @@ -1,4 +1,4 @@ -import { useState, useRef, useEffect, useCallback } from 'react'; +import { useState, useRef, useEffect } from 'react'; import { Button, Flex, Text, View } from '@aws-amplify/ui-react'; import { IconChevron } from '@/components/Icons'; import { frameworks } from '@/constants/frameworks'; diff --git a/src/pages/404.tsx b/src/pages/404.tsx index d6231aa943f..95cef57eda5 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -20,7 +20,7 @@ export function getStaticProps() { export default function Custom404() { const basePath = 'https://docs.amplify.aws'; - let [href, setHref] = useState(basePath); + const [href, setHref] = useState(basePath); const path = useRouter().asPath; useEffect(() => { setHref(basePath + path); diff --git a/src/pages/[platform]/index.tsx b/src/pages/[platform]/index.tsx index d65a7da8dd0..36c7436fed7 100644 --- a/src/pages/[platform]/index.tsx +++ b/src/pages/[platform]/index.tsx @@ -4,10 +4,9 @@ import { FrameworkGrid } from '@/components/FrameworkGrid'; import { IconChevron } from '@/components/Icons'; import { GetStartedPopover } from '@/components/GetStartedPopover'; import { InternalLinkButton } from '@/components/InternalLinkButton'; -import { Flex, Heading, Button, Text } from '@aws-amplify/ui-react'; +import { Flex, Heading, Text } from '@aws-amplify/ui-react'; import LinkCards from '@/components/LinkCards'; import PlatformFeatureList from '@/components/FeatureLists/PlatformFeatureList'; -import Link from 'next/link'; export const meta = { title: 'Overview', diff --git a/src/pages/[platform]/tools/cli/commands.tsx b/src/pages/[platform]/tools/cli/commands.tsx index b1be221855a..65da86b0ec6 100644 --- a/src/pages/[platform]/tools/cli/commands.tsx +++ b/src/pages/[platform]/tools/cli/commands.tsx @@ -1,5 +1,5 @@ import { getCustomStaticPath } from '@/utils/getCustomStaticPath'; -import { Flex, Heading, View } from '@aws-amplify/ui-react'; +import { Flex } from '@aws-amplify/ui-react'; import { commands } from '@/data/cli-commands.mjs'; import { Command } from '@/components/CliCommands'; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 79893de34e3..c99ea4b4569 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,4 +1,4 @@ -import { Heading, Text, Flex, Button, Grid } from '@aws-amplify/ui-react'; +import { Heading, Text, Flex } from '@aws-amplify/ui-react'; import { FrameworkGrid } from '@/components/FrameworkGrid'; import { GetStartedPopover } from '@/components/GetStartedPopover'; import { IconChevron } from '@/components/Icons'; @@ -28,7 +28,7 @@ export function getStaticProps() { export default function Page() { //Default platform is javascript - let defaultPlatform = DEFAULT_PLATFORM; + const defaultPlatform = DEFAULT_PLATFORM; return ( diff --git a/src/utils/findDirectoryNode.ts b/src/utils/findDirectoryNode.ts index c6d5aa77582..41e47e8e21f 100644 --- a/src/utils/findDirectoryNode.ts +++ b/src/utils/findDirectoryNode.ts @@ -1,13 +1,13 @@ import directory from '../directory/directory.json'; export const findDirectoryNode = (route, dir = directory) => { - if(dir.route === route){ - return dir - }else if(dir.children && dir.children.length){ - for(let i = 0; i < dir.children.length; i++){ - let child = dir.children[i]; - let res = findDirectoryNode(route, child); - if(res) return res; - } + if (dir.route === route) { + return dir; + } else if (dir.children && dir.children.length) { + for (let i = 0; i < dir.children.length; i++) { + const child = dir.children[i]; + const res = findDirectoryNode(route, child); + if (res) return res; } -} \ No newline at end of file + } +}; diff --git a/src/utils/parseLocalStorage.ts b/src/utils/parseLocalStorage.ts index d37c83f047b..162ece6a172 100644 --- a/src/utils/parseLocalStorage.ts +++ b/src/utils/parseLocalStorage.ts @@ -1,5 +1,5 @@ export function parseLocalStorage(key: string, fallback: any): any { - if (typeof localStorage === "undefined") return fallback; + if (typeof localStorage === 'undefined') return fallback; const result = localStorage.getItem(key); if (!result) { diff --git a/src/utils/track.ts b/src/utils/track.ts index 211cd7a6aa5..bbd75f42c79 100644 --- a/src/utils/track.ts +++ b/src/utils/track.ts @@ -27,45 +27,6 @@ export enum AnalyticsEventType { PAGE_DATA_FETCH_EXCEPTION = 'PAGE_DATA_FETCH_EXCEPTION' } -interface AnalyticsEventPageVisit { - type: AnalyticsEventType.PAGE_VISIT; - attributes: { - url: string; - previousUrl: string; - referrer: string; - }; -} - -interface AnalyticsEventInternalLinkClick { - type: AnalyticsEventType.INTERNAL_LINK_CLICK; - attributes: { - from: string; - to: string; - }; -} - -interface AnalyticsEventExternalLinkClick { - type: AnalyticsEventType.EXTERNAL_LINK_CLICK; - attributes: { - from: string; - to: string; - }; -} - -interface AnalyticsEventPageDataFetchException { - type: AnalyticsEventType.PAGE_DATA_FETCH_EXCEPTION; - attributes: { - url: string; - exception: Error; - }; -} - -type AnalyticsEvent = - | AnalyticsEventPageVisit - | AnalyticsEventInternalLinkClick - | AnalyticsEventExternalLinkClick - | AnalyticsEventPageDataFetchException; - export const trackPageVisit = (): void => { if (typeof window !== 'undefined' && typeof s != 'undefined') { s.pageName = window.location.href; @@ -130,13 +91,7 @@ export const setSearchResultCount = (resultCount: number): void => { } }; -export const trackSearchQuery = ( - _input, - _event, - suggestion, - _datasetNumber, - _context -): void => { +export const trackSearchQuery = (_input, _event, suggestion): void => { if (typeof window !== 'undefined' && typeof s != 'undefined') { s.linkTrackVars = 'prop39,prop41,prop50,prop61,prop62,eVar26,eVar27,eVar39,eVar41,eVar50,eVar61,eVar62,eVar69,events'; diff --git a/yarn.lock b/yarn.lock index 80b1c59309f..c2d02e6f35f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2774,14 +2774,14 @@ "@docsearch/css" "3.5.2" algoliasearch "^4.19.1" -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== @@ -3832,7 +3832,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -3930,6 +3930,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.6.tgz#eb26db6780c513de59bee0b869ef289ad3068711" integrity sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA== +"@types/semver@^7.5.0": + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + "@types/stack-utils@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" @@ -3969,6 +3974,23 @@ dependencies: "@types/node" "*" +"@typescript-eslint/eslint-plugin@^6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz#f98bd887bf95551203c917e734d113bf8d527a0c" + integrity sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.13.1" + "@typescript-eslint/type-utils" "6.13.1" + "@typescript-eslint/utils" "6.13.1" + "@typescript-eslint/visitor-keys" "6.13.1" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/parser@^5.4.2 || ^6.0.0": version "6.13.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.13.1.tgz#29d6d4e5fab4669e58bc15f6904b67da65567487" @@ -3988,6 +4010,16 @@ "@typescript-eslint/types" "6.13.1" "@typescript-eslint/visitor-keys" "6.13.1" +"@typescript-eslint/type-utils@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz#e6e5885e387841cae9c38fc0638fd8b7561973d6" + integrity sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ== + dependencies: + "@typescript-eslint/typescript-estree" "6.13.1" + "@typescript-eslint/utils" "6.13.1" + debug "^4.3.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/types@6.13.1": version "6.13.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.13.1.tgz#b56f26130e7eb8fa1e429c75fb969cae6ad7bb5c" @@ -4006,6 +4038,19 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/utils@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.13.1.tgz#925b3a2453a71ada914ae329b7bb7e7d96634b2f" + integrity sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.13.1" + "@typescript-eslint/types" "6.13.1" + "@typescript-eslint/typescript-estree" "6.13.1" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@6.13.1": version "6.13.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz#c4b692dcc23a4fc60685b718f10fde789d65a540"