From f79416e69576acf231f9afde544e9059ae23e3e0 Mon Sep 17 00:00:00 2001 From: Luke Vella Date: Tue, 15 Jul 2025 11:31:33 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Use=20separate=20import=20types?= =?UTF-8?q?=20(#1826)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../settings/instance-settings-form.tsx | 6 ++---- .../src/app/[locale]/control-panel/users/page.tsx | 3 ++- .../src/app/api/licensing/v1/[...route]/route.ts | 6 ++++-- apps/web/src/app/api/stripe/buy-license/route.ts | 3 ++- .../webhook/handlers/payment-method/updated.ts | 3 ++- apps/web/src/app/components/page-icons.tsx | 3 ++- apps/web/src/components/poll/vote-icon.tsx | 3 ++- apps/web/src/features/ability-manager/ability.ts | 7 ++----- apps/web/src/features/feedback/actions.ts | 3 ++- .../web/src/features/instance-settings/mutations.ts | 3 ++- .../src/features/licensing/lib/licensing-client.ts | 6 ++++-- .../src/features/setup/components/setup-form.tsx | 3 ++- .../features/spaces/components/new-space-dialog.tsx | 2 +- .../src/features/spaces/components/space-icon.tsx | 3 ++- apps/web/src/features/spaces/queries.ts | 3 ++- apps/web/src/features/user/mutations.ts | 3 ++- apps/web/tests/test-utils.ts | 3 ++- biome.json | 13 ++++++++----- packages/ui/src/alert.tsx | 3 ++- packages/ui/src/avatar.tsx | 3 ++- packages/ui/src/badge.tsx | 3 ++- packages/ui/src/sheet.tsx | 3 ++- 22 files changed, 53 insertions(+), 35 deletions(-) diff --git a/apps/web/src/app/[locale]/control-panel/settings/instance-settings-form.tsx b/apps/web/src/app/[locale]/control-panel/settings/instance-settings-form.tsx index 0e53c9713..f8549a506 100644 --- a/apps/web/src/app/[locale]/control-panel/settings/instance-settings-form.tsx +++ b/apps/web/src/app/[locale]/control-panel/settings/instance-settings-form.tsx @@ -27,10 +27,8 @@ import { } from "@/components/settings-group"; import { Trans } from "@/components/trans"; import { updateInstanceSettings } from "@/features/instance-settings/mutations"; -import { - type InstanceSettings, - instanceSettingsSchema, -} from "@/features/instance-settings/schema"; +import type { InstanceSettings } from "@/features/instance-settings/schema"; +import { instanceSettingsSchema } from "@/features/instance-settings/schema"; import { useTranslation } from "@/i18n/client"; export function InstanceSettingsForm({ diff --git a/apps/web/src/app/[locale]/control-panel/users/page.tsx b/apps/web/src/app/[locale]/control-panel/users/page.tsx index 97583340e..0d16ea213 100644 --- a/apps/web/src/app/[locale]/control-panel/users/page.tsx +++ b/apps/web/src/app/[locale]/control-panel/users/page.tsx @@ -1,4 +1,5 @@ -import { type Prisma, prisma } from "@rallly/database"; +import type { Prisma } from "@rallly/database"; +import { prisma } from "@rallly/database"; import { UsersIcon } from "lucide-react"; import z from "zod"; import { PageIcon } from "@/app/components/page-icons"; diff --git a/apps/web/src/app/api/licensing/v1/[...route]/route.ts b/apps/web/src/app/api/licensing/v1/[...route]/route.ts index 5b0b332be..3498aeb95 100644 --- a/apps/web/src/app/api/licensing/v1/[...route]/route.ts +++ b/apps/web/src/app/api/licensing/v1/[...route]/route.ts @@ -8,10 +8,12 @@ import { handle } from "hono/vercel"; import { rateLimiter } from "hono-rate-limiter"; import { env } from "@/env"; import { generateLicenseKey } from "@/features/licensing/helpers/generate-license-key"; +import type { + CreateLicenseResponse, + ValidateLicenseKeyResponse, +} from "@/features/licensing/schema"; import { - type CreateLicenseResponse, createLicenseInputSchema, - type ValidateLicenseKeyResponse, validateLicenseKeyInputSchema, } from "@/features/licensing/schema"; import { isSelfHosted } from "@/utils/constants"; diff --git a/apps/web/src/app/api/stripe/buy-license/route.ts b/apps/web/src/app/api/stripe/buy-license/route.ts index cfb8feb50..36aea70c7 100644 --- a/apps/web/src/app/api/stripe/buy-license/route.ts +++ b/apps/web/src/app/api/stripe/buy-license/route.ts @@ -1,6 +1,7 @@ import type { LicenseType } from "@prisma/client"; import { stripe } from "@rallly/billing"; -import { type NextRequest, NextResponse } from "next/server"; +import type { NextRequest } from "next/server"; +import { NextResponse } from "next/server"; import { z } from "zod"; import type { LicenseCheckoutMetadata } from "@/features/licensing/schema"; diff --git a/apps/web/src/app/api/stripe/webhook/handlers/payment-method/updated.ts b/apps/web/src/app/api/stripe/webhook/handlers/payment-method/updated.ts index f1e3744e3..5400f4c4e 100644 --- a/apps/web/src/app/api/stripe/webhook/handlers/payment-method/updated.ts +++ b/apps/web/src/app/api/stripe/webhook/handlers/payment-method/updated.ts @@ -1,5 +1,6 @@ import type { Stripe } from "@rallly/billing"; -import { type Prisma, prisma } from "@rallly/database"; +import type { Prisma } from "@rallly/database"; +import { prisma } from "@rallly/database"; export async function onPaymentMethodUpdated(event: Stripe.Event) { const paymentMethod = event.data.object as Stripe.PaymentMethod; diff --git a/apps/web/src/app/components/page-icons.tsx b/apps/web/src/app/components/page-icons.tsx index 6052783da..520318edc 100644 --- a/apps/web/src/app/components/page-icons.tsx +++ b/apps/web/src/app/components/page-icons.tsx @@ -1,7 +1,8 @@ "use client"; import { Slot } from "@radix-ui/react-slot"; -import { cva, type VariantProps } from "class-variance-authority"; +import type { VariantProps } from "class-variance-authority"; +import { cva } from "class-variance-authority"; import { BarChart2Icon, CalendarIcon, diff --git a/apps/web/src/components/poll/vote-icon.tsx b/apps/web/src/components/poll/vote-icon.tsx index 9f62378ad..908fed6db 100644 --- a/apps/web/src/components/poll/vote-icon.tsx +++ b/apps/web/src/components/poll/vote-icon.tsx @@ -1,6 +1,7 @@ import type { VoteType } from "@rallly/database"; import { cn } from "@rallly/ui"; -import { cva, type VariantProps } from "class-variance-authority"; +import type { VariantProps } from "class-variance-authority"; +import { cva } from "class-variance-authority"; import { IfNeedBeIcon } from "@/components/vote-icon/if-need-be-icon"; import { NoIcon } from "@/components/vote-icon/no-icon"; import { PendingIcon } from "@/components/vote-icon/pending-icon"; diff --git a/apps/web/src/features/ability-manager/ability.ts b/apps/web/src/features/ability-manager/ability.ts index 692e6273e..daf61c2e8 100644 --- a/apps/web/src/features/ability-manager/ability.ts +++ b/apps/web/src/features/ability-manager/ability.ts @@ -1,10 +1,7 @@ import type { PureAbility } from "@casl/ability"; import { AbilityBuilder } from "@casl/ability"; -import { - createPrismaAbility, - type PrismaQuery, - type Subjects, -} from "@casl/prisma"; +import type { PrismaQuery, Subjects } from "@casl/prisma"; +import { createPrismaAbility } from "@casl/prisma"; import type { Comment, Participant, diff --git a/apps/web/src/features/feedback/actions.ts b/apps/web/src/features/feedback/actions.ts index 21947f1fa..7f1e7717e 100644 --- a/apps/web/src/features/feedback/actions.ts +++ b/apps/web/src/features/feedback/actions.ts @@ -1,7 +1,8 @@ "use server"; import { requireUser } from "@/auth/queries"; -import { type Feedback, feedbackSchema } from "@/features/feedback/schema"; +import type { Feedback } from "@/features/feedback/schema"; +import { feedbackSchema } from "@/features/feedback/schema"; import { getEmailClient } from "@/utils/emails"; import { rateLimit } from "../rate-limit"; diff --git a/apps/web/src/features/instance-settings/mutations.ts b/apps/web/src/features/instance-settings/mutations.ts index 70778c614..62fb9f676 100644 --- a/apps/web/src/features/instance-settings/mutations.ts +++ b/apps/web/src/features/instance-settings/mutations.ts @@ -1,6 +1,7 @@ "use server"; -import { type InstanceSettings, prisma } from "@rallly/database"; +import type { InstanceSettings } from "@rallly/database"; +import { prisma } from "@rallly/database"; import { revalidateTag } from "next/cache"; import { requireAdmin } from "@/auth/queries"; import { instanceSettingsTag } from "./constants"; diff --git a/apps/web/src/features/licensing/lib/licensing-client.ts b/apps/web/src/features/licensing/lib/licensing-client.ts index 8b9af2c30..68b329379 100644 --- a/apps/web/src/features/licensing/lib/licensing-client.ts +++ b/apps/web/src/features/licensing/lib/licensing-client.ts @@ -1,7 +1,9 @@ +import type { + CreateLicenseInput, + ValidateLicenseInputKeySchema, +} from "../schema"; import { - type CreateLicenseInput, createLicenseResponseSchema, - type ValidateLicenseInputKeySchema, validateLicenseKeyResponseSchema, } from "../schema"; diff --git a/apps/web/src/features/setup/components/setup-form.tsx b/apps/web/src/features/setup/components/setup-form.tsx index bd0f48a2c..43a4761b3 100644 --- a/apps/web/src/features/setup/components/setup-form.tsx +++ b/apps/web/src/features/setup/components/setup-form.tsx @@ -21,7 +21,8 @@ import { useTimezone } from "@/features/timezone"; import { useTranslation } from "@/i18n/client"; import { completeSetupAction } from "../actions"; -import { type SetupFormValues, setupSchema } from "../schema"; +import type { SetupFormValues } from "../schema"; +import { setupSchema } from "../schema"; interface SetupFormProps { defaultValues?: Partial; diff --git a/apps/web/src/features/spaces/components/new-space-dialog.tsx b/apps/web/src/features/spaces/components/new-space-dialog.tsx index 3ecaa1d65..2eaa5f89e 100644 --- a/apps/web/src/features/spaces/components/new-space-dialog.tsx +++ b/apps/web/src/features/spaces/components/new-space-dialog.tsx @@ -1,13 +1,13 @@ "use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { Button } from "@rallly/ui/button"; +import type { DialogProps } from "@rallly/ui/dialog"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, - type DialogProps, DialogTitle, } from "@rallly/ui/dialog"; import { diff --git a/apps/web/src/features/spaces/components/space-icon.tsx b/apps/web/src/features/spaces/components/space-icon.tsx index 44c5cadd3..2df50888d 100644 --- a/apps/web/src/features/spaces/components/space-icon.tsx +++ b/apps/web/src/features/spaces/components/space-icon.tsx @@ -1,7 +1,8 @@ "use client"; import { cn } from "@rallly/ui"; -import { Avatar, AvatarFallback, type AvatarProps } from "@rallly/ui/avatar"; +import type { AvatarProps } from "@rallly/ui/avatar"; +import { Avatar, AvatarFallback } from "@rallly/ui/avatar"; type SpaceIconProps = { name: string; diff --git a/apps/web/src/features/spaces/queries.ts b/apps/web/src/features/spaces/queries.ts index 7da9dca5d..e8d3446db 100644 --- a/apps/web/src/features/spaces/queries.ts +++ b/apps/web/src/features/spaces/queries.ts @@ -1,5 +1,6 @@ import { accessibleBy } from "@casl/prisma"; -import { prisma, type SpaceMemberRole } from "@rallly/database"; +import type { SpaceMemberRole } from "@rallly/database"; +import { prisma } from "@rallly/database"; import { redirect } from "next/navigation"; import { cache } from "react"; import { requireUserAbility } from "@/auth/queries"; diff --git a/apps/web/src/features/user/mutations.ts b/apps/web/src/features/user/mutations.ts index 530c05620..b50dcf1be 100644 --- a/apps/web/src/features/user/mutations.ts +++ b/apps/web/src/features/user/mutations.ts @@ -1,4 +1,5 @@ -import { prisma, type TimeFormat } from "@rallly/database"; +import type { TimeFormat } from "@rallly/database"; +import { prisma } from "@rallly/database"; export async function createUser({ name, diff --git a/apps/web/tests/test-utils.ts b/apps/web/tests/test-utils.ts index 745926e3c..54afa97bf 100644 --- a/apps/web/tests/test-utils.ts +++ b/apps/web/tests/test-utils.ts @@ -1,5 +1,6 @@ import type { Page } from "@playwright/test"; -import { prisma, type UserRole } from "@rallly/database"; +import type { UserRole } from "@rallly/database"; +import { prisma } from "@rallly/database"; import { LoginPage } from "./login-page"; export async function createUserInDb({ diff --git a/biome.json b/biome.json index 3d3df295f..74af0a489 100644 --- a/biome.json +++ b/biome.json @@ -15,13 +15,16 @@ "useSingleVarDeclarator": "error", "noUnusedTemplateLiteral": "error", "useNumberNamespace": "error", - "noInferrableTypes": "error" + "noInferrableTypes": "error", + "useImportType": { + "options": { + "style": "separatedType" + }, + "level": "error" + } }, "correctness": { - "noUnusedImports": { - "level": "error", - "fix": "unsafe" - } + "noUnusedImports": "error" }, "nursery": { "useSortedClasses": { diff --git a/packages/ui/src/alert.tsx b/packages/ui/src/alert.tsx index 5a84cd785..ffbadd023 100644 --- a/packages/ui/src/alert.tsx +++ b/packages/ui/src/alert.tsx @@ -1,4 +1,5 @@ -import { cva, type VariantProps } from "class-variance-authority"; +import type { VariantProps } from "class-variance-authority"; +import { cva } from "class-variance-authority"; import * as React from "react"; import { cn } from "./lib/utils"; diff --git a/packages/ui/src/avatar.tsx b/packages/ui/src/avatar.tsx index 6a152a6d7..a651528b6 100644 --- a/packages/ui/src/avatar.tsx +++ b/packages/ui/src/avatar.tsx @@ -2,7 +2,8 @@ import * as AvatarPrimitive from "@radix-ui/react-avatar"; import { cn } from "@rallly/ui"; -import { cva, type VariantProps } from "class-variance-authority"; +import type { VariantProps } from "class-variance-authority"; +import { cva } from "class-variance-authority"; import * as React from "react"; const avatarVariants = cva("relative flex shrink-0 overflow-hidden", { diff --git a/packages/ui/src/badge.tsx b/packages/ui/src/badge.tsx index 5185c228e..f8a737fd1 100644 --- a/packages/ui/src/badge.tsx +++ b/packages/ui/src/badge.tsx @@ -1,4 +1,5 @@ -import { cva, type VariantProps } from "class-variance-authority"; +import type { VariantProps } from "class-variance-authority"; +import { cva } from "class-variance-authority"; import type * as React from "react"; import { cn } from "./lib/utils"; diff --git a/packages/ui/src/sheet.tsx b/packages/ui/src/sheet.tsx index a009e27ec..db9d85a04 100644 --- a/packages/ui/src/sheet.tsx +++ b/packages/ui/src/sheet.tsx @@ -2,7 +2,8 @@ import * as SheetPrimitive from "@radix-ui/react-dialog"; import { cn } from "@rallly/ui"; -import { cva, type VariantProps } from "class-variance-authority"; +import type { VariantProps } from "class-variance-authority"; +import { cva } from "class-variance-authority"; import { X } from "lucide-react"; import * as React from "react";