diff --git a/apps/api/src/benchmarks/ratelimit_latency.test.ts b/apps/api/src/benchmarks/ratelimit_latency.test.ts index 9a6ee5453a..41f674a81a 100644 --- a/apps/api/src/benchmarks/ratelimit_latency.test.ts +++ b/apps/api/src/benchmarks/ratelimit_latency.test.ts @@ -183,5 +183,5 @@ async function createAndTestKeys( return checks; }), ); - return results.flatMap((_) => _); + return results.flat(); } diff --git a/apps/dashboard/app/(app)/api/auth/refresh/route.ts b/apps/dashboard/app/(app)/api/auth/refresh/route.ts index 34a4f7b930..0314fbb6a1 100644 --- a/apps/dashboard/app/(app)/api/auth/refresh/route.ts +++ b/apps/dashboard/app/(app)/api/auth/refresh/route.ts @@ -1,5 +1,5 @@ -import { auth } from "@/lib/auth/server"; import { setCookie } from "@/lib/auth/cookies"; +import { auth } from "@/lib/auth/server"; import { UNKEY_SESSION_COOKIE } from "@/lib/auth/types"; export async function POST(request: Request) { diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-expiration.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-expiration.tsx index 10191752cd..dd54d4b34a 100644 --- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-expiration.tsx +++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-expiration.tsx @@ -63,7 +63,7 @@ export const UpdateKeyExpiration: React.FC = ({ apiKey }) => { delayError: 100, defaultValues: { keyId: apiKey.id ? apiKey.id : undefined, - enableExpiration: apiKey.expires !== null ? true : false, + enableExpiration: apiKey.expires !== null, }, }); diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/keys.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/keys.tsx index 0328a35cb5..a953c087b9 100644 --- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/keys.tsx +++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/keys.tsx @@ -92,7 +92,7 @@ export const Keys: React.FC = async ({ keyAuthId, apiId }) => { ) : ( Object.entries(keysByExternalId).map(([externalId, ks]) => ( -
+
{externalId === nullExternalId ? (
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/settings/update-api-name.tsx b/apps/dashboard/app/(app)/apis/[apiId]/settings/update-api-name.tsx index 19e3865635..25292a2dac 100644 --- a/apps/dashboard/app/(app)/apis/[apiId]/settings/update-api-name.tsx +++ b/apps/dashboard/app/(app)/apis/[apiId]/settings/update-api-name.tsx @@ -76,7 +76,9 @@ export const UpdateApiName: React.FC = ({ api }) => {
- + = ({ api, workspace }) => {
- + {identity.keys.map((key) => ( - + {key.id} {key.meta ? ( diff --git a/apps/dashboard/app/(app)/logs/components/controls/components/logs-display/components/display-popover.tsx b/apps/dashboard/app/(app)/logs/components/controls/components/logs-display/components/display-popover.tsx index 91bfb2e391..8d35bc2d48 100644 --- a/apps/dashboard/app/(app)/logs/components/controls/components/logs-display/components/display-popover.tsx +++ b/apps/dashboard/app/(app)/logs/components/controls/components/logs-display/components/display-popover.tsx @@ -43,6 +43,7 @@ const DisplayPropertyItem = ({ ${isFocused ? "ring-2 ring-accent-7" : ""}`} onClick={onClick} tabIndex={isFocused ? 0 : -1} + // biome-ignore lint/a11y/useSemanticElements: its okay role="button" onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") { diff --git a/apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx b/apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx index 93bbd3c62b..5428cd5232 100644 --- a/apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx +++ b/apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx @@ -63,7 +63,9 @@ export const UpdateWorkspaceName: React.FC = ({ workspace }) => {
- + { // Only run this effect on the client side after hydration - if (!clientReady) return; + if (!clientReady) { + return; + } const attemptAutoSignIn = async () => { // Only proceed if we have required data, aren't in other auth states, and haven't attempted sign-in yet diff --git a/apps/dashboard/app/auth/sign-in/email-code.tsx b/apps/dashboard/app/auth/sign-in/email-code.tsx index ce85c1b539..c0f93e738d 100644 --- a/apps/dashboard/app/auth/sign-in/email-code.tsx +++ b/apps/dashboard/app/auth/sign-in/email-code.tsx @@ -2,10 +2,10 @@ import { Loading } from "@/components/dashboard/loading"; import { toast } from "@/components/ui/toaster"; -import { useSignIn } from "../hooks"; import { cn } from "@/lib/utils"; import { OTPInput, type SlotProps } from "input-otp"; -import { useState, useEffect, useRef, useCallback } from "react"; +import { useCallback, useEffect, useRef, useState } from "react"; +import { useSignIn } from "../hooks"; export function EmailCode({ invitationToken }: { invitationToken?: string }) { const { handleVerification, handleResendCode, setError } = useSignIn(); diff --git a/apps/dashboard/app/auth/sign-in/email-signin.tsx b/apps/dashboard/app/auth/sign-in/email-signin.tsx index ee28aaeb05..42263cc398 100644 --- a/apps/dashboard/app/auth/sign-in/email-signin.tsx +++ b/apps/dashboard/app/auth/sign-in/email-signin.tsx @@ -1,7 +1,7 @@ import { Loading } from "@/components/dashboard/loading"; import { Input } from "@/components/ui/input"; +import { type FormEvent, useEffect, useState } from "react"; import { useSignIn } from "../hooks"; -import { type FormEvent, useState, useEffect } from "react"; import { LastUsed, useLastUsed } from "./last_used"; export function EmailSignIn() { diff --git a/apps/dashboard/app/auth/sign-in/email-verify.tsx b/apps/dashboard/app/auth/sign-in/email-verify.tsx index ce844d6da9..426a8b7f17 100644 --- a/apps/dashboard/app/auth/sign-in/email-verify.tsx +++ b/apps/dashboard/app/auth/sign-in/email-verify.tsx @@ -4,10 +4,10 @@ import * as React from "react"; import { Loading } from "@/components/dashboard/loading"; import { toast } from "@/components/ui/toaster"; -import { useSignUp } from "../hooks/useSignUp"; import { AuthErrorCode, errorMessages } from "@/lib/auth/types"; import { cn } from "@/lib/utils"; import { OTPInput, type SlotProps } from "input-otp"; +import { useSignUp } from "../hooks/useSignUp"; export const EmailVerify: React.FC = () => { const { handleEmailVerification } = useSignUp(); diff --git a/apps/dashboard/app/auth/sign-in/oauth-signin.tsx b/apps/dashboard/app/auth/sign-in/oauth-signin.tsx index bf93b02540..f05574538a 100644 --- a/apps/dashboard/app/auth/sign-in/oauth-signin.tsx +++ b/apps/dashboard/app/auth/sign-in/oauth-signin.tsx @@ -3,10 +3,10 @@ import { Loading } from "@/components/dashboard/loading"; import { GitHub, Google } from "@/components/ui/icons"; import { toast } from "@/components/ui/toaster"; -import { signInViaOAuth } from "../actions"; import type { OAuthStrategy } from "@/lib/auth/types"; import { useSearchParams } from "next/navigation"; import * as React from "react"; +import { signInViaOAuth } from "../actions"; import { OAuthButton } from "../oauth-button"; import { LastUsed, useLastUsed } from "./last_used"; diff --git a/apps/dashboard/app/auth/sign-in/org-selector.tsx b/apps/dashboard/app/auth/sign-in/org-selector.tsx index eabc1df85a..916fb1f107 100644 --- a/apps/dashboard/app/auth/sign-in/org-selector.tsx +++ b/apps/dashboard/app/auth/sign-in/org-selector.tsx @@ -14,11 +14,11 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { completeOrgSelection } from "../actions"; import type { Organization } from "@/lib/auth/types"; import { Button } from "@unkey/ui"; import type React from "react"; -import { useState, useEffect } from "react"; +import { useEffect, useState } from "react"; +import { completeOrgSelection } from "../actions"; interface OrgSelectorProps { organizations: Organization[]; diff --git a/apps/dashboard/app/auth/sign-up/[[...sign-up]]/page.tsx b/apps/dashboard/app/auth/sign-up/[[...sign-up]]/page.tsx index 03ead146ee..ec3c307f95 100644 --- a/apps/dashboard/app/auth/sign-up/[[...sign-up]]/page.tsx +++ b/apps/dashboard/app/auth/sign-up/[[...sign-up]]/page.tsx @@ -1,14 +1,14 @@ "use client"; +import { Loading } from "@/components/dashboard/loading"; import { FadeIn } from "@/components/landing/fade-in"; -import { EmailCode } from "../email-code"; -import { EmailSignUp } from "../email-signup"; -import { OAuthSignUp } from "../oauth-signup"; -import { SignUpProvider } from "../../context/signup-context"; import Link from "next/link"; -import { useEffect, useState, useRef } from "react"; import { useSearchParams } from "next/navigation"; -import { Loading } from "@/components/dashboard/loading"; +import { useEffect, useRef, useState } from "react"; +import { SignUpProvider } from "../../context/signup-context"; import { useSignUp } from "../../hooks"; +import { EmailCode } from "../email-code"; +import { EmailSignUp } from "../email-signup"; +import { OAuthSignUp } from "../oauth-signup"; export default function AuthenticationPage() { const [verify, setVerify] = useState(false); diff --git a/apps/dashboard/app/auth/sign-up/email-code.tsx b/apps/dashboard/app/auth/sign-up/email-code.tsx index aeeb70e0e8..68c1c3655d 100644 --- a/apps/dashboard/app/auth/sign-up/email-code.tsx +++ b/apps/dashboard/app/auth/sign-up/email-code.tsx @@ -4,10 +4,10 @@ import * as React from "react"; import { Loading } from "@/components/dashboard/loading"; import { toast } from "@/components/ui/toaster"; -import { useSignUp } from "../hooks/useSignUp"; import { AuthErrorCode, errorMessages } from "@/lib/auth/types"; import { cn } from "@/lib/utils"; import { OTPInput, type SlotProps } from "input-otp"; +import { useSignUp } from "../hooks/useSignUp"; export function EmailCode({ invitationToken }: { invitationToken?: string }) { const { handleCodeVerification, handleResendCode } = useSignUp(); diff --git a/apps/dashboard/app/auth/sign-up/email-signup.tsx b/apps/dashboard/app/auth/sign-up/email-signup.tsx index cae87e6ec8..82f918788e 100644 --- a/apps/dashboard/app/auth/sign-up/email-signup.tsx +++ b/apps/dashboard/app/auth/sign-up/email-signup.tsx @@ -6,9 +6,9 @@ import { Loading } from "@/components/dashboard/loading"; import { FadeInStagger } from "@/components/landing/fade-in"; import { Input } from "@/components/ui/input"; import { toast } from "@/components/ui/toaster"; -import { useSignUp } from "../hooks/useSignUp"; import { AuthErrorCode, errorMessages } from "@/lib/auth/types"; import { useSearchParams } from "next/navigation"; +import { useSignUp } from "../hooks/useSignUp"; interface Props { setVerification: (value: boolean) => void; diff --git a/apps/dashboard/app/auth/sign-up/oauth-signup.tsx b/apps/dashboard/app/auth/sign-up/oauth-signup.tsx index 307d60a40a..47b3a250d7 100644 --- a/apps/dashboard/app/auth/sign-up/oauth-signup.tsx +++ b/apps/dashboard/app/auth/sign-up/oauth-signup.tsx @@ -3,9 +3,9 @@ import { Loading } from "@/components/dashboard/loading"; import { GitHub, Google } from "@/components/ui/icons"; import { toast } from "@/components/ui/toaster"; -import { signInViaOAuth } from "../actions"; import type { OAuthStrategy } from "@/lib/auth/types"; import * as React from "react"; +import { signInViaOAuth } from "../actions"; import { OAuthButton } from "../oauth-button"; export function OAuthSignUp() { diff --git a/apps/dashboard/app/auth/sso-callback/[[...sso-callback]]/route.ts b/apps/dashboard/app/auth/sso-callback/[[...sso-callback]]/route.ts index 70241c66ca..4f510e1339 100644 --- a/apps/dashboard/app/auth/sso-callback/[[...sso-callback]]/route.ts +++ b/apps/dashboard/app/auth/sso-callback/[[...sso-callback]]/route.ts @@ -1,7 +1,7 @@ +import { setCookiesOnResponse } from "@/lib/auth/cookies"; import { auth } from "@/lib/auth/server"; import { AuthErrorCode, SIGN_IN_URL } from "@/lib/auth/types"; -import { NextRequest, NextResponse } from "next/server"; -import { setCookiesOnResponse } from "@/lib/auth/cookies"; +import { type NextRequest, NextResponse } from "next/server"; export async function GET(request: NextRequest) { const authResult = await auth.completeOAuthSignIn(request); diff --git a/apps/dashboard/app/integrations/vercel/callback/client.tsx b/apps/dashboard/app/integrations/vercel/callback/client.tsx index 58b5908ed0..ef1e5b65a2 100644 --- a/apps/dashboard/app/integrations/vercel/callback/client.tsx +++ b/apps/dashboard/app/integrations/vercel/callback/client.tsx @@ -74,7 +74,7 @@ export const Client: React.FC = ({ ]} + actions={[]} />
diff --git a/apps/dashboard/app/integrations/vercel/callback/workspace.tsx b/apps/dashboard/app/integrations/vercel/callback/workspace.tsx index 2d3e088223..ea98525a3b 100644 --- a/apps/dashboard/app/integrations/vercel/callback/workspace.tsx +++ b/apps/dashboard/app/integrations/vercel/callback/workspace.tsx @@ -19,10 +19,10 @@ import type React from "react"; import { useState } from "react"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import { toast } from "@/components/ui/toaster"; +import { SetSessionCookie } from "@/lib/auth/cookies"; // import { useOrganization, useUser } from "@/lib/auth/hooks"; import { trpc } from "@/lib/trpc/client"; -import { SetSessionCookie } from "@/lib/auth/cookies"; -import { toast } from "@/components/ui/toaster"; export const WorkspaceSwitcher: React.FC = (): JSX.Element => { const { data: user } = trpc.user.getCurrentUser.useQuery(); diff --git a/apps/dashboard/app/new/create-workspace.tsx b/apps/dashboard/app/new/create-workspace.tsx index 012445ac50..2095b29158 100644 --- a/apps/dashboard/app/new/create-workspace.tsx +++ b/apps/dashboard/app/new/create-workspace.tsx @@ -12,16 +12,16 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { toast } from "@/components/ui/toaster"; +import { setCookie } from "@/lib/auth/cookies"; +import { UNKEY_SESSION_COOKIE } from "@/lib/auth/types"; import { trpc } from "@/lib/trpc/client"; import { zodResolver } from "@hookform/resolvers/zod"; import { Button } from "@unkey/ui"; import { Box } from "lucide-react"; import { useRouter } from "next/navigation"; +import { useRef, useTransition } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; -import { useRef, useTransition } from "react"; -import { setCookie } from "@/lib/auth/cookies"; -import { UNKEY_SESSION_COOKIE } from "@/lib/auth/types"; const formSchema = z.object({ name: z.string().trim().min(3, "Name is required and should be at least 3 characters").max(50), }); diff --git a/apps/dashboard/app/new/page.tsx b/apps/dashboard/app/new/page.tsx index df95e5d116..4778cc512d 100644 --- a/apps/dashboard/app/new/page.tsx +++ b/apps/dashboard/app/new/page.tsx @@ -1,13 +1,9 @@ import { PageHeader } from "@/components/dashboard/page-header"; import { Separator } from "@/components/ui/separator"; -import { insertAuditLogs } from "@/lib/audit"; import { auth } from "@/lib/auth/server"; -import { db, schema } from "@/lib/db"; -import { freeTierQuotas } from "@/lib/quotas"; -import { newId } from "@unkey/id"; +import { db } from "@/lib/db"; import { Button } from "@unkey/ui"; import { ArrowRight, GlobeLock, KeySquare } from "lucide-react"; -import { headers } from "next/headers"; import Link from "next/link"; import { notFound, redirect } from "next/navigation"; import { CreateApi } from "./create-api"; @@ -26,7 +22,8 @@ type Props = { }; }; -function getBaseUrl() { +// Currently unused in this page. +/* function getBaseUrl() { if (typeof window !== "undefined") { // browser should use relative path return ""; @@ -39,7 +36,7 @@ function getBaseUrl() { // assume localhost return `http://localhost:${process.env.PORT ?? 3000}`; -} +} */ export default async function (props: Props) { const user = await auth.getCurrentUser(); diff --git a/apps/dashboard/components/dashboard/confirm.tsx b/apps/dashboard/components/dashboard/confirm.tsx index afc16d4b9c..5a719a25fb 100644 --- a/apps/dashboard/components/dashboard/confirm.tsx +++ b/apps/dashboard/components/dashboard/confirm.tsx @@ -1,8 +1,8 @@ "use client"; +import { DialogContainer } from "@/components/dialog-container"; import { Button } from "@unkey/ui"; import type React from "react"; import { useState } from "react"; -import { DialogContainer } from "@/components/dialog-container"; export type ConfirmProps = { title: string; diff --git a/apps/dashboard/components/logs/checkbox/filter-checkbox.tsx b/apps/dashboard/components/logs/checkbox/filter-checkbox.tsx index f6239414c8..af0a9dc173 100644 --- a/apps/dashboard/components/logs/checkbox/filter-checkbox.tsx +++ b/apps/dashboard/components/logs/checkbox/filter-checkbox.tsx @@ -198,8 +198,9 @@ export const FilterCheckbox = < {selectionMode === "multiple" && (