diff --git a/.eslintrc.json b/.eslintrc.json index bffb357a..d63ba64e 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,21 @@ { - "extends": "next/core-web-vitals" -} + "extends": [ + "next/core-web-vitals", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "plugins": ["@typescript-eslint"], + "rules": { + "@typescript-eslint/no-unused-vars": [ + "error", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_|^UNUSED_", + "caughtErrorsIgnorePattern": "^_", + "destructuredArrayIgnorePattern": "^_" + } + ], + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-empty-object-type": "off" + } +} \ No newline at end of file diff --git a/package.json b/package.json index b17da512..42cba45b 100644 --- a/package.json +++ b/package.json @@ -61,11 +61,15 @@ "zod": "^3.23.8" }, "devDependencies": { + "@eslint/js": "^9.12.0", + "@types/eslint__js": "^8.42.3", "@types/js-cookie": "^3.0.6", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "@types/uuid": "^10.0.0", + "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/parser": "^8.8.1", "eslint": "^8", "eslint-config-next": "14.2.7", "postcss": "^8", @@ -73,6 +77,7 @@ "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.1", "tsx": "^4.19.1", - "typescript": "^5" + "typescript": "^5", + "typescript-eslint": "^8.8.1" } } diff --git a/src/agent/nodes/rewriteArtifact.ts b/src/agent/nodes/rewriteArtifact.ts index 6eee2271..f10618c2 100644 --- a/src/agent/nodes/rewriteArtifact.ts +++ b/src/agent/nodes/rewriteArtifact.ts @@ -1,7 +1,6 @@ import { ChatOpenAI } from "@langchain/openai"; import { GraphAnnotation, GraphReturnType } from "../state"; import { UPDATE_ENTIRE_ARTIFACT_PROMPT } from "../prompts"; -import { Artifact } from "../../types"; export const rewriteArtifact = async ( state: typeof GraphAnnotation.State diff --git a/src/agent/nodes/rewriteArtifactTheme.ts b/src/agent/nodes/rewriteArtifactTheme.ts index 50a9d55b..e428fbe3 100644 --- a/src/agent/nodes/rewriteArtifactTheme.ts +++ b/src/agent/nodes/rewriteArtifactTheme.ts @@ -7,7 +7,6 @@ import { CHANGE_ARTIFACT_READING_LEVEL_PROMPT, CHANGE_ARTIFACT_TO_PIRATE_PROMPT, } from "../prompts"; -import { Artifact } from "../../types"; export const rewriteArtifactTheme = async ( state: typeof GraphAnnotation.State diff --git a/src/agent/nodes/rewriteCodeArtifactTheme.ts b/src/agent/nodes/rewriteCodeArtifactTheme.ts index 1bf18f3a..17fa1238 100644 --- a/src/agent/nodes/rewriteCodeArtifactTheme.ts +++ b/src/agent/nodes/rewriteCodeArtifactTheme.ts @@ -6,7 +6,6 @@ import { FIX_BUGS_CODE_ARTIFACT_PROMPT, PORT_LANGUAGE_CODE_ARTIFACT_PROMPT, } from "../prompts"; -import { Artifact } from "../../types"; export const rewriteCodeArtifactTheme = async ( state: typeof GraphAnnotation.State diff --git a/src/components/Primitives.tsx b/src/components/Primitives.tsx index 6efca16e..b1aa81b6 100644 --- a/src/components/Primitives.tsx +++ b/src/components/Primitives.tsx @@ -14,7 +14,6 @@ import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { ArrowDownIcon, - ExternalLink, SendHorizontalIcon, SquarePen, Code, @@ -24,7 +23,6 @@ import { MarkdownText } from "@/components/ui/assistant-ui/markdown-text"; import { TooltipIconButton } from "@/components/ui/assistant-ui/tooltip-icon-button"; import { useArtifactToolUI } from "./ArtifactToolUI"; import { Thread } from "@langchain/langgraph-sdk"; -import { LangSmithSVG } from "./icons/langsmith"; import { useLangSmithLinkToolUI } from "./LangSmithLinkToolUI"; import { ProgrammingLanguageList } from "./ProgrammingLanguageList"; import { ProgrammingLanguageOptions } from "@/types"; diff --git a/src/components/artifacts/CodeRenderer.tsx b/src/components/artifacts/CodeRenderer.tsx index 62d4dc6e..6ad69b64 100644 --- a/src/components/artifacts/CodeRenderer.tsx +++ b/src/components/artifacts/CodeRenderer.tsx @@ -1,5 +1,5 @@ import { Artifact } from "@/types"; -import { MutableRefObject, useState } from "react"; +import { MutableRefObject } from "react"; import CodeMirror, { EditorView } from "@uiw/react-codemirror"; import { javascript } from "@codemirror/lang-javascript"; import { cpp } from "@codemirror/lang-cpp"; diff --git a/src/components/artifacts/actions_toolbar/code/PortToLanguage.tsx b/src/components/artifacts/actions_toolbar/code/PortToLanguage.tsx index a1ff5303..6e7cfcf9 100644 --- a/src/components/artifacts/actions_toolbar/code/PortToLanguage.tsx +++ b/src/components/artifacts/actions_toolbar/code/PortToLanguage.tsx @@ -1,5 +1,4 @@ import { GraphInput } from "@/hooks/useGraph"; -import { TooltipIconButton } from "@/components/ui/assistant-ui/tooltip-icon-button"; import { ProgrammingLanguageOptions } from "@/types"; import { useToast } from "@/hooks/use-toast"; import { ProgrammingLanguageList } from "@/components/ProgrammingLanguageList"; diff --git a/src/components/artifacts/actions_toolbar/text/index.tsx b/src/components/artifacts/actions_toolbar/text/index.tsx index 2a7e8f66..9bc2b9e5 100644 --- a/src/components/artifacts/actions_toolbar/text/index.tsx +++ b/src/components/artifacts/actions_toolbar/text/index.tsx @@ -1,7 +1,6 @@ import { useEffect, useRef, useState } from "react"; import { Languages, - Plus, BookOpen, SlidersVertical, SmilePlus, diff --git a/src/components/ui/assistant-ui/markdown-text.tsx b/src/components/ui/assistant-ui/markdown-text.tsx index f42cc927..a94b8d20 100644 --- a/src/components/ui/assistant-ui/markdown-text.tsx +++ b/src/components/ui/assistant-ui/markdown-text.tsx @@ -8,7 +8,7 @@ import { import remarkGfm from "remark-gfm"; import rehypeKatex from "rehype-katex"; import remarkMath from "remark-math"; -import { FC, memo, useCallback, useState } from "react"; +import { FC, memo, useState } from "react"; import { CheckIcon, CopyIcon } from "lucide-react"; import { TooltipIconButton } from "@/components/ui/assistant-ui/tooltip-icon-button"; @@ -23,7 +23,7 @@ const MarkdownTextImpl = () => { remarkPlugins={[remarkGfm, remarkMath]} rehypePlugins={[rehypeKatex]} components={{ - h1: ({ node, className, ...props }) => ( + h1: ({ node: _node, className, ...props }) => (

{ {...props} /> ), - h2: ({ node, className, ...props }) => ( + h2: ({ node: _node, className, ...props }) => (

{ {...props} /> ), - h3: ({ node, className, ...props }) => ( + h3: ({ node: _node, className, ...props }) => (

{ {...props} /> ), - h4: ({ node, className, ...props }) => ( + h4: ({ node: _node, className, ...props }) => (

{ {...props} /> ), - h5: ({ node, className, ...props }) => ( + h5: ({ node: _node, className, ...props }) => (

{ {...props} /> ), - h6: ({ node, className, ...props }) => ( + h6: ({ node: _node, className, ...props }) => (
), - p: ({ node, className, ...props }) => ( + p: ({ node: _node, className, ...props }) => (

{ {...props} /> ), - a: ({ node, className, ...props }) => ( + a: ({ node: _node, className, ...props }) => ( { {...props} /> ), - blockquote: ({ node, className, ...props }) => ( + blockquote: ({ node: _node, className, ...props }) => (

), - ul: ({ node, className, ...props }) => ( + ul: ({ node: _node, className, ...props }) => (
    li]:mt-2", className)} {...props} /> ), - ol: ({ node, className, ...props }) => ( + ol: ({ node: _node, className, ...props }) => (
      li]:mt-2", className)} {...props} /> ), - hr: ({ node, className, ...props }) => ( + hr: ({ node: _node, className, ...props }) => (
      ), - table: ({ node, className, ...props }) => ( + table: ({ node: _node, className, ...props }) => ( { {...props} /> ), - th: ({ node, className, ...props }) => ( + th: ({ node: _node, className, ...props }) => ( td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg", @@ -150,13 +150,13 @@ const MarkdownTextImpl = () => { {...props} /> ), - sup: ({ node, className, ...props }) => ( + sup: ({ node: _node, className, ...props }) => ( a]:text-xs [&>a]:no-underline", className)} {...props} /> ), - pre: ({ node, className, ...props }) => ( + pre: ({ node: _node, className, ...props }) => (
       {
                   {...props}
                 />
               ),
      -        code: function Code({ node, className, ...props }) {
      +        code: function Code({ node: _node, className, ...props }) {
                 const isCodeBlock = useIsMarkdownCodeBlock();
                 return (
                    {
      @@ -356,7 +356,7 @@ export function useGraph() {
                         ?.split("https://smith.langchain.com/public/")[1]
                         .split("/")[0],
                     };
      -              let castMsg = msg as AIMessage;
      +              const castMsg = msg as AIMessage;
                     const newMessageWithToolCall = new AIMessage({
                       ...castMsg,
                       content: castMsg.content,
      diff --git a/src/hooks/useRuns.tsx b/src/hooks/useRuns.tsx
      index 8561dfe2..1f536a6f 100644
      --- a/src/hooks/useRuns.tsx
      +++ b/src/hooks/useRuns.tsx
      @@ -1,5 +1,3 @@
      -import { useToast } from "./use-toast";
      -
       export function useRuns() {
         /**
          * Generates a public shared run ID for the given run ID.
      diff --git a/yarn.lock b/yarn.lock
      index 0fdba736..891199c1 100644
      --- a/yarn.lock
      +++ b/yarn.lock
      @@ -355,13 +355,18 @@
         resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699"
         integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==
       
      -"@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.10.0":
      +  version "4.11.1"
      +  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f"
      +  integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
      +
       "@eslint-community/regexpp@^4.6.1":
         version "4.11.0"
         resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
      @@ -387,6 +392,11 @@
         resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
         integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
       
      +"@eslint/js@^9.12.0":
      +  version "9.12.0"
      +  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.12.0.tgz#69ca3ca9fab9a808ec6d67b8f6edb156cbac91e1"
      +  integrity sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==
      +
       "@floating-ui/core@^1.6.0":
         version "1.6.7"
         resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12"
      @@ -1234,6 +1244,21 @@
         dependencies:
           "@types/ms" "*"
       
      +"@types/eslint@*":
      +  version "9.6.1"
      +  resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584"
      +  integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==
      +  dependencies:
      +    "@types/estree" "*"
      +    "@types/json-schema" "*"
      +
      +"@types/eslint__js@^8.42.3":
      +  version "8.42.3"
      +  resolved "https://registry.yarnpkg.com/@types/eslint__js/-/eslint__js-8.42.3.tgz#d1fa13e5c1be63a10b4e3afe992779f81c1179a0"
      +  integrity sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==
      +  dependencies:
      +    "@types/eslint" "*"
      +
       "@types/estree-jsx@^1.0.0":
         version "1.0.5"
         resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz#858a88ea20f34fe65111f005a689fa1ebf70dc18"
      @@ -1265,7 +1290,7 @@
         resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-3.0.6.tgz#a04ca19e877687bd449f5ad37d33b104b71fdf95"
         integrity sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==
       
      -"@types/json-schema@^7.0.15":
      +"@types/json-schema@*", "@types/json-schema@^7.0.15":
         version "7.0.15"
         resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
         integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
      @@ -1385,6 +1410,32 @@
         dependencies:
           "@types/node" "*"
       
      +"@typescript-eslint/eslint-plugin@8.8.1", "@typescript-eslint/eslint-plugin@^8.8.1":
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz#9364b756d4d78bcbdf6fd3e9345e6924c68ad371"
      +  integrity sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==
      +  dependencies:
      +    "@eslint-community/regexpp" "^4.10.0"
      +    "@typescript-eslint/scope-manager" "8.8.1"
      +    "@typescript-eslint/type-utils" "8.8.1"
      +    "@typescript-eslint/utils" "8.8.1"
      +    "@typescript-eslint/visitor-keys" "8.8.1"
      +    graphemer "^1.4.0"
      +    ignore "^5.3.1"
      +    natural-compare "^1.4.0"
      +    ts-api-utils "^1.3.0"
      +
      +"@typescript-eslint/parser@8.8.1", "@typescript-eslint/parser@^8.8.1":
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.8.1.tgz#5952ba2a83bd52024b872f3fdc8ed2d3636073b8"
      +  integrity sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==
      +  dependencies:
      +    "@typescript-eslint/scope-manager" "8.8.1"
      +    "@typescript-eslint/types" "8.8.1"
      +    "@typescript-eslint/typescript-estree" "8.8.1"
      +    "@typescript-eslint/visitor-keys" "8.8.1"
      +    debug "^4.3.4"
      +
       "@typescript-eslint/parser@^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0":
         version "7.2.0"
         resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.2.0.tgz#44356312aea8852a3a82deebdacd52ba614ec07a"
      @@ -1404,11 +1455,34 @@
           "@typescript-eslint/types" "7.2.0"
           "@typescript-eslint/visitor-keys" "7.2.0"
       
      +"@typescript-eslint/scope-manager@8.8.1":
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz#b4bea1c0785aaebfe3c4ab059edaea1c4977e7ff"
      +  integrity sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==
      +  dependencies:
      +    "@typescript-eslint/types" "8.8.1"
      +    "@typescript-eslint/visitor-keys" "8.8.1"
      +
      +"@typescript-eslint/type-utils@8.8.1":
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz#31f59ec46e93a02b409fb4d406a368a59fad306e"
      +  integrity sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==
      +  dependencies:
      +    "@typescript-eslint/typescript-estree" "8.8.1"
      +    "@typescript-eslint/utils" "8.8.1"
      +    debug "^4.3.4"
      +    ts-api-utils "^1.3.0"
      +
       "@typescript-eslint/types@7.2.0":
         version "7.2.0"
         resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f"
         integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==
       
      +"@typescript-eslint/types@8.8.1":
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.8.1.tgz#ebe85e0fa4a8e32a24a56adadf060103bef13bd1"
      +  integrity sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==
      +
       "@typescript-eslint/typescript-estree@7.2.0":
         version "7.2.0"
         resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz#5beda2876c4137f8440c5a84b4f0370828682556"
      @@ -1423,6 +1497,30 @@
           semver "^7.5.4"
           ts-api-utils "^1.0.1"
       
      +"@typescript-eslint/typescript-estree@8.8.1":
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz#34649f4e28d32ee49152193bc7dedc0e78e5d1ec"
      +  integrity sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==
      +  dependencies:
      +    "@typescript-eslint/types" "8.8.1"
      +    "@typescript-eslint/visitor-keys" "8.8.1"
      +    debug "^4.3.4"
      +    fast-glob "^3.3.2"
      +    is-glob "^4.0.3"
      +    minimatch "^9.0.4"
      +    semver "^7.6.0"
      +    ts-api-utils "^1.3.0"
      +
      +"@typescript-eslint/utils@8.8.1":
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.8.1.tgz#9e29480fbfa264c26946253daa72181f9f053c9d"
      +  integrity sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==
      +  dependencies:
      +    "@eslint-community/eslint-utils" "^4.4.0"
      +    "@typescript-eslint/scope-manager" "8.8.1"
      +    "@typescript-eslint/types" "8.8.1"
      +    "@typescript-eslint/typescript-estree" "8.8.1"
      +
       "@typescript-eslint/visitor-keys@7.2.0":
         version "7.2.0"
         resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz#5035f177752538a5750cca1af6044b633610bf9e"
      @@ -1431,6 +1529,14 @@
           "@typescript-eslint/types" "7.2.0"
           eslint-visitor-keys "^3.4.1"
       
      +"@typescript-eslint/visitor-keys@8.8.1":
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz#0fb1280f381149fc345dfde29f7542ff4e587fc5"
      +  integrity sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==
      +  dependencies:
      +    "@typescript-eslint/types" "8.8.1"
      +    eslint-visitor-keys "^3.4.3"
      +
       "@uiw/codemirror-extensions-basic-setup@4.23.5":
         version "4.23.5"
         resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.5.tgz#02ebe9c44f76609f15295e1ff9c83e770140c369"
      @@ -3240,7 +3346,7 @@ humanize-ms@^1.2.1:
         dependencies:
           ms "^2.0.0"
       
      -ignore@^5.2.0:
      +ignore@^5.2.0, ignore@^5.3.1:
         version "5.3.2"
         resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
         integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
      @@ -5231,7 +5337,7 @@ semver@^6.3.1:
         resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
         integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
       
      -semver@^7.5.4, semver@^7.6.3:
      +semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
         version "7.6.3"
         resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
         integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
      @@ -5578,7 +5684,7 @@ trough@^2.0.0:
         resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f"
         integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==
       
      -ts-api-utils@^1.0.1:
      +ts-api-utils@^1.0.1, ts-api-utils@^1.3.0:
         version "1.3.0"
         resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
         integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
      @@ -5669,6 +5775,15 @@ typed-array-length@^1.0.6:
           is-typed-array "^1.1.13"
           possible-typed-array-names "^1.0.0"
       
      +typescript-eslint@^8.8.1:
      +  version "8.8.1"
      +  resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.8.1.tgz#b375c877b2184d883b6228170bc66f0fca847c9a"
      +  integrity sha512-R0dsXFt6t4SAFjUSKFjMh4pXDtq04SsFKCVGDP3ZOzNP7itF0jBcZYU4fMsZr4y7O7V7Nc751dDeESbe4PbQMQ==
      +  dependencies:
      +    "@typescript-eslint/eslint-plugin" "8.8.1"
      +    "@typescript-eslint/parser" "8.8.1"
      +    "@typescript-eslint/utils" "8.8.1"
      +
       typescript@^5:
         version "5.5.4"
         resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
      
      { {...props} /> ), - td: ({ node, className, ...props }) => ( + td: ({ node: _node, className, ...props }) => ( { {...props} /> ), - tr: ({ node, className, ...props }) => ( + tr: ({ node: _node, className, ...props }) => (