From e44a26b7dbe4a60311279f8ef557a9e6645d0384 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Mon, 14 Jul 2025 18:34:40 -0700 Subject: [PATCH 01/27] chore: fix lint --- .../authentication/gitlab/page.tsx | 8 +- .../authentication/google/page.tsx | 8 +- .../app/[workspaceSlug]/[projectId]/page.ts | 4 +- apps/space/package.json | 2 +- .../cycles/(list)/mobile-header.tsx | 9 +- .../settings/account/security/page.tsx | 8 +- .../app/(all)/accounts/set-password/page.tsx | 3 +- apps/web/app/(all)/create-workspace/page.tsx | 4 +- apps/web/app/(all)/onboarding/page.tsx | 6 +- apps/web/app/(all)/profile/security/page.tsx | 8 +- .../workspace/create-workspace-form.tsx | 2 +- packages/logger/src/config.ts | 2 +- yarn.lock | 140 ++---------------- 13 files changed, 51 insertions(+), 153 deletions(-) diff --git a/apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx b/apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx index cdcfcd61bbc..10a1fbd2de8 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx @@ -66,9 +66,11 @@ const InstanceGitlabAuthenticationPage = observer(() => { { - Boolean(parseInt(enableGitlabConfig)) === true - ? updateConfig("IS_GITLAB_ENABLED", "0") - : updateConfig("IS_GITLAB_ENABLED", "1"); + if (Boolean(parseInt(enableGitlabConfig)) === true) { + updateConfig("IS_GITLAB_ENABLED", "0") + } else { + updateConfig("IS_GITLAB_ENABLED", "1"); + } }} size="sm" disabled={isSubmitting || !formattedConfig} diff --git a/apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx b/apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx index 6ac4ea09b9b..dd94cacf620 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx @@ -67,9 +67,11 @@ const InstanceGoogleAuthenticationPage = observer(() => { { - Boolean(parseInt(enableGoogleConfig)) === true - ? updateConfig("IS_GOOGLE_ENABLED", "0") - : updateConfig("IS_GOOGLE_ENABLED", "1"); + if (Boolean(parseInt(enableGoogleConfig)) === true) { + updateConfig("IS_GOOGLE_ENABLED", "0") + } else { + updateConfig("IS_GOOGLE_ENABLED", "1"); + } }} size="sm" disabled={isSubmitting || !formattedConfig} diff --git a/apps/space/app/[workspaceSlug]/[projectId]/page.ts b/apps/space/app/[workspaceSlug]/[projectId]/page.ts index 5fbb835dcd6..17df041370e 100644 --- a/apps/space/app/[workspaceSlug]/[projectId]/page.ts +++ b/apps/space/app/[workspaceSlug]/[projectId]/page.ts @@ -10,7 +10,7 @@ type Props = { workspaceSlug: string; projectId: string; }; - searchParams: any; + searchParams: Record<'board' | 'peekId', string | undefined>; }; export default async function IssuesPage(props: Props) { @@ -23,7 +23,7 @@ export default async function IssuesPage(props: Props) { try { response = await publishService.retrieveSettingsByProjectId(workspaceSlug, projectId); } catch (error) { - // redirect to 404 page on error + console.error("Error fetching project publish settings:", error); notFound(); } diff --git a/apps/space/package.json b/apps/space/package.json index fc4b244af3a..396d49f98fb 100644 --- a/apps/space/package.json +++ b/apps/space/package.json @@ -64,7 +64,7 @@ "@types/react-dom": "^18.2.18", "@types/uuid": "^9.0.1", "@types/zxcvbn": "^4.4.4", - "@typescript-eslint/eslint-plugin": "^5.48.2", + "@typescript-eslint/eslint-plugin": "^8.36.0", "typescript": "5.8.3" } } diff --git a/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx b/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx index eb65d928b0b..1bc86c487fc 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx @@ -2,7 +2,12 @@ import { observer } from "mobx-react"; // ui -import { GanttChartSquare, LayoutGrid, List } from "lucide-react"; +import { + GanttChartSquare, + LayoutGrid, + List, + type LucideIcon, +} from "lucide-react"; // plane package imports import { TCycleLayoutOptions } from "@plane/types"; import { CustomMenu } from "@plane/ui"; @@ -11,7 +16,7 @@ import { useCycleFilter, useProject } from "@/hooks/store"; const CYCLE_VIEW_LAYOUTS: { key: TCycleLayoutOptions; - icon: any; + icon: LucideIcon; title: string; }[] = [ { diff --git a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx index 3200959c762..874246f11f2 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx @@ -14,7 +14,7 @@ import { PasswordStrengthMeter } from "@/components/account"; import { PageHead } from "@/components/core"; import { ProfileSettingContentHeader } from "@/components/profile"; // helpers -import { authErrorHandler } from "@/helpers/authentication.helper"; +import { authErrorHandler, type EAuthenticationErrorCodes } from "@/helpers/authentication.helper"; // hooks import { useUser } from "@/hooks/store"; // services @@ -87,8 +87,10 @@ const SecurityPage = observer(() => { title: t("auth.common.password.toast.change_password.success.title"), message: t("auth.common.password.toast.change_password.success.message"), }); - } catch (err: any) { - const errorInfo = authErrorHandler(err.error_code?.toString()); + } catch (error: unknown) { + const err = error as Error & { error_code?: string }; + const code = err.error_code?.toString(); + const errorInfo = code ? authErrorHandler(code as EAuthenticationErrorCodes) : undefined; setToast({ type: TOAST_TYPE.ERROR, title: errorInfo?.title ?? t("auth.common.password.toast.error.title"), diff --git a/apps/web/app/(all)/accounts/set-password/page.tsx b/apps/web/app/(all)/accounts/set-password/page.tsx index 872f965dd0b..704349063e0 100644 --- a/apps/web/app/(all)/accounts/set-password/page.tsx +++ b/apps/web/app/(all)/accounts/set-password/page.tsx @@ -95,7 +95,8 @@ const SetPasswordPage = observer(() => { if (!csrfToken) throw new Error("csrf token not found"); await handleSetPassword(csrfToken, { password: passwordFormData.password }); router.push("/"); - } catch (err: any) { + } catch (error: unknown) { + const err = error as Error & { error?: string }; setToast({ type: TOAST_TYPE.ERROR, title: t("common.errors.default.title"), diff --git a/apps/web/app/(all)/create-workspace/page.tsx b/apps/web/app/(all)/create-workspace/page.tsx index 8425320345a..c747166f892 100644 --- a/apps/web/app/(all)/create-workspace/page.tsx +++ b/apps/web/app/(all)/create-workspace/page.tsx @@ -30,7 +30,7 @@ const CreateWorkspacePage = observer(() => { const { data: currentUser } = useUser(); const { updateUserProfile } = useUserProfile(); // states - const [defaultValues, setDefaultValues] = useState({ + const [defaultValues, setDefaultValues] = useState>({ name: "", slug: "", organization_size: "", @@ -101,7 +101,7 @@ const CreateWorkspacePage = observer(() => { diff --git a/apps/web/app/(all)/onboarding/page.tsx b/apps/web/app/(all)/onboarding/page.tsx index 7e7d15a10ee..45ef3c5dd02 100644 --- a/apps/web/app/(all)/onboarding/page.tsx +++ b/apps/web/app/(all)/onboarding/page.tsx @@ -42,10 +42,14 @@ const OnboardingPage = observer(() => { // computed values const workspacesList = Object.values(workspaces ?? {}); + // fetching workspaces list const { isLoading: workspaceListLoader } = useSWR(USER_WORKSPACES_LIST, () => { - user?.id && fetchWorkspaces(); + if (user?.id) { + fetchWorkspaces(); + } }); + // fetching user workspace invitations const { isLoading: invitationsLoader, data: invitations } = useSWR( `USER_WORKSPACE_INVITATIONS_LIST_${user?.id}`, diff --git a/apps/web/app/(all)/profile/security/page.tsx b/apps/web/app/(all)/profile/security/page.tsx index eec52f994e6..017be3b52ad 100644 --- a/apps/web/app/(all)/profile/security/page.tsx +++ b/apps/web/app/(all)/profile/security/page.tsx @@ -14,7 +14,7 @@ import { PasswordStrengthMeter } from "@/components/account/password-strength-me import { PageHead } from "@/components/core/page-title"; import { ProfileSettingContentHeader, ProfileSettingContentWrapper } from "@/components/profile"; // helpers -import { authErrorHandler } from "@/helpers/authentication.helper"; +import { authErrorHandler, type EAuthenticationErrorCodes } from "@/helpers/authentication.helper"; // hooks import { useUser } from "@/hooks/store"; // services @@ -87,8 +87,10 @@ const SecurityPage = observer(() => { title: t("auth.common.password.toast.change_password.success.title"), message: t("auth.common.password.toast.change_password.success.message"), }); - } catch (err: any) { - const errorInfo = authErrorHandler(err.error_code?.toString()); + } catch (error: unknown) { + const err = error as Error & { error_code?: string }; + const code = err.error_code?.toString(); + const errorInfo = code ? authErrorHandler(code as EAuthenticationErrorCodes) : undefined; setToast({ type: TOAST_TYPE.ERROR, title: errorInfo?.title ?? t("auth.common.password.toast.error.title"), diff --git a/apps/web/core/components/workspace/create-workspace-form.tsx b/apps/web/core/components/workspace/create-workspace-form.tsx index d7d54c66148..f760cd1d9c9 100644 --- a/apps/web/core/components/workspace/create-workspace-form.tsx +++ b/apps/web/core/components/workspace/create-workspace-form.tsx @@ -29,7 +29,7 @@ type Props = { slug: string; organization_size: string; }; - setDefaultValues: Dispatch>; + setDefaultValues: Dispatch>>; secondaryButton?: React.ReactNode; primaryButtonText?: { loading: string; diff --git a/packages/logger/src/config.ts b/packages/logger/src/config.ts index fd918e59eff..84bb98e5f14 100644 --- a/packages/logger/src/config.ts +++ b/packages/logger/src/config.ts @@ -1,6 +1,6 @@ +import path from "path"; import winston from "winston"; import DailyRotateFile from "winston-daily-rotate-file"; -import path from "path"; // Define log levels const levels = { diff --git a/yarn.lock b/yarn.lock index eaab6478cc5..5f448a3f113 100644 --- a/yarn.lock +++ b/yarn.lock @@ -574,7 +574,7 @@ dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== @@ -2709,7 +2709,7 @@ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.6.tgz#e6e60dad29c2c8c206c026e6dd8d6d1bdda850b8" integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ== -"@types/semver@^7.3.12", "@types/semver@^7.3.4": +"@types/semver@^7.3.4": version "7.7.0" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== @@ -2778,7 +2778,7 @@ resolved "https://registry.yarnpkg.com/@types/zxcvbn/-/zxcvbn-4.4.5.tgz#8ce8623ed7a36e3a76d1c0b539708dfb2e859bc0" integrity sha512-FZJgC5Bxuqg7Rhsm/bx6gAruHHhDQ55r+s0JhDh8CQ16fD7NsJJ+p8YMMQDhSQoIrSmjpqqYWA96oQVMNkjRyA== -"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/eslint-plugin@^8.6.0": +"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/eslint-plugin@^8.36.0", "@typescript-eslint/eslint-plugin@^8.6.0": version "8.37.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.37.0.tgz#332392883f936137cd6252c8eb236d298e514e70" integrity sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA== @@ -2793,22 +2793,6 @@ natural-compare "^1.4.0" ts-api-utils "^2.1.0" -"@typescript-eslint/eslint-plugin@^5.48.2": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser@^8.6.0": version "8.37.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.37.0.tgz#b87f6b61e25ad5cc5bbf8baf809b8da889c89804" @@ -2829,14 +2813,6 @@ "@typescript-eslint/types" "^8.37.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - "@typescript-eslint/scope-manager@8.37.0": version "8.37.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.37.0.tgz#a31a3c80ca2ef4ed58de13742debb692e7d4c0a4" @@ -2850,16 +2826,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.37.0.tgz#47a2760d265c6125f8e7864bc5c8537cad2bd053" integrity sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg== -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== - dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - tsutils "^3.21.0" - "@typescript-eslint/type-utils@8.37.0": version "8.37.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.37.0.tgz#2a682e4c6ff5886712dad57e9787b5e417124507" @@ -2871,29 +2837,11 @@ debug "^4.3.4" ts-api-utils "^2.1.0" -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - "@typescript-eslint/types@8.37.0", "@typescript-eslint/types@^8.37.0": version "8.37.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.37.0.tgz#09517aa9625eb3c68941dde3ac8835740587b6ff" integrity sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ== -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@8.37.0": version "8.37.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.37.0.tgz#a07e4574d8e6e4355a558f61323730c987f5fcbc" @@ -2910,20 +2858,6 @@ semver "^7.6.0" ts-api-utils "^2.1.0" -"@typescript-eslint/utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - "@typescript-eslint/utils@8.37.0": version "8.37.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.37.0.tgz#189ea59b2709f5d898614611f091a776751ee335" @@ -2934,14 +2868,6 @@ "@typescript-eslint/types" "8.37.0" "@typescript-eslint/typescript-estree" "8.37.0" -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - "@typescript-eslint/visitor-keys@8.37.0": version "8.37.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.37.0.tgz#cdb6a6bd3e8d6dd69bd70c1bdda36e2d18737455" @@ -3425,11 +3351,6 @@ array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9: is-string "^1.1.1" math-intrinsics "^1.1.0" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - array.prototype.findlast@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" @@ -4643,13 +4564,6 @@ diff@^5.0.0: resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - dlv@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" @@ -5235,7 +5149,7 @@ eslint-plugin-turbo@1.13.4: dependencies: dotenv "16.0.3" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5251,7 +5165,7 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -5459,7 +5373,7 @@ fast-fifo@^1.2.0, fast-fifo@^1.3.2: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.2.9, fast-glob@^3.3.2: +fast-glob@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -5914,18 +5828,6 @@ globalthis@^1.0.4: define-properties "^1.2.1" gopd "^1.0.1" -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" @@ -7103,7 +7005,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -7455,11 +7357,6 @@ napi-postinstall@^0.3.0: resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.2.tgz#03c62080e88b311c4d7423b0f15f0c920bbcc626" integrity sha512-tWVJxJHmBWLy69PvO96TZMZDrzmw5KeiZBz3RHmiM2XZ9grBJ2WgMAFVVg25nqp3ZjTFUs2Ftw1JhscL3Teliw== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -8207,9 +8104,9 @@ postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.47, postcss@^8.4.49: source-map-js "^1.2.1" posthog-js@^1.131.3: - version "1.257.0" - resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.257.0.tgz#7adfffa024756b910ee87a978e0fc6c12a9fa730" - integrity sha512-Ujg9RGtWVCu+4tmlRpALSy2ZOZI6JtieSYXIDDdgMWm167KYKvTtbMPHdoBaPWcNu0Km+1hAIBnQFygyn30KhA== + version "1.257.1" + resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.257.1.tgz#7f9cb847779d515cdadbf9540378722d33efe4cd" + integrity sha512-29kk3IO/LkPQ8E1cds6a2sWr5iN4BovgL+EMzRK9hQXbI6D3FJnQ7zLU6EUpktt6pHnqGpfO3BTEcflcDYkHBg== dependencies: core-js "^3.38.1" fflate "^0.4.8" @@ -9399,11 +9296,6 @@ simple-update-notifier@^2.0.0: dependencies: semver "^7.5.3" -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - slash@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" @@ -10088,11 +9980,6 @@ tsconfig-paths@^4.2.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.7.0, tslib@^2.8.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" @@ -10125,13 +10012,6 @@ tsup@8.4.0: tinyglobby "^0.2.11" tree-kill "^1.2.2" -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" From 5fff6c93c5fcf26b5901e83ed44baffad53dd3b5 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Tue, 15 Jul 2025 15:18:34 -0700 Subject: [PATCH 02/27] fix: constants check:lint command --- packages/constants/{.eslintrc.js => .eslintrc.cjs} | 0 packages/logger/package.json | 7 +++++++ 2 files changed, 7 insertions(+) rename packages/constants/{.eslintrc.js => .eslintrc.cjs} (100%) diff --git a/packages/constants/.eslintrc.js b/packages/constants/.eslintrc.cjs similarity index 100% rename from packages/constants/.eslintrc.js rename to packages/constants/.eslintrc.cjs diff --git a/packages/logger/package.json b/packages/logger/package.json index 40a37bb086a..6657f893aa7 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -7,6 +7,13 @@ "main": "./dist/index.js", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } + }, "files": [ "dist/**" ], From a7c2f619662539deaeec9c8238e631bf93fe38b3 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Tue, 15 Jul 2025 15:26:01 -0700 Subject: [PATCH 03/27] chore(lint): permit unused vars which begin w/ _ --- packages/eslint-config/library.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/eslint-config/library.js b/packages/eslint-config/library.js index b868b35a441..30049d361ee 100644 --- a/packages/eslint-config/library.js +++ b/packages/eslint-config/library.js @@ -40,7 +40,14 @@ module.exports = { "react/jsx-no-duplicate-props": "error", "react-hooks/exhaustive-deps": "warn", "@typescript-eslint/no-unused-expressions": "warn", - "@typescript-eslint/no-unused-vars": ["warn"], + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^_" + } + ], "@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/no-useless-empty-export": "error", "@typescript-eslint/prefer-ts-expect-error": "warn", From 4b1c75fd59444a546012590b2955c9be628ef4c6 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Tue, 15 Jul 2025 15:31:55 -0700 Subject: [PATCH 04/27] chore: rm dead code --- packages/constants/src/issue/common.ts | 1 + packages/constants/src/settings.ts | 2 +- packages/utils/src/string.ts | 20 -------------------- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/packages/constants/src/issue/common.ts b/packages/constants/src/issue/common.ts index 0f47e767cd0..b6fa8368ac4 100644 --- a/packages/constants/src/issue/common.ts +++ b/packages/constants/src/issue/common.ts @@ -29,6 +29,7 @@ export enum EIssueGroupByToServerOptions { "target_date" = "target_date", "project" = "project_id", "created_by" = "created_by", + // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values "team_project" = "project_id", } diff --git a/packages/constants/src/settings.ts b/packages/constants/src/settings.ts index f42374dc735..acd31379c94 100644 --- a/packages/constants/src/settings.ts +++ b/packages/constants/src/settings.ts @@ -1,5 +1,5 @@ -import { PROFILE_SETTINGS } from "."; import { WORKSPACE_SETTINGS } from "./workspace"; +import { PROFILE_SETTINGS } from "."; export enum WORKSPACE_SETTINGS_CATEGORY { ADMINISTRATION = "administration", diff --git a/packages/utils/src/string.ts b/packages/utils/src/string.ts index 7bcaa9db421..d157b4c2a4b 100644 --- a/packages/utils/src/string.ts +++ b/packages/utils/src/string.ts @@ -102,26 +102,6 @@ export const getNumberCount = (number: number): string => { return number.toString(); }; -/** - * @description Converts object to URL query parameters string - * @param {Object} obj - Object to convert - * @returns {string} URL query parameters string - * @example - * objToQueryParams({ page: 1, search: "test" }) // returns "page=1&search=test" - * objToQueryParams({ a: null, b: "test" }) // returns "b=test" - */ -export const objToQueryParams = (obj: any) => { - const params = new URLSearchParams(); - - if (!obj) return params.toString(); - - for (const [key, value] of Object.entries(obj)) { - if (value !== undefined && value !== null) params.append(key, value as string); - } - - return params.toString(); -}; - /** * @description: This function will capitalize the first letter of a string * @param str String From 1a809378e592164d4acee294e8d5080c9c8bb467 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Tue, 15 Jul 2025 15:41:14 -0700 Subject: [PATCH 05/27] fix(lint): more lint fixes to constants pkg --- packages/constants/src/analytics/common.ts | 2 +- packages/constants/src/auth.ts | 6 ++++-- packages/constants/src/issue/layout.ts | 5 +---- packages/utils/src/string.ts | 4 ++-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/constants/src/analytics/common.ts b/packages/constants/src/analytics/common.ts index 4192cef8cc4..e740ab5921e 100644 --- a/packages/constants/src/analytics/common.ts +++ b/packages/constants/src/analytics/common.ts @@ -6,7 +6,7 @@ export interface IInsightField { i18nProps?: { entity?: string; entityPlural?: string; - [key: string]: any; + [key: string]: unknown; }; } diff --git a/packages/constants/src/auth.ts b/packages/constants/src/auth.ts index 16ee1f3e748..7b21521c266 100644 --- a/packages/constants/src/auth.ts +++ b/packages/constants/src/auth.ts @@ -1,3 +1,5 @@ +import { type ReactNode } from "react"; + export enum E_PASSWORD_STRENGTH { EMPTY = "empty", LENGTH_NOT_VALID = "length_not_valid", @@ -70,7 +72,7 @@ export type TAuthErrorInfo = { type: EErrorAlertType; code: EAuthErrorCodes; title: string; - message: any; + message: string | ReactNode; }; export enum EAdminAuthErrorCodes { @@ -90,7 +92,7 @@ export type TAdminAuthErrorInfo = { type: EErrorAlertType; code: EAdminAuthErrorCodes; title: string; - message: any; + message: string | ReactNode; }; export enum EAuthErrorCodes { diff --git a/packages/constants/src/issue/layout.ts b/packages/constants/src/issue/layout.ts index 9f983aee4e3..88b74060637 100644 --- a/packages/constants/src/issue/layout.ts +++ b/packages/constants/src/issue/layout.ts @@ -14,7 +14,7 @@ export type TIssueLayoutMap = Record< export const SITES_ISSUE_LAYOUTS: { key: TIssueLayout; titleTranslationKey: string; - icon: any; + icon: string; }[] = [ { key: "list", @@ -26,9 +26,6 @@ export const SITES_ISSUE_LAYOUTS: { icon: "Kanban", titleTranslationKey: "issue.layouts.kanban", }, - // { key: "calendar", title: "Calendar", icon: Calendar }, - // { key: "spreadsheet", title: "Spreadsheet", icon: Sheet }, - // { key: "gantt", title: "Gantt chart", icon: GanttChartSquare }, ]; export const ISSUE_LAYOUT_MAP: TIssueLayoutMap = { diff --git a/packages/utils/src/string.ts b/packages/utils/src/string.ts index d157b4c2a4b..6ffb4ea0411 100644 --- a/packages/utils/src/string.ts +++ b/packages/utils/src/string.ts @@ -248,7 +248,7 @@ export const substringMatch = (text: string, searchQuery: string): boolean => { // Not all characters of searchQuery found in order return false; - } catch (error) { + } catch (_err) { return false; } }; @@ -277,7 +277,7 @@ const fallbackCopyTextToClipboard = (text: string) => { // FIXME: Even though we are using this as a fallback, execCommand is deprecated 👎. We should find a better way to do this. // https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand document.execCommand("copy"); - } catch (err) { + } catch (_err) { // catch fallback error } From 882069d8547bc573b19f60307db4c1bd7ca80ca8 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Tue, 15 Jul 2025 16:16:16 -0700 Subject: [PATCH 06/27] fix(lint): lint the live server - fix lint issues --- apps/live/package.json | 7 +- apps/live/src/ce/types/common.d.ts | 2 +- apps/live/src/core/extensions/index.ts | 3 +- apps/live/src/core/helpers/logger.ts | 1 + apps/live/src/core/hocuspocus-server.ts | 4 +- apps/live/src/core/services/api.service.ts | 2 +- apps/live/src/core/services/page.service.ts | 9 +- apps/live/src/server.ts | 67 ++++++---- apps/live/tsconfig.json | 8 +- package.json | 3 +- packages/eslint-config/next.js | 9 +- packages/eslint-config/server.js | 24 +++- yarn.lock | 141 +++++++++++++++----- 13 files changed, 201 insertions(+), 79 deletions(-) diff --git a/apps/live/package.json b/apps/live/package.json index d8d1de6ad2d..d882dea4493 100644 --- a/apps/live/package.json +++ b/apps/live/package.json @@ -51,14 +51,15 @@ "@types/compression": "1.8.1", "@types/cors": "^2.8.17", "@types/dotenv": "^8.2.0", - "@types/express": "^4.17.21", - "@types/express-ws": "^3.0.4", + "@types/express": "^4.17.23", + "@types/express-ws": "^3.0.5", "@types/node": "^20.14.9", "@types/pino-http": "^5.8.4", "concurrently": "^9.0.1", "nodemon": "^3.1.7", "ts-node": "^10.9.2", "tsup": "8.4.0", - "typescript": "5.8.3" + "typescript": "5.8.3", + "ws": "^8.18.3" } } diff --git a/apps/live/src/ce/types/common.d.ts b/apps/live/src/ce/types/common.d.ts index 2f51c6ff5cb..ffc9e1053de 100644 --- a/apps/live/src/ce/types/common.d.ts +++ b/apps/live/src/ce/types/common.d.ts @@ -1 +1 @@ -export type TAdditionalDocumentTypes = {}; +export type TAdditionalDocumentTypes = never; diff --git a/apps/live/src/core/extensions/index.ts b/apps/live/src/core/extensions/index.ts index 7364169a461..bd7c0e36926 100644 --- a/apps/live/src/core/extensions/index.ts +++ b/apps/live/src/core/extensions/index.ts @@ -87,7 +87,8 @@ export const getExtensions: () => Promise = async () => { const redisClient = new Redis(redisUrl); await new Promise((resolve, reject) => { - redisClient.on("error", (error: any) => { + redisClient.on("error", (err: unknown) => { + const error = err as Error & { code?: string }; if (error?.code === "ENOTFOUND" || error.message.includes("WRONGPASS") || error.message.includes("NOAUTH")) { redisClient.disconnect(); } diff --git a/apps/live/src/core/helpers/logger.ts b/apps/live/src/core/helpers/logger.ts index 07efaea6e25..a821797fa80 100644 --- a/apps/live/src/core/helpers/logger.ts +++ b/apps/live/src/core/helpers/logger.ts @@ -9,6 +9,7 @@ const transport = { }; const hooks = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any logMethod(inputArgs: any, method: any): any { if (inputArgs.length >= 2) { const arg1 = inputArgs.shift(); diff --git a/apps/live/src/core/hocuspocus-server.ts b/apps/live/src/core/hocuspocus-server.ts index 072d45cbc27..3b48c8a1f39 100644 --- a/apps/live/src/core/hocuspocus-server.ts +++ b/apps/live/src/core/hocuspocus-server.ts @@ -10,6 +10,8 @@ import { TUserDetails } from "@plane/editor"; // types import { type HocusPocusServerContext } from "@/core/types/common.js"; +export { type Hocuspocus } from "@hocuspocus/server"; + export const getHocusPocusServer = async () => { const extensions = await getExtensions(); const serverName = process.env.HOSTNAME || uuidv4(); @@ -53,7 +55,7 @@ export const getHocusPocusServer = async () => { userId, }); } catch (error) { - throw Error("Authentication unsuccessful!"); + throw Error("Authentication unsuccessful!", { cause: error }); } }, async onStateless({ payload, document }) { diff --git a/apps/live/src/core/services/api.service.ts b/apps/live/src/core/services/api.service.ts index 1aa5cf9e53c..abc53c11132 100644 --- a/apps/live/src/core/services/api.service.ts +++ b/apps/live/src/core/services/api.service.ts @@ -36,7 +36,7 @@ export abstract class APIService { return this.axiosInstance.patch(url, data, config); } - delete(url: string, data?: any, config = {}) { + delete(url: string, data?: Record | null | string, config = {}) { return this.axiosInstance.delete(url, { data, ...config }); } diff --git a/apps/live/src/core/services/page.service.ts b/apps/live/src/core/services/page.service.ts index 9c1ed823777..62203196153 100644 --- a/apps/live/src/core/services/page.service.ts +++ b/apps/live/src/core/services/page.service.ts @@ -20,7 +20,12 @@ export class PageService extends APIService { }); } - async fetchDescriptionBinary(workspaceSlug: string, projectId: string, pageId: string, cookie: string): Promise { + async fetchDescriptionBinary( + workspaceSlug: string, + projectId: string, + pageId: string, + cookie: string + ): Promise> { return this.get(`/api/workspaces/${workspaceSlug}/projects/${projectId}/pages/${pageId}/description/`, { headers: { "Content-Type": "application/octet-stream", @@ -44,7 +49,7 @@ export class PageService extends APIService { description: object; }, cookie: string - ): Promise { + ): Promise { return this.patch(`/api/workspaces/${workspaceSlug}/projects/${projectId}/pages/${pageId}/description/`, data, { headers: { Cookie: cookie, diff --git a/apps/live/src/server.ts b/apps/live/src/server.ts index c4a35353891..ca9627bc2fb 100644 --- a/apps/live/src/server.ts +++ b/apps/live/src/server.ts @@ -1,10 +1,12 @@ import compression from "compression"; import cors from "cors"; import expressWs from "express-ws"; +import type { WebSocket } from "ws"; import express, { Request, Response } from "express"; import helmet from "helmet"; +import { type Server as HTTPServer } from "http"; // hocuspocus server -import { getHocusPocusServer } from "@/core/hocuspocus-server.js"; +import { getHocusPocusServer, type Hocuspocus } from "@/core/hocuspocus-server.js"; // helpers import { convertHTMLDocumentToAllFormats } from "@/core/helpers/convert-document.js"; import { logger, manualLogger } from "@/core/helpers/logger.js"; @@ -12,32 +14,30 @@ import { logger, manualLogger } from "@/core/helpers/logger.js"; import { TConvertDocumentRequestBody } from "@/core/types/common.js"; export class Server { - private app: any; - private router: any; - private hocuspocusServer: any; - private serverInstance: any; + private app: expressWs.Application; + private router: expressWs.Router; + private hocuspocusServer: Hocuspocus | undefined; + private httpServer: HTTPServer | undefined; constructor() { - this.app = express(); - this.router = express.Router(); - expressWs(this.app); + const { app } = expressWs(express()); + this.app = app; this.app.set("port", process.env.PORT || 3000); + this.router = express.Router() satisfies expressWs.Router; this.setupMiddleware(); - this.setupHocusPocus(); + } + + async init() { + await this.setupHocusPocus(); this.setupRoutes(); } private setupMiddleware() { - // Security middleware this.app.use(helmet()); - // Middleware for response compression this.app.use(compression({ level: 6, threshold: 5 * 1000 })); - // Logging middleware this.app.use(logger); - // Body parsing middleware this.app.use(express.json()); this.app.use(express.urlencoded({ extended: true })); - // cors middleware this.app.use(cors()); this.app.use(process.env.LIVE_BASE_PATH || "/live", this.router); } @@ -54,8 +54,12 @@ export class Server { res.status(200).json({ status: "OK" }); }); - this.router.ws("/collaboration", (ws: any, req: Request) => { + this.router.ws("/collaboration", (ws: WebSocket, req: Request) => { try { + if (!this.hocuspocusServer) { + throw new Error("HocusPocus server is not initialized"); + } + this.hocuspocusServer.handleConnection(ws, req); } catch (err) { manualLogger.error("WebSocket connection error:", err); @@ -96,36 +100,45 @@ export class Server { } public listen() { - this.serverInstance = this.app.listen(this.app.get("port"), () => { + this.httpServer = this.app.listen(this.app.get("port"), () => { manualLogger.info(`Plane Live server has started at port ${this.app.get("port")}`); }); } public async destroy() { - // Close the HocusPocus server WebSocket connections - await this.hocuspocusServer.destroy(); - manualLogger.info("HocusPocus server WebSocket connections closed gracefully."); - // Close the Express server - this.serverInstance.close(() => { - manualLogger.info("Express server closed gracefully."); - process.exit(1); - }); + if (this.hocuspocusServer) { + await this.hocuspocusServer.destroy(); + manualLogger.info("HocusPocus server WebSocket connections closed gracefully."); + } + + if (this.httpServer) { + this.httpServer.close(() => { + manualLogger.info("Express server closed gracefully."); + process.exit(1); + }); + } } } const server = new Server(); -server.listen(); // Graceful shutdown on unhandled rejection -process.on("unhandledRejection", async (err: any) => { +process.on("unhandledRejection", async (err: unknown) => { manualLogger.info("Unhandled Rejection: ", err); manualLogger.info(`UNHANDLED REJECTION! 💥 Shutting down...`); await server.destroy(); }); // Graceful shutdown on uncaught exception -process.on("uncaughtException", async (err: any) => { +process.on("uncaughtException", async (err: unknown) => { manualLogger.info("Uncaught Exception: ", err); manualLogger.info(`UNCAUGHT EXCEPTION! 💥 Shutting down...`); await server.destroy(); }); + +const main = async () => { + await server.init(); + server.listen(); +}; + +main(); diff --git a/apps/live/tsconfig.json b/apps/live/tsconfig.json index 810a68a5cbf..694b396e749 100644 --- a/apps/live/tsconfig.json +++ b/apps/live/tsconfig.json @@ -1,10 +1,10 @@ { "extends": "@plane/typescript-config/base.json", "compilerOptions": { - "module": "ES2015", - "moduleResolution": "Bundler", - "lib": ["ES2015"], - "target": "ES2015", + "module": "nodenext", + "moduleResolution": "node16", + "lib": ["ES2022"], + "target": "ES2022", "outDir": "./dist", "rootDir": ".", "baseUrl": ".", diff --git a/package.json b/package.json index 2aeeeb53339..3785d19f7f5 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "@babel/runtime": "7.26.10", "chokidar": "3.6.0", "tar-fs": "3.0.9", - "prosemirror-view": "1.40.0" + "prosemirror-view": "1.40.0", + "@types/express": "4.17.23" }, "packageManager": "yarn@1.22.22" } diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js index a2da6601059..0685b8f8141 100644 --- a/packages/eslint-config/next.js +++ b/packages/eslint-config/next.js @@ -39,7 +39,14 @@ module.exports = { "react/jsx-no-duplicate-props": "error", "react-hooks/exhaustive-deps": "warn", "@typescript-eslint/no-unused-expressions": "warn", - "@typescript-eslint/no-unused-vars": ["warn"], + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^_" + } + ], "@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/no-useless-empty-export": "error", "@typescript-eslint/prefer-ts-expect-error": "warn", diff --git a/packages/eslint-config/server.js b/packages/eslint-config/server.js index 824e2537571..718c8a6ef29 100644 --- a/packages/eslint-config/server.js +++ b/packages/eslint-config/server.js @@ -1,11 +1,33 @@ +const { resolve } = require("node:path"); +const project = resolve(process.cwd(), "tsconfig.json"); + module.exports = { - extends: ["eslint:recommended"], + extends: ["prettier", "plugin:@typescript-eslint/recommended"], env: { node: true, es6: true, }, + plugins: ["@typescript-eslint", "import"], + settings: { + "import/resolver": { + typescript: { + project, + }, + }, + }, + ignorePatterns: [".*.js", "node_modules/"], parserOptions: { ecmaVersion: "latest", sourceType: "module", }, + rules: { + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^_" + } + ], + } }; diff --git a/yarn.lock b/yarn.lock index 5f448a3f113..fa346f0cd46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -150,13 +150,13 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helpers@7.26.10", "@babel/helpers@^7.27.6": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384" - integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g== +"@babel/helpers@^7.27.6": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== dependencies: - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.10" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.6" "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0": version "7.28.0" @@ -165,14 +165,14 @@ dependencies: "@babel/types" "^7.28.0" -"@babel/runtime@7.26.10", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.26.10" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2" integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.26.9", "@babel/template@^7.27.2": +"@babel/template@^7.27.2": version "7.27.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== @@ -194,7 +194,7 @@ "@babel/types" "^7.28.0" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.26.10", "@babel/types@^7.27.1", "@babel/types@^7.28.0": +"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.6", "@babel/types@^7.28.0": version "7.28.1" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9" integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ== @@ -2408,7 +2408,7 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": +"@types/express-serve-static-core@*": version "5.0.7" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz#2fa94879c9d46b11a5df4c74ac75befd6b283de6" integrity sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ== @@ -2428,7 +2428,7 @@ "@types/range-parser" "*" "@types/send" "*" -"@types/express-ws@^3.0.4": +"@types/express-ws@^3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/express-ws/-/express-ws-3.0.5.tgz#5abf3dda3acb0a339351f089c31aca708f234c7c" integrity sha512-lbWMjoHrm/v85j81UCmb/GNZFO3genxRYBW1Ob7rjRI+zxUBR+4tcFuOpKKsYQ1LYTYiy3356epLeYi/5zxUwA== @@ -2437,16 +2437,7 @@ "@types/express-serve-static-core" "*" "@types/ws" "*" -"@types/express@*": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.3.tgz#6c4bc6acddc2e2a587142e1d8be0bce20757e956" - integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^5.0.0" - "@types/serve-static" "*" - -"@types/express@^4.17.21": +"@types/express@*", "@types/express@^4.17.21", "@types/express@^4.17.23": version "4.17.23" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef" integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== @@ -3620,6 +3611,15 @@ bind-event-listener@^3.0.0: resolved "https://registry.yarnpkg.com/bind-event-listener/-/bind-event-listener-3.0.0.tgz#c90f9a7fcb65cac21045f810c20ef7e647a74921" integrity sha512-PJvH288AWQhKs2v9zyfYdPzlPqf5bXbGMmhmUIY9x4dAUGIWgomO771oBQNwJnMQSnUIXhKu6sgzpBRXTlvb8Q== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3648,7 +3648,15 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -brace-expansion@2.0.2, brace-expansion@^1.1.7, brace-expansion@^2.0.1: +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== @@ -3696,6 +3704,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -3846,7 +3862,7 @@ check-error@^2.1.1: resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== -chokidar@3.6.0, chokidar@^3.3.0, chokidar@^3.5.2, chokidar@^3.5.3, chokidar@^3.6.0, chokidar@^4.0.3: +chokidar@^3.3.0, chokidar@^3.5.2, chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3861,6 +3877,18 @@ chokidar@3.6.0, chokidar@^3.3.0, chokidar@^3.5.2, chokidar@^3.5.3, chokidar@^3.6 optionalDependencies: fsevents "~2.3.2" +chokidar@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + chromatic@^11.4.0: version "11.29.0" resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-11.29.0.tgz#da556dbd3b043e8c6a3134d1afa3bb4ad7317410" @@ -4039,10 +4067,10 @@ compressible@~2.0.18: dependencies: mime-db ">= 1.43.0 < 2" -compression@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" - integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== +compression@^1.7.5: + version "1.8.0" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.0.tgz#09420efc96e11a0f44f3a558de59e321364180f7" + integrity sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA== dependencies: bytes "3.1.2" compressible "~2.0.18" @@ -4057,6 +4085,11 @@ compute-scroll-into-view@^3.0.2: resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz#02c3386ec531fb6a9881967388e53e8564f3e9aa" integrity sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw== +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + concurrently@^9.0.1: version "9.2.0" resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.2.0.tgz#233e3892ceb0b5db9fd49e9c8c739737a7b638b5" @@ -4771,7 +4804,7 @@ encodeurl@~2.0.0: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== -end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.5" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== @@ -4959,7 +4992,7 @@ esbuild-register@^3.5.0: dependencies: debug "^4.3.4" -esbuild@0.25.0, "esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", esbuild@^0.25.0: +"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", esbuild@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.0.tgz#0de1787a77206c5a79eeb634a623d39b5006ce92" integrity sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw== @@ -5639,6 +5672,11 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -6050,7 +6088,7 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.2.1: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -6103,7 +6141,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -7273,7 +7311,7 @@ minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -mkdirp-classic@^0.5.3: +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== @@ -7342,7 +7380,12 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@3.3.8, nanoid@^3.3.11, nanoid@^3.3.6: +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +nanoid@^3.3.6: version "3.3.8" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== @@ -8713,7 +8756,7 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -readable-stream@^3.4.0, readable-stream@^3.6.2: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -8733,6 +8776,11 @@ readable-stream@^4.0.0: process "^0.11.10" string_decoder "^1.3.0" +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -9713,7 +9761,17 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== -tar-fs@3.0.9, tar-fs@^2.0.0, tar-fs@^3.0.4: +tar-fs@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.3.tgz#fb3b8843a26b6f13a08e606f7922875eb1fbbf92" + integrity sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-fs@^3.0.4: version "3.0.9" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.9.tgz#d570793c6370d7078926c41fa422891566a0b617" integrity sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA== @@ -9724,6 +9782,17 @@ tar-fs@3.0.9, tar-fs@^2.0.0, tar-fs@^3.0.4: bare-fs "^4.0.1" bare-path "^3.0.0" +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar-stream@^3.1.5: version "3.1.7" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" @@ -10743,7 +10812,7 @@ ws@^7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@^8.17.1, ws@^8.18.0, ws@^8.2.3, ws@^8.5.0: +ws@^8.17.1, ws@^8.18.0, ws@^8.18.3, ws@^8.2.3, ws@^8.5.0: version "8.18.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== From dff5f88ecb6350045b3b10cef23305c4360032ee Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Wed, 16 Jul 2025 17:39:17 -0700 Subject: [PATCH 07/27] chore: improve clean script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3785d19f7f5..9c107fceef7 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "build": "turbo run build", "dev": "turbo run dev --concurrency=18", "start": "turbo run start", - "clean": "turbo run clean", + "clean": "turbo run clean && rm -rf .turbo && rm -rf .next && rm -rf node_modules && rm -rf dist", "fix": "turbo run fix", "check": "turbo run check" }, From d1ceda6f5a0828d8c38efa63e035e36b5b83f844 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Wed, 16 Jul 2025 17:58:04 -0700 Subject: [PATCH 08/27] fix(lint): more lint --- packages/constants/src/analytics/common.ts | 2 + packages/ui/src/sortable/sortable.stories.tsx | 12 +- packages/ui/src/sortable/sortable.tsx | 2 +- yarn.lock | 118 +++--------------- 4 files changed, 29 insertions(+), 105 deletions(-) diff --git a/packages/constants/src/analytics/common.ts b/packages/constants/src/analytics/common.ts index e740ab5921e..001391314db 100644 --- a/packages/constants/src/analytics/common.ts +++ b/packages/constants/src/analytics/common.ts @@ -6,6 +6,8 @@ export interface IInsightField { i18nProps?: { entity?: string; entityPlural?: string; + prefix?: string; + suffix?: string; [key: string]: unknown; }; } diff --git a/packages/ui/src/sortable/sortable.stories.tsx b/packages/ui/src/sortable/sortable.stories.tsx index b701af95d7d..bc834bfd030 100644 --- a/packages/ui/src/sortable/sortable.stories.tsx +++ b/packages/ui/src/sortable/sortable.stories.tsx @@ -8,7 +8,9 @@ const meta: Meta = { }; export default meta; -type Story = StoryObj; + +type StoryItem = { id: string; name: string }; +type Story = StoryObj>; const data = [ { id: "1", name: "John Doe" }, @@ -20,14 +22,12 @@ const data = [ export const Default: Story = { args: { data, - render: (item: any) => ( + render: (item: StoryItem) => ( //
{item.name}
//
), - // eslint-disable-next-line @typescript-eslint/no-explicit-any - onChange: (data) => console.log(data.map(({ id }: any) => id)), - // eslint-disable-next-line @typescript-eslint/no-explicit-any - keyExtractor: (item: any) => item.id, + onChange: (data) => console.log(data.map(({ id }) => id)), + keyExtractor: (item) => item.id, }, }; diff --git a/packages/ui/src/sortable/sortable.tsx b/packages/ui/src/sortable/sortable.tsx index b437f1df1cf..29198ed8b5d 100644 --- a/packages/ui/src/sortable/sortable.tsx +++ b/packages/ui/src/sortable/sortable.tsx @@ -1,5 +1,5 @@ -import React, { Fragment, useEffect, useMemo } from "react"; import { monitorForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter"; +import React, { Fragment, useEffect, useMemo } from "react"; import { Draggable } from "./draggable"; type TEnhancedData = T & { __uuid__?: string }; diff --git a/yarn.lock b/yarn.lock index fa346f0cd46..6f3857d83fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -150,13 +150,13 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helpers@^7.27.6": - version "7.27.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" - integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== +"@babel/helpers@7.26.10", "@babel/helpers@^7.27.6": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384" + integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g== dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.27.6" + "@babel/template" "^7.26.9" + "@babel/types" "^7.26.10" "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0": version "7.28.0" @@ -165,14 +165,14 @@ dependencies: "@babel/types" "^7.28.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": +"@babel/runtime@7.26.10", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.26.10" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2" integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.27.2": +"@babel/template@^7.26.9", "@babel/template@^7.27.2": version "7.27.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== @@ -194,7 +194,7 @@ "@babel/types" "^7.28.0" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.6", "@babel/types@^7.28.0": +"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.26.10", "@babel/types@^7.27.1", "@babel/types@^7.28.0": version "7.28.1" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9" integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ== @@ -2437,7 +2437,7 @@ "@types/express-serve-static-core" "*" "@types/ws" "*" -"@types/express@*", "@types/express@^4.17.21", "@types/express@^4.17.23": +"@types/express@*", "@types/express@4.17.23", "@types/express@^4.17.21", "@types/express@^4.17.23": version "4.17.23" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef" integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== @@ -3611,15 +3611,6 @@ bind-event-listener@^3.0.0: resolved "https://registry.yarnpkg.com/bind-event-listener/-/bind-event-listener-3.0.0.tgz#c90f9a7fcb65cac21045f810c20ef7e647a74921" integrity sha512-PJvH288AWQhKs2v9zyfYdPzlPqf5bXbGMmhmUIY9x4dAUGIWgomO771oBQNwJnMQSnUIXhKu6sgzpBRXTlvb8Q== -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3648,15 +3639,7 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -brace-expansion@^1.1.7: - version "1.1.12" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" - integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: +brace-expansion@2.0.2, brace-expansion@^1.1.7, brace-expansion@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== @@ -3704,14 +3687,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -3862,7 +3837,7 @@ check-error@^2.1.1: resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== -chokidar@^3.3.0, chokidar@^3.5.2, chokidar@^3.5.3, chokidar@^3.6.0: +chokidar@3.6.0, chokidar@^3.3.0, chokidar@^3.5.2, chokidar@^3.5.3, chokidar@^3.6.0, chokidar@^4.0.3: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3877,18 +3852,6 @@ chokidar@^3.3.0, chokidar@^3.5.2, chokidar@^3.5.3, chokidar@^3.6.0: optionalDependencies: fsevents "~2.3.2" -chokidar@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" - integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== - dependencies: - readdirp "^4.0.1" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chromatic@^11.4.0: version "11.29.0" resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-11.29.0.tgz#da556dbd3b043e8c6a3134d1afa3bb4ad7317410" @@ -4085,11 +4048,6 @@ compute-scroll-into-view@^3.0.2: resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz#02c3386ec531fb6a9881967388e53e8564f3e9aa" integrity sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw== -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - concurrently@^9.0.1: version "9.2.0" resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.2.0.tgz#233e3892ceb0b5db9fd49e9c8c739737a7b638b5" @@ -4804,7 +4762,7 @@ encodeurl@~2.0.0: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0: version "1.4.5" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== @@ -4992,7 +4950,7 @@ esbuild-register@^3.5.0: dependencies: debug "^4.3.4" -"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", esbuild@^0.25.0: +esbuild@0.25.0, "esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", esbuild@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.0.tgz#0de1787a77206c5a79eeb634a623d39b5006ce92" integrity sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw== @@ -5672,11 +5630,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -6088,7 +6041,7 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -6141,7 +6094,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -7311,7 +7264,7 @@ minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: +mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== @@ -7380,12 +7333,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - -nanoid@^3.3.6: +nanoid@3.3.8, nanoid@^3.3.11, nanoid@^3.3.6: version "3.3.8" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== @@ -8756,7 +8704,7 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.2: +readable-stream@^3.4.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -8776,11 +8724,6 @@ readable-stream@^4.0.0: process "^0.11.10" string_decoder "^1.3.0" -readdirp@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" - integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -9761,17 +9704,7 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== -tar-fs@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.3.tgz#fb3b8843a26b6f13a08e606f7922875eb1fbbf92" - integrity sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-fs@^3.0.4: +tar-fs@3.0.9, tar-fs@^2.0.0, tar-fs@^3.0.4: version "3.0.9" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.9.tgz#d570793c6370d7078926c41fa422891566a0b617" integrity sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA== @@ -9782,17 +9715,6 @@ tar-fs@^3.0.4: bare-fs "^4.0.1" bare-path "^3.0.0" -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - tar-stream@^3.1.5: version "3.1.7" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" From 7bcba27cb11c736ac06185559e4ddd13c187a160 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Wed, 16 Jul 2025 18:49:24 -0700 Subject: [PATCH 09/27] chore: set live server process title --- apps/live/src/server.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/live/src/server.ts b/apps/live/src/server.ts index ca9627bc2fb..40281671f73 100644 --- a/apps/live/src/server.ts +++ b/apps/live/src/server.ts @@ -13,6 +13,8 @@ import { logger, manualLogger } from "@/core/helpers/logger.js"; // types import { TConvertDocumentRequestBody } from "@/core/types/common.js"; +process.title = "Plane Live Server"; + export class Server { private app: expressWs.Application; private router: expressWs.Router; From 7cbe62b48e76ffe54a513767acdcc2e6cd869de9 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Thu, 17 Jul 2025 09:19:00 -0700 Subject: [PATCH 10/27] chore(deps): update to turbo@2.5.5 --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 9c107fceef7..53568ad8a6d 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "devDependencies": { "prettier": "latest", "prettier-plugin-tailwindcss": "^0.5.4", - "turbo": "^2.5.4" + "turbo": "^2.5.5" }, "resolutions": { "brace-expansion": "2.0.2", diff --git a/yarn.lock b/yarn.lock index 6f3857d83fe..2613f6abc05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4030,10 +4030,10 @@ compressible@~2.0.18: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.5: - version "1.8.0" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.0.tgz#09420efc96e11a0f44f3a558de59e321364180f7" - integrity sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA== +compression@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" + integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== dependencies: bytes "3.1.2" compressible "~2.0.18" @@ -10040,7 +10040,7 @@ turbo-windows-arm64@2.5.5: resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-2.5.5.tgz#0ab29d38fcc67ba38652f1cd273df49177cb55b8" integrity sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q== -turbo@^2.5.4: +turbo@^2.5.5: version "2.5.5" resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.5.5.tgz#6057f87c1262acdfa30cf16d4cf74629623f36c9" integrity sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A== From ac64e2407aaefe735612c41d8dc87ec71a11b280 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Thu, 17 Jul 2025 09:19:26 -0700 Subject: [PATCH 11/27] chore(live): target node22 --- apps/live/tsup.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/live/tsup.config.ts b/apps/live/tsup.config.ts index 05fbe7e86c0..3a0913127d5 100644 --- a/apps/live/tsup.config.ts +++ b/apps/live/tsup.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ splitting: false, sourcemap: true, minify: false, - target: "node18", + target: "node22", outDir: "dist", env: { NODE_ENV: process.env.NODE_ENV || "development", From 932f73dbd1e4bfc98b35f523894d5f5b885d0f2f Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Thu, 17 Jul 2025 09:19:53 -0700 Subject: [PATCH 12/27] fix(dev): add missing ui pkg dependency --- packages/ui/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/ui/package.json b/packages/ui/package.json index e688e800e39..4b9f860992c 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -37,6 +37,7 @@ "@plane/constants": "*", "@plane/hooks": "*", "@plane/utils": "*", + "@plane/types": "*", "@popperjs/core": "^2.11.8", "@radix-ui/react-scroll-area": "^1.2.3", "clsx": "^2.0.0", From 5722cf14588189ade49ce6bca01ed116a8309a1d Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Thu, 17 Jul 2025 13:54:40 -0700 Subject: [PATCH 13/27] fix(dev): lint decorators --- packages/decorators/src/controller.ts | 2 +- packages/decorators/src/rest.ts | 3 +-- packages/decorators/src/websocket-controller.ts | 6 +++--- packages/decorators/src/websocket.ts | 1 - packages/decorators/tsconfig.json | 2 +- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/decorators/src/controller.ts b/packages/decorators/src/controller.ts index a9185a8480c..60112658c5d 100644 --- a/packages/decorators/src/controller.ts +++ b/packages/decorators/src/controller.ts @@ -16,7 +16,7 @@ interface ControllerInstance { } interface ControllerConstructor { - new (...args: any[]): ControllerInstance; + new (...args: unknown[]): ControllerInstance; prototype: ControllerInstance; } diff --git a/packages/decorators/src/rest.ts b/packages/decorators/src/rest.ts index e643e26a931..a1882d0f294 100644 --- a/packages/decorators/src/rest.ts +++ b/packages/decorators/src/rest.ts @@ -10,6 +10,7 @@ type RestMethod = "get" | "post" | "put" | "patch" | "delete"; * @returns */ export function Controller(baseRoute: string = ""): ClassDecorator { + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type return function (target: Function) { Reflect.defineMetadata("baseRoute", baseRoute, target); }; @@ -27,7 +28,6 @@ function createHttpMethodDecorator( return function ( target: object, propertyKey: string | symbol, - descriptor: PropertyDescriptor, ) { Reflect.defineMetadata("method", method, target, propertyKey); Reflect.defineMetadata("route", route, target, propertyKey); @@ -51,7 +51,6 @@ export function Middleware(middleware: RequestHandler): MethodDecorator { return function ( target: object, propertyKey: string | symbol, - descriptor: PropertyDescriptor, ) { const middlewares = Reflect.getMetadata("middlewares", target, propertyKey) || []; diff --git a/packages/decorators/src/websocket-controller.ts b/packages/decorators/src/websocket-controller.ts index 85a018da087..e332d567b03 100644 --- a/packages/decorators/src/websocket-controller.ts +++ b/packages/decorators/src/websocket-controller.ts @@ -7,7 +7,7 @@ interface ControllerInstance { } interface ControllerConstructor { - new (...args: any[]): ControllerInstance; + new (...args: unknown[]): ControllerInstance; prototype: ControllerInstance; } @@ -34,9 +34,9 @@ export function registerWebSocketControllers( if ( typeof handler === "function" && - typeof (router as any).ws === "function" + 'ws' in router && typeof router.ws === "function" ) { - (router as any).ws( + router.ws( `${baseRoute}${route}`, (ws: WebSocket, req: Request) => { try { diff --git a/packages/decorators/src/websocket.ts b/packages/decorators/src/websocket.ts index 5b6b6a7b18d..0f01f79da36 100644 --- a/packages/decorators/src/websocket.ts +++ b/packages/decorators/src/websocket.ts @@ -9,7 +9,6 @@ export function WebSocket(route: string): MethodDecorator { return function ( target: object, propertyKey: string | symbol, - descriptor: PropertyDescriptor, ) { Reflect.defineMetadata("method", "ws", target, propertyKey); Reflect.defineMetadata("route", route, target, propertyKey); diff --git a/packages/decorators/tsconfig.json b/packages/decorators/tsconfig.json index 72638244b80..0fd863c96ab 100644 --- a/packages/decorators/tsconfig.json +++ b/packages/decorators/tsconfig.json @@ -10,6 +10,6 @@ "@/*": ["./src/*"] } }, - "include": ["./src"], + "include": ["./src", "./*.ts"], "exclude": ["dist", "build", "node_modules"] } From b125296e41b345ba0253e0e03fcfb298d707b6f6 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Thu, 17 Jul 2025 14:53:40 -0700 Subject: [PATCH 14/27] fix(dev): lint space app --- .../app/[workspaceSlug]/[projectId]/page.ts | 2 +- .../account/auth-forms/password.tsx | 4 +++- .../account/oauth/github-button.tsx | 2 +- .../account/oauth/gitlab-button.tsx | 2 +- .../account/oauth/google-button.tsx | 2 +- .../filters/applied-filters/priority.tsx | 6 ++--- .../issues/filters/applied-filters/root.tsx | 22 +++++++++++++------ .../issue-layouts/kanban/base-kanban-root.tsx | 2 +- .../issue-layouts/list/base-list-root.tsx | 2 +- .../core/hooks/use-intersection-observer.tsx | 4 +++- apps/space/core/store/instance.store.ts | 2 +- apps/space/core/store/issue-detail.store.ts | 16 +++++++------- apps/space/core/store/profile.store.ts | 4 ++-- apps/space/helpers/date-time.helper.ts | 2 +- apps/space/helpers/string.helper.ts | 2 +- packages/ui/src/icons/priority-icon.tsx | 2 +- 16 files changed, 44 insertions(+), 32 deletions(-) diff --git a/apps/space/app/[workspaceSlug]/[projectId]/page.ts b/apps/space/app/[workspaceSlug]/[projectId]/page.ts index 17df041370e..c2bf9ea669d 100644 --- a/apps/space/app/[workspaceSlug]/[projectId]/page.ts +++ b/apps/space/app/[workspaceSlug]/[projectId]/page.ts @@ -10,7 +10,7 @@ type Props = { workspaceSlug: string; projectId: string; }; - searchParams: Record<'board' | 'peekId', string | undefined>; + searchParams: Record<"board" | "peekId", string | undefined>; }; export default async function IssuesPage(props: Props) { diff --git a/apps/space/core/components/account/auth-forms/password.tsx b/apps/space/core/components/account/auth-forms/password.tsx index 08ff7f14219..08db783e394 100644 --- a/apps/space/core/components/account/auth-forms/password.tsx +++ b/apps/space/core/components/account/auth-forms/password.tsx @@ -109,7 +109,9 @@ export const AuthPasswordForm: React.FC = observer((props: Props) => { onSubmit={async (event) => { event.preventDefault(); await handleCSRFToken(); - formRef.current && formRef.current.submit(); + if (formRef.current) { + formRef.current.submit(); + } setIsSubmitting(true); }} onError={() => setIsSubmitting(false)} diff --git a/apps/space/core/components/account/oauth/github-button.tsx b/apps/space/core/components/account/oauth/github-button.tsx index eaa83ebbbd4..b37cea956f6 100644 --- a/apps/space/core/components/account/oauth/github-button.tsx +++ b/apps/space/core/components/account/oauth/github-button.tsx @@ -1,6 +1,6 @@ import { FC } from "react"; -import { useSearchParams } from "next/navigation"; import Image from "next/image"; +import { useSearchParams } from "next/navigation"; import { useTheme } from "next-themes"; import { API_BASE_URL } from "@plane/constants"; // images diff --git a/apps/space/core/components/account/oauth/gitlab-button.tsx b/apps/space/core/components/account/oauth/gitlab-button.tsx index ba1880ae97f..40834b3cfad 100644 --- a/apps/space/core/components/account/oauth/gitlab-button.tsx +++ b/apps/space/core/components/account/oauth/gitlab-button.tsx @@ -1,6 +1,6 @@ import { FC } from "react"; -import { useSearchParams } from "next/navigation"; import Image from "next/image"; +import { useSearchParams } from "next/navigation"; import { useTheme } from "next-themes"; import { API_BASE_URL } from "@plane/constants"; // images diff --git a/apps/space/core/components/account/oauth/google-button.tsx b/apps/space/core/components/account/oauth/google-button.tsx index dc28bdae489..1c699674f41 100644 --- a/apps/space/core/components/account/oauth/google-button.tsx +++ b/apps/space/core/components/account/oauth/google-button.tsx @@ -1,6 +1,6 @@ import { FC } from "react"; -import { useSearchParams } from "next/navigation"; import Image from "next/image"; +import { useSearchParams } from "next/navigation"; import { useTheme } from "next-themes"; import { API_BASE_URL } from "@plane/constants"; // images diff --git a/apps/space/core/components/issues/filters/applied-filters/priority.tsx b/apps/space/core/components/issues/filters/applied-filters/priority.tsx index 6fdf5c65326..33af39e21c7 100644 --- a/apps/space/core/components/issues/filters/applied-filters/priority.tsx +++ b/apps/space/core/components/issues/filters/applied-filters/priority.tsx @@ -1,11 +1,11 @@ "use client"; import { X } from "lucide-react"; -import { PriorityIcon } from "@plane/ui"; +import { PriorityIcon, type TIssuePriorities } from "@plane/ui"; type Props = { handleRemove: (val: string) => void; - values: string[]; + values: TIssuePriorities[]; }; export const AppliedPriorityFilters: React.FC = (props) => { @@ -17,7 +17,7 @@ export const AppliedPriorityFilters: React.FC = (props) => { values.length > 0 && values.map((priority) => (
- + {priority}